Pull to refresh
0
Rating
Мосигра
Настольные игры

Поиграем в отладку этой воскресной ночью?

Мосигра corporate blogGame developmentDebugging
Вы когда-нибудь думали, что бывают игры, которые сами по себе являются языком программирования? Не обязательно Тьюринг-полным, но всё же языком. У меня есть отличный пример. Игровой процесс Нейрошимы-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.



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

Вот ответ:


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

Вот настольная игра-оригинал, на странице которой есть детальные правила.

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



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

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


Эта задача решена.
Скрытый текст
В комментариях одно решение, вот классическое:



Собственно, к чему я это. Если вы разработчик, то игра вам точно понравится. Мы же нашли ей ещё применение — советовали родителям как обучающую по логике-программированию.

P.S. Вторая призовая задача, этюд «блокировка на мьютексах»:


Здесь надо будет залезть в правила за точной формулировкой действия сетей и сетевым парадоксом. Первый решивший кроме winKING тоже получит коробку.

Решение:
Tags:воскресная ночьиграпризНейрошимаотладкаdebugNeuroshima Hexразработка игрмеханика
Hubs: Мосигра corporate blog Game development Debugging
Total votes 28: ↑22 and ↓6 +16
Views26.4K

Information

Founded
2008
Location
Россия
Website
www.mosigra.ru
Employees
201–500 employees
Registered