![]() |
|
||||||||||
|
|||||
|
Собрана игра на локальной машине на подобие soldat.pl с мысленным разделением на клиентскую и серверную часть. Программировалась на as3. Читая этот раздел форума обнаружил, что появилось достаточно много других (помимо FMS) серверов, работающих с Flash . Поэтому у меня несколько вопросов:
1) Какие сервера, поддерживают as3 на серверной стороне? Наиболее критичный для меня пункт при выборе сервера. 2) Я так понимаю что сервера, работающие через http, а не через rtmp (или что-то подобное) должны проигрывать в скорости отклика (ping). Отсюда вопрос какой сервер использовать для получения наибольшего результата (меньшего времени задержки отклика)? 3) Хотелось бы по минимуму загружать канал и передавать данные например в типе byteArray или в чем-то подобном. Подскажите пожалуйста, изходя из всех критериев - какой сервер наиболее подходит для меня. Заранее спасибо. Последний раз редактировалось Rzer; 17.02.2008 в 02:13. |
|
|||||
|
Banned
[+4 11.12.07]
[+4 18.03.08] Регистрация: Oct 2007
Сообщений: 269
|
Лучше всего самописный сервер. Написать не так уж и сложно (или заказать не слишком дорого). На крайняк есть xinetd, универсальный сервер, только CGI приклеить. Зато трафик - минимальный, скорость максимальная.
> Я так понимаю что сервера, работающие через http, а не через rtmp (или что-то подобное) должны проигрывать в скорости отклика (ping). Бред. http может больше трафика сожрать, и все. |
|
|||||
|
Регистрация: May 2003
Адрес: Tallinn
Сообщений: 3,182
|
http://www.smartfoxserver.com/ - отличная штука...клиентскую часть присобачить к такому серваку не составит труда...правда платная, если больше 20 коннектов ;-)
|
|
|||||
|
Регистрация: May 2003
Адрес: Tallinn
Сообщений: 3,182
|
ну а в описании не почитать?
|
|
|||||
|
При болле детальном изучении сервера, оказалось что он имеет ряд значительных недостатков. Во первых указанная поддержка as3 работает только на стороне клиента (походу дела сервер не был предназначен для обработки у себя информации при помощи as, что уже говорить о применении физического движка - всё в запущенном виде и сделано в виде заплатки - называется сделай так чтобы было похоже на as3 только вот без импорта классов, переменные объявляй по другому, поддержка типов частичная, пиши в одном классе), что разумеется допустимо только при разработке игр типа колобка.
Насчет пинга. Получаемый пинг (В примере с сайта) указан не верно (в документации упоминается, что время отклика получается из времени получения информации, что в два раза меньше реального). Зачем то прилипили embeded web server (наверно для тех кто не может настроить crossdomain). Единственное, что порадовало, так это продуманная система комнат, модераторов, и списков друзей. Вывод: Сервер не подходит. Использую готовый движок 3 версии языка из классов as is. Значит придется обращаться к старому доброму FMS 3. Или всё таки есть альтернативы? |
|
|||||
|
Регистрация: May 2003
Адрес: Tallinn
Сообщений: 3,182
|
O_o ну тут два варианта:
1. либо вы плохо разбирались в этом сервере (глубоко не прочитали документы и не посмотрели примеры) 2. либо у вас не достаточно знаний, ибо то что вы написали, полная неправда. Сейчас на его основе разрабатываем виртуальный мир (AS3). Очень удобный сервер, также server-side extensions для него писать (лучше на яве) очень быстро и просто. Советую потратить денёк-два на разбор примеров и внимательное чтение документации. |
|
|||||
|
После прочтения документации (в которой мало упомянуто о программировании серверной части) отправляюсь в папку sfsExtensios в которой храняться примеры серверной логики. Ни в одном примере я не заметил нестандартного типа - только типы стандартных объектов общих для явы и as (Такое ощущение что типы просто опускаются) Находим пример E4X_example.as: разметка не соблюдена, импорта классов нет.
В примерах есть только импорт класса на примере ява скрипта, что не есть хорошо. Такое ощущение, что используется чистой воды ява с интерпритатором. 2 CrazyFlasher: по твоему совету завтра буду проверять работает ли импорт класов, имеются ли стандартные типы и интерфейсы (к примеру EventDispatcher) на сервере. |
|
|||||
|
Пытаюсь создать EventDispatcher на сервере и ничего не получается:
Пробую так: Или так (как в случае явы): Во всех четырех вариантах никакого результата. 2 CrazyFlasher: используете ли Вы на стороне сервера EventDispatcher и, если да, не затруднит ли написать как? p.s. Пример серверного as3 выладываю. Разве тут что-то есть из as 3 и нет ни тега package и class - куда делать импорт классов? /*
* E4X Example based on the XML Parser Example
*
* Demonstrates how to use E4X languages inside an actionscript extension
*/
var xmlObj = null
function init()
{
var xmlData = _server.readFile("sfsExtensions/data/books.xml")
xmlObj = new XML(xmlData)
readTheXmlFile()
var books = xmlObj.bookList.book.(@year == 2003)
for (var i = 0; i < books.length(); i++)
{
trace("Title : " + books[i].@title)
trace("Author : " + books[i].@author)
trace("-------------------------------------")
}*/
// Example #2: match a substring in name attribute
/*
var books = xmlObj.bookList.book.(@title.toString().indexOf("Java") > -1)
for (var i = 0; i < books.length(); i++)
{
trace("Title : " + books[i].@title)
trace("Author : " + books[i].@author)
trace("-------------------------------------")
}
*/
}
/*
* Read and parse the XML file
*/
function readTheXmlFile()
{
// Show the <collectionName> and <collectionOwner> nodes
trace("Collection Name: " + xmlObj.collectionName)
trace("Collection Owner: " + xmlObj.collectionOwner + newline)
var bookList = xmlObj.bookList.book
for (var i = 0; i < bookList.length(); i++)
{
trace("Title : " + bookList[i].@title)
trace("Author : " + bookList[i].@author)
trace("Year : " + bookList[i].@year)
trace("Publisher: " + bookList[i].@publisher)
trace("-------------------------------------")
}
}
/*
* This method is called by the server when an extension
* is being removed / destroyed.
*
* Always make sure to release resources like setInterval(s)
* open files etc in this method.
*
*/
function destroy()
{
//
}
/*
*
* Handle Client Requests
*
* cmd = a string with the client command to execute
* params = list of parameters expected from the client
* user = the User object representing the sender
* fromRoom = the id of the room where the request was generated
*
*/
function handleRequest(cmd, params, user, fromRoom)
{
//
}
/*
* This method handles internal events
* Internal events are dispactched by the Zone or Room where the extension is attached to
*
* the (evt) object
*/
function handleInternalEvent(evt)
{
//
}
Последний раз редактировалось Rzer; 20.02.2008 в 18:41. |
![]() |
![]() |
Часовой пояс GMT +4, время: 00:51. |
|
|
« Предыдущая тема | Следующая тема » |
|
|