Skip to content

Repository files navigation

Downloads Releases

卒業制作「ローグライクゲーム」

SDL2を使ったC++製のローグライクゲームです。 自動生成されるダンジョンを探索し、敵を倒して経験値を得ながら最下層を目指します。

目次

ゲーム内容

プレイヤー born を操作して、ランダム生成されるダンジョンを探索するゲームです。

  • ダンジョンは40x40マスで生成されます。
  • プレイヤーは敵を倒すとEXPを獲得します。
  • 一定EXPを得るとレベルアップします。
  • 階段に到達すると次の階層へ進みます。
  • 最下層は 10F です。
  • プレイヤーのHPが0以下になるとゲームオーバーです。
  • 10Fを突破すると Congratulations 画面へ進みます。

バトル・成長システム

  • ターン制で進行します。プレイヤーが1回行動すると、続いて敵全員が行動します。
  • 移動先に敵がいる方向へ進もうとすると攻撃になります。
  • ダメージは次の式で計算されます。
ダメージ = 攻撃側のATK - (防御側のDEF / 2)
  • 計算結果が0以下の場合でも、ダメージは最低1になります。
  • 表中の ATK は内部的な攻撃力(STR)、DEF は防御力(VIT)に対応します。
  • プレイヤーは、行動しなかったターン、または3ターンごとにHPが1回復します。
  • 倒した敵は、別の種類の敵としてダンジョン内に再出現します。

レベルアップ

プレイヤーは以下のEXPでレベルアップします。

必要EXP = 現在のレベル * 100

例:

  • Lv.1 → Lv.2: 100EXP
  • Lv.2 → Lv.3: 200EXP
  • Lv.3 → Lv.4: 300EXP

レベルアップすると、以下のようにステータスが上昇します。

項目 上昇量
最大HP +10
ATK(STR) +2
DEF(VIT) +2

レベルアップ時は、上昇分だけ現在HPも回復します。

操作方法

全体

キー 内容
Esc ゲーム終了

スタート画面

キー 内容
S ゲーム開始

ホーム画面

キー 内容
Enter ダンジョンメニューへ移動

ダンジョンメニュー

キー 内容
1 区域分割法のダンジョンを開始
2 RRAのダンジョンを開始

ダンジョン内

キー 内容
W / 上へ移動
A / 左へ移動
S / 下へ移動
D / 右へ移動
Space その場でターン経過
Q ダンジョンを中断してホームへ戻る

クリア・ゲームオーバー画面

キー 内容
1 ホーム画面へ戻る
2 ダンジョンメニューへ戻る

ダンジョン生成方法

このゲームでは2種類のダンジョン生成方式を選べます。

生成方法 内容
区域分割法 マップ全体を複数の区域に分割し、各区域に部屋と通路を作る方式です。
RRA Random Room Assignmentの略です。ランダムに部屋を配置し、部屋同士を通路で接続します。

キャラクター・敵データ

プレイヤー

名前 アイコン HP ATK DEF EXP
born born 100 20 20 なし

敵はダンジョン内に同時に10体出現します。 敵はプレイヤーを一定範囲内で発見すると追跡します。

敵の種族 アイコン HP ATK DEF EXP
deka deka 70 10 20 10
guri guri 30 25 5 17
jelyf jelyf 40 20 5 7
yummy yummy 100 5 5 18
crystal crystal 50 1 30 10
grosspider grosspider 40 7 7 7
iron iron 50 10 10 15
tatsu tatsu 30 20 15 7
ball ball 20 15 20 5

必要環境

ゲーム本体のビルドに必要なもの

  • C++17対応コンパイラ
  • CMake 3.15以上
  • SDL2
  • SDL2_image
  • SDL2_ttf
  • SDL2_mixer

テストのみ実行する場合

テストは tests/include 以下の簡易SDLスタブを使うため、SDL2開発ライブラリが無い環境でも一部ビルドできます。

CMakeでのコンパイル・実行方法

推奨はCMakeを使ったビルドです。

Windows / MSYS2 UCRT64 の例

MSYS2 UCRT64シェルを開き、必要なパッケージをインストールします。

pacman -S --needed \
  mingw-w64-ucrt-x86_64-gcc \
  mingw-w64-ucrt-x86_64-cmake \
  mingw-w64-ucrt-x86_64-ninja \
  mingw-w64-ucrt-x86_64-SDL2 \
  mingw-w64-ucrt-x86_64-SDL2_image \
  mingw-w64-ucrt-x86_64-SDL2_ttf \
  mingw-w64-ucrt-x86_64-SDL2_mixer \
  mingw-w64-ucrt-x86_64-pkgconf

Linux / Ubuntu系の例

sudo apt install cmake g++ ninja-build \
  libsdl2-dev libsdl2-image-dev libsdl2-ttf-dev libsdl2-mixer-dev

通常ビルド

cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug
cmake --build build

ビルド後、実行ファイルの隣に assets ディレクトリが自動コピーされます。

実行:

./build/rogue

WindowsのNinja/Makefiles系ジェネレータでは通常以下です。

.\build\rogue.exe

Visual Studioなどのマルチ構成ジェネレータでは、以下のように構成名の下に出力される場合があります。

.\build\Debug\rogue.exe

CMake Presets を使う場合

CMake 3.21以上かつNinjaが利用できる環境では、同梱の CMakePresets.json を使えます。

Debugビルド:

cmake --preset debug
cmake --build --preset debug
ctest --preset debug

Releaseビルド:

cmake --preset release
cmake --build --preset release

SDL2なしでテストだけ確認する場合:

cmake --preset tests-only
cmake --build --preset tests-only
ctest --preset tests-only

CMakeオプション

オプション 既定値 内容
ROGUE_BUILD_GAME ON ゲーム本体をビルドします。
ROGUE_BUILD_TESTS BUILD_TESTING に依存 テストをビルドします。
ROGUE_COPY_ASSETS ON ビルド後に assets を実行ファイル横へコピーします。

例:

cmake -S . -B build-tests -DROGUE_BUILD_GAME=OFF -DROGUE_BUILD_TESTS=ON
cmake --build build-tests
ctest --test-dir build-tests --output-on-failure

Makefileでのコンパイル・実行方法

LinuxやMSYS2など、makesdl2-config が使える環境ではMakefileも利用できます。

通常ビルド

make link

実行:

./rogue

ビルドしてそのまま実行

make do

Releaseビルド

make release

デバッグビルド

make debug

クリーン

make clean

AppImageでの実行方法

リリースページからAppImageをダウンロードして実行します。

chmod +x Rogue-1.0.5-x86_64.AppImage
./Rogue-1.0.5-x86_64.AppImage

AppImageを作成する場合は以下を使います。

make appimage

テスト

CMake

cmake -S . -B build-tests -DROGUE_BUILD_GAME=OFF -DROGUE_BUILD_TESTS=ON
cmake --build build-tests
ctest --test-dir build-tests --output-on-failure

または:

cmake --preset tests-only
cmake --build --preset tests-only
ctest --preset tests-only

Makefile

make test

プレイヤー関連テストのみ:

make test_player

ディレクトリ構成

.
├── assets/                 # ゲームで使用する画像・音声・フォントなど
├── docs/                   # 設計メモなど
├── sample/                 # README用サンプル画像
├── src/                    # ゲーム本体ソース
│   ├── Functions/          # 汎用関数・ユーティリティ
│   ├── GenerateDungeon/    # ダンジョン生成、キャラクター、敵、タイルなど
│   ├── Scene/              # 画面・シーン
│   └── UI/                 # ボタン、ログ表示
├── tests/                  # テストコードとSDLスタブ
├── CMakeLists.txt          # CMakeビルド設定
├── CMakePresets.json       # CMakeプリセット
├── Makefile                # Makefileビルド設定
└── README.md

設計メモ

GoFデザインパターンを意識した設計メモは以下にまとめています。

現在、主に以下のパターンを意識しています。

  • Strategy
  • Factory
  • State
  • Template Method

ダンジョンのサンプル画像

参考画像

既知の注意点

  • 実行には assets ディレクトリが必要です。CMakeビルドでは自動コピーされます。
  • Makefileは sdl2-config を利用するため、環境によってはCMakeの方が簡単です。
  • Windows環境では、生成された .exe がアプリケーション制御ポリシーにより実行ブロックされる場合があります。
  • 以前のREADMEに「たまに壁の中に敵が湧きます」と記載がありました。現在の実装では床・通路・階段上にスポーンする判定がありますが、生成結果や当たり判定まわりは引き続き確認が必要です。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages