1 ポイント 投稿者 GN⁺ 2026-01-07 | 1件のコメント | WhatsAppで共有
  • 限られた壁の数で馬を囲い込むパズルゲームで、できるだけ広い囲いを作ることが目標
  • プレイヤーは草地タイルをクリックして壁を設置し、馬は斜め移動や水上移動ができない
  • チェリー (Cherries) を囲いの中に含めると追加点を獲得でき、より大きな囲いほど高得点になる
  • レベルエディタ、リーダーボード、デイリーパズル、ユーザー制作レベルの探索機能をサポート
  • シンプルなアイデアから始まったが、Leetcode/Advent of Code スタイルの最適化問題へと発展したゲーム

ゲーム概要

  • enclose.horse は、限られた数の壁を使って馬を囲い込むパズルゲーム
    • 目標は、可能な限り広い領域を囲いで囲むこと
    • スコアは囲いの大きさと含まれるチェリーの数によって決まる
  • 操作方法は、草地タイルをクリックして壁を立てる形式
    • 馬は斜め移動や水上移動ができない
    • チェリーを囲いの中に含めると +3点 を獲得
    • 提出は1回のみ可能

ゲームインターフェースと機能

  • レベル情報には、サイズ (12x14)、壁の予算 (12)、プレイ回数 (4455回)、レベル ID (ZtiI9g) などが表示される
  • 設定メニューで、名前、グリッド線、テーマ、高度な設定などを調整可能
  • リーダーボードに名前が保存され、他のプレイヤーのスコアと比較できる
  • レベルエディタを通じて、自分でパズルを作成して共有できる
  • 「Browse」ページで、他のユーザーが作成したレベルを探し、プレイ後に投票できる

更新履歴

  • 2025年12月29日: 初期リリース、レベルエディタとリーダーボードを追加
  • 12月30日: デイリーパズル (Daily puzzles) と過去のパズル (Past Puzzles) 機能を導入
  • 12月31日: 更新タブを追加
  • 2026年1月1日: レベルエディタに Solver を追加し、ユーザー制作レベルの探索と投票機能を導入
  • 1月2日: プレイ中の最大面積追跡機能を追加
  • 1月3日: チェリー要素を追加
  • 1月4日: チェリーのバグを修正し、検索フィルターを改善

開発の背景

  • 開発者はこのゲームを Leetcode や Advent of Code の最適化問題として構想したことが出発点
  • その後、実際に自分でプレイしてみた結果、完成度の高いパズルゲームへ発展させる価値があると判断
  • ゲームは Shivers が制作し、公式サイトと X (Twitter) アカウントを通じて公開された

その他の要素

  • 「Horse Tip」 機能は、壁が残っているときに提出を警告する
    • 「今後表示しない」オプションを提供
  • バグ報告機能により、不適切または不可能なレベルを通報できる
  • チェリーの名前を5つ挙げる (Name Five of Cherries) など、一部にユーモラスな要素を含む

1件のコメント

 
GN⁺ 2026-01-07
Hacker News のコメント
  • 本当に面白いゲームだった。開発者がデータをうまく収集しているなら、難易度順に100ステージをまとめて Steam で出してもよさそう。
    ただ、ドアが上にせり上がるアニメーションは 2D の視覚的な論理を壊していて混乱する。
    今後、新しいゲームメカニクスが追加されることを期待している。たとえば

    • : 馬が毎ターン餌に向かって移動する。干し草の山や角砂糖を誘引物にするとよさそう
    • 目標地点: 馬を柵で誘導して特定のマスに入れさせるパズル
    • 洪水: 水が端から満ちてきて、馬を閉じ込めつつ水も防がなければならない
    • こういうデータ収集を不快に感じる人もいると言っていた。世の中には監視なしに純粋に楽しめるゲームも必要だと思う
    • このゲームにはターン制のミニゲームの可能性がある。馬が脱出口に向かって動くときに壁を置いて進路を変えさせ、限られた壁でできるだけ多くのマスを移動させる仕組みが面白い
    • ドアが上に動く演出が全体の美学に合っていないという意見に同感。それでも素晴らしいゲームだ
    • 自分はこのアニメーションをトップダウン RPG 視点のように解釈した。視覚的にはそこまで混乱しなかったが、モバイルでは間違ったマスをタップしやすくて不便だった
    • シンプルなゲームほど良いと思う。プログラミングができるなら、週末を何度か使って自分で作ってみるのも良い学習プロジェクトになりそう
  • 8日目のパズルの最適解を手で探してみたが、かなり楽しかった。
    最小解から始めて段階的に拡張し、壁を再配置するたびに有効な解を保つやり方で進めた。
    結局、15分で最適スコアを見つけた

    • このアプローチは**TDD(テスト駆動開発)**の考え方に似ているという意見があった
    • 自分も同じアルゴリズムを使った。トップダウン方式はうまくいかなかったが、本当に楽しかった
  • チェリーをバッテリーに変えて、ゲーム名をCorrect Horse Battery Stableにすると面白そう

    • あるいはチェリーをペイストリーや PBJ スナックに変えて、Collect Horse Buttery Stable にしてもかわいい
    • 壁の代わりに**ステープラーの針(staples)**を使う案も出ていた
    • チェリーを砂糖の塊に変えて My Lovely Horse と呼ぶといいという意見もあった
    • このジョークは xkcd 936 を参照したもの
  • ゲームはとても良かった。ただ、「Show optimal」を押すと自分の解と比較できないのが惜しかった。
    壁が 1.5 マス分を占めていて紛らわしく、恐竜の囲いのようなデザインなので馬の囲いに変えるとよさそう

    • 「Show optimal」をトグルボタンにして、自分の解と切り替えて見られるようにするとよさそう。モバイルで壁が重なってタップしづらい点にも同感
    • すばやく切り替えられるボタンが必要。自分は過去の日付メニュー経由で自分の解に戻る方法を見つけた
    • 馬がクリック時にアクマシンの話をするのを見ると、何かまだありそうな気がする
  • スコアの初期値を N/A ではなくN/EIGHにすると、馬テーマに合いそう

    • 昔見た**馬の議会(neigh)**の漫画を思い出した
    • こんな発想を思いつく創造力に感心する
  • 自分でソリューションファインダーを作ってみた

    1. グリッドのスクリーンショットを撮って
    2. enclosure-horse-solution.onrender.com にアップロード
    3. 壁の数を確認して Solve をクリック
      無料版なのでたまにクラッシュするが、キャッシュは追加した。
      GitHub リポジトリ からローカル実行も可能
    • レベルエディタでカスタムマップを作って最適解を見ることができる。公式マップを再現すれば開発者の意図も確認できる
    • キャッシュをメモリかディスクのどちらにしているのか尋ねる人もいた。Redis みたいなものを使えば安定しそう
    • サーバーがよく落ちるので、結果が出ないならローカル実行を勧める
  • 自分の解と最適解を一度に比較できる機能があればよかった

    • 自分もスクリーンショットを2枚撮って比較した
    • **サイドバイサイド(diff)**表示機能があれば完璧だと思う
  • この問題の最適解をアルゴリズムで求める方法が気になる。Factorio でも似た問題を解こうとしたが、高速な解法は見つからなかった

    • サイトでは**Answer Set Programming(ASP)**と Clingo エンジンを使っているという。こういう格子の最大化問題は NP-hard である可能性が高い。SAT/SMT ソルバーは flood-fill 計算に非効率的
    • 制約プログラミングのアプローチが適しているという意見もあった。壁の位置を変数にして、馬が到達できるマスを制約条件に設定すればよい
    • この問題を見てグラフカット、SAT/SMT、ACSPなど、いろいろな最適化手法を思い浮かべたという人もいた
    • 関連する議論は CS StackExchange にもある
    • NP-hard 問題とみなし、Sparsest Cutから導けるという意見もあった。最小カットを見つけて容量を調整しながら反復探索する方式の提案
  • horse ドメインを見るたびに traceroute bad.horse を実行して、つい笑ってしまう

    • このジョークは本当に美しいという反応があった
  • 毎日のチャレンジがタイムゾーンごとに違うタイミングで公開されているようだ。友人は9日目を見ているのに、自分には8日目しか見えない。
    世界中で同じ公開時刻にそろえてくれると、友人たちと競いやすくなりそう