Библиотека сайта rus-linux.net
Фреймворк Thousand Parsec
Глава 21 из 1 тома книги "Архитектура приложений с открытым исходным кодом".
Оригинал: "Thousand Parsec", глава из книги "The Architecture of Open Source Applications"
Авторы: Alan Laudicina and Aaron Mavrinac
Дата публикации: 2012 г.
Перевод: Н.Ромоданов
Дата перевода: март 2013 г.
Creative Commons
Перевод был сделан в соответствие с лицензией Creative Commons. С русским вариантом лицензии можно ознакомиться здесь.
Огромная звездная империя включает в себя сотни миров, простираясь в космосе на тысячи парсеков. В отличие от некоторых других областей галактики, здесь живет несколько воинов; это люди с высоким интеллектом, с богатыми культурными и научными традициями. Их великолепные планеты, созданные на базе великих научных и технических достижений, являются лучом света для всех других миров этого этапа развития и процветания. Космические корабли прибывают из всего огромного квадранта , простирающегося во всех направлениях, и из-за его пределов, привозя отовсюду самых знаменитых исследователей. Они прибывают сюда с тем, чтобы внести свой вклад в самый амбициозный проект из тех, которые когда либо пытались создать разумные существа: создать децентрализованную компьютерную сеть для всей Галактики, со всеми ее различными языками, культурами и правовыми системами.
Thousand Parsec это больше, чем видеоигра: это фреймворк с полным набором инструментальных средств для создания пошаговых многопользовательский космических игр-стратегий. Его основной игровой протокол позволяет применять разнообразные клиентские программы, серверы и интеллектуальное программного обеспечение, а также использовать все это в широком спектре различных игр. Хотя размер фреймворка потребовал планирования и дополнительных исследований, заставивших участников разработки держаться тонкой грани между чрезмерным развитием системы в вертикальном и в горизонтальном направлениях, он также сделал фреймворк довольно интересным образцом для обсуждения архитектуры приложений с открытым исходным кодом.
Журналисты играм жанра Thousand Parsec в соответствие с тем, как должен действовать игрок, управляющий империей, присвоили термин «4X» - сокращение от «explore, expand, exploit, and exterminate» («исследовать, развивать, эксплуатировать и уничтожать»). Обычно в играх жанра 4X игроки должны изучить карту (исследовать), создать новые поселения или расширить влияние существующих (развивать), собирать и использовать ресурсы в районах, находящихся под их контролем (эксплуатировать), и атаковать и устранять игроков-конкурентов (уничтожать). Акцент на экономическом и технологическом развитии, локальном управлении и разнообразии путей к господству придают жанру игр больших стратегий беспрецедентную глубину и сложность.
С точки зрения игрока, в игре Thousand Parsec есть три основных компонента. Во-первых, клиентская программа: это приложение, через которое игрок взаимодействует со Вселенной. Она с помощью всех важных протоколов подключается через сеть к серверу, к которому также подключены другие клиентские программы (или, в некоторых случаях, искусственный интеллект). На сервере хранится состояние всей игры, обновляемое клиентскими программами в начале каждого хода. Игроки могут выполнять различные действия и передавать их обратно на сервер, который вычисляет результирующее состояние для следующего хода. Характер действий, которые игрок может выполнить, определяется набором правил: они, по сути, определяются игрой, в которую играют, которая актуализирована для игрока при помощи любой поддерживаемой клиентской программы.
Благодаря разнообразию возможных игр и сложности архитектуры, которая необходима для поддержки такого разнообразия, фреймворк Thousand Parsec стал интересным проектом как для геймеров, так и для разработчиков. Мы надеемся, что даже серьезный кодировщик, немного интересующийся анатомией игрового фреймворка, может найти для себя ценное в механике, лежащей в основе клиент-серверного взаимодействия, динамическом конфигурировании, обработке метаданных и реализации слоев, во всем, что с течением лет естественным образом переросло в хороший проект, являющийся квинтэссенцией стиля открытого исходного кода.
В своей основе фреймворк Thousand Parsec является, в первую очередь, набором стандартных спецификаций игрового протокола и других связанных с этим функций. В данной главе фреймворк рассматривается, в основном, с этой абстрактной точки зрения, но во многих случаях гораздо более поучительно обратиться к фактической реализации. С этой целью авторы для конкретного обсуждения выбрали «флагманские» реализации каждого из основных компонентов.
Образцом клиентской программы является tpclient-pywx
, достаточно совершенная клиентская программа на базе wxPython, которая в настоящее время поддерживает самый большой набор функций и новейшую версию игрового протокола. Это поддерживается с помощью клиентской библиотеки языка Python libtpclient-py
, предоставляющей средства кэширования и другие функции, а также с помощью библиотеки Python libtpproto-py
, в которой реализована последняя версия протокола Thousand Parsec. Что касается сервера, то образцом является tpserver-cpp
- совершенная реализация на языке C++, поддерживающая самые новые функции и последнюю версию протокола. Этот сервер отрабатывает многочисленные наборы правил, среди которых образцом наиболее широкого использования возможностей «традиционной» космической игры жанра 4X и важным этапным событием является набор правил Missile and Torpedo Wars (Ракетные и торпедные войны).
Далее: 21.1. Анатомия звездной империи Star Empire