Стоит задача разработки небольшой он-лайн игры. Поступило предложение использовать в качестве серверной части
SmartFoxServer. Для начала, хочу убедиться в правильности выбора моего коллеги и покопать в этом огороде. Пока не глубоко.
Смотрим ссылки:
http://www.smartfoxserver.com/ - главный сайт продукта.
http://www.gotoandplay.it/ - сайт производителя, также посвященный разработке веб-игр, и, на сколько я понял, продвигающий вышеупомянутый продукт.
Говорят, что это мощная платформа для быстрой разработки ("быстрой" - это основная тема) многопользовательских приложений и игр на Macromedia Flash MX, MX 2004, 8, Flex 2 and Flash CS3.
5 доводов за использование SmartFoxServer:
- Много крупных проектов известных компаний используют на эту платформу: Showcase.
- Умеренные цены. Продукт разбит по функциональности на 3 категории, а ценовая политика каждой категории основана на количестве пользователей (подключений).
BASIC Edition - от 200 до 800 евро.
PRO Edition - от 500 до 2000 евро.
Версию Lite можно даже не рассматривать. - Высокие производительность и надежность: Benchmarks.
- Мощная поддержка продукта: хорошо подготовленная документация и форум (другой форум).
- Говорят что обожают свой продукт и игры, а также обещают светлое будущее для всех разработчиков веб-игр, которые сядут на их платформу.
Кроме того:
- Есть библиотека компонентов для работы с сервером.
- Содержит мощный веб-сервер, может работать без помощи других серверных приложений.
- Может устанавливаться на все основные ОС: 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 и можно внедрять в игровой проект.