«Ветеранская усталость» в UFO: Enemy Unknown: игровая механика, появившаяся из-за бага?
Девяностые годы — странная эра в истории компьютерных игр. Маленькие команды разработчиков, работая в условиях ограниченных ресурсов и несовершенных технологий, создавали революционные игры, изобретая новые жанры и игровые механики. И… Часто границы между багами и осознанными дизайнерскими решениями размывались, приводя к появлению необычных и запоминающихся игровых особенностей.
Одна из таких необычных механик, о которой я хочу рассказать сегодня, появилась в культовой стратегии UFO: Enemy Unknown (она же X-COM: UFO Defence) из-за банального бага, но впоследствии стала одной из самых запоминающихся и обсуждаемых особенностей игры. Речь идёт о так называемой «ветеранской усталости» — как минимум, так её назвали в гайде по игре с «триадовского» диска.
Представьте ситуацию: вы командовали отрядом бесстрашных солдат в десятках, а то и сотнях опасных миссий по всему миру. Ваши (выжившие) бойцы отряда X-COM превратились в элитных ветеранов, настоящих машин для уничтожения пришельцев. И вдруг, после очередного успешного задания, один из них, без каких-либо объяснений, резко «сдавал» — его характеристики падали до нуля, и доблестный воин превращался в бесполезную обузу. Как такое могло произойти?
Как это было
Представьте себе: вы только что успешно завершили очередную сложную операцию против пришельцев. Ваши бойцы, закаленные в десятках смертельно опасных миссий, истинные ветераны войны с инопланетными захватчиками, вновь доказали свое мастерство (на этот раз даже без потерь). И вдруг… один из них, гордость вашего отряда, возможно даже — один из выживших «с первого набора», внезапно «сдувается», словно воздушный шарик. Его характеристики, чаще всего — здоровье или очки действия, обнуляются без видимой причины. Боец, которого вы так долго растили и прокачивали, мгновенно превращается в бесполезную обузу — и его остаётся только «отправить на дембель».
Такие случаи в русской версии UFO: Enemy Unknown были далеко не редкостью, особенно ближе к концу игры. Игроки, вложившие массу времени и усилий в развитие своих оперативников, испытывали шок и недоумение, сталкиваясь с этой аномалией. Ветераны, проявившие чудеса храбрости и отваги, вдруг оказывались не способны даже держать оружие. Причем происходило это совершенно случайным образом, без каких-либо предупреждающих признаков.
О том, как (и почему) это обосновано с точки зрения логики мира, я поговорю чуть позже — а пока предлагаю посмотреть, что в этот момент происходило «под капотом».
Почему так получалось: всё же баг?
На первый взгляд, ситуация с обнулением характеристик ветеранов выглядит как чистейший баг. Однако, если копнуть глубже, становится ясно, что это произошло из-за наложения сразу двух особенностей реализации игры разработчиками.
- Во-первых, в изначальной (не «доработанной» издателем после релиза) версии UFO: Enemy Unknown характеристики оперативников де-факто не имели лимита на рост. Это означало, что ваши бойцы могли развиваться практически бесконечно, становясь настоящими супер-солдатами. Достаточно лишь «прорвать порог» определенной характеристики, на котором на время застывало развитие.
- Во-вторых, игра использовала однобайтовые переменные для хранения характеристик персонажей. Как известно, максимальное значение однобайтовой переменной — 255. И вот, когда очередное повышение характеристики приводило к переходу через этот порог, по несчастливому стечению обстоятельств, не срабатывала резервная проверка «на переполнение переменной» — примерно в одном случае из десяти, когда вы приблизились к «опасному порогу». В результате, характеристика оперативника обнулялась.
Первая особенность — отсутствие лимита на рост характеристик с «порогом прорыва» — скорее, была задуманной игровой механикой, позднее измененной издателем в угоду баланса. Вторая же особенность — несработка «защиты» на переменной в частности и использование однобайтовых переменных в целом — выглядит как классический баг.
Объединив эти два фактора, мы и получаем причину «ветеранской усталости»: доведя характеристику солдата до числа, равного или почти равного 255, и попытавшись повысить ее ещё раз, игра в некоторых случаях сбрасывала значение обратно к нулю. По сути, это был баг, но баг, спровоцированный необычными игровыми условиями.
Железобетонное основание: всё же механика?
Если отбросить технические детали и взглянуть на ситуацию с точки зрения игрового мира и самих оперативников X-COM, то «ветеранская усталость» начинает выглядеть как вполне оправданная и логичная механика.
Давайте не забывать, что UFO: Enemy Unknown — это игра о борьбе человечества с неизвестными пришельцами. Наши бойцы сталкиваются с чем-то, что выходит за рамки их понимания и опыта. Даже отборные элитные солдаты могут испытывать огромный стресс и эмоциональное напряжение в такой ситуации.
Неудивительно, что даже самые закаленные ветераны X-COM могут поймать нервный срыв, уйти в депрессию или даже отъехать в дурку. Человечество просто не привыкло воевать с инопланетными захватчиками, и это может сказываться на психическом здоровье даже лучших бойцов. И даже если в ряды X-COM отбирали лучших из лучших, человеческая психика не была приспособлена к войне с инопланетными захватчиками, которые из миссии в миссию плюются в тебя плазмой. Неспроста, знаете ли, в игре есть шкала «морали».
Таким образом, с точки зрения игрового мира, «ветеранская усталость» выглядит как вполне логичная и оправданная механика. Она отражает тот факт, что даже самые опытные солдаты X-COM в конечном итоге могут сломаться под давлением постоянных столкновений с пришельцами.
Конвергенция геймдизайна девяностых
В девяностые годы игровая индустрия, по существу, едва-едва начинала «оперяться». Игры разрабатывались маленькими командами или даже парой энтузиастов. В такой среде грань между багом и осознанной геймдизайнерской фичей была очень тонкой, фактически сводясь к простому правилу: «если это не работает, как надо и бесит — баг, даже если мы сами это заложили; если это работает, круто и атмосферно — хай будет, даже если не планировалось».
Подобная размытость границ привела к появлению множества необычных игровых механик, которые позже стали неотъемлемой частью геймдизайна некоторых игр. Взять, к примеру, знаменитую распрыжку в Quake, бег по диагонали в DooM (1993), возможность бить по своим в моде DotA или комбо в файтингах — все эти механики изначально были непреднамеренными, но позже стали нормальными — или вообще неотъемлимыми.
В таких условиях зачастую решающим фактором становилось не то, было ли что-то запланировано или появилось случайно, а насколько это вписывалось в общую концепцию игры и нравилось игрокам. Если баг работал, он оставался. Если механика портила атмосферу — её убирали в патчах или сиквеле, невзирая на первоначальный замысел. Так что, «что есть баг» для игр девяностых и даже начала «нулевых» — вопрос сугубо дискуссионный. И «ветеранская усталость» в UFO: Enemy Unknown является ярким тому примером.
Заключение: И мы играли…
Ностальгия — удивительная вещь. Она может заставить нас с теплотой вспоминать даже самые несовершенные и сырые игры прошлого… И X-COM: UFO Defence, она же UFO: Enemy Unknown, она же «та игра про пришельцев», безусловно, относится к числу культовых хитов, которые формировали целые поколения геймеров.
Когда я запускал эту игру в далекой даже не молодости, а юности, «ветеранская усталость» воспринималась как нечто совершенно нормальное. Это было частью атмосферы, частью вызова, с которым нам предстояло столкнуться — и не выглядело как какой-то баг (да я и слова таког оне знал:-).
Представьте, как это было: отважный отряд солдат в очередной раз возвращается с победой. Вы с гордостью смотрите на ряды бывалых бойцов, закаленных в десятках жарких схваток с пришельцами. И вдруг, на следующий день, один из них, прошедший с вами огонь и воду, оказывается не в силах даже встать с постели. Удар по самолюбию? Безусловно. Но в то же время это добавляло игре столько драматизма и реалистичности!
Ведь война — это не только подвиги и слава. Это еще и потери, травмы, сломленные судьбы. И пусть причиной «ветеранской усталости» был простой баг, он придавал игре ту самую изюминку, которая, среди прочих, выделяла её из множества других стратегий того времени. Делала людей — людьми, а не просто «юнитами»
Для меня и, уверен, многих других фанатов серии эта особенность стала неотъемлемой частью игрового процесса. Мы принимали ее как должное и находили способы бороться с ней. Кто-то старался чаще ротировать бойцов, не доводя их до критической точки и «сохраняя» слишком прокачанных вояк для финальной миссии на отдельной базе. Кто-то шел ва-банк, жертвуя ветеранами ради решения тактических задач. А кто-то просто мирился с неизбежностью и воспринимал это как очередной вызов судьбы. В конце концов, этот феномен отчасти отразился даже в официальной русской новеллизации «Враг неизвестен»!
Так что моя позиция такова: неважно, был ли это баг или осознанная задумка разработчиков. «Ветеранская усталость» стала неотъемлемой частью уникального шарма X-COM — и напоминанием о том, что даже величайшие герои остаются лишь людьми. И именно поэтому мы все так любим эту игру.
F если вам интересно прочитать, чем эта игра была столь значима для индустрии, лично меня и к чему привело её появление — вместо послесловия я категорически советую прочитать прошлую статью, комментарии под которой и сподвигли меня на написание этой, более «узкой»:
30 лет игре X-COM: UFO Defence (UFO: Enemy Unknown): Как это было тогда, и стоит ли играть сейчас?
Спасибо дочитавшим.
Источник: UFO: Enemy Unknown
10 комментариев
Добавить комментарий
Да нет же. Не было это ни задуманной игровой механикой, ни даже отсутствием лимита. Значения больше 80 просто вылазят за пределы экрана и забаговывают визуал. Какая же эта механика продуманная, алё? Лимит в 80 был реализован криво, не через <= а через ==. Точнее криво в контексте того, что характеристики могут расти более чем на 1.
Но для истории когда рост ограничен 1, багов не было бы. Потому, возможно изначально в пререлизной версии рост ограничивался единичными значениями, потому такой способ ограничения работал, но потом в ходе разработки Голлопов попросили увеличить скорость прогресса характеристик (мол, сильно слабо растут), и они расширили формулы, которые стали давать значения и более 1, но if лимитирующий исправили только спустя месяц после релиза, с первым патчем (в котором исправили и крэш во время анимации превращения в криссалида).
И никто в мире этой «ветеранской усталости» не ведал, потому что сразу обновили версию на не багованную. А ваш «добрый дядя-русификатор» подкинул свинью, выбрав для перевода багованную версию. Благодарите его, а не разработчиков.
Лично я русификации не признавал (особенно такие пафосные как эта Уфо), и о такой креативной интерпретации бага как «ветеранской усталости» впервые здесь узнал. Вот уж выдумщики, спасибо.
Так что благодарить тут можно, в общем-то, всех. И я, собственно, благодарен, поскольку без этого опыт игры был бы для меня /другим/.
То что вы называете механикой — ни одного признака оной не содержит. Рафинированный баг со всеми признаками бага. И сиквел (tftd) Голлопы не делали — они продали (лицензировали) движок, и патчи эти были авторскими (в рамках допиливания).
Была как я понимаю задумка чтобы солдаты увольнялись из-за количества фатальных ранений в миссии (есть строка текстовая на это намекающая «REIRED THROUGH INJURY»), но это вообще никакого отношения к сбросу статсов из-за недосмотра в коде — не имеет, это в экране результатов миссии.
На основании чего такое утверждение что НЕ БЫЛО ГРАНИ между БАГОМ и ФИЧЕЙ? Заявление очень громкое и требует существенных доказательств. Баги есть баги, вне зависимости от того насколько они fatal (разрушают возможность пройти).
2) Как я уже писал, в реалиях игр девяностых баг — то, что делает игру хуже, механика — то, что делает её лучше. Не более и не менее. Та же распрыжка в наследных Quake движках есть до сих пор, что характерно, в той или иной форме — вплоть до последнего билда Source 2, хотя это вот прямо чистейший баг.
3) Под сиквелом я подразумеваю Apocalypse, над которым начали работать практически сразу, сдав кодовую базу оригинала издателю для поддержки патчами и разработки автономного аддона.
Не в «первых версиях» он (этот баг) был, а в единственной первой версии, которая из-за бага с криссалидом, и кривыми ассетами базы пришельцев была фактически непроходима. И само собой баги эти правил Джулиан, потому что tftd еще даже не начался, исходники движка не передавали, и никто кроме него не мог это сделать в сжатые сроки.
2. Нет. Баг — это баг. К механикам этот баг с 80никакого отношения не имеет. Баги в механиках, которые визуально никак не отражаются (не выглядят как баг) _могут_ в перспективе стать какой-то разновидностью механики. Но это другое, это просто undocumented behavior. А недостаточно грамотная проверка на превышение 80, приводящая к перерисовкам на экране сверх положенного, и wrap-over через 0 — это чистейший баг.
3. Апокалипс делать их никто не «бросал», была придумана куча плохо связанных идей и концепций, которые неохотно превращались во что-то жизнеспособное. Такой лютой спешки как вы себе представляете там не было. Был скорее хаос.
Вот просто безотносительно 1-3, зачем «задумывать» какой-то «порог», который довольно часто (случайно) преодолевается? И когда преодолевается — на экране информации о солдатах все шкалы ломают весь визуал… залезают на другие строки слева… кто в здравом уме будет задумывать такую корявость? Вот безотносительно сброса в 0. Могли сделать ограничение в 200 ведь. Ну и что что все криво выглядит, правда ведь?.. 160-то вообще прекрасно влезало, но порог почему-то не на 160 даже.
В предыдущей игре (laser squad), из которой ufo в общем-то и вырос (задумываясь как laser squad 2), были максимальные характеристики солдат в 66. Но там они жестко прибиты к миссиям (среди врагов одной из них, кстати, есть сектоиды). Рост не предусматривался. И тем более огромные значения. Они весь баланс ломают. «Ветераны» с Time Units в 220 (как в вашей русской версии бывало) — нарушают весь баланс. Их не должно было быть.
Вот и решил узнать, насколько тесен игровой мир…
Добавить комментарий