Процедурный космос: генерируем миры на лету

Пару лет назад Сергей Цыпцын, выступая на CG Event, задал вопрос собравшимся работникам CG-отрасли: «Что вы будете делать, когда окажется, что можно отрендерить вообще всё?» Вопрос, конечно, глубоко философский — на данный момент. Однако, если вспомнить, что компьютерная суперграфика фильма «Газонокосильщик», которую, очевидно, делали на самых мощных машинах того времени (1990-й год выпуска), сегодня выглядит хуже, чем графика в играх для консолей прошлого, а то и позапрошлого поколения (и отрендерить её можно на «бытового» уровня ноутбуках в реальном времени), перспектива, описанная Цыпцыным, не выглядит такой уж далёкой и фантастичной.

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

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

Вот, для конференции Eurographics 2012 готовится научная работа, посвящённая реалистичному рендерингу лесов (на огромных пространствах, надо заметить).

В таких играх, как Oblivion, Skyrim, или каких-то других иногда можно наблюдать, как деревья «выпрыгивают» ниоткуда — их становится видно только с определённого расстояния (экономии ресурсов видеокарты ради, естественно).

Метод, который предлагают Эрик Брюнетон (Eric Bruneton) и Фабрис Нейрэ (Fabrice Neyret), позволяет рендерить лесные массивы на огромных расстояниях — в реальном времени.

Всё это хозяйство, по уверениям разработчиков, отображается в реальном времени на видеокарте NVidia 470 GTX, в разрешении 1024х768.

(Карта, к слову, весьма мощная).

Эти же программисты предлагают свой алгоритм генерации океана:

Есть также как минимум несколько попыток разработать «универсальные» движки для космических симуляторов, где подавляющее большинство контента генерируется пользовательским компьютером «на лету» по определённым алгоритмам.

По сути, такие планетарные генераторы существуют давно, например Mojo World и Terragen, однако эти пакеты не были рилтаймовыми по определению.

А вот многострадальный Infinity Engine/I-Novae Флавьена Бребьона позволяет генерировать целые планеты (даже с растительностью на их поверхности). Одна беда: непонятно, когда игра Infinity: Quest for Earth появится на свет в готовом виде. Вроде бы её демо показывали на E3 в уходящем году…

…Да здравствует твиттер: руководитель I-Novae Studios, которая сейчас занимается Infinity, сообщил, что в скором времени будет выпущен SDK для I-Novae Engine, после чего все силы будут брошены на доработку Infinity. А учитывая то, что разговоры про эту игру идут с 2006 года, всё чаще возникали подозрения, что её может постигнуть судьба Elite 4.

http://youtu.be/piUO4eyM3yA

NB: корабль и космическая станция НЕ являются процедурным контентом.

Вот ещё один любопытный ролик, демонстрирующий технологию процедурного отображения звёзд и галактик:

http://youtu.be/g0Th2BlQsj4

Как указывает автор видео, здесь всё сгенерированно на лету, кроме музыки (роскошно-кинематографичной), естественно, и фоновой текстуры галактики в самом начале.

Этот движок разрабатывается для будущей игры Freedom-Star: New Horizons (выпустить которую планируется на Xbox 360).

Портал для любителей космосимов Elite-Games.ru вовсю раскручивает относительно новую и относительно малоизвестную (пока) игру Evochron Mercenary, в которой огромная часть контента также генерируется процедурно. Это позволяет существенно сократить время загрузки объектов в память компьютера.

Ну, и последнее, о чём хотелось бы упомянуть на данный момент, так это об отечественной разработке, которая называется просто и незамысловато: Space Engine.

Ближе всего по сути и по духу эта разработка располагается к приснопамятной Celestia (1, 2), с той разницей, впрочем, что о генерации детализированной поверхности планет в Celestia и речи не было, а в Space Engine это, пожалуй, главное.

При этом, как и в Celestia, известные астрономические объекты представлены в соответствии с астрономическими каталогами (NGC/IC, HIPPARCOS) и др.

А всё, что «неизвестно», генерируется компьютером.

К слову, модель атмосферы Земли разработана как раз Эриком Брюнетоном, о котором речь шла в начале поста. Плюс к этому автор — Владимир Романюк признал, что в его коде присутствуют 3% копипасты из Celestia (математика, загрузчик текстур, солвер для орбит планет), а текстуры для планет Солнечной системы взяты из открытых архивов NASA.

К слову, «трёхпроцентные копипасты» предполагают, что исходный код SpaceEngine в итоге будет выпущен в открытый доступ, поскольку Celestia изначально сама опенсорсная.

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

Что будем искать? Например,ChatGPT

Мы в социальных сетях