Deep Dead Dungeons

https://github.com/NPCdotcom/DDD-Jyogi-Kuroto-F

Java

デッキ構築型2Dローグライトゲーム

無音

wady

いぶき

NPC

推しアイデア

探索画面と戦闘画面の境界をなくしたシームレスな進行が特徴です。毎ターン回復する「行動ポイント」内でカードをやり繰りする戦略性と、敗北しても「ソウル」を持ち帰って永続的な能力強化が行えるメタ進行要素により、高いリプレイ性を実現しています。

作った背景

部内ハッカソンで定番となっていた「JavaScriptによるWebアプリ開発」から脱却するためです。「Java単体でPCとスマートフォンの両方で動く」ことを目標とし、審査員に対して技術力の高さと汎用性を証明する目的で開発を開始しました。

推し技術

Java 25を用いたドメイン駆動設計による4層分離アーキテクチャを採用しました。ゲームのコアルールを副作用のない純関数として実装することで、755件の単体テストを通過する極めて堅牢でバグの起きにくい状態遷移機構を構築しています。

プロジェクト詳細

使用技術のまとめ(まずここを見てください!)

  • 開発言語・環境: Java 25 LTS / LibGDX
  • 設計手法: ドメイン駆動設計(DDD)による4層分離(ユーザーインターフェース層、アプリケーション層、ドメイン層、インフラストラクチャ層)
  • 自前実装: マップ自動生成、敵の経路探索、障害物を挟む射線判定
  • テスト数: ゲームの裏ロジックを徹底検証する単体テスト 755件

1. 【技術力の高さ】Webに逃げない。Java本来の「可搬性」で挑むデスクトップゲーム

現代のハッカソンでは、環境構築の手間を避けるためにJavaScriptを使ってWebブラウザ上で動かす作品が主流です。しかし、私たちはあえてそこに頼りませんでした。

ゲームのマルチプラットフォーム対応フレームワーク「LibGDX」をベースに据え、PC(Windows/macOS/Linux)のどの環境でもそのままサクサク動く「ネイティブゲーム」を、構築しています

OSごとの画面サイズの違いや、キーボード・マウスといった操作系統の差分を、裏側の基盤(インフラ層)で完全に吸収するように、どのPCでデモを行っても、画面や操作が破綻しない仕組みを作り上げました。

2. 【技術の無駄遣い】3分のカジュアルゲームに注ぎ込んだ、過剰な自作アルゴリズム

1プレイわずか3〜5分で終わる手軽なピクセルアートのゲームですが、その裏側は商用システム並みの設計と、数学的なアルゴリズムの塊です。

  • 既存のゲームエンジンに頼らない、3大アルゴリズムのフルスクラッチ実装 マップの自動生成には、空間をきれいに切り分けていく「BSP(バイナリ空間分割)」を採用し、絶対にクリア不可能な地形が生まれないようにしています。さらに、敵が壁を回り込んで追いかけてくる処理には「BFS(幅優先探索)」を、障害物の裏に隠れたら攻撃が当たらないようにする正確な視界計算には「ブレゼンハムの直線描画アルゴリズム」を、すべてゼロから自力で計算式を書いて実装しました。
  • 起動時に文字をその場でパッキングする、変態的なフォントメモリ管理 日本語のフォントデータは容量が重く、ゲームで使うとメモリをドカ食いしたり、文字化け(豆腐文字)が起きたりする大敵です。そこで私たちは、プログラム内に書かれている日本語の文字を、起動時に「リフレクション(動的解析)」という技術で自動でかき集め、使う文字の画像だけをその場で1枚のテクスチャにパッキングする仕組みを自作しました。メモリ消費を極限まで削りつつ、文字化けを100%防いでいます。
  • バグを「コンパイルエラー」として自動検知する設計 Java 25の最新機能である record クラスを使い、裏側のデータが予期せず書き換わることが絶対にない構造を作りました。また、すべての攻撃や移動などの行動を sealed(封印された)クラスとして定義。プログラムの書き漏らしがあれば「コンパイル段階(ビルド時)」でエラーとして弾かれる、絶対にバグを地レーダー化させない設計を徹底しています。

3. 【品質と完成度】人間×AIのペアプロで到達した、ゲームの安全性を証明するテスト 755件

「テストコード 755件」と聞くと、中身のない数合わせのテストだと思うかもしれません。

ですが、私たちのテストは本気です。本プロジェクトは、AI(Claude)のコード生成能力と知見をフルに活かしながら、人間が厳格にレビューと設計の手綱を握るスタイルで開発を進めました。

設計段階から、ゲームの「純粋なコアルール(APの消費計算、バフの残りターン管理、ダメージ計算の境界値)」を、画面描画の処理から完全に切り離しています。この外部の処理に一切邪魔されない「純粋な計算ロジック」だけを狙い撃ちして、755パターンのテストを形にしました。ゲームの基盤部分はデータを直接書き換えない形(純関数)を徹底しているため、機能追加を繰り返しても、既存のゲームシステムが絶対に壊れない堅牢さを数学的に証明しています。

4. 【完成度】「動いて終わり」にしない、製品版クオリティのゲームサイクル

ハッカソンの5分間のデモで見栄えが良いのはもちろんですが、「一本のゲーム」としての完成度にも一切妥協していません。

中央から外側へ能力を伸ばしていく25ノードの巨大な「ソウルツリー(永続強化)」、倒した敵のデータが記録される「図鑑システム」、持っている装備に応じて手札のデッキがその場で自動再構築される「装備システム」など、実装した機能は累積で58個にのぼります。

ダンジョン探索と戦闘の切り替え画面をなくしたシームレスな体験から、セーブデータの世代間クラッシュを防ぐデータ移行の仕組みまで、全方位において「遊べる製品」としてのクオリティを追求しきりました。

機能一覧

ゲーム説明

カードの種類、移動/攻撃/バフ/罠 属性、物理/魔法

主な操作説明はこちら! image 設定画面 音の調整や、UIのプリセットなども調節できます! image 敵を倒すたびに図鑑が埋まっていきます! image 装備もつけれます! ハッカソンなので説明用で装備がつけられますがこちらは本来開放性です。 image カードを入手すれば増えていく図鑑! image プレイを始めたらこの画面! image カードをクリックしたり数字キーで選択! image ソウルツリー image image 壁の色が違う箇所は移動カードを使うと通過できます! image image

無音

@muon