Skip to content
unchunksPublic

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

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など、make と sdl2-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

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages