Home > AGPsource Game Platform, For Developers, News > На плечах гигантов…

На плечах гигантов…

Меня часто спрашивают, на базе чего создаются наши разработки, и не пишем ли мы с нуля все, включая операционную систему и базу данных :) Спешу уверить вас, это не так – осознавая сложность и важность разработок, мы стараемся максимум использовать уже созданные и зарекомендовавшие себя открытые проекты. Именно о продуктах и технологиях, лежащих в основе, мы и поговорим далее. Сразу скажу, что обзор будет очень кратким, так как по каждой теме и каждом компоненте можно говорить очень долго, разбирая каждый нюанс. На это еще будет время, подробная техническая документация в процессе разработки, сейчас представим краткое описание нашего технологического стека.

agpplatform3

Функционально все разделено на три больших части – инфраструктурная часть, на базе которой работают все остальные компоненты, основные библиотеки и фреймворки, обеспечивающие функционал для последней и основной части проекта – собственно, самой игровой платформы, которая как раз полностью наша собственная разработка (не включая отдельные скрипты для реализации околоигровых сервисов).

Инфраструктура

  • ОС: Linux (CentOS 5.3) или Nexenta Platform (OpenSolaris/Ubuntu platform), которые развернуты на виртуальных серверах или в облачной системе
  • PHP 5.3 + OpCache – основа для работы всей программной системы. Мы используем именно версию 5.3, так как она максимально гибкая и предоставляет все современные возможности для приложений, включая целый ряд новых модулей и расширения, которые требуются нашему проекту. В качестве кеша и акселератора мы рекомендуем использовать APC или XCache, также возможна работа с Zend Platform (тогда доступны некоторые продвинутые функции, например, кластеризация и т.п., однако лицензия на платформу покупается отдельно).
  • MySQL 5.4 или Drizzle – в качестве основной базы данных мы используем последние сборки MySQL, оптимизированные для многопроцессорных и многоядерных архитектур. В следующей версии 3.5 платформы мы планируем перейти на использование специальной базы данных Drizzle, которая является облегченной и максимально гибкой и масштабированной системой для современных Web 2.0 приложений.
  • Memcached – система распределенного кеширования, используется для быстрого общего кеша, а также для хранения сессий и данных пользователей для максимальной производительности.
  • MemcacheDB/Q - системы постоянного хранения и очередей сообщений на базе memcached, используются для реализации постоянного хранения данных при перезагрузках или сбоях, а также для взаимодействия отдельных модулей (система очередей сообщений). Эти решения выбраны потому, что обеспечивают прозрачное интегрирование в общий стек технологий, так как мы уже используем Memcached, то они стали лучшим выбором и обеспечивают максимальную производительность.
  • Gearman используется как распределенная платформа для сложных вычислений, например обработки логов, ведение статистики, а также для сложных игровых модулей, таких как расчет сражений (как в играх типа OGame, Travian, Война Племен).

Основные библиотеки

  • Zend Framework – основной фреймворк, на базе которого реализуются большинство компонент, также именно он обеспечивает ряд базовых возможностей игровой платформы. Вместе с тем мы понимаем некоторую избыточность такого решения и поэтому не используем некоторые ресурсоемкие или неудачные в плане архитектуры компоненты, предпочитая строить свою платформу максимально гибкой. Также благодаря ZF игровая платформа изначально ориентированная на взаимодействие с различными внешними сервисами, социальными сетями и системами (Facebook, Twitter, OpenId), а также реализует собственный открытый внешний API.
  • Template engine – учитывая различные подходы к проектированию современных веб-систем, мы остановились на отлично зарекомендовавшем себя, простом и быстром решении с применением специальной системы шаблонов (движка шаблонов) TemplateLite.
  • AJAX библиотеки: ExtJS, Dojo Toolkit, SoundManager 2 и другие. Для создания интерфейсов, админ-панели и различных игровых компонент мы активно применяем технологию Ajax, все наши проекты максимально использую все ее возможности. Не без гордости заявляем, что мы впервые на рынке браузерных игр разработали первую полностью Ajax игру, где после авторизации игрока нет ни одной перезагрузки страницы (и без фреймов)!
  • PECL – мы используем расширения для обеспечения максимального функционала в РНР и для связи с другими библиотеками, некоторые функциональные возможности также могут выноситься в расширения языка, чтобы обеспечить наибольшую скорость. Для работы платформы мы тщательно отбираем те расширения, которые требуются и следим за совместимостью и стабильностью всей системы, отключая все невостребованные возможности.

AGPsource Platform

  • Admin panel - для слежения и управления всей игровой системой мы разработали специальную унифицированную игровую админ-панель, с которой все сотрудники могут управлять и следить за всеми аспектами игрового процесса. В удобной форме отображены и логи действий пользователей, и отчеты системы безопасности и основные финансовые и аналитические показатели игры. Также мы используем встроенную систему безопасности и контрольных проверок, а интегрированных рабочий стол позволяет в удобной и компактной форме сразу получить все ключевые данные и их изменения, одним взглядом давая всю картину игры.
  • AGPsource Core Platform – базовая платформа для всех компонент, обеспечивает механизмы инициализации всех компонент, обработку URL и данных, а также другие основные функции, служит слоем абстрагирования от нюансов остальных уровней системы. Именно с платформой и ее API работают все игровые классы, таким образом разработчик  освобождается от рутины и от него не требуется учет всех особенностей и тонких моментов остальных технологий.
  • Game Class Library – набор готовых к использованию компонент, реализующих базовую игровую логику. Это те функции, которые приходится создавать для каждого проекта и мы решили собрать их в одну библиотеку, чтобы облегчить и себе и вам разработку или прототипирование своих проектов. Все компоненты унифицированы и работают с админ-панелью и другими частями системы, управляются и конфигурируются стандартным образом. Вы можете буквально через один-два дня сразу приступить к разработке уникальных игровых фич вашего проекта, оставив реализацию и поддержку основных рутинных моментов готовым классам. Также сюда включены стандартные игровые классы для реализации типовых игр и их возможностей, например – гибкая финансовая система, различные варианты карты игрового мира, перемещения, игровых персонажей, чата и т.п.
  • Game- specific Class – это уже классы конкретного проекта, которые используются платформой и взаимодействуют в ее рамках друг с другом и с остальными модулями игры.
  • Social service. Игра это не только сам по себе игровой мир, но и ряд социальных сервисов вокруг комьюнити игроков, которые имеют значение, подчас не меньше, чем сама игра. Например, новостная система, блоги, интеграция с современными социальными сервисами, такими как Twitter, Facebook, вКонтакте и другие. Даже собственная социальная сеть, объединяющая ваших игроков (а ведь у вас может быть и не один проект!) – и это реально! Все эти функции тесно интегрированы в игру, пользователь, зарегистрировавшись в проекте, сразу получает возможность с одними данными получить доступ ко всем возможностям и сервисам, видеть и общаться с другими игроками.
  1. No comments yet.
  1. No trackbacks yet.