Игровой движок
Игровой движок (англ. Game Engine, гаме энгинэ) — известный абсолютно всем школьникам и геймерам от мало до велика, главный центральный программный компонент видеоигр или других интерактивных приложений с графикой, обрабатываемой на ЭВМ в реальном времени, который породил множества древних и неугасающих мемов, который всегда у всех геймеров на слуху, особенно перед выходом какой-нибудь новой супер популярной игры.
Preamble[править]
Обеспечивает игровой движок основные технологии, упрощает разработку и часто даёт игре возможность запускаться на нескольких платформах, таких как игровые консоли и настольные операционные системы, например, GNU/Linux, Mac OS X и Microsoft Windows, хотя портирование приложений на разные платформы это геморрой, который остаётся и по сей день.
Features[править]
Игровой движок, включает в себя движок рендеринга («визуализатор»), физический движок, звуковой движок, систему скриптов, анимацию, искусственный интеллект, сетевой код, управление памятью и многопоточность. Часто на процессе разработки можно сэкономить за счёт повторного использования одного игрового движка для создания множества различных игр, хотя по ощущениям и взаимодействию с игровым миром всё равно чувствуется один и тот же движок с новыми декорациями.
Development[править]
Сложнее всего не написать сам игровой движок, а написать под него удобный инструментарий (SDK) и сделать движок гибким следуя старой главной парадигме процедурного программирования о повтором использовании кода. Именно на это у мелких конторок обычно и не хватает времени, поэтому сначала пишут игру поддаваясь творческим амбициям и кое-какие простенькие инструменты для комфортной работы с движком а после этого, если игра успешно продалась и конторка не закрылась, уже отделяют общие части движка от самой игры дабы приступить к написанию новой. Именно по этому первой игрой на каком-либо популярном движке была именно игра от самих разработчиков движка, примеры Crysis (CryEngine), Unreal Tournament (Unreal Engine) и именно по этому название движка так похоже на название первой игры на нём, хотя есть и исключения такие как Unity. Вообще такой подход почти везде в разработке программных продуктов в мелких фирмах.
Абсолютно новый движок[править]
Лучшим коммерческим ходом маркетологов компаний по разработке игр является заявление о том, что в новой версии их игры они использовали абсолютно «новый революционный движок™». Просто так повелось ещё со старых времён, это фраза действует на геймеров как фраза «я люблю тебя» на девушек. Если хочешь трахнуть трезвую шкуру поскорей, то обязательно признайся ей в любви, если хочешь выгодно продать новую часть игры (сотую по очереди, где нет ничего нового), то обязательно заяви о новом движке и не показывай технические данные приложения игрокам, про консоль отладки забыли как о пережитки прошлого. На самом деле переписывать движок достаточно затратно поэтому никто этого не делает, их обычно только дорабатывают ибо не надо менять то, что и так давно и хорошо работает. Одни и те же игровые движки используют десятилетиями ибо всё давно уже придумано и со временем добавляются лишь мелкие плюшки. Поэтому среди разработчиков так популярны системы контроля версиq, чтобы всегда можно было откатиться туда, где всё ещё работало.
Если работает — не трогай!
В реале дело не в движке, а в его оптимизации под новые системы, чтобы движок максимально использовал все возможности новых вычислительных машин. И вообще, графика зависит не от движка, а от вычислительной мощности видеокарты. Добавить полигончиков можно только если увеличить минимальные системные требования, а это урезает число потенциальных покупателей. Поэтому это скорее маркетинг, а не разработка.
Если при исполнении возникли ошибки, то перекомпилируй.
Новый движок можно сравнить с новой версией любого браузера, который, по обнадёживающим заявлениям разрабов, более быстрый и надёжный. На деле вся скорость (получение данных по сети) прямиком упирается в ширину интернет канала, а производительность (разбор кода, постройка DOM, разбор скриптов и рендер) в вычислительную мощность процессора и иллюзий здесь быть не может.
Бытует расхожее мнение, что написать свой собственный трёхмерный движок ну очень сложно. Якобы для этого надо, за много лет изучить весь курс матана, в совершенстве знать математику, продать душу Дьяволу и принести в жертву девственницу. Действительно написать визуализатор можно за считанные часы.
На самом деле, всё зависит от того с чего начинаем писать. Вся симуляция физических законов уже заложена в физические движки, а векторная алгебра уже имеется в библиотеках визуализации (и в утилитах для них, так в OpenGL можно самому не писать отсутствующие там алгоритмы просчёта и создания перпендикуляров к поверхностям для правильной трассировки света и его отражения), тебе остаётся только подключить всё это и быдлокодить своё дерьмо. Если начинать с ассемблера (писать свою графическую библиотеку под конкретное железо), то и всей жизни может не хватить на написание своего движка. Если же не изобретать велосипеды и использовать готовые компоненты (библиотеки в которых уже всё есть), то набыдлокодить в одиночку свой простенький 3D двиг можно спокойно за пару часов или за день. Большинство всяких неизвестных движков (под конкретные говно игры) были написаны за пару недель/месяцев командами из пары человек, это конечно не касается гигантов индустрии, которые пишутся командами по 20-50 человек.
Если писать под Windows, то одних компонентов Microsoft DirectX хватит на всё, там и графический визуализатор, работа в вводом, сетью, звуком и всё, что только надо. Под Linux посложнее ибо придётся собирать набор библиотек для работы со всеми составляющими (OpenGL, OpenAL, Simple DirectMedia Layer, ODL, etc).
Создание игры на своём движке[править]
Если ты написал свой двиг, то не спеши радоваться и думать о том как ты сделаешь супер игру, которая будет крайне популярна в Steam, всё самое сложное и запаренное только впереди. Свой движок это не более 20 % от всего времени создания полноценной игры. Создание самой игры на движке это самая творческая и заёбная часть создания полноценного продукта. И если создавать свои 3D модели персонажей в пакетах трёхмерной графики ещё интересно, то чем дальше, тем хуже. Больше всего всех бесит скриптовать процессы и сцены. Самое нудное это вручную анимировать кат-сцены так как это прошлый век и все мало-мальски серьёзные конторы уже давно используют motion capture ещё со времён GTA San Andreas если не раньше. В древности была такая ситуация, что если разработка некоммерческая, то с большой вероятностью игра в свет так и не выйдет так как писать надо много и через пару дней/недель/месяцев всё это сильно надоедает, так же как и секс с женой через пару лет брака. В новейшем же времени (в 21-ом веке и далее) любую самодельную небольшую демо-игру можно выложить не только где-нибудь на торрент-трекерах, но и на крутых и уважаемых сервисах цифровой дистрибуции, вроде Steam, получив какой-нибудь аналог программы «Green light».