Skip to content

hakoniwa-unreal-simasset-plugin: A versatile plugin for Unreal Engine, designed to integrate and manage sandbox-style API sets for enhanced simulation and game development capabilities.

Notifications You must be signed in to change notification settings

toppers/hakoniwa-unreal-simasset-plugin

Repository files navigation

このリポジトリは、Unreal Engine5 で開発したゲームを箱庭と連携して実行できるようにするためのプラグイン機能開発リポジトリです。

アジェンダ

動作環境

サポート状況は以下のとおりです。

  • MacOS(AppleSilicon)
  • MacOS(Intel)
  • Windows
  • Ubuntu

アーキテクチャ

アーキテクチャ構成は下図のとおりです。

スクリーンショット 2024-01-26 6 23 03

Unreal Engineで作成されたゲームアプリケーションを 箱庭プラグイン に接続することで、箱庭シミュレーション環境上で連携動作できるようになります。

本リポジトリの開発範囲は、Unreal Engine 箱庭プラグイン です。

その他の箱庭モジュールについては、以下を参照ください。

インストール手順

ここでは、Unreal Engine箱庭プラグインを利用するために必要なインストール手順を説明します。

以下の手順でインストールしてください。

  1. UE5のインストール
  2. 箱庭のインストール
  • リンク先の手順の hakoniwa-core-cpp-client は不要です。
  • 本リポジトリーをクローンすると、直下に hakoniwa-core-cpp-client が配置されていますので、そちらからインストールを進めてください。
  1. Unreal Engine箱庭プラグインを利用した開発環境の起動

Unreal Engine箱庭プラグインを利用した開発環境の起動

Unreal Engine エディタの起動

まず、下図の起動 ボタンを押して、起動してください。

スクリーンショット 2024-01-19 6 40 31

成功すると、プロジェクトブラウザが起動します。

スクリーンショット 2024-01-19 6 44 13

画面右下にある 開く ボタンを押して、クローンしたリポジトリの場所を参照します(下図)。

スクリーンショット 2024-01-19 6 42 50

hakoniwa_plugin を選択して、hakoniwa_plugin.uproject Open してください。

スクリーンショット 2024-01-19 6 46 24

成功すると、Unreal Engineエディタが起動します。

スクリーンショット 2024-01-19 6 48 06

起動直後は、レベルが選択されていませんので、メニューの ファイル -> レベルを開く を選択し、下図の Hakoniwa をクリックしてください。

スクリーンショット 2024-01-19 6 48 56

成功すると、試作中のレベルが表示されます。

スクリーンショット 2024-01-19 6 50 50

エディタの画面右下に、コンパイルボタンがありますので、クリックしてコンパイルします。

スクリーンショット 2024-01-19 6 51 32

成功すると、キキっという音と共に、コンパイル成功メッセージが出力されます。

スクリーンショット 2024-01-19 6 52 21

シミュレーション手順

シミュレーションを実行するには、最初に箱庭コンダクタを起動しておく必要があります。

Unreal Engine 側のシミュレーションボタンは、下図のようになっていることを確認してください。

スクリーンショット 2024-01-19 7 08 56

なっていない場合は、右にあるボタンをクリックして、シミュレートを選択すると切り替わります。

スクリーンショット 2024-01-19 7 09 37

この状態で、シミュレーション開始ボタンをクリックします。

成功すると、以下のメッセージが出力されます。

LogTemp: Loaded HakoAsset
LogTemp: InitializeAsset() Enter
LogTemp: hako_asset_register() success.
LogTemp: InitializeAsset() Exit
PIE: サーバーにログインしました

次に、箱庭コマンドで、箱庭としてのシミュレーションを開始します。

hako-cmd start

成功すると、以下のメッセージが出力されます。

PIE: PIE合計開始時間 0.163 秒。
LogTemp: my_on_initialize() success.
LogTemp: Warning: my_on_manual_timing_control() enter

また、Unreal Engineエディタは下図のようになり、シミュレーションが始まります。

スクリーンショット 2024-01-19 7 13 06

シミュレーションを停止するには、上手の赤いボタンをクリックし、箱庭コンダクタを停止してください。

なお、Unreal Engineの出力メッセージとしては、以下のものが出力されます。

LogTemp: Warning: EndPlay
LogTemp: Warning: FinalizeAsset() Enter
LogTemp: Warning: HakoAssetTask: Stop() start.
LogTemp: Warning: my_on_manual_timing_control() exit
LogTemp: hako_asset_start() success.
LogTemp: Warning: HakoAssetTask: Stop() exit.
LogTemp: HakoAssetModule FinalizeAsset() Exit

内部設計情報

箱庭プラグインは、以下の3つのクラスで構成されています。

  • HakoActorRoot
  • HakoAssetModule
  • HakoAssetTask

HakoActorRoot

HakoActorRoot の役割は、Unreal Engineと箱庭を繋げるための入り口になります。

具体的には、Unreal Engineからのシミュレーションイベントを以下の関数で受け取ります。

  • BeginPlay()
    • シミュレーション開始イベントを補足して、箱庭のシミュレーションを開始させます。
  • TickComponent()
    • シミュレーション実行中の定期イベントを補足して、箱庭のシミュレーションを実行させます。
    • この際、箱庭のシミュレーション時間の同期を行います。
    • シミュレーション時間の同期で、箱庭時間が遅い場合は、シミュレーションの処理は行わないようにします。
    • なお、Unreal Engineでは、Unityのような FixedUpdate()イベント(物理エンジンと連動したコールバック関数)が存在しないため、フレームレートでの駆動としています。
  • EndPlay()
    • シミュレーションの停止イベントを補足して、箱庭のシミュレーションを停止させます。

内部実装はこちら

HakoAssetModule

HakoAssetModule の役割は、箱庭アセットAPIをUnreal Engine側に提供することです。

内部実装はこちら

HakoAssetTask

HakoAssetTask の役割は、箱庭のシミュレーション時間同期をすることです。

内部実装はこちら

全体的な処理フローは下図のとおり。

スクリーンショット 2024-01-19 7 28 44

その他

本リポジトリは、まだ試作中のものです。

今後、正式対応に向けてより利用しやすい機能セットにしていく予定です。

About

hakoniwa-unreal-simasset-plugin: A versatile plugin for Unreal Engine, designed to integrate and manage sandbox-style API sets for enhanced simulation and game development capabilities.

Resources

Stars

Watchers

Forks

Packages

No packages published