Geo Mod (рус. Гео-мод) — игровой движок, разработанный американской студией Volition, Inc. в 2001 году и используемый в разработанных нею компьютерных играх «Red Faction» и «Red Faction II». Отличительной особенностью «Geo Mod» являются его широкие возможности по разрушению окружающей среды и деформации ландшафта. Название движка происходит от слов «Geometry Modification Technology» (рус. Технология Модификации Геометрии ). «Geo Mod» является проприетарным программным продуктом, разработанными Volition для внутренних целей и потому не лицензируется. «Geo Mod» является кроссплатформенным программным обеспечением и поддерживает IBM PC-совместимые компьютеры под управлением Microsoft Windows и Mac OS, а также игровые консоли Xbox, PlayStation 2 и Nintendo GameCube.
Преемником «Geo Mod» стал «Geo Mod 2», который был впервые представлен в 2009 году в игре «Red Faction: Guerrilla» и поддерживал физически достоверные разрушения.
Ведущим программистом Volition и основным разработчиком системы разрушения «Geo Mod» был Джон Слагель (англ. John Slagel),который, по собственным воспоминаниям, потратил более полугода на создание системы разрушений, изучая множество материалов и проводя эксперименты. В процессе разработки этой подсистемы он взял консультацию в профессора Кристофера Хоффмана (англ. Christoph Hoffman), автора книги «Geometric and Solid modeling», которую Слагель использовал. Вместе с тем, финальный сходный код, ответственный за разрушения, является достаточно простым по сравнению с другим кодом из движка. Кроме модуля реализации разрушений, который был написан Слагелем, несколько других программистов модифицировали другие системы движка, приводя их в соответствие с системой разрушений. К примеру, механизм поиска пути для игрового ИИ должен был динамически корректироваться в зависимости от разрушений на уровне, объекты, под которыми не было никакой опоры, должны были падать, деколи, гильзы и другие мелкие объекты должны «знать» о «пробитых дырах» и учитывать их и т.д. После выхода «Red Faction» Слагель переписал некоторые его части для «Red Faction II».
Основной отличительной особенностью «Geo Mod» от других движков его времени была уникальная технология, позволявшая динамично разрушать любые строения и объекты на игровом уровне. Однако эти разрушения являлись больше графическим эффектом, нежели физически достоверным взаимодействием, влияющим на объекты. К примеру, разрушив почву под строением, этим самым невозможно было привести к его оседанию и разрушению. Этих недостатков был лишен наследник «Geo Mod» — «Geo Mod 2», однако он позволял разрушать лишь строения на заранее определённые компоненты, а не динамически, и не позволял деформировать ландшафт.
Система разрушения в «Geo Mod» полностью построена на принципах конструктивной сплошной геометрии (англ. CSG) и является графическим приёмом. При создании дыры в стене уровня, к примеру, происходит булевая операция разности, на основании которой определённые полигоны удаляются, модифицируются и создаются. Из-за возможности пробивать различные преграды разработчики не могли использовать технологии предпросчитанного освещения или PVS (англ.), а динамически обновляли освещение при создании каждой дыры, пробивающей стену.
Система разрушений является полностью динамичной, поэтому разработчики должны были «подстраивать» под неё все остальные части движка. Так, создание путей для ботов происходит динамически и принимает во внимание разрушения. Механизм порталов (англ.) обновляется автоматически, превращая каждую сквозную дыру между двумя пустотами в отдельный портал. Структуры, участвующие в обнаружениях столкновений, динамически обновляются, используя AABB. Разные декали (дырки от путь, кровь и т.д.) устраняются из поверхностей, которые разрушаются, и динамически учитывают изменившуюся геометрию.
В первой версии движка, присутствующей в «Red Faction», при достижении лимита доступной оперативной памяти в связи с активными разрушениями, производимыми игроком, движок ограничивал дальнейшие возможности в разрушении уровней. В обновленной версии движка, представленной в «Red Faction II», движок позволял делать игроку неограниченное количество разрушений, однако при достижении предела памяти он убирал (очищал из памяти) самые старые разрушения.
|