В поисках Спока

GlukKazan 24 ноября в 08:47 10,2k
— А мне вот чо любопытно, — сказал Угрыз.  
— А зачем у тебя на шляпе пробки?
— Чтобы мух отгонять, — объяснил Ринсвинд.
— И как, получается?
— Ясен перец нет, — фыркнул Клэнси.
— Если бы помогало, кто-нибудь до ентого давно бы уже додумался.
— Ну да. Я и додумался, — сказал Ринсвинд.
— Будь спок.
 
     сэр Терри Пратчетт «Последний континент»


Эта игра символизирует непрерывный духовный поиск, борьбу со стереотипами и примирение со своим альтер эго. Ладно, кого я пытаюсь обмануть? Я просто увидел её во сне.

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

Ножницы режут бумагу. Бумага заворачивает камень. Камень давит ящерицу, а ящерица травит Спока, в то время как Спок ломает ножницы, которые, в свою очередь, отрезают голову ящерице, которая ест бумагу, на которой улики против Спока. Спок испаряет камень, а камень, разумеется, затупляет ножницы

Существуют и ещё более расширенные схемы

Но я бы не хотел углубляться в эзотерику.

Я давно хотел приспособить эти (или похожие на них) правила к шахматным играм. Подобные схемы взаимодействия фигур, позволяют выполнять сложные тактические построения, «закрываясь» от одних фигур другими. При этом, в игре нет «самой сильной» фигуры, каждая фигура может быть побита какой-то другой.

Параллели и меридианы
Разумеется, здесь нельзя не вспомнить о знаменитой китайской игре "Джунгли", послужившей прототипом для более «взрослой» версии "Китайских военных шахмат". В западных странах, больше известна очень похожая на них, но пожалуй более простая игра "Стратего". Во всех этих играх, целью является не уничтожение фигур противника, а прорыв на вражескую территорию и «захват флага». Сложные взаимозависимости «силы» фигур служат лишь фоном, заставляющим геймплей заиграть новыми красками.

Сходные принципы используются и в "Ko Shogi" — сложной шахматной игре 18-го века. Проблемой этой игровой системы является наличие «артиллерии» — большого количества фигур «стреляющих» на дальние дистанции без перемещения на атакуемую позицию. Без какого либо сдерживающего фактора, игра превратилась бы в бессмысленную бойню. Положение спасают «Shield» и «Shield Unit», находящиеся на поле в большом количестве и иммунные к выстрелам.

Часть требований к новой игре была связана с тем, что я планировал использовать её для отладки игрового AI, в рамках своего проекта Dagaz. Игровое поле должно было быть небольшим. Я остановился на квадратной доске размером 5x5 клеток. Чтобы фигуры не «толкались» на столь ограниченном пространстве, я разрешил им «перепрыгивать» дружественные фигуры также, как если бы это были пустые поля. Сами фигуры должны были стать узнаваемыми:

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

Ножницы — могут перемещаться только по диагоналям (при необходимости перепрыгивая фигуры своего цвета), бьют «Ящерицу» и «Бумагу» («Спока» — главную фигуры игры, «Ножницы» не бьют). Это аналог шахматного "Слона".

Ящерица — самый сильный убийца, аналог шахматного "Ферзя", перемещается в любом из восьми направлений на любое количество полей и бьёт «Бумагу» и «Спока». Должна перемещаться по полю очень осторожно, поскольку уязвима для атак «Ножниц» и «Камня».

Бумага — перемещается ортогонально, как шахматная "Ладья". Также как и «Ящерица», бьёт «Спока», но, кроме того, может атаковать ещё и «Камень».

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


Начальная расстановка чем-то напоминает шахматную. «Спок» — главная фигура, расположен по центру. Обе «Бумаги», также как и шахматные «Ладьи» — по флангам. «Камни» перед ними прикрыты «Ножницами», но более важно то, что «Бумага» не может атаковать вражеский «Камень» первым ходом, поскольку подставится под атаку «Спока». Резервный «Спок», плюс лишение оппонента сильной фигуры — желанная добыча.

«Ящерицы» — самой сильной фигуры, в начальной расстановке нет. Получить её можно только в процессе игры, превращением из «Ножниц». «Спок» не может превратить дружественные «Камни» из начальной позиции, так как подставится под удар вражеской «Бумаги». Может показаться, что «Спок» не может атаковать вражеского «Спока» непосредственно (поскольку подставится под удар и окаменеет), но это не так. Появление на поле b3 (или d3) «Бумаги» (не имеет значения чьей) приведёт к немедленной победе «синих».


В целом, игра получилась именно такой как я и планировал. Динамичной, неожиданной, коварной. Что ещё более важно, на каждом этапе игры, ходы, при относительно небольшом их количестве, широко варьируются от сильных до очень слабых. Один неверный ход может привести к немедленному поражению.

Spock позволил мне хорошо поработать над игровым AI и хотя результаты этих работ пока очень скромны, моё понимание минимакса, да и UCT тоже, значительно улучшилось. Всё это тема для другой статьи. Пока же, я предлагаю читателям насладиться новой оригинальной игрой, а также другими играми и головоломками, вошедшими в итерацию 1.1.7 проекта.
Проголосовать:
+29
Сохранить: