Торговые Империи: программирование собственной вселенной на PHP
Автор: © Bryan Brunton
|
Брайен Брантон создал проект "Торговые Империи" (Merchant Empires Project) -- коллективную Интернет-игру, суть которой заключается в исследовании космического пространства и в экономической конкуренции участников. Игрок должен владеть приемами стратегических, ролевых и боевых игр, а также быть искусным дипломатом. В основу "Торговых Империй" легла памятная BBS-игра "Торговые войны" (Tradewars). В приведенном ниже интервью Брайен рассказывает историю создания и развития "Торговых Империй". Вопрос: Что побудило Вас заняться созданием ТИ? Ответ: Несколько причин. Во-первых, хотелось узнать смогу ли я это сделать. Я всегда увлекался стратегическими играми и мне всегда хотелось написать такую игру самому. И, хотя я знал, что воплощение задуманного может быть временами и скучным и утомительным, меня это не останавливало. Во-вторых, я натолкнулся на игру под названием "Звездный Купец", ASP-реализацию "Торговых Войн" с закрытым кодом, и меня ужаснуло то, как скверно она была сделана. Многое в "Звездном Купце" мне казалось неправильным, но что меня особенно поразило своей нелепостью, так это периодически выскакивающее окно с сообщением: "Command not processed due to an ErrorStorm. Please log out and try again." Абсолютная бессодержательность самой концепции "Девятого Вала Ошибок" [Error Storm] и то, что кто-то думает, что пользователи могут "проглотить" такое объяснение, вызвало у меня смех. "'Торговые Войны'" заслуживают лучшего!" -- сказал я себе. Однако нужно сказать, что и желания с презрением отбросить все усилия и изобретательность, вложенные в "Звездного Купца" разработчиками, у меня тоже нет. Разработчики ЗК заслуживают серьезной похвалы за то, что они сделали. В.: А какие программы Вы использовали для того, чтобы вдохнуть в ТИ жизнь? О.: Вот краткий перечень тех open source программ, которые работают в ТИ:
В.: Многие участники ТИ говорили мне, что временами сайт был, ну, не слишком стабилен. С какими проблемами Вы столкнулись во время разработки? О.: И багов и капканов было предостаточно. При использовании настроек, которые делаются автоматически в большинстве дистрибутивов Linux, дела с масштабируемостью и в самой операционной системе, и в таких приложениях, как Apache и PostgreSQL, обстоят просто отвратительно. По моему мнению, Linux "из коробки" не обеспечивает стабильной платформы для основанного на базе данных веб-сайта (Apache + PHP + PHPLIB + PostgreSQL) со средней нагрузкой. Когда я говорю "из коробки", я имею в виду установку одного из популярных дистрибутивов на обычный PC с теми настройками, которые предлагают разработчики дистрибутива. Вот несколько проблем, с которыми мне пришлось столкнуться и которые вызвали больше всего головной боли:
В.: А с какой радости бросать одну из наисовременнейших игрушек наподобие Quake III и запускать браузер для того, чтобы поиграть в ТИ? Насколько Ваша игра интерактивна, ведь процессору на компьютере игрока нет нужды прогонять и одного гигафлопа вычислений с плавающей точкой? О.: Лишенная возможности действовать пустота HTML, это, конечно, такое место, в котором игроку меньше всего хотелось бы оказаться в момент, когда корабль противника готов превратить его в облако космической пыли. Но игра в веб-браузере имеет и ценные с моей точки зрения преимущества. Я просмотрел довольно много проектов сходной ориентации прежде чем начал писать ТИ. Многие из этих проектов увязли на середине дороги, во многих случаях разработчики после полугода работы над кодом сервера и клиента так и не получили в результате своих усилий того, что можно было бы назвать игрой. Мне же хотелось сразу начать писать игровой код. Многочасовое корпение над разработкой концепции масштабируемого многопользовательского игрового сервера а) выше моих сил и б) это скучно. И еще, мне хотелось, чтобы для игры был нужен лишь "наибольший общий делитель" клиента, т.е. браузер с поддержкой javascript. Вы можете подключиться и играть в ТИ из значительно большего числа мест, чем в случае игры, которая требует установить и сконфигурировать что-либо на клиенте. Что же касается хороших и плохих игр, то мне всегда нравились интеллектуальные игры, в которых приходится думать над каждым ходом, а не просто крутой frame rate. В.: Игровая индустрия в целом очень слабо отреагировала на появление "Торговых Империй". Недавно, расспрашивая одного представителя этой индустрии о том, что он думает по поводу ТИ и не собирается ли его компания выйти на рынок с подобной игрой, мы получили в ответ лишь смесь молчания и отрицания каких-либо планируемых телодвижений в этом направлении. Был ли проявлен к ТИ какой-либо коммерческий интерес и какое будущее Вы видите у рынка "восставших из мертвых" игр в стиле BBS2HTML? О.: А нет никакого коммерческого интереса. Я презираю баннерную рекламу. И, пока я управляю сайтом "Торговых Империй", ее там не будет. Это означает, что я, вероятно, никогда не смогу позволить покупку дополнительного канала для сайта ТИ (сейчас используется 768K DSL канал моего друга). Правда всегда есть шанс, что какая-нибудь богатая организация в погоне за званием спонсора ТИ предоставит дополнительный канал. Кстати о DSL: хотя это и прекрасно, что такая высокая пропускная способность стала доступной широкому кругу пользователей и по столь низкой цене, надежность DSL (в том виде, в котором это делается QWest в Колорадо Спрингс, США) мягко говоря, огорчает. Только такая компания, как QWEST, монопольно контролирующая весь рынок, может позволить предоставлять услугу такого паршивого качества. В.: Насколько ТИ популярны? О.: Зарегистрировалось более 7000 человек. У ТИ есть группа из пары сотен верных приверженцев, которые играют регулярно. Мне кажется, что игра несколько теряет в увлекательности из-за простоватой экономической и политической модели. Я хотел бы сделать их реалистичнее и, соответственно, увлекательнее. Ролевые возможности тоже ограничены пиратством и убийством противника. Мне нравится заниматься сайтом ТИ потому, что это классно написать программу, которой часто пользуются и которая может породить много данных. Не знаю почему, но мне нравится когда много данных. База данных ТИ может дорасти до 100 и более мегабайт прежде чем я удаляю данные старых игр и игроков. В.: А что игрокам нравится в ТИ больше всего? О.: Игрокам, похоже, больше всего нравятся интриги при планировании убийств других игроков. То же самое и в других онлайновых играх, если в них есть драки и сражения. В ТИ игроки выбирают, на какой стороне им выступить в конфликте и образуют союзы для захвата галактик и всей игровой вселенной. Просто восхитительно видеть, как разные союзы принимают формы, заполняющие весь спектр от демократии до полного авторитаризма. Многие игроки являются еще и программистами, которые помогают в разработке. Игрокам определенно нравится видеть как игра разрастается и улучшается. В.: Как Вы планируете улучшить игру? О.: Я считаю, что будущее веба за SVG (Scalable Vector Graphics). По сути, SVG -- это открытая реализация Flash. В потенциале SVG может быть даже более мощным инструментом, поскольку этот формат базируется на таких открытых стандартах, как XML и Javascript. К несчастью поддержка SVG в браузерах для Linux ограничена MathML-SVG вариантом Mozilla, которым практически невозможно пользоваться. А вот для Windows и Mac платформ имеются высококачественные плагины от Adobe. Но поскольку сейчас в моем настольном компьютере Linux, то необходимость работать с SVG ставит меня перед выбором. Мне хочется сделать в ТИ несколько существенных расширений. Я хотел бы создать java-апплет, который мог бы показывать игровую информацию в реальном времени. Еще мне хотелось бы добавить корабли и планеты, управляемые компьютером. В перспективе управляемая программой Империя (выполняющая в ТИ роль полиции) будет играть в игре большую роль. Еще мне хотелось бы устранить зависимость ТИ от PostrgreSQL. Я лично ничего против PostrgeSQL не имею, но люди спрашивают о возможности работы ТИ с MySQL. Сейчас большая часть обращений ТИ к базе данных идет через PHPLIB, так что убрать немногочисленные PostrgeSQL'измы из кода будет нетрудно. В ТИ 2.0 я планирую несколько существенных изменений. Я хочу использовать гексагональные карты (сейчас секторы квадратные). Но для того, чтобы это работало правильно, нужна SVG. Я хочу разработать совершенно новую модель для торговли, в которой будут буквально сотни разных товаров и торговые соглашения на основе контрактов. Я хочу уйти от портов, как самостоятельных сущностей, сделав их просто свойствами планет. Я хочу заменить систему повышения рейтинга игрока, основанную на простом наборе очков, получаемых за "налет часов" такой системой, в которой будет учитываться его мастерство. Эти и другие идеи сейчас обсуждаются в списке пожеланий к ТИ на SourceForge. В.: Некоторые жалуются на невысокое качество Вашего кода. Не поймите превратно, но я вынужден согласиться с ними. Перед этим интервью я заглянул в код обработчика событий, серверного процесса обрабатывающего важные для игры события, и заметил, что вся интеллектуальность поведения запихана в сетевой цикл [networking loop]. О.: Для начала учтите, что "Торговые Империи" писались так быстро, как я только мог. К вопросу я подходил очень просто: смотрю на скриншот "Звездного Купца" и побыстрее делаю то же самое. Кроме того, я совершенно сознательно внес в написание "Торговых Империй" элементы обучения. Разные части "Торговых Империй" используют C++, PHP и Python. У меня был небольшой опыт в C++, но ни с PHP, ни с Python я никогда не работал и ничего в них не понимал. Я хотел выучить оба эти языка. Некоторые части "Торговых Империй", такие как непоследовательное использование CSS и боевые возможности, с программистской точки зрения просто находятся на этапе проверки реализуемости. Когда я писал обработчик событий, я не слишком понимал что есть селективный сетевой цикл [selective networking loop]. А сегодня я забыл все, что узнал об этой концепции и сейчас я просто радуюсь тому, что тот или иной кусок кода продолжает работать. В.: Ясно, код просто еще не отшлифован. Вы не думали использовать технику рекурсивного программирования для придания ему элегантности? О.: Рекурсия при верном использовании страшно мощный инструмент программирования. Однако на самом деле я ею никогда не пользовался. Я думал о том, что участие в интервью для этой статьи (в известном смысле рекурсивный процесс) даст мне представление о рекурсии, и, если мне понравится, то я подумаю, стоит ли использовать ее в будущем.
|
Copyright © 2001, Bryan Brunton. Copying license http://www.linuxgazette.com/copying.html Published in Issue 62 of Linux Gazette, February 2001 |
Вернуться на главную страницу |