ゴクウゲームエンジンの最大の改良点: AI駆動キャラクターとその先へ

ゲーム開発の風景は、先進的なAI技術と多機能開発ツールの導入により、変革のフェーズを迎えています。この革新をリードしているのは、ゴクウゲームエンジンの最新アップデートで、ユーザーインターフェースとゲーム開発ツールを強化するだけでなく、ディープラーニングを統合してキャラクターデザインを革命化しています。この記事では、ピクセルキャラクターを作成するための生成敵対ネットワーク（GAN）の統合、洗練されたビューポート機能の導入、将来の強化計画（タイルエディターとスプライトシートの扱いの改善を含む）に焦点を当てて、エンジンの開発の重要なアップデートと前向きなビジョンを探求します。

## ピクセルキャラクターのためのディープラーニング統合

最新のゴクウゲームエンジンアップデートの目立つ特徴の一つは、新しい、ユニークなピクセルキャラクターを生成するために設計されたディープラーニングモデル、具体的には生成敵対ネットワーク（GAN）の組み込みです。このモデルは、ゲーム開発において顕著な進歩を示しており、開発者に効率的に多様なキャラクターセットを作成するための革新的なツールを提供します。

![generated_character_0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3535041/19672204-c0c3-9a9f-1982-326c9cd7394a.png)

私がピクセルキャラクター生成に使用したデータセットへのリンク: https://www.kaggle.com/datasets/volodymyrpivoshenko/pixel-characters-dataset

### GANの動作方法

GANは、ジェネレーターとディスクリミネーターという2つの主要なコンポーネントで構成されます。ジェネレーターは、実際のピクセルキャラクター画像の分布を模倣する画像を作成し、ディスクリミネーターはそれらを評価し、ジェネレーターによって生成された画像とトレーニングデータセットからの実際の画像とを区別します。

- **ジェネレーター:** ランダムノイズベクトルから始まり、一連のアップサンプリングと畳み込み層を通じて変換し、32x32のRGB画像を生成します。
- **ディスクリミネーター:** RGB画像を入力として受け取り、一連の畳み込み層を通じて最終的に1つの値を出力し、画像の真正性に対する評価を表します。

### Python実装

提供されたPythonコードは、このGANの実装を概説しており、データセット準備、モデルアーキテクチャ、およびトレーニングループを強調しています。トレーニングプロセスは、ジェネレーターが現実的な画像を生成するようになる一方で、ディスクリミネーターが実画像と生成画像をよりよく識別するようになることを含みます。この敵対的なトレーニングは、ジェ

ネレーターがディスクリミネーターにとって実際のピクセルアートと区別がつかない画像を生成するまで続きます。

### PythonコードのRustへの統合

Pythonで実装されたGANモデルをRustプロジェクトに統合するために、`pyo3`ライブラリが使用されました。このライブラリを利用することで、RustからPythonの関数を直接呼び出し、Pythonで定義されたディープラーニングモデルをRustのコードベース内で活用することが可能になります。具体的には、Pythonで定義された`launch`関数をRustから呼び出しています。この関数は、新しいピクセルキャラクターの画像を生成し、その画像ファイル名を文字列としてRust側に返します。

以下のRustコードスニペットは、PythonのスクリプトをRustからロードし、`launch`関数を呼び出し、結果として得られる画像ファイル名を取得する方法を示しています。これにより、GANを用いたピクセルキャラクター生成のプロセスを、Rustベースのゴクウゲームエンジン内で直接活用することができるようになります。

```rust
use pyo3::prelude::*;

pub fn call_python_add_function() -> PyResult<String> {
    // Pythonインタプリタを初期化
    Python::with_gil(|py| {
        // .pyファイルからモジュールをロード
        let my_python = PyModule::from_code(
            py,
            include_str!("pixel_gen\\pixel_character_gen_v2.py"),
            "pixel_character_gen_v2.py",
            "pixel_character_gen_v2",
        )?;

        // モジュールから`generate_image`関数を取得
        let generate_image = my_python.getattr("launch")?;

        // 引数なしで関数を呼び出し
        let filename = generate_image.call0()?.extract::<String>()?;

        Ok(filename)
    })
}
```

この統合により、Rustで書かれたゴクウゲームエンジンは、Pythonで定義された先進的なディープラーニングモデルの力を借りて、ゲーム開発のプロセスを大幅に強化することができます。このアプローチは、異なるプログラミング言語間での技術の組み合わせが、ゲーム開発における革新的な解決策を生み出す素晴らしい例となっています。

## 主な更新: ビューポートの導入

最新のアップデートは、ゲームエンジン内でビューポートを作成する最初の試みも導入しています。これはゲーム開発にとって重要な機能で、このビューポートの強化により、開発者はゲーム世界をスムーズに拡大縮小およびドラッグすることができ、開発者とプレイヤーの両方によりダイナミックでインタラクティブな体験を提供します。また、このアップデートは、エンジンのスプライトシートの扱いを改善し、開発者がエンジン内でアニメーションを直接表示できるようにし、開発プロセスを合理化します。

ビューポートを有効にして画像を表示するには、「設定」->「一般」->「キャンバスを有効にする」に移動します。この設定を有効にすると、開発者はエンジン内でゲームのビジュアルアスペクトを直接検証し、操作することができます。

## EmscriptenとWASMによるウェブベースのゲーム開発

エンジンのEmscriptenおよびWebAssembly（WASM）のサポートは、ウェブプラットフォーム上でゲームを公開しようとする開発者にとって重要です。この互換性により、ゴクウゲームエンジンで開発されたゲームは、特別なハードウェアやソフトウェアなしでウェブブラウザを通じて簡単にアクセスできるようになり、より広い視聴者に到達することが可能になります。

これらの更新を記念して、ゴクウゲームエンジンを使用して開発された最初のスネークゲームをWASM形式で公開しました。こちらでチェックしてください: [スネークゲーム](https://gokuengine.com/example/snake)。さらに、エンジンの多用途性と使いやすさを示すシンプルなプラットフォーマーゲームが、私たちの[GitHub](https://github.com/ladroid/goku)の例に含まれています。

## 今後の方向性: タイルエディターとディープラーニングプロジェクトの強化

今後は、ゲーム世界の作成プロセスを簡素化するタイルエディターの導入と、ディープラーニングプロジェクトのさらなる改善を計画しています。具体的には、スプライトシートでのGANの作業とビューポート機能の改善が優先されます。これらの更新は、ゴクウゲームエンジンをさらに多用途でユーザーフレンドリーなものにし、努力をかけずに豊かで魅力的なゲーム世界を作成しようとするゲーム開発者のニーズに応えることを目指しています。

## コミュニティエンゲージメントとフィードバック

開発チームは、特にディープラーニングピクセルキャラクタージェネレーターおよびゲームエンジン自体に関するフィードバックを受けることに熱心です。コミュニティからの意見は、将来のアップデ

ートを導く上で貴重であり、エンジンがゲーム開発者の進化するニーズを満たすようにするために不可欠です。この対話を促進するために、開発者やエンスージアストは、アイデア、経験、および提案を共有するハブとして、ゴクウゲームエンジンのDiscordチャンネルに登録することを奨励されています。

## 結論

ゴクウゲームエンジンの最新のアップデートは、伝統的なゲーム開発ツールと最先端のAIおよびディープラーニングを融合させた、ゲーム開発技術における大きな前進を示しています。ピクセルキャラクターの自動作成、ユーザーインターフェース機能の強化、およびタイルエディターのような将来の開発の計画により、エンジンはゲームデザインと開発の基準を再定義することになります。コミュニティとのエンゲージメントを継続し、フィードバックを求めることは、エンジンの進化の基礎となり、開発者が創造的なビジョンを実現することを可能にする最前線に留まることを保証します。

## P.S. 

ゴクウゲームエンジンに関する最新情報を手に入れたい方は、私たちの[GitHubプロジェクト](https://github.com/ladroid/goku)をチェックしてください。アイデアや経験、提案を共有するために、[Discordチャンネル](https://discord.gg/9TAMqdRyED)にぜひ参加してください。さらに、私のツイッター[@ladroider](https://twitter.com/ladroider)でも、ゴクウゲームエンジンに関する最新情報やコミュニティの声を共有しています。興味のある方はフォローして、私たちの旅に参加してください。