stella

repo

ローグライクゲーム制作者調査

2022-04-17

現状の機能

  • グリッド
    • Point, Rect, Area
  • マップ生成
    • ダンジョン生成
  • UI
    • メッセージログ
    • ステータスバー
  • 設定
    • キーコンフィグ
    • ron ファイルから読み込み
  • 操作
    • ダッシュ, 振り向き, iダッシュ

求めるもの

  • 一つのミスが命取りなので快適な操作性
  • 統計
    • スコア
    • 歩数
    • 時間

機能

  • ダッシュ
    • iダッシュ:通路をショートカット
      • key configはダッシュとは変える
  • 向きだけ変更
    • その時にガイドラインを表示
    • グリッドも表示
    • 離れている敵に方向を合わせる
  • プレイヤーの攻撃
    • 罠を調べる
  • アイテムの上に乗る
  • アイテムを拾う
  • 回収コマンド: 乗ったことのあるアイテムを自分の周りに集める
  • インベントリにアイテムを入れる
  • アイテムを置く
  • アイテムを使用する
  • アイテムを装備する
  • スタック可能なアイテム
  • アイテムを投げる
    • 振ると魔法が飛んでいく
      • 入れ替え
      • 飛びつき
    • 保存の壺
  • アイテムのコスト
    • インベントリにはコスト上限がある
  • 足踏み
    • 足踏み罠チェック
  • マップ
    • オートマッピング
    • オートタイル: 角のタイルは丸くするみたいな
    • 敵の出現テーブル
      • 出現レベル, 開始層, 終了層, 出現率
    • アイテムを出現させる
  • 敵の移動
    • 行き止まりだったらUターン
    • 敵の攻撃
    • 経験値
    • 倍速敵
    • 眠り状態
  • セーブ・ロード
  • アイテムとか敵に色を付ける

ダメージ計算

  • 攻撃: 攻撃力 * 割合

  • 防御

    • 攻撃の50%まで: * 29/30 / 1def
    • 攻撃の75%まで: -1 / 2def
    • 100%まで: -1 / 4def
  • ex. atk=100, def=100

  • 100*(29/30)^20 = 50 (80)

  • 50 - 50/2 = 25 (30)

  • 25 - 30/4 = 18 (0)

  • 18ダメージ

  • 2024-07-17

    • ほぼほぼbevyに移行完了した
    • ゲームシステムを考える

ダンジョン生成

概要

再帰的分割アルゴリズムによるダンジョン生成システム。

生成アルゴリズム

1. Region(Region)の定義

  • 各RegionはRoomを持つ内部に部屋を持つ可能性がある
  • Regionから部屋を生成する際は境界から一定の余白を設ける

2. 再帰分割フェーズ

  • マップ全体を初期Regionとして開始
  • 各Regionを以下の条件で分割:
    • ランダムに垂直分割または水平分割を選択
    • 分割可能な最小サイズを下回るまで再帰的に分割
    • 分割位置はランダムに決定

3. グラフ構造の構築

  • 分割されたRegionをノードとする無向グラフを作成
  • 隣接するRegion間にエッジを追加
  • エッジの重みはRegion中心間のマンハッタン距離
  • 最小全域木アルゴリズムで冗長な接続を除去

4. 部屋生成フェーズ

  • 各Region内に部屋を配置
  • 部屋はRegion境界から余白を持って生成
  • 部屋領域を床タイルで埋める

5. 通路生成フェーズ

  • 最小全域木のエッジに基づいて通路を生成
  • 隣接する部屋の境界上からランダムな接続点を選択
  • 接続点間を直線的な通路で結ぶ
  • 通路も床タイルで構成

6. 特殊要素配置

  • 生成された床タイルからランダムに階段を配置

特徴

  • 全ての部屋が通路で接続される(最小全域木により保証)
  • 余分な通路が生成されない(冗長性の排除)
  • 地域分割により自然な部屋配置
  • ランダム性により毎回異なるレイアウト

参考文献