17 лет назад 1 ноября 2006 в 11:46 985

Генератор вселенных

Вечность — дитя играющее, кости бросающее; дитя на престоле.
Гераклит. О природе
Там, где Империя живет, там, где пастух влюбляется в принцессу, 
а дракон повержен, и дети весело играют на костях его! Там я — Император! Вечный Император! Там все подвластно силе моей мысли, там есть Люся! 
Ю. Росич. Письмо Люсе

И в очередной раз собрался я написать про игры. Тема эта сама по себе достаточно актуальна на данный момент, так как игровая индустрия хоть и не является двигателем прогресса, но все же оказывает достаточно серьезное влияние на состояние рынка в целом.
Но речь, на самом деле, пойдет не совсем об этом. Дело в том, что буквально пару недель назад начались продажи довольно нетривиальной игры, которая называется The Elder Scrolls: Morrowind.

Что же в этом такого интересного? — спросите вы. Новые игры появляются ежедневно, и ничего особенного в этом нет!

Безусловно, это так. Но конкретно эта игра интересна тем, что ее разработчики впервые за всю историю компьютерных игр попытались смоделировать кусок мира (именно кусок мира, потому что создать целый мир невозможно — вступают в силу всякие неочевидные понятия вроде бесконечности и все такое) таким образом, чтобы он вызывал у игрока желание в нем социализироваться.

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

Приведу пример: идет герой по лесу и вдруг находит труп. Его можно обыскать и забрать те вещи, которые у него есть, его можно пнуть и испачкать ногу, от него можно отгрызть кусочек и съесть его, после чего аватар травится и умирает в страшных мучениях. С каждым предметом в подобной игре можно проделать огромное количество действий, которые немедленно отразятся как на общеигровой ситуации, так и на самочувствии героя, отношении к нему других персонажей программы и массе других, подчас совершенно неочевидных вещей, про которые ему будет честно рассказывать программа.

Как правило, разработчики подобных игр старались сделать законы, которые в них царили, максимально логичными и подробными, дабы любая ситуация, которая возникала в такой игре, решалась на основе здравого смысла. То есть от сырого трупа случается расстройство желудка, если пнуть спящего медведя, то он откусит ногу — и так далее.

Но в силу того, что у подобных игр был текстовый интерфейс, разработчики были избавлены от колоссальных проблем, связанных с описанием работы графического движка программы, ибо его просто не было — компьютерную графику с успехом заменяло воображение игроков. То есть весь визуальный ряд, связанный с этим миром, каждый игрок генерил себе сам, и степень его детализации зависела исключительно от развитости этого самого воображения.

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

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

О какой интеграции может идти речь, если трава под ногами не мнется (когда она вообще есть), листва на деревьях не колышется, а топор, положенный на воду, не тонет, а остается на поверхности? К тому же запрограммировать все возможные воздействия даже на один предмет в игре (к примеру, тот же топор можно бросить, положить, сломать, поджечь, воткнуть в дерево, уронить себе на ногу…) нереально, потому как количество этих действий крайне велико.

Но разработчики пытались. Все они разделились на две большие категории. Одни начали делать симуляторы очень узкого куска человеческой деятельности (к примеру, симуляторы самолетов, где можно только летать, или симуляторы пожарной команды, где можно только тушить), но зато старались сделать их настолько подробными, насколько в тот момент позволяли возможности компьютеров. Вторая категория разработчиков (их, кстати, очень мало было — видимо, у большинства оптимизма не хватило) решили пойти другим путем и делать симуляторы целых миров, где было очень много возможностей, которые, как правило, компенсировались сложностью освоения мира и его чудовищной глючностью.

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

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

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

Мир Morrowind стал меньше по сравнению с Daggerfall. Симуляция событий в нем носит несколько назойливый характер, ибо законы рынка не дремлют, и многочисленных «пионэров» (игроков нового поколения, «приставочников», которые не привыкли напрягаться) надо чем-то заинтересовать, иначе игру они просто не купят. В игре нельзя вести жизнь оседлого торговца — такой возможности просто нет, наоборот, приходится постоянно что-то предпринимать, иначе становится откровенно скучно. Но зато если шевелиться, то чувствуешь себя отлично.

С персонажами можно торговаться, их можно оскорблять, убивать, обкрадывать, в лесу периодически натыкаешься на местных гопников, которые просят у тебя денег, песчаной бурей в город может принести дракона, а если съесть поганок в лесу, то персонажа начинает откровенно таращить. Список действий, которые может выполнять игрок, велик, очень велик — и все же недостаточно велик, чтобы игра могла считаться симулятором мира.

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

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

Во-вторых, программное обеспечение. Формальные требования к основе движка программы-симулятора очень просты — он должен быть в состоянии рассчитать любое действие любой группы объектов в этом мире по отношению к любому другому действию или группе объектов. (Как подобную систему можно реализовать на практике, непонятно совершенно. Нужен некий алгоритм, который смог бы обсчитывать подобные схемы, — да где ж его взять…)

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

Главное в этом деле — поставить перед собой нереальную цель и попытаться ее воплотить в жизнь. Сначала симулятор жизни в деревне, потом симулятор жизни в области, потом симулятор жизни в стране, на континенте, на планете, наконец! Согласен, сейчас подобная схема кажется совершенно фантастической, и сложно даже допустить, что когда-нибудь наступит такой волшебный момент, когда заработает симулятор даже не деревни, а одного деревенского дома, где будет все — эмоции жителей, тараканы, пьяный муж вечерами и склочная жена по утрам. Ну а вдруг?

А самое смешное во всей этой истории то, что если создать движок (стабильно работающий движок) для симулятора солнечной системы, то в него можно будет ввести некий генератор, который будет выдавать солнечные системы различного характера просто пачками. И путем введения в эту схему связей между ними можно будет смоделировать галактику. А потом в движок галактики ввести генератор…
Господи! Перезагрузи этот мир, а?

Никто не прокомментировал материал. Есть мысли?