Поиграем в отладку?

от автора

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

Посмотрите вот на эту картинку из жизни бойцов Пустошей.

Фишки с 20/20 – это командные центры, оставшиеся две — это фишки бойцов с ближней атакой по направлению треугольников по краям. Пока всё просто – синий робот с ножами бьёт желтого ковбоя, а ковбой бьёт по синему комцентру. Давайте усложним стек и запустим компиляцию.

Предположим, ситуация такая:

Теперь нам важны приоритеты – эти вот числа на фишках. Это уровень инструкций в стеке. Если начать исполнение боя на картинке выше, то получится следующее:

== Слой 3
Жёлтый панк с приоритетом 3 бьёт по мутанту и уничтожает его (если бы это не было сделано, мутант вломил бы на шаге 2 комцентру жёлтых). Больше никого с таким приоритетом нет. Идём ниже.

== Слой 2
Жёлтый бегун и «ковбой» одновременно бьют по синему комцентру, а по «ковбою» бьёт робот с ножами. Комцентр теряет 2 единицы брони, «ковбой» уничтожен.

== Слой 1
С приоритетом 1 никого нет. Эта часть стека просто пропускается.

== Слой 0
Комцентры действуют с приоритетом 0 и бьют всех врагов рядом. Синий комцентр отстреливается и уничтожает бегуна и товарища с зазубренным ножиком. Он бы уничтожил и «ковбоя», да вот незадача – его уже два такта как нет.

Конец стека. Вводите новые данные.

Попробуете сами разобрать ситуацию вот с такими данными на входе?

Здесь модуль с плюсом забирает на себя атаку одного из бойцов, к которым подключен. То есть, грубо говоря, мутант около жёлтого комцентра получил вторую жизнь. Фишка взрыва – это жёлтые из текущего состояния запустили исполнение стека. Сетка у жёлтого парня с пушкой – это блокировка: фишка, на которую направлена сетка, не ложится в стек.

Проиграли ситуацию в голове? Сколько хитов у какого комцентра осталось? Какие фишки всё ещё на поле после полного разбора стека?

Вот что должно получиться:

Суть игры в том, чтобы выкладывать 2 из 3 фишек каждый ход оптимальным образом. Каждый из игроков в голове проигрывает возможные варианты разбора стека и размещает свои войска-операторы так, как ему наиболее выгодно. Вот месиве настоящего боя даже простой ход становится настоящей отладкой:


Обратите внимание на красных стрелков – они бьют по ближайшей чужой фишке по направлению атаки, но не поражают свои войска.

Теперь вы сами

Вы играете за рыжих рейдеров – Гегемонию. У вашего командного центра 2 хита, у противника 6. Нужно взять и положить на поле 3 фишки из пяти доступных. После этого запустится компиляция, и в конце исполнения у противника должно быть меньше хитов, чем у вас. Фишки можно вращать.

Посмотрим, что есть: парень с ближним и дальним боем может вбить сразу два повреждения, и он быстрый. Прочный парень с двойной ближней атакой в три стороны, бронёй и защитой (у него 2 хита, в отличие от всех остальных однохитовых подразделений) тоже хорош, но чертовски медленный. Ещё один боец с двойной ближней атакой по верхнему сектору – компромисс между скоростью и мощью. И два рейдера – очень быстрые, не такие сильные.

Ответ прост:

Ещё одна сущность – приказы

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


У вас хит, у зелёного врага – два. Да, ещё одно. Комцентры могут давать бонусы соседним своим фишкам: треугольник означает усиление атаки (здесь мужик с кривым ножиком получает вторую ближнюю атаку), звёзды у зелёных – возможность уйти в стек дважды (в свою инициативу и ниже, то есть стрелок над зелёным комцентром будет атаковать дважды на 3 и на 2).

Вот решение:

И последняя языковая конструкция – модули

Это подразделения, которые меняют свойства соседей, к которым подключены палочками. Треугольник и плюс – это усиление соответствующей атаки. +1 – это увеличение скорости, то есть приоритета обработки в стеке. Плюс – это защита от одной атаки (вместо атакуемого войска модуль с плюсом принимает атаку на себя). Задача:


У вас хит, а у жёлтых и синих врагов – по три хита. Можете использовать три любых модуля из пяти, у нас демократия. Вражеский комцентр даёт плюс к инициативе (стрелок за синим комцентром стерляет на фазе 4 в самом верху стека), ваш – усиливает на 1 дальний бой.

Вот решение, попробуйте разобраться. Медленно, но верно мы подходим к циклам и рекурсии, чувствуете?

У одной из армий есть возможность построить бесконечный цикл, нанося бесконечные же повреждения до конца разбора стека.

Посложнее

Вот этюд, сможете быстро растолкать врагов? Вы играете за красных, у вас 1 хит. У жёлтых 6 хитов, у зелёных 3, у синих – 2.

Выбирайте любые три фишки из пяти.

Вот ответ:

Видите, как здорово? Теперь представьте, что в настоящей игре такая отладка каждый ход. Вот почему я говорю про тактический симулятор дебага, да-да-да.

Если понравилось, ищите в своём мобильном сторе бесплатную демо-обучалку с мегатупым AI и сборник тактических задач. Естественно, вот настольная игра-оригинал, на странице которой есть детальные правила.

Призовой этюд


Вы – Аванпост.

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

ссылка на оригинал статьи http://habrahabr.ru/post/258655/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *