<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>AGPsource Lab Team - MMO department of Wheemplay, Ltd</title>
	<atom:link href="http://mmo.wheemplay.com/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://mmo.wheemplay.com</link>
	<description>Browser-based  web 2.0 game platform</description>
	<lastBuildDate>Sat, 04 Jul 2009 13:19:42 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>AGPsource Game Platform &#8211; как же работает механизм роутинга?</title>
		<link>http://mmo.wheemplay.com/?p=38</link>
		<comments>http://mmo.wheemplay.com/?p=38#comments</comments>
		<pubDate>Sat, 04 Jul 2009 13:14:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[AGPsource Game Platform]]></category>
		<category><![CDATA[For Developers]]></category>
		<category><![CDATA[agsource]]></category>
		<category><![CDATA[platform]]></category>
		<category><![CDATA[signal/slot]]></category>

		<guid isPermaLink="false">http://mmo.wheemplay.com/?p=38</guid>
		<description><![CDATA[В предвестии выпуска 3.1 версии игровой платформы мы решили чуть больше пролить свет на общую архитектуру и далее попробуем описать  весь процесс обработки запроса, описывая каждую стадию. Всего основных шагов 7, не считая выполнение конкретного обработчика действия для этого URL.
1. Перезапись URL на стороне веб-сервера. Запрашиваемый URL обрабатывается веб-сервером (сейчас Apache, потом лучше всего [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-47" title="A_suivre" src="http://mmo.wheemplay.com/wp-content/uploads/2009/07/A_suivre.png" alt="A_suivre" width="71" height="73" />В предвестии выпуска 3.1 версии игровой платформы мы решили чуть больше пролить свет на общую архитектуру и далее попробуем описать  весь процесс обработки запроса, описывая каждую стадию. Всего основных шагов 7, не считая выполнение конкретного обработчика действия для этого URL.<span id="more-38"></span></p>
<p><strong>1. Перезапись URL на стороне веб-сервера.</strong> Запрашиваемый URL обрабатывается веб-сервером (сейчас Apache, потом лучше всего фронт-енд вынести на Nginx). Используя правила для mod_rewrite из корневого файла .htaccess, производится перенаправление запроса на index.php в корне сайта, при этом запрашиваемый URL передается как GET-переменная __route__. Все остальные переменные из запроса сохраняются в неизменном виде.</p>
<p><strong>2.</strong> <strong>Определение главной страницы входа</strong>.  На входе в скрипт проверяется существование такого URL и его сравнение с относительным адресом корня сайта (&#8217;/'). Если адреса нет, он пустой или указывает на корень сайта, он подменяется на адрес по-умолчанию, обычно это &#8216;game/index&#8217;. В принципе, это можно реализовать и через правила для mod_rewrite, что, видимо, будет сделано в следующих версиях при переходе на Nginx.</p>
<p><strong>3.</strong> <strong>Подключение основных файлов платформы</strong>. Здесь несколько стадий, который выполняются последовательно:</p>
<ol>
<li>Подключение ядра платформы ( файл  &#8216;inc/agplatform_core.php&#8217;);</li>
<li>Установка путей для подключения файлов, мы указываем, что все далее подключаемые файлы будут указаны относительно директории /inc/lib, там хранятся все используемые библиотеки проекта.</li>
<li>Инициализируем основные компоненты Zend Framework &#8211; Registry и устанавливаем автозагрузчик классов Zend_Loader.</li>
<li>Объявляется функция для инициализации  отладочного инструмента &#8211; FirePHP, который используется для проверки и отладки на всех стадиях. Поэтому эта стадия вынесена из самой платформы, так как только так можно задействовать FirePHP для отладки даже ядра системы и механизма роутинга. В релизной системе можно отключить или даже удалить все отладочные вызовы, что повысит быстродействие и уменьшит трафик.</li>
<li>Подключаем описание интерфейса для менеджеров сигналов (файл &#8216;IconnectManager.php&#8217;)</li>
<li>Подключаем модуль системы роутинга (файл &#8216;agplatform_routing.php&#8217;);
<ul>
<li>Подключается файл с описанием исключений (файл &#8216;agplatform_exceptions.php&#8217;);</li>
<li>Подключение всех  менеджеров сигналов. Их четыре и они размещаются в корневых директориях, где лежат другие файлы этих модулей. В корне  &#8211; системный менеджер, отвечающий за сигналы платформы, в директории Admin &#8211; менеджер системы управления игрой и админ-панели, в AGPsource &#8211; менеджер стандартной библиотеки классов, в Game &#8211; специфические для конкретного проекта классы и обработчики.</li>
</ul>
</li>
</ol>
<p><strong>4.</strong> <strong>Инициализация системы роутинга</strong>. Мы создаем экземпляр класса AGPlatform_Routing, но если быть точным &#8211; это синглтон, поэтому мы получаем экземпляр объекта через статический метод getInstance.</p>
<ol>
<li>Если объект ещё не был создан, то вызывается его конструктор, который, в свою очередь:
<ul>
<li>Вызывает метод _constructRoutesTable для создания полной таблицы роутинга, для чего опрашиваются все подключенные ранее менеджеры сигналов, а результат сводится в единый массив URL, которые обрабатываются игровой платформой.</li>
<li>Инициализируется внутренний массив параметров $param, который передается во все обработчики сигналов. Пока он пустой.</li>
<li>Читается стандартный конфигурационный файл  /inc/config/game_config.ini, который возвращается как ассоциативный массив и сохраняется в реестре, а также добавляется к массиву обязательных параметров (см. предыдущий шаг).</li>
</ul>
</li>
</ol>
<p><strong>5. Локализация.</strong> Далее системы пытается выяснить, есть ли в запросе или его параметрах указание на язык локализации. Для этого мы пробуем выделить первую часть из адреса, а также проверяем, присутствует ли параметр lang в запросе или в сессионных переменных. Также проверяется, есть ли указанный язык в списке поддерживаемых языков из конфигурационного файла. В случае отсутствия указания языка или его поддержки, используется язык по умолчанию (устанавливается в конфиге). Поиск языка происходит в следующем порядке:</p>
<ul>
<li>Проверяется первая часть из запрашиваемого URL (например, вида ru/game/new_user). Если там найден язык, эта часть из URL удаляется и в дальнейшем все обработчики получают URL вида game/new_user, без кода языка.</li>
<li>Проверяется массив переменных из запроса &#8211; $_REQUEST['lang'];</li>
<li>Проверяется массив сессионных переменных.</li>
<li>Установленный код языка передается в статичный метод ядра для инициализации локализации &#8211; AGPlatform_Core::set_locale, где сохраняется в реестре для использования далее. Следует отметить, что больше никаких действий не производится, поэтому если вы не используете локализацию при обработке какого-либо URL, то падений производительности нет, так как подсистема локализации инициализируется только после явного вызова ассоциированных с ней сигналов.</li>
</ul>
<p><strong>6.</strong> <strong>Построение таблицы роутинга</strong>. Обработанный URL передается объекту роутинга в метод dispatchURL, который и производит дальнейшую обработку запрашиваемого адреса.</p>
<ol>
<li>Запрашиваемый URL предварительно обрабатывается и приводится к стандартному  виду (метод prepareURL) &#8211; переводится в нижний регистр и убирается начальный слеш, если присутствует. Также может проверяться длина запроса (пока она максимум 4096 символов).</li>
<li>Если URL не пустой и проверка не вернула false, адрес сохраняется в списке параметров.</li>
<li>Обрабатываются все переменные из запроса в методе prepareHTTPRequest, в дальнейшем они сохраняются в массиве обязательных переменных под ключом &#8216;httprequest&#8217;.
<ul>
<li>Обработка параметров происходит для всех типов запроса, кроме application/x-amf, которые пропускаются (они бинарные и преобразуются внутри AMF сервера).</li>
<li>Проверяются все имена переменных, максимальная длина названия &#8211; 1024.</li>
<li>Проверяются все значения переменных, максимальный размер  &#8211; 4096 символов.</li>
<li>Служебные переменные,имена которых начинаются с символа подчеркивания &#8216;_&#8217;, исключаются из обработки.</li>
<li>Следует отметить, что приложение всегда может получить доступ к исходным значения параметров через суперглобальный массив $_REQUEST, однако это не рекомендуется без особой надобности.</li>
</ul>
</li>
<li>Формируется массив сигналов, которые соответствуют указанному URL.
<ol>
<li>Вызывается метод getRoutingToURL, который ищет совпадение в массиве адресов и, находя первый адрес, совпадающий с тем, что есть в таблице, возвращает ассоциированый с ним массив сигналов. Обратите внимание, что URL без начального слеша, в нижнем регистре и ищется полное совпадение (то есть, URL вида user/add/1 и user/add это разные адреса, соответственно все параметры и переменные должны передаваться в GET/POST, а не в адресе). В случае отсутствия URL в таблице роутинга, возвращается определенный по умолчанию сигнал или массив сигналов ( default_empty_url_signal)</li>
<li>Вызывается метод buildFullSignalsTable, который строит полную таблицу сигналов для обработки. Для этого он объединяет в один массив следующие сигналы:
<ul>
<li>Обязательные начальные сигналы, которые вызываются ДО определенных для конкретного URL (описаны в переменной класса pre_dispatch_signals);</li>
<li>Список сигналов для этого URL, найденный методом getRoutingToURL;</li>
<li>Обязательные заключительные сигналы из таблицы в переменной post_dispatch_signals.</li>
</ul>
</li>
</ol>
</li>
<li>Окончательный массив сигналов сохраняется в списке обязательных переменных.</li>
<li>Для всех указанных сигналов производится проверка и подключение сигналов к их обработчикам
<ol>
<li>Проверка сигнала состоит в выделении префикса  (пространства имен сигналов, строки до первого знака подчеркивания).</li>
<li>Проверяется, существует ли такое пространство имён</li>
<li>Проверка всех менеджеров сигналов через их переменную $prefix, которая хранит массив пространств имен для тех сигналов, за которые отвечает этот менеджер. Учтите, что хотя разные менеджеры могут отвечать за одно и то же пространство имен, но механизм проверки проверит лишь первый менеджер из списка. Изменение способа  проверки планируется в версии 3.5.</li>
<li>Вызывается метод signalManager для менеджера, который обслуживает данный сигнал. Внутри менеджера ищется описание обработчика для сигнала и если он найдет, вызывается метод connect  механизма роутинга ( метод класса AGPlatform_Routing).</li>
<li>Для каждого сигнала создается своя таблица обработчиков &#8211; их может быть несколько и они вызываются в порядке подключения или согласно приоритету. По умолчанию приоритет 1000. Таблица обработчиков для сигналов хранится в переменной _connecting экземпляра роутера.</li>
</ol>
</li>
</ol>
<p><strong>7. Обработка таблицы сигналов</strong>. Производится обработка окончательной таблицы сигналов. Это финальный момент обработки всего запроса ядром платформы.</p>
<ol>
<li>Если не установлен флаг прерывания обработки, текущий сигнал помещается в массив стандартных параметров.</li>
<li>Генерируется сигнал путем вызова метода emit роутера, которому передается текущий сигнал и массив обязательных параметров.</li>
<li>В случае генерации исключения в любом месте обработки выставляется флаг остановки обработки сигнала и завершения работы роутера. Стек ошибки и бектрейс пишется в лог и выводится через FirePHP.</li>
<li>При генерации сигнала, в методе emit проверяется таблица уже обработанных сигналов, а также таблица, где указаны все сигналы, которые могут генерироваться несколько раз. Обычно сигнал может быть сгенерирован только один раз, иначе будут коллизии, если, к примеру, сигнал устанавливает соединение с базой данных. Однако есть определенные сигналы, которые безопасно вызывать несколько раз (хотя и в обычных обработчиках стоят проверки, поэтому это не приведет к фатальным последствиям), поэтому они описываются в отдельной служебной таблице.</li>
<li>Для проверки, был ли уже обработан сигнал, служит метод isEmited($signal);</li>
<li>Если сигнал не обрабатывался ранее или разрешен к повторной обработке, проверяется, есть ли подключенные к этому сигналу обработчики. Если нет &#8211; производится попытка их подключить. Далее передается вызов в служебный метод _emit().</li>
<li>Подключенные обработчики сортируются исходя из своего приоритета.</li>
<li>Проверяется, является ли обработчик вызываемой сущностью &#8211; функцией или методом класса. Стандартно обработчики сигналов &#8211; это публичные статические методы классов.</li>
<li>Метод-обработчик вызывается через call_user_func_array, в качестве параметров передаются две переменные &#8211; массив обязательных параметров, который формируется роутером и опциональные, которые передаются только конкретному сигналу (в отличие от стандартных параметров, передаваемых во все обработчики).</li>
<li>Результат выполнения обработчика заносится в специальный массив (emit_results), ключом служит имя сигнала (так как обработчиков может быть несколько, формируется массив).</li>
<li>В случае ошибки -  исключение AGPlatform_Unknown_Connect_Exception.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://mmo.wheemplay.com/?feed=rss2&amp;p=38</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>У нас есть вакансия: Разработчик он-лайн игр (браузерных)</title>
		<link>http://mmo.wheemplay.com/?p=34</link>
		<comments>http://mmo.wheemplay.com/?p=34#comments</comments>
		<pubDate>Thu, 18 Jun 2009 08:46:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Team]]></category>

		<guid isPermaLink="false">http://mmo.wheemplay.com/?p=34</guid>
		<description><![CDATA[В связи с расширением портфеля заказов, нам требуется разработчик для создания онлайновой браузерной игры.
Требования:

 PHP 5
 JavaScript/AJAX (Jquery, ExtJS будет плюсом)
 ZendFramework (или его быстрое освоение, да, MVC не требуется, у нас Signal/Slot архитектура)
 желательно опыт подобных проектов и интерес к браузерным играм вообще
 понимание кеширования (APC, Memcached, файловое)
 Опыт работы с MySQL
 письменный английский [...]]]></description>
			<content:encoded><![CDATA[<p>В связи с расширением портфеля заказов, нам требуется разработчик для создания онлайновой браузерной игры.</p>
<p><strong>Требования</strong>:</p>
<ul>
<li> PHP 5</li>
<li> JavaScript/AJAX (Jquery, ExtJS будет плюсом)</li>
<li> ZendFramework (или его быстрое освоение, да, MVC не требуется, у нас Signal/Slot архитектура)</li>
<li> желательно опыт подобных проектов и интерес к браузерным играм вообще</li>
<li> понимание кеширования (APC, Memcached, файловое)</li>
<li> Опыт работы с MySQL</li>
<li> письменный английский (для документирования кода, чтения документации)</li>
<li> навыки работы с системами контроля версий (SVN) и тикет-системами</li>
<li> возможность быть онлайн большую часть суток</li>
</ul>
<p><span id="more-34"></span></p>
<p><strong>Приветствуется</strong>:</p>
<ul>
<li>коммуникабельность</li>
<li> интерес к новым технологиям и профессиональному росту</li>
<li> базовые навыки администрирования Linux (не критично)</li>
<li> базовые знания/понимание Flash-а.</li>
</ul>
<p><strong>Условия</strong></p>
<p>Варианты разные &#8211; офис в Львове (пока обсуждается), удаленная работа но желательно с периодическими встречами. Гибкий график.</p>
<p>Карьерный рост в случае желания &#8211; у нас много работы и в будущем, видимо, будет еще больше.</p>
<p>Вменяемое руководство &#8211; люди, которые знают, что делают, как и почему, без излишнего официоза и корпоратива.</p>
<p>Очень интересные проекты и задачи!</p>
<p>Финансовый пакет:  по результатам обсуждения.</p>
<p><strong>Контакты</strong>:</p>
<ul>
<li>aleks.raiden@gmail.com</li>
<li>ICQ: 346525015</li>
<li>GTalk/Jabber: aleks.raiden@gmail.com</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://mmo.wheemplay.com/?feed=rss2&amp;p=34</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Обновление до 3.0.1, в ожидании версии 3.1</title>
		<link>http://mmo.wheemplay.com/?p=29</link>
		<comments>http://mmo.wheemplay.com/?p=29#comments</comments>
		<pubDate>Fri, 05 Jun 2009 23:03:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[AGPsource Game Platform]]></category>
		<category><![CDATA[For Developers]]></category>
		<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://mmo.wheemplay.com/?p=29</guid>
		<description><![CDATA[Изменения в версии 3.0.1 (доступна через SVN)

 excluded ezComponents requirments, own signal/slot system
 updated ExtJS and other librray
 ZendFramework updated to 1.8.2
 default site url added (site/index)
 updated xml config for PHP-IDS
 full rewrite ACL system (now with cache)
 full rewrite DB support (both, direct mysqli and Zend_DB support)
 added FirePHP logging support
 added DB [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-30" title="software-update-icon" src="http://mmo.wheemplay.com/wp-content/uploads/2009/06/software-update-icon.jpg" alt="software-update-icon" width="128" height="128" />Изменения в версии 3.0.1 (<a href="http://code.google.com/p/agpsourcegameplatform3/source/checkout">доступна через SVN</a>)</p>
<ul>
<li> excluded ezComponents requirments, own signal/slot system</li>
<li> updated ExtJS and other librray</li>
<li> ZendFramework updated to 1.8.2</li>
<li> default site url added (site/index)</li>
<li> updated xml config for PHP-IDS</li>
<li> full rewrite ACL system (now with cache)</li>
<li> full rewrite DB support (both, direct mysqli and Zend_DB support)</li>
<li> added FirePHP logging support</li>
<li> added DB profiling (if use FirePHP and output buffering)</li>
<li> many bugfix and small improving</li>
</ul>
<p>Теперь ожидаем следующего обновления, теперь уже будет новая версия, 3.1, в которой ожидаются значительные изменения, в частности, встроенная админ-панель, новые компоненты, поддержка memcached, документация,  а также встроенный портал/сайт и форум, что значительно облегчит развертывания движка и создание проектов.</p>
]]></content:encoded>
			<wfw:commentRss>http://mmo.wheemplay.com/?feed=rss2&amp;p=29</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>На плечах гигантов&#8230;</title>
		<link>http://mmo.wheemplay.com/?p=17</link>
		<comments>http://mmo.wheemplay.com/?p=17#comments</comments>
		<pubDate>Sun, 31 May 2009 22:47:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[AGPsource Game Platform]]></category>
		<category><![CDATA[For Developers]]></category>
		<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://mmo.wheemplay.com/?p=17</guid>
		<description><![CDATA[Меня часто спрашивают, на базе чего создаются наши разработки, и не пишем ли мы с нуля все, включая операционную систему и базу данных   Спешу уверить вас, это не так &#8211; осознавая сложность и важность разработок, мы стараемся максимум использовать уже созданные и зарекомендовавшие себя открытые проекты. Именно о продуктах и технологиях, лежащих в [...]]]></description>
			<content:encoded><![CDATA[<p>Меня часто спрашивают, на базе чего создаются наши разработки, и не пишем ли мы с нуля все, включая операционную систему и базу данных <img src='http://mmo.wheemplay.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Спешу уверить вас, это не так &#8211; осознавая сложность и важность разработок, мы стараемся максимум использовать уже созданные и зарекомендовавшие себя открытые проекты. Именно о продуктах и технологиях, лежащих в основе, мы и поговорим далее. Сразу скажу, что обзор будет очень кратким, так как по каждой теме и каждом компоненте можно говорить очень долго, разбирая каждый нюанс. На это еще будет время, подробная техническая документация в процессе разработки, сейчас представим краткое описание нашего технологического стека.<span id="more-17"></span></p>
<p><img class="aligncenter size-full wp-image-18" title="agpplatform3" src="http://mmo.wheemplay.com/wp-content/uploads/2009/05/agpplatform3.jpg" alt="agpplatform3" width="682" height="654" /></p>
<p>Функционально все разделено на три больших части &#8211; инфраструктурная часть, на базе которой работают все остальные компоненты, основные библиотеки и фреймворки, обеспечивающие функционал для последней и основной части проекта &#8211; собственно, самой игровой платформы, которая как раз полностью наша собственная разработка (не включая отдельные скрипты для реализации околоигровых сервисов).</p>
<h3>Инфраструктура</h3>
<ul>
<li><strong>ОС: Linux (CentOS 5.3)</strong> или<strong> Nexenta Platform</strong> (OpenSolaris/Ubuntu platform), которые развернуты на виртуальных серверах или в облачной системе</li>
<li><strong>PHP 5.3 + OpCache</strong> &#8211; основа для работы всей программной системы. Мы используем именно версию 5.3, так как она максимально гибкая и предоставляет все современные возможности для приложений, включая целый ряд новых модулей и расширения, которые требуются нашему проекту. В качестве кеша и акселератора мы рекомендуем использовать APC или XCache, также возможна работа с Zend Platform (тогда доступны некоторые продвинутые функции, например, кластеризация и т.п., однако лицензия на платформу покупается отдельно).</li>
<li><strong>MySQL 5.4 или Drizzle</strong> &#8211; в качестве основной базы данных мы используем последние сборки MySQL, оптимизированные для многопроцессорных и многоядерных архитектур. В следующей версии 3.5 платформы мы планируем перейти на использование специальной базы данных Drizzle, которая является облегченной и максимально гибкой и масштабированной системой для современных Web 2.0 приложений.</li>
<li><strong>Memcached</strong> &#8211; система распределенного кеширования, используется для быстрого общего кеша, а также для хранения сессий и данных пользователей для максимальной производительности.</li>
<li><strong>MemcacheDB/Q </strong>- системы постоянного хранения и очередей сообщений на базе memcached, используются для реализации постоянного хранения данных при перезагрузках или сбоях, а также для взаимодействия отдельных модулей (система очередей сообщений). Эти решения выбраны потому, что обеспечивают прозрачное интегрирование в общий стек технологий, так как мы уже используем Memcached, то они стали лучшим выбором и обеспечивают максимальную производительность.</li>
<li><strong>Gearman</strong> используется как распределенная платформа для сложных вычислений, например обработки логов, ведение статистики, а также для сложных игровых модулей, таких как расчет сражений (как в играх типа OGame, Travian, Война Племен).</li>
</ul>
<h3></h3>
<h3>Основные библиотеки</h3>
<ul>
<li><strong>Zend Framework</strong> &#8211; основной фреймворк, на базе которого реализуются большинство компонент, также именно он обеспечивает ряд базовых возможностей игровой платформы. Вместе с тем мы понимаем некоторую избыточность такого решения и поэтому не используем некоторые ресурсоемкие или неудачные в плане архитектуры компоненты, предпочитая строить свою платформу максимально гибкой. Также благодаря ZF игровая платформа изначально ориентированная на взаимодействие с различными внешними сервисами, социальными сетями и системами (Facebook, Twitter, OpenId), а также реализует собственный открытый внешний API.</li>
<li><strong>Template engine</strong> &#8211; учитывая различные подходы к проектированию современных веб-систем, мы остановились на отлично зарекомендовавшем себя, простом и быстром решении с применением специальной системы шаблонов (движка шаблонов) TemplateLite.</li>
<li><strong>AJAX библиотеки: ExtJS, Dojo Toolkit, SoundManager 2 </strong>и другие. Для создания интерфейсов, админ-панели и различных игровых компонент мы активно применяем технологию Ajax, все наши проекты максимально использую все ее возможности. Не без гордости заявляем, что мы впервые на рынке браузерных игр разработали первую полностью Ajax игру, где после авторизации игрока нет ни одной перезагрузки страницы (и без фреймов)!</li>
<li><strong>PECL</strong> &#8211; мы используем расширения для обеспечения максимального функционала в РНР и для связи с другими библиотеками, некоторые функциональные возможности также могут выноситься в расширения языка, чтобы обеспечить наибольшую скорость. Для работы платформы мы тщательно отбираем те расширения, которые требуются и следим за совместимостью и стабильностью всей системы, отключая все невостребованные возможности.</li>
</ul>
<h3></h3>
<h3>AGPsource Platform</h3>
<ul>
<li><strong>Admin panel </strong>- для слежения и управления всей игровой системой мы разработали специальную унифицированную игровую админ-панель, с которой все сотрудники могут управлять и следить за всеми аспектами игрового процесса. В удобной форме отображены и логи действий пользователей, и отчеты системы безопасности и основные финансовые и аналитические показатели игры. Также мы используем встроенную систему безопасности и контрольных проверок, а интегрированных рабочий стол позволяет в удобной и компактной форме сразу получить все ключевые данные и их изменения, одним взглядом давая всю картину игры.</li>
<li><strong>AGPsource Core Platform</strong> &#8211; базовая платформа для всех компонент, обеспечивает механизмы инициализации всех компонент, обработку URL и данных, а также другие основные функции, служит слоем абстрагирования от нюансов остальных уровней системы. Именно с платформой и ее API работают все игровые классы, таким образом разработчик  освобождается от рутины и от него не требуется учет всех особенностей и тонких моментов остальных технологий.</li>
<li><strong>Game Class Library</strong> &#8211; набор готовых к использованию компонент, реализующих базовую игровую логику. Это те функции, которые приходится создавать для каждого проекта и мы решили собрать их в одну библиотеку, чтобы облегчить и себе и вам разработку или прототипирование своих проектов. Все компоненты унифицированы и работают с админ-панелью и другими частями системы, управляются и конфигурируются стандартным образом. Вы можете буквально через один-два дня сразу приступить к разработке уникальных игровых фич вашего проекта, оставив реализацию и поддержку основных рутинных моментов готовым классам. Также сюда включены стандартные игровые классы для реализации типовых игр и их возможностей, например &#8211; гибкая финансовая система, различные варианты карты игрового мира, перемещения, игровых персонажей, чата и т.п.</li>
<li><strong>Game- specific Class</strong> &#8211; это уже классы конкретного проекта, которые используются платформой и взаимодействуют в ее рамках друг с другом и с остальными модулями игры.</li>
<li><strong>Social service.</strong> Игра это не только сам по себе игровой мир, но и ряд социальных сервисов вокруг комьюнити игроков, которые имеют значение, подчас не меньше, чем сама игра. Например, новостная система, блоги, интеграция с современными социальными сервисами, такими как Twitter, Facebook, вКонтакте и другие. Даже собственная социальная сеть, объединяющая ваших игроков (а ведь у вас может быть и не один проект!) &#8211; и это реально! Все эти функции тесно интегрированы в игру, пользователь, зарегистрировавшись в проекте, сразу получает возможность с одними данными получить доступ ко всем возможностям и сервисам, видеть и общаться с другими игроками.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://mmo.wheemplay.com/?feed=rss2&amp;p=17</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Презентация AGPsource Game Platform 3.0. Первое явление народу.</title>
		<link>http://mmo.wheemplay.com/?p=15</link>
		<comments>http://mmo.wheemplay.com/?p=15#comments</comments>
		<pubDate>Tue, 26 May 2009 22:58:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[AGPsource Game Platform]]></category>
		<category><![CDATA[For Developers]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Project's]]></category>

		<guid isPermaLink="false">http://mmo.wheemplay.com/?p=15</guid>
		<description><![CDATA[
AGPsource Game Platform 3.0
View more OpenOffice presentations from aleks_raiden.


]]></description>
			<content:encoded><![CDATA[<p><center></p>
<div style="width:425px;text-align:left" id="__ss_1452153"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/aleks_raiden/agpsource-game-platform-30?type=powerpoint" title="AGPsource Game Platform 3.0">AGPsource Game Platform 3.0</a><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=agpsourcegameplatform3tonewp-090518080419-phpapp01&#038;rel=0&#038;stripped_title=agpsource-game-platform-30" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=agpsourcegameplatform3tonewp-090518080419-phpapp01&#038;rel=0&#038;stripped_title=agpsource-game-platform-30" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;">View more <a style="text-decoration:underline;" href="http://www.slideshare.net/">OpenOffice presentations</a> from <a style="text-decoration:underline;" href="http://www.slideshare.net/aleks_raiden">aleks_raiden</a>.</div>
</div>
<p></center></p>
]]></content:encoded>
			<wfw:commentRss>http://mmo.wheemplay.com/?feed=rss2&amp;p=15</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>О нас, профиль команды AGPsource Lab Team</title>
		<link>http://mmo.wheemplay.com/?p=3</link>
		<comments>http://mmo.wheemplay.com/?p=3#comments</comments>
		<pubDate>Tue, 26 May 2009 22:41:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Team]]></category>

		<guid isPermaLink="false">http://mmo.wheemplay.com/?p=3</guid>
		<description><![CDATA[
Wheemplay, Ltd
Направление браузерных игр
&#160;
&#160;
О компании
Компания Wheemplay Ltd основана в мае 2009 года путем слияния нескольких студий для обеспечения максимального качества работы и производства широкого спектра игр. Основа компании – разработка Flash-игр для игровых порталов, аутсорсинг, разработка казуальных игр и продуктов под мобильные платформы (iPhone). Отделение браузерных игр сосредоточено в г. Львове и образовано после слияния [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" title="logo-trans" src="http://wheemplay.com/wp-content/themes/elements/images/logo-trans.png" alt="" width="169" height="100" /></p>
<h3>Wheemplay, Ltd</h3>
<p><strong>Направление браузерных игр</strong></p>
<p />&nbsp;</p>
<p />&nbsp;</p>
<p><strong>О компании</strong></p>
<p>Компания Wheemplay Ltd основана в мае 2009 года путем слияния нескольких студий для обеспечения максимального качества работы и производства широкого спектра игр. Основа компании – разработка Flash-игр для игровых порталов, аутсорсинг, разработка казуальных игр и продуктов под мобильные платформы (iPhone). Отделение браузерных игр сосредоточено в г. Львове и образовано после слияния с командой AGPsource Lab Team.</p>
<p><span id="more-3"></span></p>
<p><strong>Команда и опыт в браузерных играх</strong></p>
<p>Наша команда была образована из сотрудников, уже долгое время работавших вместе на проектах по аутсорсингу разработок для различных компаний. Кроме этого, у нас есть несколько собственных проектов. В общей сложности, наша команда принимала участие в семи различных онлайновых проектах.<br />
<br />
<strong>Ключевые сотрудники</strong>:</p>
<p><strong>Александр Лозовюк</strong> – 26 лет, г. Львов, глава направления браузерных игр, более пяти лет в веб-индустрии. Главный разработчик большинства проектов компании. Опыт операционного управления и создания комьюнити, геймдизайн и проектирование игр. <a href="http://dtf.ru/person/info.php?id=6118">http://dtf.ru/person/info.php?id=6118</a></p>
<p><strong>Богдан Хрупа</strong> – 25 лет, г. Львов, главный программист, специализация в области клиентских интерфейсов, верстка. Личные увлечения – коллекционные карточные игры и игровые системы на их базе.</p>
<p><strong>Стефан Кейш</strong> – руководитель Wheemplay Ltd, специалист в области флеш и казуальных игр. Руководит внутренней студией по производству графики и флеш-элементов для всех проектов компании. <a href="http://dtf.ru/person/info.php?id=16263">http://dtf.ru/person/info.php?id=16263</a></p>
<p>Другие сотрудники привлекаются к конкретным проектам, исходя из требований.</p>
<p><strong>Основные проекты, в которых мы участвовали</strong></p>
<p><strong>SanCity.ru</strong> – онлайновая экономическая стратегия.</p>
<p><strong>Что мы делали</strong>: подготовка сделки покупки, управление проектом, стратегическое развитие, создание и управление комьюнити, разработка инструментария для экономического анализа игрового мира.</p>
<p>URL: <a href="http://www.sancity.ru/">www.sancity.ru</a> (работает)</p>
<p><strong>WarAliance</strong> – космический тактико-стратегический симулятор</p>
<p><strong>Что мы делали</strong>: полностью наша разработка, работа с привлеченным инвестором. Проектирование  архитектуры проекта, разработка (клиентская и серверная часть, графика), первый этап внутреннего тестирования.</p>
<p>URL: в настоящее время проект заморожен на стадии Beta-версии. Доступно описание процесса разработки в виде двух статей (+ скриншоты различных версий игры, <a href="http://abrdev.com/?p=602">http://abrdev.com/?p=602</a> и <a href="http://abrdev.com/?p=618">http://abrdev.com/?p=618</a>)</p>
<p><strong>Роза Ветров</strong> – браузерная RPG-игра о войнах на море</p>
<p><strong>Что мы делали</strong>: аутсорсинг. Налаживание процесса разработки, уточнение ТЗ и геймдизайна. Весь цикл разработки клиентской и серверной части, тестирование. Графика и флеш-часть предоставлена заказчиком.</p>
<p>URL: <a href="http://www.seahopes.com/">www.seahopes.com</a> (работает)</p>
<p><strong>Повелитель островов</strong> – браузерная стратегия</p>
<p><strong>Что мы делали</strong>: аутсорс нескольких модулей (админ-часть, финансовая система, модуль сражений), помощь в организации технологического процесса разработки команде, которая создавала проект.</p>
<p>URL: <a href="http://www.islandslords.ru/">www.islandslords.ru</a> (работает)</p>
<p><strong>Printime</strong> – экономический обучающий симулятор</p>
<p><strong>Что мы делали</strong>: наш собственный проект, совместно с Академией печати.</p>
<p>В настоящее время публичной информации нет (идет разработка).</p>
<p><strong>Защитники</strong> – тактическая онлайн браузерная игра</p>
<p><strong>Что мы делали</strong>: проект куплен и в настоящее время мы проводим редизайн и доработку проекта для нового владельца.</p>
<p>URL: <a href="http://www.defenders-game.ru/">www.defenders-game.ru</a> (временно закрыт на доработку)</p>
<p>Кроме этого, сейчас команда разрабатывает неанонсированный проект в жанре аркадного менеджера-симулятора (подробности не разглашаются до официального разрешения заказчика).</p>
<p>Используя опыт в разработке и поддержке различных игровых игр, мы с января 2009 года ведем разработку собственного продукта – платформы для быстрой разработки и прототипирования браузерных игр в жанре стратегии/менеджеров и симуляторов. Наше ПО позволяет сократить время для получения первого играбельного прототипа Вашего проекта, обеспечивает гибкость и простоту для разработчиков. В настоящее время все наши проекты разрабатываются на базе собственной платформы.  Публичный анонс технологии запланирован на июнь 2009 года, в настоящее время доступна презентация: <a href="http://www.slideshare.net/aleks_raiden/agpsource-game-platform-30">http://www.slideshare.net/aleks_raiden/agpsource-game-platform-30</a></p>
<p>Основные технологии и средства, которые мы используем для разработки проектов: PHP 5 (Zend Framework, TemplateLite/Smarty, ezComponents, собственная платформа), AJAX (ExtJS и Dojo Toolkit), базу данных MySQL. Для отдельных систем применяется Flash/ActionScript и специализированные средства для клиентов (Adobe AIR). Все работы контролируются через систему контроля версий и багтрек, для управления процессом разработки мы используем коммерческую версию сервиса Assembla.com. Все ПО, используемое в процессе разработки, лицензионное. В случае использования в проектах стороннего ПО, необходимые лицензии на него входят в стоимость контракта и поставляются вместе с дистрибутивом.</p>
]]></content:encoded>
			<wfw:commentRss>http://mmo.wheemplay.com/?feed=rss2&amp;p=3</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
