Архив

Архив раздела ‘AGP Game Platform’

SignalsyMQ — простая и быстрая очередь сообщений на PHP+Redis (и немножко Zend Framework)

12 декабря 2009 3 комментария

1250198491_signalПриветствую своих читателей. Знаю, что давно не писал, обычно активность проявлял только в твиттере - как оказалось, это очень удобно для постоянных постингов, когда на основной блог не хватает времени. Кстати, кроме официального твиттера блога (@abrdev) я открыл еще один  - @phpatcloud, в котором буду собирать ссылки на все материалы по теме РНР и Cloud Computing. Эта тема достаточно актуальная, в том числе и для меня, так как на основной работе мы сейчас делаем серьезную систему, которая как раз и базируется на облачном хостинге (от Amazon) и платформе РНР (мой внутренний продукт, Signalsy и Zend Framework). Кому интересно - подписывайтесь, комментируйте и ретвитьте, буду благодарен.

А теперь хотел бы рассказать, собственно, о причинах некоторых задержек в пополнении блога статьями. Причина простая - как уже анонсировал, я веду разработку собственного фреймворка, основанного в противовес главенствующей сейчас модели MVC, на базе сигнальной архитектуры (signal/slot). Сейчас этот фреймворк, уже третья версия, проходит боевую обкатку в нашем стартапе, и за это время я понял, что одного продукта в линейке мало - реальные задачи и виденье будущего показывает, что необходим разный функционал, но объединенный одной темой - обработка и доставка информации множеству клиентов в реальном времени. Поэтому я расширяю свою систему таким образом, чтобы в результате получит некоторую платформу для построения быстрых и масштабированных систем для веб-приложений. Сегодня я расскажу о первом компоненте, который является основной нашей платформы - SignalsyMQ - очередь сообщений на базе PHP/Redis/Zend Framework.

Читать далее...

Анонс: Signalsy Platform Framework (open source)… coming soon!

14 августа 2009 6 комментариев

1250198491_signalПриветствую читателей моего блога. Позволю себе сделать небольшой анонс. В последнее время я работаю над достаточно большим проектом, игровой он-лайн платформой для разработчиков браузерных игр AGPsource Game Platform (кстати, проект открытый, присоединяйтесь, уже вышла версия 3.1). Разработка достаточно интересная и нетривиальная в архитектурном плане. Попробовав ее в реальных условиях, в том числе и под достаточной нагрузкой (например, мы сделали на нем одно приложение для сети вКонтакте, пока там 20 тыс. пользователей, но их количество увеличивается постоянно), мы поняли, что архитектура достаточно хорошая. Но движок, конечно, проект большой и сложный, попробовав применить его в других проектах, не очень игровых, стало ясно, что требуется все то же, но более легкое, простое и быстрое. Да и хотелось внести кое-какие изменения в основу проекта, переделать узкие места.

Так родился наш второй проект - Signalsy Platform Framework. Вкратце - это небольшая и гибкая платформа для разработки и поддержки веб-проектов, основанная на сигнальной (Signal/Slot, но, конечно, модифицированной, о реализации в библиотеке ezComponents мы уже писали) архитектуре. Похоже, мы первые в мире, кто сделал подобное для веб-а! Внутри, кроме нашего небольшого набора базовых компонент, лежит Zend Framework, так что разрабатывать можно с учетом всех его возможностей. По сути, это замена традиционной модели MVC (как ее понимают в ZF), но внутри, в компонентах и логике конкретного приложения, конечно, можно придерживаться любых паттернов и приемов построения архитектуры. Signalsy лишь заменяет слой обработки URL  и добавляет возможности Signal/Slot-архитектуры в ваше веб-приложение.

Вам интересно? Следите за анонсами, читатели блога первыми узнают все подробности проекта. Мы также открыты для заинтересованых разработчиков - для сообщества вместе с анонсом будет открыт специальный портал для взаимодействия. Подробности будут в течении нескольких дней...

Игровые размышления — какие сервисы нужны, какие сервисы важны для браузерной игры

15 февраля 2009 7 комментариев

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

Сначала определимся, что же я имею ввиду под словом "сервис". Понятно, что основным сервисом, услугой, которую предоставляет игра, является как раз игра сама по себе, игровой мир и все, что в нем. Но никакой мир не может жить сам по себе, более того, зачастую его развитие тесно связано именно с, казалось бы, второстепенными сервисами и услугами, выстраиваемыми вокруг центральной услуги, игрового мира. Об этом часто забывают разработчики и менеджеры проектов, думая, что "да ладно, поставим форум и все, игроки себе будут сами общаться и тусоваться". С другой стороны видна и активность самих игроков в исправлении недочетов или тонкого расчета администрации, когда на плечи игрового сообщества ложится задача доделывания и поддержки тех околоигровых сервисов, которые не созданы самими разработчиками. Это, безусловно, хорошо, показывает степень заинтересованности рядовых игроков и увлечённости их игрой, но никак не оправдывает администрацию. Читать далее...

AGPsource Session Server — первая бета-версия компонента из состава игровой платформы

3 февраля 2009 Comments off

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

Предпосылки к созданию

В случае разработки масштабных РНР-приложений и распределённых систем, перед программистами встает задача обеспечения корректной обработки пользовательских запросов, в случае, если приложение работает на нескольких серверах. Обычные РНР-приложения используют механизм сессий для хранения идентификационных данных и сессии задействованы при обработке каждого запроса от клиента. В обычном режиме сессии хранятся в файловой системе и, таким образом, доступны только на том же сервере, где запущено приложение. Если у нас стоит балансировщик нагрузки, он не может, в случае необходимости, перенаправить запросы на другой, свободный в этот момент сервер, так как для корректной обработки нам необходима сессия, а она хранится на том сервере, где пользователь начала работу. Для этого есть даже специальный термин, «Sticky session» - по сути, это стратегия работы балансировщика, который на основе сессионного идентификатора определяет, куда посылать все запросы. Читать далее...

AGPsource Game Platform — заметки о способах общения в онлайн играх

27 января 2009 4 комментария

logo3

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

И так, сначала давайте определим, что в игровом мире могут быть несколько видов коммуникаций. Их можно разделять по различным признакам, мы же используем всего несколько. Читать далее...

AGPsource Game Platform — эксперименты с игровым движком, РНР <> JSON <> JDBC

logo3

Приветствуем читателей. Этим постом  я открою новую серию статей, в которых будем обсуждать различные нюансы проектирования и реализации серверной платформы для браузерных игр, которую я разрабатываю. В дальнейшем компоненты будут выложены в виде как отдельных открытых проектов, так и вся платформа (пока политика не определена). И первым делом я хочу поделится с вами своими экспериментами в реализации одной из важнейших серверных подсистем - механизма доступа к базе данных. Сразу скажу, что общая статья с рассмотрением архитектуры всей системы игры будет скоро, пока начнем с отдельных подсистем.

И так, доступ к базе данных. Изначально мы имеем игру, которая написана на РНР, соответственно, если отбросить промежуточные библиотеки, используется либо mysqli или же PDO, который, в свою очередь, опирается теперь на новый драйвер Mysqlnd. К сожалению, на этом уровне внедрить какие-то более продвинутые методики работы с базой сложно.
Читать далее...

WarAliance Game — постмортема проекта он-лайновой браузерной стратегии, часть 2.

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

Примечание: данный текст  - это только критический взгляд с теперешнего опыта и воспоминание своего первого опыта. Конечно, сейчас я вижу и знаю, где и что было сделано не так, и описанное - всего лишь попытка восстановить в общих чертах картину того времени и описать свой первый опыт в игровой индустрии в качестве разработчика игры (опыт в играх в качестве менеджера уже был накоплен). Все приведенные документы, скриншоты, схемы и другая информация приведены лишь в ознакомительных целях.

В предыдущую статью не попал скриншот с системы навигации по карте галактики. Механизм там простой - технически карта состоит из нескольких слоев, внизу лежит растровый рисунок, сверху он покрывается сеткой секторов или квадратов, в зависимости от типа карты. При наведении курсора на область сектора, он подсвечивается и отображаются его границы, по двойному клику переход на детальную карту указанного участка. Это все инкапсулировано в один объект, и перезагрузки страницы не происходит - все слои перестраиваются сразу на клиенте, а все данные о вселенной грузятся только первый раз и хранятся в кеше. Механизм стал еще одной технической фишкой проекта. Читать далее...

WarAliance Game — постмортема проекта он-лайновой браузерной стратегии, часть 1.

logoПриветствую читателей! Присоединяясь к всеобщим поздравлениям с новым годом, я, тем не менее, не только поздравлять буду, но и продолжать радовать интересными материалами. В этот год мы войдем с материалом достаточно отличным от других публикаций блога.

Примечание: данный текст  - это только критический взгляд с теперешнего опыта и воспоминание своего первого опыта. Конечно, сейчас я вижу и знаю, где и что было сделано не так, и описанное - всего лишь попытка восстановить в общих чертах картину того времени и описать свой первый опыт в игровой индустрии в качестве разработчика игры (опыт в играх в качестве менеджера уже был накоплен). Все приведенные документы, скриншоты, схемы и другая информация приведены лишь в ознакомительных целях.

Начну с далекого. Последние четыре года (гм.. а может и больше) я плотно работаю над различными проектами в области игровой индустрии, а конкретнее, занимаюсь проектированием и разработкой браузерных игр. Проработав год главным администратором, совмещая в себе и геймдизайнера и техподдержку и комьюнити-менеджера, в отличном проекте SanCity.ru, в один прекрасный момент я ушел оттуда на вольные хлеба. Сначала вместе с несколькими друзьями мы усиленно проектировали и просто мечтали о собственном игровом проекте, однако по ряду причин дальше концепта и первой демки карты и перемещения (кстати, и сейчас реализованное там достаточно уникально для современных игр, думаю, об этом как то расскажу отдельно) мы не продвинулись. Впрочем, думаю, на этом этапе застряло множество команд, вне зависимости от опыта или амбиций. Позже, играя активно в стратегию OGame, мы ее буквально разобрали по косточкам, всю игровую механику, социальную составляющую и т.п., в общем - набирались опыта в анализе успешных проектов (рассматривали все аналогичные игры космической темы). Читать далее...

Исследование совместимости Zend Framework и Quercus PHP

28 декабря 2008 Comments off

caucho-whiteПриветствуем наших читателей. Нас уже почти-почти настиг праздник, так что, вероятно, это последняя запись блога в этом году, далее я буду только обновлять наш Twitter (а он стал очень даже популярным и читаемым каналом, там уже 45 читателей! Присоединяйтесь и вы!). А тема последнего поста будет снова таки оригинальной и исследовательской. Если помните, я давно уже заинтересовался объединением мира Java и PHP, в частности, при помощи замечательного продукта Quercus PHP - порта PHP-интерпретатора вместе с библиотеками на Java. И вот, очередной раз просматривая уже почти готовый архитектурный макет своего движка для браузерных онлайн игр, я обратил внимание на ускользнувшую от меня деталь. Ведь я собирался использовать популярный и мощный фреймворк Zend Framework, запуская его, конечно же, поверх QuercusPHP (детальнее про архитектуру движка я начну рассказывать после нового года). А он, как известно, достаточно требователен к различным расширениям и модулям - в одном проекте, что я сейчас делаю, используя только Zend_Search_Lucene, я встретился с необходимостью подключения ранее не используемых расширений. А значит вполне может быть ситуация, что эта платформа не будет поддерживать все необходимые функции для работы Zend Framework-а. Просмотр Google по поводу совместимости ничего определенного не дал, так что было решено посвятить пару часов собственному исследованию. Читать далее...

Developers.org.ua