SOKOBOT というパズルゲームに最近ハマってます。簡単なコマンドの組み合わせでパズルを解くゲームです。プログラマとして楽しめることが分かったので楽しみ方を共有します。
この記事ではゲームのステージ攻略法や解法の説明はしません。どうしても攻略法を知りたい方は攻略サイトを見てください。
*筆者の進行時点までの情報です。ゲームの進行状況やゲームのアップデートによって数値が変化する可能性があります。詳しくは公式サイトやゲーム自体で確認してください。
ゲームの概要
ロボットを操作してスタート(緑)のマスにある荷物をゴール(赤)のマスへ「正しい状態」で10回置ければステージクリアです。ロボットは事前に入力したコマンド群に従って動作します。実際にロボットを動作させて確認することができます。失敗によるペナルティはないので何度もコマンドを実行して意図したとおりに動作するかを確認して進めていきます。
10回ゴールしなければならないのでコマンドの繰り返し(ループ)を自然に学ぶことができ、初学者向けのプログラミング教育にもなりそうです。
コマンド
ロボットは1ステップごとに1コマンドを実行できます。すべてのロボットでステップは同期します。
ロボット1台につき36コマンドまで入力できます。ロボットは同時に5台まで使うことができます。
6種類のコマンドがあります。もしコマンドが意図したとおりに実行できない状況ではそのコマンドは実行されずに次のコマンドに進みます。
- 待機する: 1ステップの間その場で待機します。
- 1マス進む: 指定した上下左右のどちらかに進みます。壁や他のロボットがいる方向などには進めません。
- 向きを変える: 向いている方向から指定した方(左回転か右回転)に90度向きを変えます。
- 荷物を持つ/置く: 正面に荷物がある場合に荷物を持つか置くかします。荷物を持っているかどうかで挙動が変わります。
- スリープする: スリープ状態になりそれ以降のコマンドが実行されなくなります。次のロボット起動コマンドが他のロボットから実行されると1ステップ後からコマンドが再開されます。
- 他のロボットを起動する: スリープ状態の他のロボットを起動します。全部のロボットを起動するコマンドと、近く(自分を中心とした5x5マス)のロボットを起動するコマンドの2種類があります。
荷物を移動するのに必ずしも持ち上げる必要はありません。複数の荷物を同時に移動することもできます。
ステージごとに存在するギミックなどはここでは解説しません。自分で操作して攻略法を見つけ出してください。
プログラマ的楽しみ方
ゲームのステージをクリアするたびに新しく別のステージが選べるようになっていきます。
このゲームには単純にステージをクリアするだけではなくステージごとにスコアのランキングを上げるという楽しみ方があります。
スコア
現時点では次の3つのスコアがあります。
- SOKOBOTS
- コマンド数
- ステップ数
スコアの種類ごとにランキングの「TOP1」、「TOP10」、「自分のスコア」が表示されます。
自分のスコアをすべて TOP1 に近づけるのがランキングの楽しみ方です。
スコアごとの楽しみ方
スコアごとにステージの解法が異なります。スコアの種類ごとに楽しみ方が違うので、すでにクリアしたステージでもそれぞれのスコアが上がるように「NEW FILE」で遊んで見てください。
SOKOBOTS
1つ目の「SOKOBOTS」では使用したロボットの台数で少ないほどスコアが上がります。1台のロボットを可能な限り最小の動きで荷物を運ぶことが要求されます。ゲーム序盤のステージでは簡単ですが、後半になるにつれて少ない台数で運ぶのが難しくなります。
コマンド数
2つ目の「コマンド数」では入力したコマンドの数が少ないほどスコアが上がります。ロボットの台数は関係なくすべてのロボットのコマンドの合計数でスコアが評価されます。いわゆるコードゴルフのような楽しみ方ができます。無駄な動きがいかに多くてもコマンドを1つでも多く削る遊び方です。
ステップ数
3つ目の「ステップ数」では荷物を10回ゴールに運ぶまでにかかった時間、すなわちステップの数が短いほどスコアが上がります。スループットを上げたりレイテンシを下げたりする開発力を問われます。
スコアを上げるためのファイル保存
これらの3つのスコアをすべて同時に上げることは困難ですが、同時にすべてのスコアを上げる必要はありません。
このゲームではステージごとに複数のファイルに解法を保存しておくことができます。
任意のセーブファイルでもっとも高いスコアが個別にランキングに反映されます。
つまりスコアの種類ごとに個別のファイルに全く別の解法を使うことでそれぞれのスコアでのランキング上位を目指せます。
苦労して TOP1 の解法を見つけたときが一番楽しいです。
ゲームの不満点
次のような不満点は少しありますが、概ね楽しいゲームです。
- Undo がないので意図しない書き換えをした場合にすべてが壊れること
- "e" と "r" を打ち間違えやすいこと
- コマンドを範囲でコピペできないので基本的に全部書き直しになること
- デバッグポイントがないので特定のステップで止めるのが少し面倒なこと
もし解決方法があれば教えていただけるとうれしいです。
まとめ
SOKOBOT というパズルゲームを紹介しました。プログラマ的にも楽しめたので連休の大部分が吸われました。超絶優秀なプログラマのみなさまにはぜひ TOP1 のスコアを塗り替えて SNS で自慢していただければ幸いです。