Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

proc-quest

手続き生成された2次元グラフマップ上を移動しながら、勢力(power)を奪い合って敵ボスを倒すコマンド選択式RPG(開発中)。

特徴

  • シード値による決定的なマップ自動生成
    • 点のランダムサンプリング(最小距離を保証)
    • 最小全域木(Prim法)で連結性を保証
    • 近傍エッジを追加して有機的なグラフに
    • 最遠点ペアのBFSでスタート/ボスノードを配置
  • ターン制のゲームループ
    • ノード間を移動しながら勢力(power)を増減させ、敵ボスを倒せばクリア、自分の勢力が尽きればゲームオーバー
    • 同じシード値を渡すと、マップ生成もゲーム内の乱数もすべて再現される(決定的)

セットアップ

npm install

ビルド

npm run build

遊び方(CLI)

node dist/index.js [seed]

起動すると生成されたマップのテキスト表示とASCIIスキャッタープロットが出力され、続けてターンループが始まる。

  • プロンプトにノードIDを入力するとそのノードへ移動(1ターン経過)
  • quit と入力すると終了
  • 隣接していないノードを指定した場合、移動は失敗するがターンは消費される

遊び方(ブラウザ)

npm run dev

web/ 以下のVite製アプリが起動し、生成したマップをSVGで表示しながらそのままプレイできる。

  • マップ上のノードをクリックするとそのノードへ移動(1ターン経過)
  • 現在地と移動可能な隣接ノードがハイライト表示される
  • 隣接していないノードをクリックした場合も移動は失敗するがターンは消費される(CLI版と同じ挙動)
  • 画面右側のステータス/ログパネルにターン経過・勢力・イベントが表示され、勝敗が決まるとバナーが表示されてクリックを受け付けなくなる
  • 「Regenerate」「Random seed」ボタンはマップと同時にゲームも初期化する(やり直し)

デプロイ(Cloudflare Workers)

ブラウザ版は Cloudflare Workers の Static Assets として配信する(Worker スクリプトなし、dist-web/ をそのまま配信)。設定は wrangler.jsonc。

npx wrangler login   # 初回のみ
npm run deploy       # build:web → wrangler deploy

GitHub 連携(Workers Builds)で自動デプロイする場合は、ビルドコマンドに npm run build:web、デプロイコマンドに npx wrangler deploy を指定する。Worker 名はダッシュボード側と wrangler.jsonc の name を一致させること。

プロジェクト構成

  • index.ts — CLIエントリポイント(マップ表示 + 対話的なターンループ)
  • src/map/ — マップ生成ロジック(点のサンプリング、MST、近傍エッジ、ノード種別割り当て)
  • src/game/ — ターン処理・勢力モデル・戦闘などゲームループのロジック
  • web/ — ブラウザ版(Vite)。マップ表示に加え、クリックでの移動・ターン進行・勝敗表示までプレイ可能
  • docs/specification.md — 設計仕様書

設計仕様

ゲームデザインの詳細は docs/specification.md を参照。勢力の更新式・コマンド体系・戦闘の仕様は現時点では暫定実装であり、今後変更される可能性がある。

テスト

現時点ではテストランナー未導入(npm test はスタブ)。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages