目次
ゲーム概要と遊び方
六角形の盤面で自分のコマを直線移動し、生き残りを目指す対戦ゲームです。 移動したマスはその場から消えて穴になるため、盤面はどんどん崩れていきます。 動けなくなったプレイヤーは即脱落。最後に残った人が勝者です。
- 初期配置: プレイヤーは順番に、穴や他のコマがない好きなマスに自分のコマを1つ置く
- 手番: 自分のコマを 1マスまたは2マス 直線移動 ─ ただし、中継地点も空いている必要がある(敵の上を飛び越えられない)
- 移動したら、元いたマスは穴になる(もうそこは通れない)
- 動けなくなったら脱落(以降は手番が回ってこない)
- 最後の1人が残った時点でゲーム終了
オンライン化の考え方(Node + Socket.IO)
オンライン対戦では「サーバが全部判断する」方式ではなく、クライアント側が状態を持ち、サーバは中継だけにしました。(JavaScriptで作成)
やっていること
- ブラウザは盤面・ターンなどの
stateを保持 - 操作後に
socket.emit("state")で部屋の全員に送信 - サーバは 受け取った state を他の人へそのまま渡すだけ
- 終局の結果は全員に送るが、モーダルを閉じるのは各自ローカル
難しい同期を避けるために、常に「最新の盤面を上書きする」形にしています。詳しくは生成AIで手順を解説してくれます。おそらくこれがオンライン化するための一番簡単な構造です。
GitHub で管理する流れ
- プロジェクトフォルダに
public/とserver.jsを置く - 初回だけ以下を実行:
git init
git add -A
git commit -m "first commit"
git branch -M main
git remote add origin https://github.com/あなた/リポジトリ.git
git push -u origin main
この作業にはギットハブのアカウントを作成する必要があります。それが難しい方は別の方法もあるので、生成AIに尋ねると案を出してくれます。
公開とサイトを起こし続ける方法
1) Render で公開
- Web Service を作成(Node)
- Start Command:
node server.js - URL が発行される
2) 無料だと一定時間の経過でスリープする → UptimeRobot で起こす
- UptimeRobot に登録
- 「HTTP(s) Monitor」を作成 → Render の URL を入力
- 5 分おきにアクセスされるので、自動的に起きてくれる
「ずっと起動し続ける」ではなく、必要なときに自動で起きてくれるというイメージです。