Игровой движок

Материал из Неолурк, народный Lurkmore
Перейти к навигации Перейти к поиску

Игровой движок (англ. 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».

Telepuz 2.jpg Человек нонче игры разные ценит весьма, дык
МетаRPGИгровая консольШтампы в компьютерных играхИгровой движокТиммейтМассовый запрет игровых видео на YouTubeРейтыАгроWarcraft III — не канонАвтокликерДонат в игры из РоссииАрхидьявол (Герои 3)Лесные тени (Герои 3)Это собака?Blizzard измеряет соцсправедливостьЭто игра?Дроп (видеоигры)Надо, чтобы на КЧ напалПол это лаваКоллекционная играШахматная доскаВизуальная новеллаКонсольТяжёлые танки (World of Tanks)САУФлеш-игрыЛёгкие танки (World of Tanks)Консоле-холопыСредние танки (World of Tanks)Кризис переводов современных видеоигрКомпьютерное зрениеТокенОтсутствие МефистоБоязнь женской грудиSteam для пиратовБонусЗахват движенияВырезанный контентПазлЗаконы жанраA-Life 2.0DxvkVkd3dСэм ХаузерClaw EngineCuckpointMi hermano no estáO3DEВыбор зомбиЧувак (Postal)Евгений ГришаковКрипыBaba YetuWarhammerСписок персонажей Sword Art OnlineГовноигрыБронечайка (Гвинт)ShovelwareШахматный рендерингDirectStorageAdventureЭкшн-триллерШутерыШутерыCRPGRTSTBS
ЯвленияЖульничество в шахматахРусская кибердеревняОткрытый мирКастомизация персонажаElden Ring против The Witcher 3ПапкаDarksiders GenesisЧекпоинтCheat EngineРед (персонаж)Speedrun.comМоей сестры нетЕврейские корни BioshockМитаСтиль миллениаловFextralifeДжонатан РоджерсМетание шахмат в оппонентаСломанная механикаПрокачкаПешкаЗемля свободныхФарм клоуновБольшая чёрная светящаяся сфераВойдзонаТень ОробиссаРаспуджовкаWho's Lila?Убийство АрхимондаПочему не ВайперНейтан ДрейкR.G. МеханикиГенеральский эффектОгромный боссЭпоха ремейковАлексей Воктаков (Катков)Травля Илона Маска псевдогеймерамиААА-игрыОптимизацияТройная буферизацияRTXSpeedrunБетрезенПацификаАльваро КалметTerminals.ioCs.rin.ruGaiminВайфугеймКвадратные кроссвордыПочему титаны слишком большого размера? (Хроники Хаоса)Души тьмыSegaФоллаут-онлайнГейлендКамень, ножницы, бумагаBASKACombats.ruАббревиатуры имени МедоксаОлег СтавицкийМобильные игрыАвтобаттлерОнлайн-игрыMOBABeat 'em upСкурвившиеся игрыТанки free-to-playZumaLuxorТапалки в ТелеграмеGLaDOSХейтеры про Ведьмак 3Деградация Equestria at WarDirectXValveБезумная сложностьСложность
ЭпическоеНайди отличияУльтаГриферыКрестики-ноликиДонатная помойкаМультиплеерГамблингАзартные игрыСеранаArdub92СасикSupermassive GamesСтарый богХагги ВаггиИл-2Шахматная партияВнутриигровая валютаГриндилкаКатсценаБэктрекингГлорхМясной жукВидениеRMTEMPRESSМемные карточки ХСЕкатерина СтадниковаЦарь Соломон и шахматыМасонские шахматыАвтошахматыСигма-гармонайзерЧёрная стражаTeam SpiritНиколай АрмоникБойкот лаунчеровАвтохукБуст аккаунта в ДотеДота как медитацияWraith KingFFAДмитрий РоммельДэвид МайерсБагоюзерствоАчивкаВетераны ВОВРуслан ДиденкоМоршуОлег ЯворскийЧерноруссияRagDollСаня ТропинGiboSteam MachinesЭльф-торговецHD-изданиеИнди-хитыМидирGrimtoolsИгра в настольные игрыМетарабыПавел БурзаNetHackГюнтер о'ДимКирилл Баранов (Пятёрка)FunpayКанобуТюрягаРенфриКастомизация оружияГенератор случайных чиселDisable Core 0HvHРомхакингИгры из репозиториевProton GEМегатекстураPS4-Fake-PKG-ToolsВидеоигры про АстериксаОказуаливаниеThe SinПовестка SJW
ЛегендарноеТактические шутерыВиртономикаE3Настольные ролевые игрыМеркиSonyChris-chanSourceНастольная играГнилецБорьба с задницей ТрейсераКамбиВпук Дагона на рядДагон на токенахКотовухаБерашна а, бегашийна аДелает ли прокачка титана его сильнее или слабее? (Хроники Хаоса)Нужен ли Тесак? (Хроники Хаоса)На чём ездит Марта? (Хроники Хаоса)КибердемонЩитспавнRedotAsset FlipФайтингиMoswar.ruXbox Турция: Алярм, суки, аккаунты горят!Игру убилиЖенщина на корабле к бедеУправление рандомомИвентТрассировка фотоновHZB OcclusionTressFXОбъективный обзор игрПлотваChangedПочему плотва это лошадь?Расстрел НильфгаардаОрден смертного бденияУроборукКолдовские богиМусилакШтормовая плетьАнастерияНадзиратель ПотустороннегоЗвук пердежа в видеоиграхФракции Grim DawnКлючникКейранДевятая силаPay2WinБитва против 7 противников в Red Alert 2Гача-игрыMMORPGARPGRTSКвестFatCatDDrawCompatLOVE the gameПАНЕЛЬКИEurasian Game ShowMy name is You and it's the only unusual thing in my lifeNEEDY GIRL OVERDOSERiotlocThe Tomorrow WarEcho
Моды, карты и васянствоЛегенда о ТильдеParagonHorn of the AbyssJebus CrossX-PiratezOpenXComJebus OutcastThe World of Terrifying Silence6lm10a (шаблон)VANOMAS DEMO5 ночей с Тимохой 2: ДеревняСильная прокачкаSteampassФреймрейтNVidiaВзрыв лутаGTA: Криминальная РоссияМод-сообщество Рога и Копыта (Barnyard)Шахматный корольПасьянс КосынкаPity SystemЛегендаркаИгровые ресурсы
Игры реалаLEGOMagic: The GatheringБерсеркГоДоминоКамень-ножницы-бумагаКубик РубикаМонополияНа раздеваниеПокерПреферансРусская рулеткаСтрайкбол / Пейнтбол / ХардболШахматыЭкономические игры с выводом средств