— Что это? — вытянул шею Гмык, хмуро глядя на мои карты. — Но тут же только…
— Минутку, — вмешался игрок слева от него. — Сегодня вторник. Выходит, его единороги дикие.
— Но в названии месяца есть «М»! — вякнул еще кто-то. — Значит, его великан идет за половину номинальной стоимости!
— Но у нас четное число игроков…
Я вам говорил, что игра эта сложная.

                  Роберт Асприн «Маленький мифо-заклад»
 

То был славный день. День, когда генералы Севера и Юга могли решить все свои проблемы. Две армии изготовились к бою. Впереди, прикрываемые щитами, двигались колесницы. Сразу вслед за ними, шла пехота и кавалерия. Стрелки, артиллерия и боевые слоны замыкали строй. Элитные бойцы шагали рядом с генералом.

Millenary 5J x 11D = Dragon ascending



После нескольких часов боя, войска смешались. Многие бойцы пали. Тысячелетний воин обнаружил брешь в обороне северян. Одним ударом он мог захватить знамя, а это — половина победы! Не раздумывая, воин бросился вперёд. Знаменосец пал. Огромный чёрный дракон взметнулся в поднебесье. Только маленький барабанщик стоял между ним и генералом.

Drum 10C x 11D = Thunderclap


Барабанщик не мог отступить. Всё войско смотрело на него. Он должен был защитить генерала! Смело бросился он на врага. В небе сверкнула молния. Дракон был повержен.

Advance guard 19O — 19N


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

Sumo wrestler 7K x 6L x 7M


Борец сумо в чём-то подобен льву. Хотя он и не очень быстр, но может бить по два противника за раз. Он способен убить врага, даже оставаясь на месте! Главное, чтобы враг находился неподалёку. Продвигаясь вперёд, сумоист разрушил имперскую базу южан и уничтожил пушечный расчёт. Неплохо, для такого увальня!

Banner 8N x 7M = Roaming assault


Враг был ужасен, но знаменосец смело бросился вперёд. Здесь всё решала скорость! Неповоротливый борец сумо мог мало что ему противопоставить. Исход оказался вполне предсказуем. За свои заслуги, знаменосец был повышен в звании и отныне мог разъезжать на боевой колеснице.

Engineer 16M — 15N = Poison flame x 15O x 14O



Инженер двинулся вперёд. В бою он был не сильнее любого другого пехотинца. Его сила заключалась в ином. Сделав ещё один шаг, он оказался в лагере противника. Вспыхнуло пламя. Двое южан, оказавшихся рядом, вспыхнули как порох!

Taoist priest 13H — 13F = Twelve-mile fog x 14F


Пришёл черёд древнего даоса вступить в бой. Одним прыжком он оказался на территории северян. На двенадцать миль вокруг расползся удушливый тёмный туман. Оказавшийся неподалёку солдат даже не понял, что его убило.

Poison flame 15N — 15O x 16P x 14P


Подобно огненному демону, инженер шёл вперёд и огонь следовал за ним. Земля горела у него под ногами, а вместе с ней горело всё, что на ней находилось. Заместителю командующего не повезло. Его смерть приблизила армию северян к победе.

Elephant 10J — 15O x 15O


Кто-то должен был погасить это пламя! Боевой слон ринулся в самую середину пожара, презрев смерть. Сгорев в огне, он спас свою армию от неминуемого поражения.

Middle troop 4M — 4N Governor


Порой, всего один шажок отделяет заместителя командующего от губернатора. Один маленький шажок для губернатора и огромный шаг для всей его армии!

Roaming assault 7M — 8N x 9M — 10M x 11M — 12M


Боевая колесница катилась вперёд, давя врагов. Знаменосец не мог скрыть своего ликования. Патрульные или кавалеристы — неважно, он давил всех, без разбора!

European cannon 11E — 12F x 12M x 8J


Дабы прекратить этот безумие, пушечный расчёт выдвинулся на позицию. Пушка, сверкающая в лучах Солнца, совсем недавно была приобретена у заезжих гайдзинов. Уж что-что, а пушки они делать умели! Боевая колесница рассыпалась на кусочки. Вторым залпом убило всадника, оказавшегося неподалёку.

Clerk 17H — 17F = Master at arms 19J 1F = Earth's vengeance 19N 1P = Heaven's vengeance



Продвинувшись вперёд, скромный клерк стал мастером-оружейником. Это, казалось бы, рядовое событие имело далеко идущие последствия. В ту же секунду, гвардейцы обернулись мстителями и ярость их мщения затопила всё вокруг!

European cannon 12F — 11G x 11L


Предчувствуя беду, расчёт пушки бросился вперёд. Щиты не спасли бойца, оказавшегося на линии выстрела.

Heaven's vengeance 19N x 4N


Небесный мститель набросился на губернатора. Север погрузился в траур.

European cannon 11G — 10H x 4N


Хоть пушкари и не успели предотвратить катастрофу, они достойно отомстили за смерть губернатора!
Увы, их радость была не долгой.

Twelve-mile fog 13F — 11F x 10G — 9H x 10H


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

Spiritual monk 15L — 13N = Immaculate light


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

Twelve-mile fog 9H — 7H x 7G — 5H x 4G


Не ведая о нависшей над ним угрозе, даос двигался дальше. Северяне гибли один за другим.

Immaculate light 13N — 11N — 9L 5H = Taoist priest



Окутанный светом, монах догонял даоса. Когда он увидел своего противника, свет пронзил тьму мрачного тумана. Туман сгинул, растаяв без следа.

Patrol unit 9J x 9L


Увлёкшись своей погоней, монах не заметил вражеского патруля, случайно оказавшегося поблизости. Он погиб не убив ни одного врага, но смерть его была не напрасной.

Crossbow 4D — 5E x 5H


Вновь видимый всеми, даос оказался в ловушке. Он не мог укрыться, не мог убежать! Сделав всего один шаг, арбалетчик встал на линию огня. Древний даос пал.

Heaven's vengeance 1P — 13D!



Ослеплённый яростью, небесный мститель напал на генерала армии северян. Это было безрассудно. Генерал знал, как себя защитить.

Thunderclap 11D — 12D x 13D x 13C — 13B x 12B


Освещённый вспышками молний, барабанщик метался по полю боя. Он разил одного врага за другим и не мог остановиться!

Chariot unit 12R x 12B = Millenary


В мгновение ока, боевая повозка пересекла поле боя, прервав танец смерти! Смолк барабан и войско северян остановилось.

Crossbow 5E — 4F x 1F


Тысячелетний воин восстал перед северным генералом. Это был конец. У северян не оставалось другого выхода, кроме как продать свою жизнь подороже. Арбалетчики обстреляли взвод мстителей. Северяне победили в схватке, но это была их последняя победа.

Patrol unit 9L — 9B = Commissar!



Взвод патрульных завершил окружение вражеского генерала. Комиссар бросился вперёд. За Императора!

General 10A x 9B


Пытаясь «сохранить лицо», генерал сразил комиссара, встав на линию огня.

Millenary 12B x 9B


Тысячелетний воин не заставил себя ждать. Генерал пал, а вместе с ним и всё его войско!
То был славный день. В небе сияло Солнышко, щебетали птички. В тот день, многие получили своё.



Послесловие


Я уже давно хотел вплотную заняться Ko Shogi, а посленовогодние выходные предоставили мне такую возможность. Игра оправдала мои ожидания! Было много рутинной работы, такой как подготовка большого количества графических ресурсов, но случались и неожиданности. В Ko Shogi есть всё, что мне нравится. Здесь и оригинальные стреляющие фигуры и сложные, взаимозависимые правила их превращения. Победить в игре можно различными способами. Обязательным условием победы является захват вражеской фигуры General, но одного этого недостаточно! Вместе с ним, на выбор, необходимо захватить фигуру Banner или Middle troop. Если последний успел превратиться в Governor, необходимо захватить и его.

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

Другая большая тема — превращение фигур. Здесь в Ko Shogi всё сложно. Помимо традиционного превращения при перемещении в лагере противника (6 дальних линий доски), фигура может быть «повышена в звании» при уничтожении ей любой из «генеральских» фигур (General, Governor, Middle troop или Banner). Кроме того, фигуры перемещающиеся не более чем на один пункт, могут быть «повышены» в случае атаки ими «сильных» фигур, таких как Sumo wrestler, Dragon ascending, Thunderclap или Roaming assault. Имеются и более сложные схемы превращений (в том числе обратных). Например, потеря Taoist priest влечёт за собой обратное превращение дружественных фигур ThunderclapDrum) и Roaming assaultBanner). К сожалению, у меня нет уверенности в том, что я понял все нюансы правил превращения правильно. Большие вопросы, например, вызвает следующий пункт:
When the clerk ?? promotes to master at arms ??, the allied advance and rear guards ??, ?? promote as well, while any enemy poison flame ?? dies. However, while the clerk promotes as usual upon capturing a commanding piece, it cannot promote by entering or moving within the promotion zone unless the advance and rear guards have already entered the zone.
Превращение в Ko Shogi (в отличии от привычных нам Шахмат) не является обязательным, но я не везде смог оставить его таковым. По чисто техническим причинам, я не могу допустить отказ от превращения в тех случаях, когда оно влияет на другие фигуры, находящиеся на доске (например, Engineer, превращаясь в Poison flame, может «сжечь» фигуры оказавшиеся поблизости). По аналогичным причинам, запрещён отказ от превращения «стреляющих» фигур, убивающих своим выстрелом одну из «генеральских» фигур противника. К сожалению, «выстрел» в ZRF может быть реализован лишь способом, не допускающим никаких альтернатив в вопросе «превращения» стреляющей фигуры.

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

Единственный, на мой взгляд, отрицательный момент, в Ko Shogi, заключается в том, что большая часть её оригинальных фигур лишена возможности проявить весь свой потенциал. Партия, описанная в этой статье, вряд ли возможна в действительности. В реальной игре, такие тихоходные фигуры как Engineer или Clerk будут расстреляны артиллерией противника задолго до их превращения. Я попытался сгладить этот недостаток, создав вариант игры с незначительно изменёнными правилами. Основу изменений составило расширение «зоны превращения» и уменьшение общего количества «стреляющих» фигур. Кроме того, «инженерам» была предоставлена возможность апгрейда «технических юнитов». Игрок может выбирать, развивать ли ему позицию или улучшать собственные фигуры. Надеюсь, что «улучшенный» вариант получился не хуже оригинального.

Комментарии (0)