Офигенно находчивые разработчики

Материал из Posmotre.li
Перейти к: навигация, поиск
« Ошибка: робот погибает при попадании в него гранаты (именно от попадания, а не от взрыва) Д - дизайнер, П - программист.

Д: программисты всё сломали! почему так получается?!
П: естественно так получается! потому, что у гранаты масса 100 кг! зачем вы это сделали?
Д: да?! а чтобы граната в воде тонула!
П: а почему она с нормальной массой не тонет?
Д: а потому что у воды плотность большая! (прим.: больше, чем у ртути)
П: а почему плотность такая большая?!
Д: а чтобы ящики деревянные плавали!
П: а почему они иначе не плавают?!
Д: а потому что у них масса 50 кг!
П: а зачем такая масса?!
Д: а иначе они некрасиво разваливаются!

»
bash.im
Находчивость в Fallout 3:
программеры не предусмотрели в игре существование транспорта;
дизайнеры выкрутились, создав броню, играющую роль транспорта

Именно то, что написано на упаковке. Перед разработчиками игр постоянно встают проблемы ограничений движка, мощности машин, наконец, они могут просто лениться изобретать что-то хитровыкрученное для конкретной ситуации. В результате появляются технические решения, которые выглядят… странно, хотя порой сразу это не обнаружишь.

Например:

Конкретные шедевры офигенной находчивости[править]

Канон[править]

  • Force 21 — прямо как в анекдоте! Камера показывающая поле боя в игре являлась объектом, который уничтожался при случайном попадании под авиаудар и переставал двигаться, и чтобы этого не происходило камере дали много брони и жизни.
  • Knights of the Old Republic — сияние Светового меча состоит из 3-х (или 6-ти если игнорировать симметрию) полупрозрачных текстур соединённыx звездочкой. При установке серебряного кристалла превращается в Спецдефекты.
  • Neverwinter Nights — повсеместно. Летающий меч? Это невидимка с мечом в руках. Маленькое грозовое облачко? Тот же невидимка с циклическим эффектом от заклинания «Приговор»…
  • «Механоиды»:
    • Когда глайдер механоида уничтожают, его самого отвозят в базу и там он получает новый глайдер. Однако на самом деле респаун ботов не зависит от сдачи механоидов, и можно возить в трюме «клонов» с одинаковым именем и разными рейтингами.
    • Разработчики не стали делать урон от падения и столкновений, а вместо этого поставили на дно смертельных ям объекты типа областей высокой радиации. В результате во время падения в разлом можно увидеть мигающее предупреждение «неизвестная опасность»…
      • Таким же манером — аномалиями с 10000 урона в секунду — ограничили сектор Скал. Автора ваншотнуло под предупреждением об опасной температуре без всяких внешних признаков аномалии. Даже лава убивает медленнее.
  • «Механоиды 2: война кланов». Здесь добавили контур в сектор Скал, разломы в Арктике затопили, а сектор Вулканов убрали по сюжету. По сюжету же возникла необходимость честно отслеживать колобков, и исчезли чудеса респауна. Однако, появился другой шедевр: болотная тварь под именем Наутилус — на самом деле невидимая грузовая платформа, летающая под картой. Если пальнуть на его сигнал из чего-нибудь с большим радиусом сплеша или бросить мину, он начнёт преследовать игрока и ругаться как обычный злой механоид. Так и будут подписаны реплики: «Наутилус: …». А если заморочаться и убить эту платформу, из неё выпадет механоид по имени Наутилус с рейтингом 0.
    • Защитные турели вокруг строений предупредительный выстрел теперь делают стазисом. Поэтому у них прямо в дуле можно увидеть маленькую модельку глайдерной стазис-пушки. Причём она каким-то образом перемещается по внутренней стенке. Те же турели если не могут уничтожить глайдер за определённое количество выстрелов (например, из-за собственного стазиса), используют специальный с 10000 урона. И всё бы бы хорошо, но звук у усиленного выстрела почему-то другой, то есть, там уже три орудия, а нормально нарисовано только одно.
    • Надо сказать что спасатели — специальные дроны, которые и подбирают долгое время игнорируемых собратьями механоидов чтобы доставить их в строения на респаун, тоже могли бы быть отнесены сюда, если бы не железное обоснование и сюжетное присутствие ещё в первой части.
  • Warframe — варфрейм гидроид может превращаться в лужу, становясь неуязвимым и затягивая в такое же состояние противников для временной нейтрализации. Однако, в центре лужи находится маленькая невидимая моделька гидроида, которая иногда оставалась такой после выхода из способности. Ну и плюс обидно, что таким образом нельзя обойти лазерное заграждение: технически лучи не касаются воды на полу, но при контакте с моделькой на середине лужи тревога срабатывает.
  • Ex Machina — хотя здесь есть специальная кнопка для телепортации машины из безвыходного положения, при опрокидывании её крутит самым нереалистичным образом, лишь бы приземлилась на колёса.
  • FIFA 94 — получение футболистом жёлтой карточки здесь было реализовано через подбегание судьи к нарушителю, а он в свою очередь мог от него вполне результативно убегать.
  • Royal Quest — многие игроки начисто игнорируют квесты и качаются, уничтожая собранные толпы мобов (т. е. паровозят). Выпавшему луту внимание не уделяется, поэтому локации зачастую становятся загажены предметами, которые может подобрать только выбивший их игрок. И здесь в дело вступают росинки! Это мобы первого уровня, которые подбирают любой выпавший лут.
  • World of Tanks:
    • В игре одновременно действуют как минимум три разных значения земной гравитации: своё для падающей с обрыва техники, своё для танковых снарядов, которые летят почти прямо, и своё для артиллерийских снарядов, которые из-за этого летят в стиле «поросята на парашютиках».
    • Когда разработчики реализовали переворачивание танков вверх тормашками, они столкнулись с тем, что при действующих в игре параметрах техники и физических константах перевороты происходят крайне часто, и это делает подвижную игру некомфортной, если вообще возможной. Проблема была решена «малой кровью»: центр тяжести каждого танка был перемещен вниз настолько, что стал болтаться где-то глубоко под земной поверхностью. Перевернуться теперь стало гораздо труднее.
  • Dwarf Fortress — урон от падения моделируется «бросанием» в упавшее существо куска материала, из которого состоит пол (или стена, если полёт был горизонтален). В итоге яма с деревянным полом будет куда менее смертельна, чем с золотым или платиновым, а падение в Аду на пол из сверхплотного слэйда с трёх-четырёх этажей буквально размажет бедолагу по полу. Получилась, конечно, чушь, а не физика, но в находчивости не отказать — вместо твёрдости и плотности отделался одним параметром.
  • GTA — в игре десятки видов машин, но для экономии памяти чаще всего на дороге встречаются машины той же самой модели, на которой едет игрок.
  • Overwatch — справедливости ради, пример реально офигенной находчивости. Существуют читерские программы для командных шутеров, нажимающие выстрел при наведении прицела на врага. Ориентируются они на интерфейсные маркеры, например, красный силуэт, и с самой игрой взаимодействуют вполне разрешённым образом — захватывают изображение наподобие программ записи видео. В результате некоторые разработчики начали махать банхаммерами и под раздачу попали те самые записывающие программы, а вместе с ними всевозможные стримеры и прочие генераторы фанатского контента. Однако великие Близзард решили проблему иначе: они сделали означенный красный контур постоянно меняющим цвет. Для глаза это незаметно, а вот программа уже зацепиться не может, или её придётся заставлять реагировать на огромное количество оттенков красного, к тому же, возможно, встречающихся в декорациях.
  • Вангеры — не вполне понятно, баг это или фича злобных разработчиков хардкора девяностых, но побочные генерируемые квесты в игре выглядят так. Заходишь в магазин, покупаешь специальную штуковину, выходишь наружу, получаешь квест от святого Рандомия, если повезёт, делаешь, и купленная штуковина резко поднимается в цене, после чего её нужно довезти и продать. При этом табутаск считается обычным грузом и, сделав квест, можно не получить награды просто потому что он выпал из кузова в перестрелке.
  • Uncharted 2, сцена с поездом — в отличие от игр и фильмов прошлого, движется не пейзаж, а сам поезд, без обмана. Но сам путь состоит из двух гигантских петель(с зеленью и со снегом), чтобы игрок мог в любое время включить триггер и перейти на новый этап
  • Half-Life 2: а вот здесь движение поезда именно что имитировалось — двигался не поезд, а источники света.
    • мимопроходящий аннон скромно уточнит, что речь идёт о сцене в Episode One, где Алекс Вэнс и Гордон Фримен сбегают из Цитадели на поезде Альянса. Кроме потолка с мелькающими лампами из вагона поезда ничего не видно, а следовательно и нет нужды создавать полноценное движение поезда. В любых других сценах поезда с игроком движутся честно.
  • Wing Commander — при выходе из игры выводилась ошибка менеджера памяти. Что сделали разработчики? Правильно — заменили текст ошибки на благодарность за игру! Всё равно баг проявлялся только при выходе…

Моддеры[править]

  • Пользовательские карты для Warcraft 3 в золотое время середины нулевых этим тропом жили и дышали. Если автор правки правильно помнит (десять лет прошло, как-никак), то…
    • Как сделать возможность входить в здания? Правильно, создать крошечного, неуязвимого и невидимого юнита с минимальным реальным размером, но текстурой огромного дома. И облепить здание по периметру, кроме дверей, невидимыми объектами «блокиратор пути», чтобы зайти через стены нельзя было.
    • Как сделать так, чтобы здание генерировало войска автоматически, пока стоит (именно такой была механика спавна крипов в древнейших AoS-картах, предках DotA)? Нарисовать перед зданием скриптовую область, и прописать условие «если объект Х стоит, то раз в Y секунд создавать Z войск».
    • Через скрипты прописывался и выбор героя на картах типа «Арена» (Angel Arena, например, в компьютерных клубах родного города автора правки была едва ли не популярней Доты). Для игрока это выглядело обычно так: на момент начала игры каждый игрок контролирует по юниту для выбора (обычно это были Светлячки Ночных эльфов, не наносящие урона). Перед ним — локация, в которой стоят все доступные герои. Подводим светлячка к герою — герой появляется на основной карте. На самом деле скрипт работал так: при приближении к герою срабатывает триггер => создается определенный герой для данного игрока в скриптовой зоне => светлячок получает 999999 урона и уничтожается.
    • Другим вариантом выбора героя, и не только для арен, но и для первой Доты, был закуп героя в таверне. Механика игры требует, чтобы для активации таверны рядом был принадлежащий игроку юнит. Вот и создавали для каждого игрока рядом с тавернами юнита, неспособного к движению и атаке, с текстурой Круга Силы или Духов-целителей.
    • Виртуозное владение скриптами вкупе с этим тропом позволяло создавать даже шутеры, космосимы и спортивные симуляторы на движке Варкрафта, но автор правки их не препарировал, пусть кто-то другой напишет.
  • У создателей карт для Heroes 4 во время их краткого расцвета не было таких широких возможностей, как у варкрафтеров, но народ выкручивался.
    • По сюжету герой разговаривает с ангелом, который потом улетает. Можно было, конечно, реализовать это через квестовый «домик», но это скучно. В итоге ангел сидит за заборчиком (чтобы на него нельзя было напасть), а после окончания диалога и сдачи квеста… сражается с 1000 черных драконов (после «скриптовых» атак монстры, которых на карте не было до срабатывания скрипта, там не появляются). Битвы других игроков не видны, так что все, что видит геймер — ангел исчез. Улетел, ага. Прямо в рай.
  • Doom — все багофичи как каноничного движка, так и многих портов.
    • Эпик: «кукла Вуду». Дело в том, что Ромеро по инерции после Wolf3d сделал героя как полностью отдельную сущность в коде, а не как обычного моба, к которому прикрутили управление и убрали его спрайт из его собственного рендера. Поэтому, если на карте присутствует более одного старта, скажем, игрока № 1, то на месте лишних появляются «куклы Вуду». Наносимый им урон отражается на игроке (например, популярный способ мгновенно его убить — это телепортировать его в его куклу, чтобы он сам себя телефрагнул). Кроме того, поскольку здоровье в переменных состояния одно, а в кукле другое — можно загнать игрока в состояние «зомби», когда он с нулевым здоровьем ходит «призраком» по уровню и монстры его не замечают (а он может открывать двери и нажимать рубильники на радость товарищам).
    • Если полу задан эффект «двигаться к ближайшему полу, который чуть ниже», а соседние полы все выше — пол выберет из них нужный, но прыгнет на требуемую высоту мгновенно. И наоборот! Практически все движения «против шерсти» выполняются мгновенно. Применений как бы не туева хуча — начиная от внезапно ломающихся деревянных мостов и заканчивая весьма неожиданными секретками (вертикальный обзор ограничен, поэтому резкий подъём игрока в какое-нибудь стрёмное помещение ощущается как телепортация, только без звука и вспышки телепортации — помещения снизу было не видно, и вопрос «где и как это я оказался» встаёт весьма остро). Самая жесть — сделав таким образом несколько положений створки ворот и быстро их переключив такими мгновенными подъёмами-спусками, некий предмет статьи заставил Врата Ада довольно эффектно распахнуться навстречу игроку — в смысле, натурально распахнуться, поворотом вокруг петли, а не как в Doom это обычно делается.
    • Self-referenced sector: сектор окружается линиями, у которых обе стороны ссылаются на один сектор. В результате его границы весело исчезают из рендера и можно сделать, например, сектор чуть ниже пола, заполненный текстурой воды, и игрок там реально погрузится по щиколотку. Правда, такая «вода» абсолютно прозрачна и, увы, не затенит нижнюю часть его спрайта. Автор этой правки оборзел настолько, что сделал специального болотного монстра, у которого прямо на спрайт были наложены эффекты воды, и поселил его там без возможности вылезти. Правда, в сетевой игре обман тут же раскрывался…
    • Закадровая геометрия. Чего только люди не вытворяли, используя эффекты секторов не по назначению! Скажем, за стеной поднимается невидимая лестница, а самые верхние её ступени заодно являются колоннами, стремительно вздымающимися в небо перед носом игрока. А поскольку тэг нужно задавать только для первой ступени, колонны можно спускать с небес на землю независимо. Ммммм…
    • Мосты в Doom Legacy. Когда объекты перестали быть колоннами бесконечной высоты, моддеры тут же сделали «блин», по которому можно ходить. А поскольку при помощи невысокой middle texture даже изначально вполне можно было делать «решётки» (только вот игрок через них проваливался — Ромеро невовремя заболел звёздной болезнью и даже не почесался физику им сделать), в сочетании с «блином» получились настоящие мосты.

Сетевой фольклор[править]

  • Из пародийной переписки разработчиков игры:
« programming lead: Леша, прицепи к самолетам по две белые полоски.

junior programmer: Готово.

qa engineer: Истребители перестали сбивать. Не могут стрелять.

senior programmer: Полоски закрывают пулеметы. А на них материал, в котором прописана коллизия для пуль. Пули не проходят.

programming lead: Как полоски могут закрывать пулеметы, если полоски нанесены в задней части фюзеляжа?

senior programmer: А у нас у истребителей настоящие пулеметы как раз в задней части фюзеляжа. А в крыльях - фейковые, для вида только, пыщ-пыщ делать. Так исторически сложилось, уже не помню, почему. Теперь долго переделывать, на это вся их баллистика завязана.

programming lead: Зачем полоски коллизят пули? Сними с них коллизию.

3d artist: Я не могу, у нас коллизии захардкожены в текстурах, а других текстур нет. Эту вырезал с Флетчера, самая белая текстура, какую нашел. А у него там броня четыре сантиметра.

programming lead: Подвинь полоски, чтобы не закрывали пулеметы.

historical consultant: Я щас кому-то подвигаю! До миллиметра по историческим фотографиям вымеряли...

programming lead: Боря, придумай какой-нибудь хак. Ситуация безвыходная.

senior programmer: Пропишите пулеметам дамаг 231 вместо 2. Из него ровно 229 уйдет на пробитие полосок, дальше полетят пули с остаточным дамагом 2, как и должно быть.

game designer: Прописал пулеметам дамаг 231

senior programmer: Теперь все должно быть в порядке.

»
— Автор неизвестен