Проект длиною в жизнь
Как показал недавний пример Voxel Quest, создание некоторых компьютерных игр может затянуться надолго. Какой ни установить дедлайн — он обязательно будет просрочен. Особенно если проектом занимается единственный разработчик, очень увлечённый своим делом. Фанатичный автор хочет довести игру до идеала, уделяет внимание каждой мелочи. Такие игры или становятся шедеврами, или не выходят никогда. Обычно второе.
Австралийский разработчик по имени Фил уже 18 с лишним лет тратит свободное время на любимое хобби: создание Самой Лучшей Игры всех времён и народов под названием Pegwars (Political Economic and Galactic Warfare) — политический, экономический и галактический боевой симулятор.
Игроки со стажем должны помнить космический симулятор с элементами космической стратегии под названием Elite. Та игра вышла в 1984 году и стала родоначальником нового игрового жанра, где космические битвы сочетаются с торговыми отношениями.
Маленький Фил впервые увидел Elite, когда ему было 11 лет, и сразу «подсел».
Восемь целых галактик, множество инопланетных рас, миссий, бои в реальном 3D. Настоящая фантастика для компьютеров ZX Spectrum с 48 КБ памяти. Другие игры рядом не стояли рядом с этим шедевром (пока не появился Star Control, конечно, но там уже был немного другой жанр и боевой режим 2D).
Игра навсегда запала в душу парня, и как только он научился программировать по окончании университета, то сразу засел за создание Pegwars. Это было примерно в октябре 1997 года. С годами он всё больше погружался в аспекты гейм-разработки, освоил дизайн, художественное искусство, музыку, научился более профессионально программировать. Спустя много лет недоделанная демка Pegwars помогла ему даже устроиться на работу в компанию, которая занимается разработкой компьютерных игр. Фил говорит, что даже новое увлечение сочинением электронной музыки появилось во время разработки игрового сопровождения для Pegwars.
Разработка несколько затянулась, мягко говоря. Последние шесть лет Фил ведёт блог, рассказывает о прогрессе и новых фичах, которые внедрил за последние несколько месяцев или год. Новая версия Pegwars раньше выходила примерно раз в два года. Игру постоянно приходится дорабатывать, потому что технологии не стоят на месте, а автор ещё не реализовал все свои задумки.
Например, вот так выглядела первая версия PEGWARS, ещё в режиме 2D, написанная на DirectDraw 2.
Pegwars 1.0
Уже в первой версии Фил реализовал примитивный ИИ в боевом режиме, который обучался с использованием генетического алгоритма. У каждого корабля противника был коротенький «фрагмент ДНК», который реагировал на покадровый ввод и выдавал команду для действий корабля. После работы с генетическими алгоритмами Фил вынес урок, что тестирование эволюционирующих генетических алгоритмов следует проводить в модели игры, а не в полной версии, потому что тесты 100 поколений для 100 пилотов занимают слишком много времени.
В версии Pegwars 2.0 автор впервые реализовал трёхмерное игровое пространство в боевом режиме.
Pegwars 2.0
В новой версии автор прикрутил слой 3D поверх старого движка 2D и сделал модульные корабли с drug-n-drop редактором, в котором можно было перетаскивать и заменять основной двигатель, подруливающие двигатели, импульсные лазеры и другое оснащение кораблей перед битвой. Если вы забыли добавить двигатели к кораблю, то он вообще никуда не полетит. Со второй версии Фил сконцентрировался на создании полностью модульных кораблей с настраиваемой конфигурацией.
Pegwars 3.0 стала первой версией с 3D-ускорением, сначала с GLIDE, а потом DirectX. Здесь разбитые корабли сразу разлетались на осколки, вплоть до исходных полигонов.
Pegwars 3.0
Именно эта версия легла в основу демки, которую Фил показал рекрутерам из компании BigWorld Technology — и они пригласили его на работу. Так мечта парня о работе в индустрии игровой разработки воплотилась в жизнь.
Фил продолжал совершенствовать модульный реактор кораблей, а в четвёртой версии реализовал многое из того, чему научился у коллег в BigWorld Technology, в том числе движок гравитации и более реалистичную космическую графику.
Pegwars 4.0
Фил говорил, что на этом этапе у него появилось ощущение, что проект может оказаться слишком сложным для одного человека… Но останавливаться было уже поздно.
В пятой версии Pegwars впервые стало возможным спуститься и приземлиться на поверхность любой планеты в галактике, пересесть на какой-нибудь мотоцикл или автомобиль — и покататься по окрестностям! Реализована высадка на космических станциях, сражения внутри них и повышение собственного уровня в случае побед.
Pegwars 5.0
Ещё одна интересная фича — реализация восхода и заката солнца на любой планете. Если вы летите в атмосфере планеты против её вращения, то вскоре увидите восход солнца, при этом воздух проясняется, а небо расцвечивается в цвета восхода. При продолжении движения в том же направлении солнце поднимается дальше вверх, а затем опускается позади корабля.
Создание пятой версии заняло несколько лет. Фил продолжал кодировать на C++. Он говорит, что из-за этого разработка продвигалась более медленно, чем могла бы при использовании сценарных языков. С каждым новым модулем игра разрасталась и её становилось всё труднее поддерживать.
Фил понял, что движок надо переписывать с нуля — и в 2010 году приступил к созданию принципиально новой версии Pegwars.
Новая версия
За пять с лишним лет движок почти полностью готов, на прошлой неделе автор поделился последними новостями проекта. В последнее время он уделил больше всего времени совершенствованию шаблонных планет и атмосфер, добавил процедуры для туманностей и искусственный интеллект. Фил говорит, что сейчас игра почти достигла той стадии, когда он готов опубликовать видео. Наверное, в ближайшие год-два он решится на это.
Движок доработан, так что путешествия между планетами и между галактиками теперь происходят плавно, абсолютно без рывков — от момента выхода из варп-скачка на сверхсветовой скорости до приземления на планету и путешествия по её поверхности.
Например, так выглядит одна из планет с пустынным ландшафтом, похожим на Австралию.
А вот результат работы прототипа движка по рендерингу облаков.
Облака раньше отображались по картинкам, но автор хочет использовать систему рендеринга частиц или клеточный автомат на GPU для генерации реальных процедурных облаков на каждой планете, в соответствии с физическими условиями этого мира. Облака встроены в шейдер рассеивания атмосферы, так что они тоже подсвечиваются при закатах и рассветах и отбрасывают тени. Такой подход выгоден тем, что можно внедрять туда произвольные объекты и пролетать сквозь облака.
Корабль пролетел над планетой и где-то разбился
Атмосферный шейдер теперь красиво обрабатывает солнце на восходе, подсвечивая атмосферу.
Процедурная генерация относится не только к планетам, но и к спутникам.
Полёт ранним утром:
Вот ещё несколько скриншотов из последней версии игры.
Планета с тёмным солнцем
Вид на солнце из кратера на луне
Взлёт с поверхности планеты с какими-то розовыми кристаллами
Вид на планету с гигантским кратером
Лесная долина на планете с розовыми кристаллами
Изучение поверхности нескольких случайных планет
Фил рассказывает, что когда реализовал нормальный ИИ для кораблей и полноценный боевой режим, Pegwars стала действительно похожа на настоящую компьютерную игру, а не космическую песочницу.
С каждым годом у автора появляется всё больше идей, как улучшить игру. Например, с выходом первых прототипов Oculus Rift пару лет назад Фил задумался о реализации режима виртуальной реальности с поддержкой шлемов VR.
Получилось вполне неплохо.
Будем надеяться, что проект всё-таки когда-нибудь дойдёт до логического завершения — и каждый из нас сможет насладиться геймплеем так, как сейчас им наслаждается Фил.
Некоторые другие длительные проекты героев-одиночек
- Компьютерную игру Infinity с 2004 года разрабатывает пользователь Флавьен Бребион (Flavien Brebion) под ником Ysaneya, регулярно рассказывая о процессе разработки на игровом портале GameDev.net.
- Испанец Хусто Гальего Мартинес с 1961 года в одиночку строит свой собственный собор в городке Мехорада-дель-Кампо, в 20 км от Мадрида.