MENU

AIを活用したアプリケーション開発(ローグライクゲーム開発)

こんにちは、CITRON AIの宇田川です。

今回は、AIを活用して、慣れていないデザイン領域を含むHtml+JavaScript+CSS環境で、ローグライクゲームを短期間で開発する個人プロジェクトを実施してみました。

目次

1. 個人プロジェクト実施の背景と目的

このプロジェクトは、AI技術を活用することによって、開発における生産性をどの程度向上させられるかを検証するために実施しました。この試みの狙いは、開発経験の浅い技術領域に対して、AIを活用することによって、どこまで短期間でアプリの基本的な機能を実装できるかを検証することです。

筆者は業務アプリのバックエンドの実装をしてきた経験が多い開発者で、特に、HTML/JavaScript/CSSを用いたデザインやUIの領域の開発は得意分野ではありません。ゲーム開発については、趣味の範囲で、オセロやテトリスといったシンプルなゲームを開発した経験がある程度で、ローグライクのような、複雑なプログラム構造が必要となるゲームの開発経験はありません。

こうした背景のもと、「不慣れな領域 × AI活用」によって、どれだけ短時間でゲーム実装できるかを探る試みとして、今回の個人プロジェクトを実施しました。

今回開発するアプリは「PCブラウザをプラットフォームとするローグライクゲーム」とします。

2. ゲームの内容

2-1. ゲームジャンル

ゲームジャンルはローグライクです。

ローグライクは、1980年に登場したPCゲーム「Rogue」に着想を得たゲームジャンルで、以下のような特徴を備えています。

  • マップがランダムに生成される
  • 死亡すると進行状況がリセットされ、最初から再挑戦となる
  • プレイヤーと敵が交互に行動するターン制 
  • 操作しない限り時間が進まない思考型システム 
  • マス目単位で移動するタイルベース構造 
  • 基本的に一人プレイ
  • 豊富なアイテムと高い戦略性 

2-2. ゲームコンセプト

ゲームコンセプトはシンプルで、余計な演出や設定には時間をかけず、主人公が敵を倒しながら最上階を目指す構成としました。

2-3. ゲームシステム(全体構造と進行)

このゲームは、プレイするたびにマップや敵の配置がランダムに生成され、毎回異なる体験が得られることが大きな特徴です。一度倒されると最初からやり直しになる仕組みで、プレイヤーにはリスクを見据えた戦略的な判断が求められます。

基本的な進行はターン制であり、プレイヤーと敵が交互に行動します。操作しない限り時間は進行せず、落ち着いて状況を見極めてから次の行動を選べる「思考型」の設計となっています。移動はマス目単位で行われ、探索や戦闘においてシンプルながらも奥深い判断が求められます。

2-4. ゲームシステム(成長要素とUI設計)

本作では、プレイヤーはランダム生成されたフロアを一層ずつ踏破しながら敵を倒し、経験値を得てキャラクターを成長させていきます。レベルアップに応じてステータスが向上するほか、体力と満腹度の管理も重要な要素であり、生存のための計画性が問われます。
操作系はキーボード入力を前提としており、移動や攻撃といった基本操作は最小限のキーで完結するよう設計しました。

2-5. 開発方法

この試みは個人開発プロジェクトのため、開発は筆者一人で担当しました。

AIツールは、ChatGPTとGitHub Copilotの2つを活用しています。AIが生成したコードはほぼそのまま使用しています。AIが出力したプログラムの変更は、保守性の向上とゲームバランス等の微調整の時などに実施しました。

キャラクターデザインはAIにグラフィック出力してもらったものをそのまま活用しています。敵キャラクターについてはAIにキャラクターの種類を考えてもらった後、グラフィックを出力してもらいました。

マップのUIはAIが出力したものをそのまま採用しました。

この開発成果物ができるまでに要した時間はおおよそ10時間程度でした。AIを使わず、同程度の開発を私が一から実装した場合、開発には40~60時間程度を要すると見積もれるため、AIの活用によって大幅な工数削減が実現できたと考えています。

2-6. AIを活用した開発の課題と所感

AIを用いて小規模なアプリケーション開発を行った結果、出力されたプログラムには以下のような課題が見られました。

AIが自動生成するコードは、特に明示的な指示を行わない限り、すべての処理を一つのJavaScriptファイル内に記述したり、1つの関数に多くのプログラムを記載するなど、十分に構造が整理されていないスパゲティコードとなるケースが大半でした。このため、AIが生成したプログラムは、可読性や保守性が著しく低い、という問題があります。

また、攻撃力とHPの比率などに代表されるゲームバランスの調整おいても、AIに任せるだけでは適切な値を得ることはできず、最終的には筆者自身が手動で調整を行う必要がありました。これは、バランス調整がAIの判断だけでは困難であることを示しています。

これらを踏まえると、たとえ小規模な開発であっても、後の拡張や修正を見据えた設計をAIに促すためには、ファイル構成や責務分離に関する具体的な指示を適切に与えることが重要です。また、ゲームバランスのような判断を要する領域においては、開発者自身がパラメータを柔軟に変更できる構造とする必要があると感じました。

2-7. 成果物とその留意点

2-7-1. 成果物

ゲームは下記GitHubリポジトリにおいて公開しています。

GitHub

2-7-2. 成果物についての留意点

本ゲームでは「基本的なシステムが動作する状態の実現」をゴールとしており、以下の要素などについては改善余地を残しています。

  • 敵キャラクターの動作
  • ゲームバランスの調整
  • 敵キャラクターの定期出現機能(未実装)アイテム機能(未実装)
  • 一部不具合の修正
    • 例:一部のキーボードにおいて、斜め移動や斜め方向の向き変更が正しく行えない
    • 例:ブラウザの拡大率が100%以外の場合にキャラクターの表示位置がずれる
    • 例:使用するディスプレイによってはブラウザの拡大率が100%であってもキャラクターの表示位置がずれる)

また、今後アイテムや罠などの要素を追加していくにあたって、保守性をどのように確保するのかも重要な検討課題となります。

本システムは自由にご利用いただけますが、将来的な機能改善、バグ修正、保守対応等については一切行わないものとします。利用にあたっては、この点をご理解の上、自己責任にてご利用ください。

3.まとめ

この試みにより、小規模なシステムであれば、AIの支援によって主要な開発工程を短時間で完了させることが可能であると確認できました。一方で、AIが出力するコードはスパゲティ化しやすく、可読性と保守性が低いという課題が見られました。また、攻撃力とHPの比率などに代表されるゲームバランスについては、AIに任せただけでは適切な調整が得られず、筆者自身による手動調整が必要でした。

したがって、AIの生成力を効率的に活用するには、人間側が設計方針や品質基準を適切に設定・管理し、AIの出力を補完・制御する体制が不可欠であることがわかります。

今後の検証では、AIを活用したアプリケーション開発の高速化や可読性と保守性の向上などについても検証していきたいと考えています。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次