Игробайки: орочий вальс, вооруженная овечка и неодолимые сараи

7

Все статьи цикла

Продолжаю коллекцию игродельческих баек, из разных соурсов (и разной степени достоверности, конечно же).

Содержание:

ЛЕБЕДИНОЕ ОРКОЗЕРО

«Орки в игре на самом деле были не совсем орками — они и назывались по-другому, и выглядели иначе — но так как функционально это были обычные орки, то вся команда называла их орками. Для простоты. В общем-то это были довольно-таки простые виртуальные создания, без особых изысков. Например, типичный орк-стражник с арбалетом умел:

* Стоять на посту и бдить в оба в пределах своего сектора обзора, изредка покручиваясь из стороны в сторону;

* Обнаружив в секторе обзора героя — поворачиваться к нему сектором стрельбы (сектор обзора и сектор обстрела были разными параметрами) и стрелять из своего арбалета;

* Если герой пропадал из виду — прятался за что-нибудь, или делался невидимым — то орк-стражник бежал к последней точке, где видел героя, и начинал озираться по сторонам;

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

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

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

Завидев игрока, орк, в полном соответствии со своим алгоритмом поведения, пытался повернуться к игроку сектором обстрела (который сзади). Поворачиваясь задом к игроку, орк, разумеется, терял игрока из своего сектора обзора (который спереди). Немедленно врубался алгоритм «следовать к последней точке, где видел игрока». Орк срывался с места, пробегал несколько шагов, разворачивался… и снова замечал игрока. И снова пытался развернуться к нему приделанным сзади арбалетом.

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

КАК ОВЦЫ СЪЕЛИ ТАНКИ

«Игра, о которой идет речь, была очень-очень старенькой стратегией в реальном времени. Стратегией еще спрайтовых времен, чтобы было понятнее. На определенной стадии разработки, в игру решили попробовать добавить нейтральных юнитов: всяких там фермеров, овечек, грузовичков и прочий антураж. Так как алгоритм игры не был нормально рассчитан на работу более чем с двумя фракциями, то нейтральные юниты на самом деле были вражескими. Только другой окраски, безоружными и незаметными для юнитов игрока. Незаметными в том плане, что юниты игрока на нейтралов не реагировали, если игрок сам не приказывал атаковать их.

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

А «веселое» было то, что юниты игрока временами начинали вдруг страдать и гибнуть безо всякого присутствия рядом неприятеля. Причем происходило это только за пределами экрана игрока. Пока игрок смотрел на участок карты — там ничего странного не происходило. Но стоило ему переместить экран… и по возвращении его ожидали спрайтовые трупы в лужах спрайтовой крови, дымящие танки, пылающие строения и прочие ужасы 16-битного разрешения.

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

Тщательное изучение овечки под микроскопом выявило занимательный факт: овечка была сделана на «шасси» легкого танка с нацепленным сверху пушистым спрайтом. Ну в принципе вполне нормально, для экономии времени и ресурсов. Но пушку овечке надо было отключить. А сделать это банально забыли.

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

Но. Когда овечка оказывалась за пределами экрана игрока, анимация (для экономии ресурсов) понятное дело, не запускалась. И отсутствие спрайтов совершенно не мешало овечке стрелять. Чем она и занималась.

Так что пока на овечку смотрел игрок, она мирно жевала травку. А стоило игроку перевести внимание — овечка тихо выдвигала из-под шерстки трёхдюймовую пушку…»

НЕУЛОВИМЫЙ САРАЙ ДЖО

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

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

Во время тестирования, тестеры с радостным изумлением выяснили, что пустой сарай — идеальное защитное сооружение.

Фича заключалась в том, что пустой сарай с точки зрения компьютера становился настоящим «неуловимым Джо»; он был абсолютно никому не нужен. Нападающий, имея совершенно любые другие цели для атаки, попросту игнорировал сарай.

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

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

Сарайное веселье длилось до тех пор, пока не сделали более совершенный алгоритм пути, имевший оптимизацию маршрута через устранение препятствий, если обход выглядел слишком долгим».

источник: https://fonzeppelin.livejournal.com/365587.html

The same Fonzeppelin
Подписаться
Уведомить о
guest

2 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Альтернативная История
Logo
Register New Account