roguelike について
ターン制・グリッド型のローグライクやローグライト向けの設計スキルです。ダンジョン探索ゲームの開発者に、ランの流れや自動生成、視界、パーマデス、戦利品などのシステム設計を案内します。
主な機能
- 01ターン制ランの設計
- 02自動生成ダンジョンの要件
- 03視界と探索済み領域の記憶
- 04パーマデスとメタ進行
- 05戦闘、戦利品、資源管理
活用シーン
- 01ターン制ダンジョンゲームの企画
- 02視界とフォグ・オブ・ウォーの設計
- 03パーマデスとアンロック要素の調整
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ gamedev-skills/ awesome-gamedev-agent-skills --skill roguelikeインストール後、Claude Code で/roguelikeを入力して読み込まれたか確認します。
同梱ファイルreferences/generation-fov-loot.md
詳細
ローグライク
ローグライクのためのプレイブックです。ターンエンジン、プロシージャルダンジョン、視界、パーマデス、そしてランの経済性を扱います。これは組み合わせ型のスキルです。プロシージャル生成、タイルマップ、セーブ処理、AI を連携させ、ラン単位で進行するゲームを構築します。ノイズ/RNG やタイルマップ API を改めて説明するのではなく、ループと、ランを魅力的にするシステムを定義します。
使用する場面
- 死ぬとランが終了し、ワールドが再生成されるターン制、グリッドベースのダンジョンクローラー(ローグライク、またはメタ進行を取り入れた「ローグライト」)を構築するときに使用します。
- プロシージャルダンジョン、視界/フォグ・オブ・ウォー、パーマデスの緊張感、または戦利品テーブルを設計するときに使用します。
使用しない場面: ローグライク風の装いを加えたリアルタイムアクション → アクションジャンル(platformer/fps-shooter)を構築し、procedural-gen を組み合わせます。パーマデスを伴わない、奥深いステータス/クエスト/会話 → rpg。オープンワールドでのニーズ/クラフト → survival-crafting。
ローグライクを形作る要素(設計の指針)
コミュニティで参照されているのはベルリン解釈(RogueBasin、IRDC 2008)です。これは「ローグライクらしさ」を示す要素の集合であり、チェックリストではありません。特に重要な要素を設計目標にしましょう。ランダムな環境生成、パーマデス、ターン制、グリッドベース、非モーダル(すべてのアクションが同じモードで行われる)、複雑さ(アイテムとモンスターの多様な相互作用)、リソース管理、ハックアンドスラッシュ、そして探索と発見です。ローグライクらしさを出すには、これらの要素を活用します。どの要素を採用するかは意図的に選びましょう。「ローグライト」では通常、メタ進行を取り入れてパーマデスを緩和します。
コアループ
ターンを実行する(移動/戦闘/使用)→ ワールドのターンが解決する → 新しい状態を確認する → 降りる/戦利品を得る/生き延びる → 死亡し、新しいダンジョンで再開する。 リプレイ性を生むのは、プレイヤーが固定レイアウトを覚えることではなく、ランごとにワールドが変化することです。
必須システム
- ターンスケジューラー — エネルギー/イニシアチブ方式により、素早いアクターほど頻繁に行動します(パターン 2)。
- グリッドマップ+移動 — タイル座標、ぶつかり攻撃、通行可能/不可の判定。
- プロシージャルダンジョン生成器 — 部屋+通路、または BSP/セルオートマトンを使用し、接続性を保証します。
- 視界+探索済みエリアの記憶 — 現在見えている範囲と、以前に見た範囲を区別します(パターン 3/参考資料)。
- 戦闘+エンティティ — HP、攻撃/防御、状態異常。モンスターにもプレイヤーと同じルールを適用します。
- 戦利品+ドロップテーブル — 重み付けと階層に応じたアイテム/モンスターの出現(参考資料)。
- パーマデス+(任意の)メタ進行 — ランをリセットし、アンロック要素/スコアのみを保持します。
- メッセージログ+明快な UI — プレイヤーがテキスト/状態から判断できるようにし、数値やイベントを見やすく表示します。
設計パラメーター
| パラメーター | 効果 | 備考 |
|---|---|---|
| ダンジョンのサイズ/部屋数 | ランの長さ、密度 | 階層に応じて調整します。 |
| 接続性の保証 | 到達不能な部屋をなくす | 生成後に必ず到達可能性を確認します。 |
| モンスター密度/階層ごとの曲線 | 難易度の上昇 | 階層に応じて重み付けしたテーブルから出現させます。 |
| 戦利品のレア度の重み | 強さのばらつき | レア度が高いほど影響が大きくなります。識別要素を加えると発見の楽しみが生まれます。 |
| 視界の半径/照明 | 緊張感、情報量 | 半径が小さいほど不気味になり、進行が遅くなります。 |
| リソースの希少さ(食料/HP/弾薬) | 先へ進む圧力 | クラシックなローグライクにおける緊張感の中核となる要素です。 |
| パーマデスとメタ進行 | ランの緊張感と継続性 | ローグライトでは厳しさが和らぎます。 |
| 識別/未知の要素 | 探索の価値 | 未識別アイテムは試行錯誤の楽しみを生みます。 |
| シード指定可能な RNG | デイリーラン、デバッグ | 固定シードを必ず指定できるようにします(procedural-gen を参照)。 |
パターン
1. 決定論的でシード指定可能なラン RNG
# Pseudocode. One seeded RNG per run makes dungeons reproducible (daily runs, bug repro).
run_seed = chosen_seed or random_seed()
rng = Rng(run_seed) # use your engine's seedable RNG, not global random
dungeon = generate_dungeon(rng, depth) # same seed + depth => same dungeon
# Persist run_seed in the save so a crash can resume the same world (see save-systems).
2. エネルギー方式のターンスケジューラー(速度に差がある場合)
# Pseudocode. Each actor gains energy each tick and acts when it has enough.
# Faster actors gain more per tick, so they act more often — no fixed "player then enemies".
TURN_COST = 100
def next_actor(actors):
while True:
for a in actors: # stable order avoids ties favoring one side
a.energy += a.speed # e.g. speed 100 = normal, 150 = hasted
if a.energy >= TURN_COST:
a.energy -= TURN_COST
return a # this actor takes exactly one action now
3. 視界+探索済みエリアの記憶
# Pseudocode. Recompute visibility from the player each time they move.
visible = compute_fov(map, player.pos, radius=8) # symmetric shadowcasting (see refs)
for cell in visible:
explored.add(cell) # remember it forever (dim "fog of war")
# Render: visible -> lit; explored-but-not-visible -> dim; never-seen -> hidden.
実績のある視界アルゴリズム(再帰的シャドウキャスティングまたは対称シャドウキャスティング)を使用します。セルごとに単純なレイキャストを行う方法は避けてください。視界が非対称になり、「ちらつく」ように見える原因になります。参考資料を参照してください。
つまずきや失敗につながる要因
- つながっていないダンジョン → プレイヤーが到達できない部屋が生まれます。必ず接続性の確認/フラッドフィル処理を行い、歩行可能なすべてのマスに到達できるまで通路を作成してください。
- 単純な FOV → 視界がちらついたり、非対称になったりします(一方からは見えるのに、相手からは見えません)。シャドウキャスティングを使い、対称性をテストしてください。
- ターン制を装うリアルタイムループ → 入力競合や二重移動が発生します。離散的なターンを一度に一つずつ処理し、入力をキューに入れてください。
- 難易度が一定 → 先へ進む動機が生まれません。深度に応じてモンスターや戦利品の内容を調整し、リソースを不足させてください。
- メタ進行のアンロックまで消去するパーマデス → プレイヤーの不満につながります。セーブ時には、ランの状態(消去対象)とプロフィールの状態(アンロック、スコア)を分けてください(
save-systemsを参照)。 - 「パーマデス」ゲームでのセーブスカム → 真のパーマデスを実現するには、ロード時にランのセーブデータを削除するか無効化し、プロフィールだけを残してください。
- 状態がわかりにくい → プレイヤーが先の展開を考えられません。HP、ターンの結果、メッセージログを表示してください。
構成(これらのスキルを組み合わせる)
- 生成:
procedural-gen(ノイズ、シード付き RNG、ダンジョン/部屋のアルゴリズム)— リプレイ性の要です。 - マップの描画: グリッドには
godot-tilemap/unity-tilemap-2dを、セットピースの部屋や宝物庫にはlevel-designを使います。 - 敵: モンスターの意思決定(グリッド上では単純な接近/逃走/巡回が一般的)には
game-aiを使います。 - 永続化: ランの再開、プロフィール/メタ進行、真のパーマデス時のデータ消去には
save-systemsを使います。 - スクリプト/データ: アイテム、モンスター、ドロップテーブルをデータとして定義するには、
godot-resources/unity-scriptableobjectsを使います。 - UI: メッセージログ、インベントリ、HUDには
godot-ui-controlを使います。 - 手触り: ターン制グリッド上の衝撃を演出する画面の揺れやヒットストップなど、ヒット/死亡時の演出には
game-feelを使います。
参考資料
- ダンジョン生成アルゴリズム(部屋と通路、BSP、セル・オートマトン、接続性)、FOV(シャドウキャスティング)、重み付き戦利品/スポーンテーブルについては、
references/generation-fov-loot.mdをお読みください。