Игровой движок (англ. game engine) — это центральный программный компонент компьютерных и видеоигр и других интерактивных приложений с графикой, обрабатываемой в реальном времени. Он обеспечивает основные технологии, упрощает разработку и часто даёт игре возможность запускаться на нескольких платформах, таких как игровые консоли и настольные операционные системы, например, GNU/Linux, Mac OS X и Microsoft Windows.
Словосочетание «игровой движок» подразумевает целый комплекс прикладных программ, включающий движок рендеринга («визуализатор») для 2D или 3D графики, физический движок, или обнаружение столкновений (и реакции на столкновение), звук, скриптинг, анимацию, искусственный интеллект, сетевой код, streaming, управление памятью, threading и граф сцены. Строго говоря, все части кода, написанные программистами при разработке игры, являются компонентами движка. Игровой процесс (геймплей) определяется функциями, реализованными в этих программах.
Если на заре компьютерной эры каждая игра создавалась разработчиками «с нуля», то всё изменилось с момента появления игры Doom (более 10 лет назад). В настоящее время практически все коммерческие игры создаются с использованием готового инструментария: в процессе разработки можно сэкономить за счет повторного использования одного игрового движка для создания множества различных игр.
Иногда «мододелы» делают какие-то видоизменения с помощью встроенного в игру языка программирования через скриптовые сценарии. Можно подкрутить некоторые параметры функций движка, чем с удовольствием пользуются читеры (увеличивая, например, количество денег у игрока). Однако серьезные изменения геймплея невозможны без вмешательства в исходный код игры. И тут начинаются проблемы. Во-первых, не каждая игровая компания код обнародует. Во-вторых, далеко не каждый может разобраться самостоятельно в огромном количестве функций движка. А другого пути часто нет, поскольку отсутствует справочная информация и техническая поддержка (спросить не у кого). В-третьих, как правило, публикуют исходный код уже технически устаревших движков (например, Quake II, III).
Что же остается начинающим разработчикам?
- Купить право на использование современного двигателя от известной компании (лицензировать движок). К нему прилагается справочная информация и поддержка производителя. Однако это удовольствие не из дешевых. Существуют коммерческие игровые движки стоимостью до сотни тысяч долларов.
- Разработать свой собственный движок. Выход, конечно, но для этого требуется много усилий и высокая квалификация в программировании.
- Использовать один из бесплатных движков, наиболее подходящий по своим возможностям. Как правило, к ним имеется дополнительная информация и поддержка.
Бесплатные игровые движки
На сегодняшний день самыми популярными и продвинутыми из бесплатных (обычно open source, с открытым кодом) игровых движков являются:
- OGRE (Object-Oriented Graphics Rendering Engine)
Объектно-ориентированный графический движок рендеринга. Написан на C++, 3D графика, в нем используются Direct3D and OpenGL. По этому движку существуют печатные книги (на английском языке). Имеется и русскоязычный сайт. Для работы с последней версией движка нужен один из следующих компиляторов: gcc, Visual C++ 7.1 (2003), Visual C++ 8.0 (2005). Движок поддерживает компиляторы Для работы в Linux и Mac применяется gcc 3+. Если в игре будет использован DirectX, необходимо предварительно установить DirectX SDK (можно скачать с сайта Microsoft).
По утверждению разработчика, Ogre не является в строгом смысле слова игровым движком. Как сказано в документации, «Ogre — графический, и только графический движок. Это значит что ничего другого, кроме вывода и обработки графики, он не делает. Но это значит еще и то, что к нему можно прикрутить сторонние библиотеки для создания полноценной игры, а именно:
- звук;
- организация сети;
- ввод (манипуляторы, джойстики);
- расчет столкновений.
Ogre не содержит эти библиотеки, но предоставляет интерфейс, который позволяет легко подключать внешние модули».
Движок отличается широкой поддержкой разнообразных графических форматов. Помимо стандартных, можно использовать объемные, сжатые текстуры и cubemaps. Много плагинов, которые позволяют импортировать в него 3D-модели из различных пакетов 3D-графики (3DS Max, Maya, Milkshape3D, Blender Wings3D). При этом можно использовать как фреймовую, так и скелетную анимацию. Ландшафты в Ogre выглядят неплохо. Для создания небольшой игры в состав движка включены все необходимые стандартные классы управления сценой. Игровые ресурсы можно паковать в архивы PK3 ZIP.
На Ogre делают и коммерческие игры — в частности, на нём написаны игры «Стальные монстры» (Pacific Storm) и онлайновая игра Anarchy Online. Разработка на основе движка коммерческих игр говорит о большом потенциале Ogre. У него множество пользователей. Есть к кому обратиться в случае возникновения проблем. Наверняка их кто-то до вас решал или, по крайней мере, знает, как обойти. Большое количество справочной информации и примеров позволят освоить движок даже начинающим. Это отличный вариант для разработки игры при отсутствии финансов на покупку коммерческого engine.
- Crystal Space. Кросс-платформенный SDK с открытым кодом для 3D графики в реальном времени, в особенности для разработки игр. Написан на C++, но использовать его можно не только в C++ проектах, но и в Python, Perl, Java проектах.
- Nebula Engine 2. Движок с открытым кодом для 3D-игр и визуализации. Использовался в нескольких коммерческих играх. Написан также на C++, работает только под Windows, использует DirectX 9.0. Есть классы для реализации шейдеров (HLSL и FX-файлы DirectX), скелетной анимации, системы частиц, теней. Поддерживает несколько широко распространённых скриптовых языков TCL, Python и Lua.
- Irrlicht. Open source, кроссплатформенный, написан на C++, можно использовать из-под .NET (языки типа C#, VisualBasic, and Delphi.NET), Java — c помощью библиотеки jirr или Bindenlicht, Python — с помощью библиотеки Pyrr, Ruby — с помощью библиотеки IrrRuby и ряда других языков. Этот игровой движок родом из Германии. Продвигает его фактически один человек. Развивать движок в одиночку, сделать его полностью бесплатным и выложить весь исходный код — на такое способен далеко не каждый. Хотя до финальной версии Irrlicht еще далековато, на нём уже можно делать серьезные игры. В движке имеются все необходимые для этого функции. Рендеринг выполняется через OpenGLDirect3D (с поддержкой DirectX9.0). Присутствует и софтверный режим, то есть всё будет отрисовано собственным программным визуализатором, который в эру больших аппаратных возможностей видеокарт практически не используют. Этот достаточно простой в освоении игровой движок подойдет как делающим первые шаги в программировании трехмерных игр, так и опытным командам для создания полноценной игры. Подробнее об Irrlicht можно прочитать на сайте knol.google.com.
- OpenSceneGraphg. Open source, кроссплатформенный, написан на стандартном C++, использует OpenGL. Работает с трехмерными моделями форматов .lwo, .obj, .geo, .3ds, .x, .wrl, то есть с объектами, созданными в любом современном редакторе трехмерной графики (3DS Max, Maya и Lightwave 3D).
- Microsoft XNA. Технология от Microsoft по кросплатформенной разработке игр для 3-х платформ — Windows, Xbox 360 и Zune (mp3-плеер от Microsoft). Правда, чтобы разрабатывать игры для Xbox, придётся приобрести Xbox Developer Kit, но под Windows игры можно разрабатывать бесплатно. Технология расчитана на разработку игр под DirectX и .NET Framework ( .NET Compact Framework на Xbox 360) и, строго говоря, основным языком при разработке игр с использованием XNA должен быть C#. Есть поддерживаемое корпорацией сообщество разработчиков. На сайте techdays.ru есть несколько «вебинаров» (слайдов, озвученных закадровым голосом), которые посвященных разработке игр на XNA. Вебинары прочитаны сотрудниками Microsoft и представляют собой введение в курс дела.
- Есть нескоторые другие бесплатные игровые движки: Panda3D, GLScenee, Dark Basik, однако они не так широко применяются, как охарактеризованные выше.
Имея готовый игровой движок, можно думать только о механике игры, а это очень важно для разработчика.
Источники:
Дополнительно:
- wikipedia.org — статья «Game engine» («Игровой движок») в Википедии;
- xakep.ru — «Сага о движках: курс молодого бойца» (журнал «Хакер»);
- devmaster.net — обширная база данных по движкам (коммерческим и бесплатным; англ. яз.).
Дополнительно на Геноне: