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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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


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

    Spock позволил мне хорошо поработать над игровым AI и хотя результаты этих работ пока очень скромны, моё понимание минимакса, да и UCT тоже, значительно улучшилось. Всё это тема для другой статьи. Пока же, я предлагаю читателям насладиться новой оригинальной игрой, а также другими играми и головоломками, вошедшими в итерацию 1.1.7 проекта.
    Поделиться публикацией
    Никаких подозрительных скриптов, только релевантные баннеры. Не релевантные? Пиши на: adv@tmtm.ru с темой «Полундра»

    Зачем оно вам?
    Реклама
    Комментарии 30
    • +3
      Спасибо!
      Мне вот интересно — какая часть игры приснилась — только сама идея или даже некоторые особенности?
      • +2
        Это был не столько сон, сколько полудрёма. Приснилась начальная расстановка и ходы фигур.
      • +3
        Круто. Hotseat или сетевую версию можно ожидать?)
        • +3
          Ой, ну Hotseat, хоть сейчас, а вот сетевая версия — действительно больная тема.
          В очень дальних планах. Пока что искоса посматриваю на PeerJS.
          • +3
            Попробуйте из «квантовых шахмат» заимствовать код. Он, емнип, свободный был. Функционал полностью аналогичный же. может, удастся без геморроя особого адаптировать)
            p.s. за ссылку на hotseat спасибо)
      • +4
        ну все. день потерян.
        • +2
          Спасибо! Вы изобрели Философию Пяти Фаз У-Син (Wu-Xing, 五行).
          • +1
            в У-Син взаимопреодоление идет в обратную сторону, а тут преобразование в прямую. и таки базу взятую за основу игры придумал не автор статьи
          • +3
            Сходные принципы используются и в «Ko Shogi» — сложной шахматной игре 18-го века. Проблемой этой игровой системы является наличие «артиллерии» — большого количества фигур «стреляющих» на дальние дистанции без перемещения на атакуемую позицию. Без какого либо сдерживающего фактора, игра превратилась бы в бессмысленную бойню. Положение спасают «Shield» и «Shield Unit», находящиеся на поле в большом количестве и иммунные к выстрелам.

            Хм, а если сделать нечто более похожее на обычные шахматы, без всяких иммунитетов, но ввести правило — артиллерия не атакует без «разведки»? А «разведка» — это когда союзная фигура стоит вплотную к вражеской.
            А статьи у Вас замечательные, и интерактивные игры — это очень большой плюс.
            • +2
              Спасибо за похвалу. По поводу «разведки»: во первых, это будет совсем другая игра (что само по себе возможно вовсе не плохо), во вторых, вот точно такая игра на ум не приходит. Пожалуй, ближайший аналог — «Кайвасса» Зейна Фишера. Я писал о ней здесь. Ещё вспоминаются отрывки из описания «Регицида» в WH40k. Не помню в каком точно произведении (вроде в «Гамбите предателя») рассказывается о фигуре «раскрывавшей» свойства фигуры стоящей рядом с ней (например, вместо «Гражданина» там может оказаться «Еретик»), но «Регицид», увы не законченная игра. Того материала, что размазан по книгам совершенно недостаточно для реконструкции. Ах да, есть ещё мой "Хельхейм", там «Хель» может «стрелять» вообще в любую точку доски (обращая вражескую фигуру), но фигура должна быть «поражена ужасом» или самой Хель или её (более мобильным) псом — Гармом. Эта игра у меня пока только для Zillions, для Dagaz не успел сделать.

            • +1
              А скажите пожалуйста, насколько высока роль рандома в AI? Есть подозрение, что он уязвим к типовому «мату» в 6 ходов.
              • +1
                Увы, AI очень слабый. А роль рандома высока. Да можете сами посмотреть. Главная беда — низкая глубина просмотра. Если брать минимакс с альфа-бета отсечением, то за 5 секунд успеваю просмотреть максимум на 3-4 хода вперёд (понятно, что от альфа-бета отсечения на такой глубине мало толку). Пока пытаюсь просматривать рандомно, но более глубоко, но результаты, как я уже говорил, очень скромные. Вообще, на эту тему планирую следующую статью, техническую. А что за мат в 6 ходов? Чтобы не мучиться с записью, можно нажать F12. В консоли ведётся лог с записью ходов.
                • +2
                  Ну. Меня он не так уж и редко обыгрывает, но при этом чатсо пропускает поражения с глубиной в один ход.
                  Как-то так
                  Стрелкой показан мой предыдущий ход, предыдущий ход ИИ не помню, но в контексте показанной угрозы он был бессмысленен. Соответственно, возможность прибить ящерицу одним из двух камней он проигнорировал. Ситуация воспроизводится не регулярно, но случай не единичный.
                  image
                  • +1
                    Спасибо, интересно. Буду смотреть.
                    • +1
                      Добавьте еще счетчик ходов, если не лень.

                      И более важный момент — есть ли какой-то способ снятия выделения? Если нет, то сделайте пожалуйста. А то бывают ситуации, когда для выделения одной фигуры после другой требуется сложная последовательность действий))
                      • +1
                        Вообще там не счётчик ходов, а полноценный менеджер игровой сессии просится. С нормальной возможностью отката ходов, да и с редактированием доски тоже. Тоже в дальних планах, как и сетевое взаимодействие. А на счёт выделения, не очень понял. Если мы выбрали одну фигуру (но не походили), можно сразу ткнуть другую и выделится она. Тут правда есть два нюанса.

                        1. Если вторая фигура не имеет корректных ходов (в Шахматах, например, это может быть не очевидно при шахе) — ничего не изменится (то есть выделение первой фигуры не снимется)
                        2. Если вторая выбранная фигуры имеет единственный разрешённый ход, она выберется и выделение первой фигуры снимется, но ход второй фигуры показан (зелёным кружком) не будет. При повторном нажатии фигура просто сходит. Есть такой застарелый баг, я про него знаю.
                        • +1
                          3. первая фигура может быть споком.
                          • +1
                            Не понял этот комментарий. Пример можно?
                            • +1
                              Если я выделил спока, то чтобы выделить фигуру под его ходом, нужно сначало как-то снять выделение. Например, выделив другую фигуру. Но, во-первых, ходы половины фигур могут быть заблокированы. В этом случае выделить их нельзя (курсор выглядит стрелочкой вместо православной руки). Во-вторых, свободных фигур может просто не быть.
                              • +1
                                Ага, понял. Например, чтобы по повторному нажатию на выделенную фигуру просто сбрасывала выделение? Добавил себе в TODO.
                  • +1
                    Попытался воспроизвести, но пока без толку. Уверенно жрёт ящерицу кулаком.
                    Видимо ошибка связана с историей предыдущих ходов (такое возможно).
                    • +1
                      Но я же обновляю страницу каждый раз. Или это не важно? Как сбросить? Вот щас воспроизвел третий раз. При этом общее число партий не особо большое — до сотни не дошло.
                      • +1
                        Мне бы лог для анализа, если не сложно. Там по F12 открывается консоль, из неё можно скопировать.
              • 0
                на сколько я в курсе, EVE онлайн использует подобную систему — круговую поруку боевых короблей кто кого бьёт.
                В игре нет сильнейших кораблей или оборудования, которое позволяет побеждать любые другие корабли. У каждого корабля, модуля, оружия есть сильные и слабые стороны. Так, крупные корабли обладают большей огневой мощью, но и большей массой, меньшей маневренностью и плохо попадают по малым маневренным и быстрым целям.

                Так что да, у этой схемы есть большие перспективы для создания новых игр
                • 0
                  Да такое было еще в древних играх типа Dune2000. Не именно по кругу, но супердоминаторов не было тоже.

                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.