Костыли разработчиков

Материал из Викитропов
Перейти к навигации Перейти к поиску

Создание видеоигр — это очень увлекательное, но сложное дело (если, конечно, разработчик не работает спустя рукава). И бывает так, что движок игры не позволяет в полной мере создать какую-то игровую механику. И вот тогда на помощь приходят костыли разработчиков. Например, можно использовать наработки из других видеоигр этой компании и, слегка изменив их, добавить в новую игру. Или же если в игре есть катсцена, где персонаж игрока едет в поезде, то он на самом деле никуда не едет, а за окнами просто движутся картинки (игра тем временем подгружает следующую локацию). Моды на игры, особенно если разработчики зажали приличный инструментарий, нередко сплошь состоят из разных костылей.


Примеры

Общее

  • Поворот спрайтов представляет собой, как правило, отзеркаливание, чтобы не рисовать вдвое больше изображений, но это приводит ко всяким казусам, если объект несимметричен, например, отсутствует одна из рук (в более мягком варианте: несимметричные причёска, одежда, шрамы…). Кроме того, в таком случае правша часто внезапно становится левшой (верно и обратное).
  • Для создания высокодетализированных зеркал или других отражающих поверхностей, разработчики часто прибегают к следующей хитрости — вместе с комнатой с зеркалом также создаётся её отзеркаленная копия, а само «зазеркалье» заселяется клонами игровых и неигровых персонажей, которые повторяют движения оригиналов. Применение данного трюка можно увидеть и в сравнительно новых играх, таких как Hitman III или ремейк Resident Evil 3.
  • В играх от первого лица игрок зачастую лишь управляет плавающими в воздухе руками, которые держат предметы и взаимодействуют с миром — делается это не только для экономии вычислительных ресурсов, но и исключения возможности попадания камеры «внутрь» модели персонажа во время специфичных анимаций. Антипример — в первой Mafia на неудачных комбинациях «машина-видеоплата» козырёк машины закрывает обзор и ничего не видно.
    • В играх вроде Mirror’s Edge, где игроки видят туловище и ноги игрового персонажа, игроки часто управляют безголовым персонажем.
    • В сетевых играх отображение моделей устроено таким образом, что в камере игрока отображаются лишь допустимые части тела, в то время как другие игроки видят полную модель персонажа.
  • LODы — так как на расстоянии все равно не различить детали, то модель заменяя на упрощённую, с целью экономии ресурсов, на которой не прорисованы мелкие детали, например, одежды. Иногда бывают казусы, например на персонаже чёрный плащ, а на LOD’е — красный. Или он отобразился вблизи.
  • Система спрайтов движка для визуальных новелл RenPy предусматривает всего две переменные: имя и эмоция. Соответственно, смена одежды производится через смену эмоции.

Ролевые игры

  • Baldur’s Gate — способности многих существ работают за счёт неснимаемых предметов которые «экипированы» на них. Например призываемый меч Морденкайнена невосприимчив к большинству дебаффов. Как же это работает? Так у него в ячейке амулета есть талисман, который и обеспечивает ему иммунитеты.
  • Baldur’s Gate 3 — троп начинается уже в меню создания персонажа. При переключения расы/пола/телосложения игра загружает перед игроком новую модельку героя, а другие модели стоят в очереди, причём они все голые. Это было сделано, чтобы модельки загружались как можно быстрее и игра не тормозила.
  • Cyberpunk 2077 — механика вождения автомобилей по сути основана на лошадке Плотве из третьего Ведьмака. Разработчики просто модифицировали верховую езду и вставили в своё новое творение.
  • Fallout 3 — меметичный вагончик метро, в действительности является NPC в шлеме-кабинке, который быстро бежит к точке назначения когда игрок решает поехать.
    • В той же игре — взрывающийся особняк в Пойнт-Лукаут. Движок игры не позволяет взорвать особняк так, чтобы это изменило отображение удаленных построек в LOD. Как выкрутились? Особняк вообще не моделька, а замороженная анимация взрывающегося особняка. Как только настает определенный момент в главном квесте дополнения, заморозка снимается и анимация проигрывается до конца. Соответственно, в LOD присутствует та же анимация в упрощенном и низкополигональном виде, и когда она проиграется до конца, издалека никакого дома тоже не видно.
  • Fallout: New Vegas — концовка с модульным эпилогом на самом деле не является катсценой. В действительности персонажа игрока после финала телепортирует в закрытую комнату, после чего игра его обездвиживает и фиксирует его угол обзора на экране-занавеске, где и показываются слайды эпилога. Поэтому во время просмотра концовки в углу может внезапно выскочить «Вы делаете глоток из вашей верной фляжки Убежища 13…», ведь с точки зрения игры, у игрока до сих пор идёт геймплей. Но и это не всё: текст слайдов во время всего этого озвучивает специальный NPC «Рон-рассказчик», который стоит за этой самой занавеской — его даже можно увидеть, если поиграться с консольными командами и дать себе свободу действий. Зачем нужны были все эти ухищрения? Да просто реальные катсцены на движке делать было слишком затратно.
  • Все игры на движках семейства NetImmerse, начиная с Oblivion (собственно Oblivion, Skyrim, Fallout 3, New Vegas и 4, Starfield) — ассортимент продавцов хранится в запрятанных под текстурами сундуках, куда и откуда переносятся продаваемые и покупаемые предметы. Делается это как минимум для того, чтобы у игроков не было возможности залутать товары с инвентаря убитого NPC, однако при использовании читов или багов игроки могут выйти за пределы игрового мира и добраться до содержимого их тайника. В Данстаре в Skyrim можно найти место возле шахты, где сундук не слишком глубоко под землёй, и бесплатно реквестировать у торгаша нужные вещи.
  • The Lord of the Rings Online — согласно движку, лошади были штанами героев, которые они надевали.
  • Titan Quest — движок игры не предусматривал задержки между триггером и действием. Но нашлась лазейка — длительность анимации между ними. Тестер додумался расставить по уровням невидимых белок, с помощью которых удавалось организовать костыль таймера.
  • World of Warcraft — а вот тут уже армия невидимых кроликов-заклинателей. Например, лазерные турели из рейда «Осада Огриммара» — это они.

Песочницы

  • Sid Meier’s Pirates! — ГГ должен раз за разом побеждать одного и того же барона Раймондо, чтобы получать новые куски карты с сараем, где скрывается очередной похищенный бароном родственник. Разработчики честно признавались, что времени доделать разных злодеев не было, так что, кроме финального босса маркиза Монтальбана, сражаться нужно будет только с Раймондо. То ли десятерняшки, то ли всякий раз ГГ его отпускает, чтобы на живца выловить следующий кусок карты — в игре не объясняется.
    • На тактической карте сделать дующий с разных сторон ветер сумели. А на глобальной оставили строго западный, пусть и с локальными штормами — так что плыть с востока на запад не самое приятное дело.
  • Terraria — после убийства Голема, в Освящении по ночам будут спавниться призматические златоглазки. Если убить эту букашку, то появится босс — Императрица Света. И чтобы враги случайно не убили златоглазку, а Императрица не появилась, когда игрок не готов к этому, разработчики сделали простое решение — пусть эту букашку и можно поймать сачком как других мирных мобов, игровой движок классифицирует её как врага, поэтому другие монстры не могут причинить ей вред. Также при переходе в хардмод в подземном грибном биоме могут заспавниться трюфельные черви, на которых можно поймать Герцога Рыброна. Они спавнятся относительно редко и уползают прочь, если игрок слишком долго стоит рядом с ними, поэтому они тоже считаются враждебными мобами — чтобы враги не убили червя, если игрок хочет его поймать.

Экшены

  • Blood — знаменитый уровень на поезде Phantom Express. Движок Build поддерживает движение секторов, но строго от точки А до точки В, а не бесконечное движение в никуда. Размер карты тоже ограничен. Как выкрутились? Поставили поезд в кювет с текстурами железнодорожных путей и травянистых склонов, и запустили на кювете «эффект конвейера», чтобы полы с текстурами двигались навстречу неподвижному поезду.
  • Тоже Blood, но не только, еще Shadow Warrior Classic: прозрачно-портальная геометрия. Движок Build не позволяет сделать одну комнату над другой с дырой в полу, так, чтобы было видно обе комнаты. Не позволяет он сделать и открытую с одной стороны этажерку с платформами друг над другом. Как выкрутились? А каждый ярус делали в отдельной части карты, а потом соединяли их прозрачными порталами вместо пола и потолка, так, чтобы казалось, что эти комнаты друг над другом вертикально и соединены пустым пространством.
    • Во всех играх на Build (двух вышеперечисленных, плюс Duke Nukem 3D, Redneck Rampage, NAM и прочих) есть также непрозрачно-портальная геометрия, и это такой же грязный хак. Отличие от прозрачно-портальной ровно одно: порталы непрозрачны, то есть нельзя видеть одновременно обе комнаты. Их разделяет что-то непрозрачное, например, лифт, вода или канализационный колодец, в который нельзя заглянуть, потому что угол наклона головы в любой билдовской игре не может быть выше 70 градусов вверх или вниз. Когда вы ныряете в воду или падаете в колодец в одной из этих игр, скорее всего, вы перемещаетесь совсем не вниз по Z-координате, а на другой край карты!
  • Counter-Strike: Global Offensive — Магнару Дженсену поручили приделать ручки к трансформаторной будке, но модели ручки не оказалось. Чтобы никого не беспокоить, он додумался засунуть в будку модель кастрюли так, чтобы её ручки в нужных местах выпирали как дверные.

Хорроры

  • Outlast — вышеупомянутый трюк с безголовой моделью протагониста привёл к бафосу-нежданчику: для специфических катсцен в случае смерти, где Майлз лишается головы, а его тело попадает в кадр, создатели подготовили хорошо прорисованную обезглавленную модель — и эта же модель используется в игре с самого начала как стандартная. Получается, в этой игре мы управляем безголовым журналистом?

Платформеры

  • Super Time Force — сразу два грязных трюка, призванных решить проблему с переполнением памяти Xbox 360 из-за функции перемотки времени. Во-первых, если игрок слишком часто жал на кнопки, игра запускала перемотку времени назад, чтобы избавиться от переполнения. А на особенно богатом объектами уровне вообще ставилась на паузу и жаловалась на низкий заряд батареи контролера, после чего выкидывала в меню уровней.

Гонки

  • Lada Racing Club — игра буквально из одних костылей и состоит. Изначально проект планировался на движке ArtyShock (вроде бы передовом и с кучей классных фич — сказать наверняка уже не получится: игр на нём так и не вышло), но за три месяца до запланированного релиза разработчиков движка кинули по оплате — и они из проекта вышли. Команде разработки дали команду сляпать хоть что-нибудь как получится — получилось не просто плохо, а легендарно плохо. В качестве движка взяли Dagor Engine 1.0 (для солидности обозвав его 2.5), а весь геймплей реализовали костылями. Машины соперников существуют только пока их видишь — т.е. они появляются из ниоткуда и исчезают в никуда (не говоря о таких мелочах, что в зеркало заднего вида они не отображаются). От машин ДПС невозможно оторваться даже самой крутой ездой — ну, потому что их по факту и нет вовсе: вне поля зрения гаишные машины перемещаются прямо через здания, а если их затолкать в ловушку, просто появляются у игрока за спиной!