PaperSloth’s diary

主にゲーム開発関連についての記事を書きます。

UE4 Voiceer4Uを公開しました

環境

UE4.25.4

概要

Voiceer4UというPluginを公開しました。
github.com

Voiceerとは
ねぎぽよ氏が公開しているUnity向けのEditor拡張で
様々なEditor操作を行う度にかわいい声で開発を応援してくれるものです。
github.com

Voiceer4Uとは
Voiceerがいいなと思ったので、UE4版を作ってみました。
(Voiceer4Uという命名を使用してよいか否かはねぎぽよ氏に確認を取りました)
現状まだまだ機能不足で本家Voiceerにはまだまだ及ばず
Compile/Package化/Launchの開始/成功/失敗のみしか対応していませんが
かわいい声で開発を応援してくれるUE4向けのPluginです。

Demo動画 :


Compile関連の対応なので、Blueprint Onlyの開発者の方々には恩恵が少ないため
その辺りは今後のアップデートで対応できればと考えております。

使い方についてはGithubの方を見ていただければです。

現状の問題点

一日でガガッと作ったものなので、verion 0.1.0でまだまだ機能不足と実装上の問題を抱えています。
1. Engine側のAssetに変更が入ってしまう
Module初期化時に実行してEngine側のAssetに対して手を入れており
完全な元データの復元というのが行えていないため
Sound Cue内のNodeの移動等で差分が発生してしまいます

2. Pluginを導入したProjectと同一のVersionのUE4 Editorを開くと問題が起こりうる
A. Pluginを導入したProject
B. Pluginを導入していない同一Engine VersionのProject
Engine側のAssetに変更が入っているためA. を開いた状態でB. を開いて作業をしている場合に
A. のProjectに変更が入り、アクセス中なので正しく保存が行われないといったケースが発生してしまいます

今後のアップデートでやりたいこと

1. PIE時等のEditor操作時の音声に対応
2. 先に述べた問題点への対応の検討

余力があったらやりたいこと
1. Folder名 / File名の規約の緩和
現在Folder名のみならずFile名も規定のものにする必要があり、この辺が不便です
使う側のユーザーがこの辺りを気にすることなくできればいいなと検討中

2. 設定用のGUIの用意
現状はContent Browserと簡素なProject Settingsの設定オプションしかないため
設定しやすく変更が行いやすいように調整していければと思います

3. Editorの再起動なしでも変更可能にする
これは単純にGUIを用意してAPIを呼び出すだけだと思いますので
難しくはないんじゃないかと思いつつ、単純にめんどくさいというのが大きいですね

おまけ

実装をしていて面白かった点
1. アセット保存用のAPI
以下の関数を叩くだけで変更したAssetの内容を保存することができました。
他にもDialog有りのバージョンも用意されていたので、Editor拡張なんかでも使い勝手が良さそうだと感じました。

bool UEditorLoadingAndSavingUtils::SavePackages(const TArray<UPackage*>& PackagesToSave, bool bOnlyDirty)

2. Editor終了時のCallback関数
以下のDelegateを使用するだけでEditor終了時のCallback関数を登録できました。
現状はこのAPIを使用してEditor終了時にEngine標準の音データに初期化しています。

FSimpleMulticastDelegate FEditorDelegates::OnShutdownPostPackagesSaved

3. USoundNode, UEdGraphNodeの利用
通常はAnimationやSoundでも自作NodeをC++で定義して呼び出すことはよくあると思いますが
今回はC++側からNodeを操作するという少し珍しい実装をすることになりました。
というのも、Moduleの開始時に既存Assetに手を加えているためEditorが開く前段階で処理をしているからです。


上記3点を含めて、具体的な実装についてはPlugin側のCodeを見ていただければですが
なんとなくで作り始めたわりに学びが多くいい経験になりました
少しEngineに慣れてきた方にはPlugin開発はオススメです。