среда, декабря 19, 2007

Игровой сервер SmartFoxServer. Обзор, установка под Windows и тестирование

Стоит задача разработки небольшой он-лайн игры. Поступило предложение использовать в качестве серверной части SmartFoxServer. Для начала, хочу убедиться в правильности выбора моего коллеги и покопать в этом огороде. Пока не глубоко.

Смотрим ссылки:
http://www.smartfoxserver.com/ - главный сайт продукта.
http://www.gotoandplay.it/ - сайт производителя, также посвященный разработке веб-игр, и, на сколько я понял, продвигающий вышеупомянутый продукт.

Говорят, что это мощная платформа для быстрой разработки ("быстрой" - это основная тема) многопользовательских приложений и игр на Macromedia Flash MX, MX 2004, 8, Flex 2 and Flash CS3.
5 доводов за использование SmartFoxServer:


  1. Много крупных проектов известных компаний используют на эту платформу: Showcase.
  2. Умеренные цены. Продукт разбит по функциональности на 3 категории, а ценовая политика каждой категории основана на количестве пользователей (подключений).
    BASIC Edition - от 200 до 800 евро.
    PRO Edition - от 500 до 2000 евро.
    Версию Lite можно даже не рассматривать.
  3. Высокие производительность и надежность: Benchmarks.
  4. Мощная поддержка продукта: хорошо подготовленная документация и форум (другой форум).
  5. Говорят что обожают свой продукт и игры, а также обещают светлое будущее для всех разработчиков веб-игр, которые сядут на их платформу.

Кроме того:

  • Есть библиотека компонентов для работы с сервером.
  • Содержит мощный веб-сервер, может работать без помощи других серверных приложений.
  • Может устанавливаться на все основные ОС: Windows (NT/2K/XP/2003), Linux, MacOS X (10.3 or higher), Solaris и т.д.
Все гладко и красиво. А что же говорит наш брат флеш/веб-девелопер про этот продукт? Пороемся-ка на Flasherе - место, куда я всегда лезу если надо что-нибудь поискать - море информации, в остальном тут делать нечего. Отфильтровав ворчание __etc и дебаты не по теме, видим примерно следующее:


  • Забаненый Antares: "SmartFox Server используют профессиональные производители игр, авторы gotoandplay.it"
  • Miramax: С SmartFox без знания JAVA тебе и версия PRO не поможет.
  • Flskif: "В PRO версии есть такая вещь, как Server Side Extensions, которые, ВНИМАНИЕ, можно писать на AS !http://www.smartfoxserver.com/docs/ -> SmartFoxServerPRO -> Introduction to extentions"
Порыл другие источники. В итоге, резко отрицательных мнений не встретил. В общем, народ либо пользовал эту платформу, либо с ней знаком. Кому-то кажется дорогим удовольствием, кто-то пользует свои наработки.
С деньгами проблем у нас нет, поэтому продолжаем смотреть в сторону этого коммерческого проекта.
Кроме того, существует несколько альтернативных решений, включая опенсорсные, но игровая специфика присутствует не во многих. SmartFoxServer все-таки позиционируется именно как игровой сервер.

Теперь попробуем скачать и установить SmartFoxServer.
Выберем PRO-версию и скачаем версию для Windows. Устанавливаем. Ничего сверхсложного.
Запускаем "Start SmartFoxServer". Появляется консоль, что-то начинает устанавливаться, запускаться. В итоге имеем надпись "Server is up and running!"

Теперь попробуем это в действии. Лезем в "Examples".
Интересовать нас будет папочка AS3. SWF понятное дело заработали не все - вылезло окно исключения - локальная политика безопасности не дала пользовать сокеты, загружать локальные XML и т.п.
Попробуем открыть и откомпилировать исходник из Flash IDE.
Попробуем пример "advancedBuddList". Перед компиляцией надо установить пути к классам. Вносим в список Publish Settings > Flash > Settings > Classpath строку "C:\Program Files\SmartFoxServerPRO_1.6.0\Flash API\Actionscript 3.0".
Успешно компилируем, запускаем. Работает, коннектится, но как-то криво.
Зато пример "SmartFoxChat" работает превосходно. А в окне серверной консоли мониторится всё происходящее.

Кстати, под IE локальная документация работает криво. Прийдется пользоваться он-лайновой версией: User Documentation и SmartFoxServer API for Actionscript 3.
API для AS3 представляет собой два пакета по два класса:
  • it.gotoandplay.smartfoxserver.SmartFoxClient - основной класс, отвечает за соединение с сервером и обработку событий.
  • it.gotoandplay.smartfoxserver.SFSEvent - представляет все события, обрабатываемые классом SmartFoxClient.
  • it.gotoandplay.smartfoxserver.data.Room - хранит свойства каждой из Server Room (комната, что-то вроде отдельного сеанса работы нескольких подключенных пользователей).
  • it.gotoandplay.smartfoxserver.data.User - хранит свойства пользователя.

На первый взгляд всё понятно и не сложно. Разберемся.

Для поверхностного знакомства достаточно. Теперь дело за изучением API и можно внедрять в игровой проект.

4 комментария:

Анонимный комментирует...

А немогли ли Вы привести перечень опенсорсных альтернативных решений? Дабы, так сказать, было с чем сравнивать. Понятно, что каждый будет хвалить свое болото, но вот сделать выбор в пользу того или иного продукта хотелось бы, имея полное представление возможностей всех альтернатив, их плюсов и недостатков. Спасибо за обширные статьи по SmartFoxServer. Они являются своего рода единственными во всем рунете для "новичков".

Racer комментирует...

Когда мы искали платформу для нашего проекта, задачи "сэкономить" не стояло, поэтому взяли сразу то, что понравилось. :)

По альтернативным опенсорсным игровым решениям скажу честно - не глубоко копал эту тему. RED5 - говорят один из немногочисленных если не единственный надежно работающий. Но, боюсь, такой гейм-ориентированности там нет.

Будет возможность/необходимость/время - будет и обзор игрового опенсорса. :)

Анонимный комментирует...

Доброго времени суток!)
Решил поюзать этот сервак т.к. в нем было написано что поддерживает мускул, но как его установить?
Было бы очень классно увидеть пост по этой теме или, если Вам не сложно, то напишите плиз куда асунуть все что надо (т.е. я скачал jdbc mysqll исходники собрал их а куда теперь папку засунуть ? и что еще куда нужно?)
заранее Спасибо!!!
email: pavelк@programist.ru

Racer комментирует...

На сколько я понял, средствами серверных скриптов можно просто законнектиться к базе сервера и работать с ней по средством запросов. На родном сайте про это было написано точно, т.к. я выяснял этот вопрос по своим нуждам. Думаю, маловероятно, что установка mySQL для использования под SmartFox имеет какие-то особенности.