ゲーム開発備忘録

ゲームプログラマー UE4・5向けの記事を書いておりますので見ていただけるとありがたいです。

【UE4・UE5】〈Tips〉ダイアログボイスとダイアログウェーブの使い方

目次

 

はじめに

個人の備忘録としてまとめています。誤った情報がある場合があります。

コメントにてご指摘のほどお願いいたします。

本記事は公式ドキュメントを参考にしています。

docs.unrealengine.com

 

今回はUEに用意されているダイアログアセットの使い方について解説しています。

 

環境

UE5.3.2

TPSample

解説

使いどころについて

ダイアログボイスやダイアログウェーブを使うことで、人間関係を意識された会話システムの構築を行うことができます。

 

たとえば、同じ『こんにちは』という字幕でも、相手によってその音声を個別に設定しておきたいといったニーズがあると思います。

他にも親密度が上がったら同じセリフでも印象が異なる音声に差し替えたりなどにも使えそうですね。

こういった実装をする場合、大規模な分岐のシステムを構築する必要がありますが、この機能を利用することでアセットベースで指定することができます。

 

この記事では話かけるモノによって同じセリフでも音声データを変更する実装を実際に試してみたいと思います。

 

解説 -事前準備-


➀シンプルな会話システムの構築

このシステムを試すにあたりシンプルな会話システムを作成します。

 

ThirdPersonCharacterに以下のようなノードを組みます。

デバッグ表示の設定を有効にしています)

 

②会話相手の作成

アクタを継承したBPを作成し、Coneメッシュコンポーネントを追加しました。

名前はB_Cone_Aとしました。

 

コリジョンプリセットはPawnとしておきます。

 

作成した会話アクタの近くでFを押すとコリジョンが反応して色が緑になっていれば成功です。

 

解説 -ダイアログボイス-

➀ダイアログボイスの作成


名前は頭文字をとってDV_Playerとしました。


ダイアログボイスアセットはそのキャラクターの性別や単数/複数について設定できます。そのため、1キャラクター1アセットと、対応させて用意するのがおすすめです。

 

同様にDV_Cone_A, DV_Cone_B も作成しておきます。

 

②ダイアログボイスアセットのキャラクターに割り当て

B_Cone_A, B_Cone_B, BP_ThirdPersonCharacterにDialogueVoice型のDV_Selfという変数を用意します。

 

BP_ThirdPersonCharacterにはDV_Player

B_Cone_AにはDV_Cone_A といったように割り当てていきます。

 

③会話時に相手のダイアログボイスを取得する仕組みの作成

 

手法は何でもいいですが、今回はインターフェースを利用した方法で実装します。

 

ブループリントインターフェース BI_Talkableを作成します。

 

インターフェース内にGetDialogueVoiceという関数を作成しアウトプットにDialogueVoice型の変数を返すようにします。

 

B_Cone_A, B_Cone_B にこのインターフェースを実装し、関数GetDialogueVoiceに自身のDialogueVoice、DV_Selfを返すようにします。

 

BP_ThirdPersonCharacterに戻り、以下のようにノードを組みます。


これにより、入力後にインターフェースを中継して当たった相手のDialogueVoiceを取得できるようになりました。

 

 

解説 -ダイアログウェーブ-

➀ダイアログウェーブを作成

 

名前はDW_Helloとしました。

 

ダイアログウェーブアセットは同一字幕で、ダイアログボイスの組み合わせによりどの音声を指定するかを設定できるアセットです。

 

②ダイアログウェーブの編集

 

ダイアログコンテキスト内でSpeakerにDV_Playerを指定します。
ターゲットにはDV_Cone_Aを指定します。

 

ダイアログコンテクストを追加 を押してPlayerからDV_Cone_Bに対しての条件も追加します。

 

左の▽からその条件の時のSoundWaveを指定することができます。

 

これでConeAに対してHelloという場合の音源は~
ConeBに対してHelloという場合の音源は~


という条件を設定できるようになります。


ターゲットを複数にすることも可能で、同一音源を利用したい場合の設定も同一コンテクストにまとめることもできます。

 

最後にスクリプトから何という字幕を出すかを設定します。

 

解説 -ダイアログウェーブの再生-

➀BP_ThirdPersonCharacterからダイアログウェーブの再生

Play Dialogue at Locationノードから再生したいDialogu Waveの組み合わせに応じた音声を利用することができます。

 

プロジェクト設定から字幕を有効化されているのを確認します。

 

実行するとConeアクタに応じて音声が切り替わっているのを確認できます。
もちろん字幕を無効にすると音声だけの機能で動作できます。

 

このように会話のパターンごとにDialogueWave を用意し、それを再生するのがダイアログ アセットです。

DialogueWave の参照からは設定したセリフの変数を取得することもできるので、同時の字幕UIに流すことも可能です。

 

最後に

UE4やUE5向けの記事を書いています。

皆様の応援が投稿のモチベーションになりますので

コメントやTwitterのフォローなどしていただけるとありがたいです。

それではよきゲーム開発を。

投げ銭を投げる

 

【Backpack Battles】〈 ver 0.5.4b〉合成アイテム組み合わせ一覧

目次

はじめに

※ 本記事はアイテム組み合わせのネタバレを含みます。
自分で攻略したい方はブラウザバックしてください。

 

最終更新 2023,10/23

 

Backpack Battlesとは?

Backpack Battles』は、ローグライトにバックパック整理の要素をかけあわせた対戦型オートバトラーゲームだ。プレイヤーはアイテム商人から武器・防具・ポーションなどさまざまなアイテムを購入しながら装備を整え、ほかのプレイヤーとの自動戦闘に挑んでいく。

引用: https://automaton-media.com/articles/newsjp/20230808-258792/

 

2023年10月14日現在 Steamでベータ版が無料公開されています。言語は英語、中国語のみですが、ストーリー仕立てではないのでとっつきやすいと思います。

 

store.steampowered.com

 

本記事は Backpack Battles〔Version 0.5.4b〕のアイテム組み合わせ一覧です。頻繁にアップデートが入るゲームなので記事の内容と異なる可能性があります。情報が古い部分はコメントにてお知らせください。

 

〔 アイテム一覧 〕

 

〔 刀・ナイフ系 〕

Bloodthorne

Manathirst

Hero Sword

Falcon Blade

Hero Longsword

Crossblades

 

Spectral Dagger

Bloody Dagger

Poison Dagger

Darksaber

 

〔 杖系 〕

Magic Staff

Critwood Staff

Staff of Unhealing

 

〔 フライパン系 〕

Pandamonium

Eggscalibur

 

ポーション

Strong Health Potion

Strong Stone Skin Potion

Strong Heroic Potion

 

〔 スライムっぽいやつ 〕

Blood Goobert

Light Goobert

Steel Goobert

Poison Goobert

Rainbow Goobert Omegaooze Primeslime

 

〔 その他 〕

Vampiric Gloves

Lucky Piggy

Vampiric Armor

Spiked Shield

Lucky Piggy

Ruby Chonk

 

最後に

最後までご覧いただきありがとうございました。

投げ銭を投げる

 

【UE4・UE5】〈Tips〉楽にDelayなどの遅延処理をキャンセルする実装の小技

目次

 

はじめに

個人の備忘録としてまとめています。誤った情報がある場合があります。

コメントにてご指摘のほどお願いいたします。

今回は、遅延処理の最中にその処理をキャンセルしたい場合のシンプルな小技を紹介します。

 

環境

UE5.3.0

解説

やりかた

今回利用する小技はSetTimerByEventです。

このノードはHandleからタイマーをキャンセルすることが可能な、

Clear and Invalidate Timer by Handleを利用することで楽に実装できます。

 

最後に

UE4やUE5向けの記事を書いています。

皆様の応援が投稿のモチベーションになりますので

コメントやTwitterのフォローなどしていただけるとありがたいです。

それではよきゲーム開発を。

投げ銭を投げる

 

【UE4・UE5】〈Tips〉列挙型(Enum)の要素をブループリントだけでランダムに取得する方法

目次

 

はじめに

個人の備忘録としてまとめています。誤った情報がある場合があります。

コメントにてご指摘のほどお願いいたします。

 

列挙型の要素をランダムで取得するハックです。

 

環境

UE5.3.0

 

解説

やりかた

今回取得したい列挙型を作ります。


取得したいところで列挙型の名前を入力し、インプット数をGetを選択

 

これにより要素数を取得できます。

 

列挙型の要素は0から始まるので1引いた値からランダムノードで取得し再び列挙型に変換することでランダムで取得できます。

 

最後に

UE4やUE5向けの記事を書いています。

皆様の応援が投稿のモチベーションになりますので

コメントやTwitterのフォローなどしていただけるとありがたいです。

それではよきゲーム開発を。

投げ銭を投げる

 

【UE4・UE5】〈Tips〉Ambient Zone を利用して簡単に音声のブレンドをやってみよう

目次

 

はじめに

個人の備忘録としてまとめています。誤った情報がある場合があります。

コメントにてご指摘のほどお願いいたします。

 

場所によってBGMの音がスムーズ切り替わるようにするには、Ambient Zoneを利用することで簡単に実現することができます。

 

あまり知られていない機能ですが非常に強力なものですので活用してみましょう。

 

 

環境

UE5.3.0

FPSサンプル

 

以下のサイトを参考に記述しました。

docs.unrealengine.com

 

解説

環境の構築

UE上で簡単な部屋を作成してこの部屋に入ったらBGMが切り替わるようにします。

わかりやすいようにMeshを編集して部屋風にしました。

 

Audio Volume の配置

音声の切り替えたい範囲 = 部屋の中を定義するために、Audio Volumeを配置します。

アクタを配置からオーディオボリュームをレベルにドラッグアンドドロップします。

 

ブラシセッティングもしくはスケールを変更して部屋の形状に合うように設定します。

 

Tips

 ブラシ形状から形状を変更できます。
指定したいエリアに応じて適切な形状を設定することができます。

 

 

Audio Volume の設定

AudioVolumeのプロパティにアンビエントゾーン設定という項目があります。

これを設定することでこのエリアに入ったとき、どのように外部と内部の音声をブレンドするかを指定できます。

 

今回は環境BGMから室内BGMに2秒かけてブレンドするような設定にしてみました。

 

Ambient Sound の配置

エリアの指定が終わったので次に音源であるAmbient Soundを配置していきます。

 

環境BGMである音源を室外に1つと、室内BGMである音源をAudio Volume中に配置します。

 

Ambient Sound の設定

AmbientSoundそれぞれに再生したい音源を設定します。

 

サウンド→詳細設定のSound Class Overrideからサウンドクラスを作成します。

 

名前はSC_Ambientとしました。

 

SC_AmbientのApplyAmbientVolumesにチェックを入れます。

 

両方のAmbeinetSoundにこのSC_Ambientを割り当てます。

 

Allow Spatializationにチェックがついているのを確認したら完成です、


音量調整はそれぞれのAmbientSoundで行います。

 

サウンドの音量調整

AudioVolumeによる音量制御と音量調整を両立する手法は以下の方法で出来ます。

これにより、移動先のエリアの音量が0の場合はZoneの設定が1でもそのまま0になります。

 

注意事項

・Volumeの計算はカメラ座標を利用しているようです。

そのためTPPの場合はキャラの位置と聞こえる範囲が変わってしまいます。

⇒こちらUnreal Engineの音を聞く位置がデフォルトでカメラの位置になっているようでした。
そのためキャラクターの位置にリスナーを更新するノードで上書きすることでこの問題を解決できるようです。

ご指摘ありがとうございました。

docs.unrealengine.com

 

・個人の環境ですが実行時にすべてのAmbient音声が一瞬再生されてしまう問題があります。

自分の環境ではデフォルトの音量を0にして遅延を入れて音量を1に設定する処理を入れることで解決しています。
解決方法をご存じの方はコメントお願いします。

 

最後に

UE4やUE5向けの記事を書いています。

皆様の応援が投稿のモチベーションになりますので

コメントやTwitterのフォローなどしていただけるとありがたいです。

それではよきゲーム開発を。

投げ銭を投げる

 

【UE5】〈Tips〉UEの自作ツールでDetailsViewのプロパティの変更を検知する方法

目次

 

はじめに

個人の備忘録としてまとめています。誤った情報がある場合があります。

コメントにてご指摘のほどお願いいたします。

 

エディタユーティリティウィジェットを利用することでエディタ上で動く独自のツールを作成することができます。

特にDetailsViewを活用することでビジュアルの向上の他に、今回紹介するプロパティの変更も検知できます。

この機能を生かして設定が変更されたときのみ処理を更新したり、設定されたデータアセットの値を反映したりといったよりフレンドリーなツールの作成を行うことができます。

エディタユーティリティについては以下のサイト様を参考にしてみてください。

docs.unrealengine.com

ue5study.com

DetailsViewについてこちら。

zenn.dev

解説

変更の検知方法

EUWのDetailsViewの詳細から

 

デリゲートでOnPropertyChangedを追加することができます。

OnPropertyChangedの使い方

PropertyNameからはAssetActionUtilityで変化した変数の名前を取得できるので、Switchなどで更新処理を書くことができます。

 

最後に

UE4やUE5向けの記事を書いています。

皆様の応援が投稿のモチベーションになりますので

コメントやTwitterのフォローなどしていただけるとありがたいです。

それではよきゲーム開発を。

投げ銭を投げる

 

【UE5】〈Tips〉Overlayマテリアルが表示されない原因と解決

目次

 

はじめに

キャラクターのアウトラインを表示するのに便利なOverlayマテリアルですが、動作しないことがあったので原因を探しました。

 

Overlayマテリアルの使い方はわかりやすいヒストリアさんの記事をお読みください。

historia.co.jp

 

環境 : UE5.2.1

 

個人の備忘録としてまとめています。誤った情報がある場合があります。

コメントにてご指摘のほどお願いいたします。

 

解説


原因

Naniteサポートを有効化

Nanaiteサポートが有効だとOverlayマテリアルの計算がされないようです。

解決

問題のあるメッシュを開き、Naniteサポートを有効化チェックを外して「変更を適用」を押します。

 

表示されるようになりました。

 

最後に

UE4やUE5向けの記事を書いています。

皆様の応援が投稿のモチベーションになりますので

コメントやTwitterのフォローなどしていただけるとありがたいです。

それではよきゲーム開発を。

投げ銭を投げる