UE4でのサウンドの活用

※音を出すか、イヤホン推奨

どんなゲームでも必ずサウンドが入っています
人によってはゲームのサウンドが良いからという理由でゲームを購入する人も少なくありません
3Dのゲームにはより重要な要素で、音の方向や聞こえる範囲などでゲームから伝わる
臨場感は違ってきます

UE4には様々なサウンドに関しての機能が備わっています
今回はサウンドに関しての機能についての基本的な使い方や
テクニックのいる使い方などをちょっとだけ解説していきたいと思います

基本的な扱い方

レベル上に配置するだけで音が自動的に流れ始めます

図1

また、サウンドの再生するタイミングを決めたい場合は
サウンドを選択すると右側の「Detalis」の中に
「AutoActive」という項目があるので
チェックを外すと自動で再生されなくなります

図2

再生したいブループリント上(今回はレベルブループリント)で
レベル上にあるサウンドの名前を入力すると
「Create a Reference to ○○○(サウンドの名前)」が出てきます

図3

選択をすると次の画像のようなノードが出てくるので
再生したい場合はその下の画像の様に「PlaySound」ノードを使うと再生できます

図4
図5

キャラクターの足音

サウンドはBGMだけではなくSEなどの効果音もあります
今回はキャラクターに足音を付けていきたいと思います

ブループリントを編集する前に下準備をします
左上にある「Edit」を押して「Project Settings…」という項目を選択します
下のような画面が出てくるので左側にある一覧の中から「Physics」という項目を選択します
右側を下にスクロールしていくと「Physics SurfaceType」という項目が出てきます
今回はSurfaceTypeの1,2,3をそれぞれ「Grass」、「Sand」、「Concrete」に設定します

図23

Content Browserで「SoundAttenuation」と「SoundCue」を作っておきます

次にSoundCueを編集していきます
右側のPaletteから「Switch」と「Wave Player」を3つ作成します
それぞれのノードを画像の様に接続します
「Switch」のParameterNameを「SurfaceType」にしておきます
「Wave Player」には設定したい足音を入れておきます
最後に「Out put」のAttenuation Settingsに先ほど作った「SoundAttenuation」を設定しておきます

図16

足音を追加するために、「Content Browser」から「ThirdPersonRun」と「ThirdPersonCharacter」と「ThirdPerson_AnimBP」を開きます

まずは足音を鳴らすタイミングを取得するために「ThirdPersonRun」を編集します

「Notifies」という項目の下にあるTimeLineを右クリックします
「New Notify」という項目があるので選択をすると、TimeLine上にある様な
「FootSound」と同じようなものが出てきます

図7

ここで、「Play Sound」を選択してSEを再生することも可能ですが
今回は地面によって音を変えたいので今回は「New Notify」を
選択します

次は「ThirdPersonCharacter」を編集をします
先にViewportで必要なものを用意しておきます
左上にあるAdd Componentから「Static Mesh」を作成します
今回は足元から音を出したいので「Static Mesh」を足元に移動させます
名前をわかりやすいように「FootSoundPoint」と名付けておきます

図8

次にEventGraphでブループリントを作ります

まずはCustomEventを名前をわかりやすいように「FootSound」で作ります

キャラクターの足元の情報がほしいので「LineTraceByChannel」ノードを作ります
そして、「TryGetPawnOwner」ノードを作り、そこから「GetActorLocation」で位置を取得します
Startにはそのままの値を入れますが、EndにはZ軸を-100をして値を入れます

さらに地面の詳細な情報がほしいのでOut Hitから「Break Hit Result」ノードを作ります
「Break Hit Result」の一覧の中からPhys Matから「Surface Type」という変数を取得します
さらにそこから「Select」というノードを作っておきます

「Branch」から「SpawnSoundAttached」を作成しSoundには先ほど作った「FootSoundCue」を入れます
Attach to Componentには先ほど作った「FootSoundPoint」ノードをつなげます
最後に「SetIntegerParameter」でTargetは「SpawnSoundAttched」のReturn Valueを、
In NameにはSurfaceTypeを、in intには先ほどの「Select」のReturn Valueをつなげます
ThirdPersonCharacterは以上です

図22

最後に、先ほど「ThirdPersonRun」で作った「FootSound」を「ThirdPerson_AnimBP」でイベントとして作ります

図17

最後にマップ上の設定を行いたいと思います

まず、Content Browserで「Physics Material」を3つ作ります
それぞれの名前を「GrassPhysicsMaterial」、「SandPhysicsMaterial」、「ConcretePhysicsMaterial」にします

「Project Settings…」で設定したSurfaceTypeを対応したものに設定します

図20

マップ上に3つ「Cube」を設置し、Detailsの中にある「Collision」の「Phys Material Override」にSurfaceTypeに対応したものを設定します

図21

これでキャラクターに様々な種類の足音がつけれるようになりました

C++でJsonを使うための物の紹介

今日はC++でJsonを使ってみたいと思います。
実はcocos2d-xには標準でJsonを読み込むものがあるのですが今日はDirectXでも使えるpicojsonというものを紹介していきたいと思います。

まずJsonがなんなのかわからない人は先輩の過去の投稿をご覧ください。

http://www.trident-game.com/blog/2015/10/14/【輪講】jsonの書き方/#comment-3

まずpicojsonとはKazuhoという人がJsonを読み込むために書いたクラスです。
C++でJsonを使うならこれを使う人が多いらしい。

githubリンク:https://github.com/kazuho/picojson

使い方として解凍したフォルダーの中にあるpicojson.hを追加するだけ!

使い方はいたって簡単でjsonファイルをfstreamで読み込んでpicojsonに入れるだけです。

C++でがりがり書く人はこれを使っている人が多いので一度使ってみるといいと思います。

【輪講】SourceTreeの使い方

こんにちは。SourceTreeをインストールの仕方と簡単に操作の仕方を書いとこうと思います。

まずSourceTreeって?

バージョン管理ツールのひとつ。

Gitだとコマンド(黒い画面)で操作しないといけないけど「コマンド操作嫌い!見たくないよ!」という人、いいのありますよ。SourceTreeならGitがコマンドじゃなくてGUIで直感的に操作できるよ。

SourceTreeを使うメリット

  • グラフィカルでわかりやすい操作画面(コマンド使わなくてもできる)
  • Windows/Macで使えるのでプロジェクト内でツールが統一できる
  • 日本語対応している
  • Gitに対応している

ということでダウンロード・インストールをしよう。

↓このサイトに行けばダウンロードできるよ。

https://ja.atlassian.com/software/sourcetree

あとは、指示に従って進めていけばインストール完了だよ。途中でAtlassianのアカウント登録する ある人はログインしてね。Githubやbitbucketのアカウントの登録は一応スキップもできるよ。

操作の説明をする前にバージョン管理で使われる基本的な用語について。

バージョン管理で使われる基本的な用語

  • リポジトリ ... バージョン管理対象のファイル群を保管するサーバー上の枠のこと

続きを読む

【輪講】Hansoftについて

プロジェクトのリーダーをする際、
必ずプロジェクトの管理や仕事の割り振り、スケジュールの管理が必要になってきます。

それらを可視化させるのが『Hansoft』です。

今回はこの『Hansoft』の導入から使い方を説明したいと思います。

まず、この『Hansoft』の優れている点について説明します。

『Hansoft』はゲーム開発者が自分達の開発を管理するために生み出されたツールです。
そのため、データベースの構造及びデータベースへのアクセス、
サーバーとクライアント間の通信について、速度とセキュリティを特に重視されています。

1.操作が軽い→ストレスフリー
『Hansoft』の操作は軽快で、かつCPUへの負荷も軽く、常時起動しても開発マシンへの目立った影響がない。

2.導入が速い→学習コストを考慮しなくてもよい
Windowsでも、OSXでも、Linuxでも、サーバーやクライアントのインストールはワンクリックで済みます。
直観的なインターフェースで、自分のやりたいことをすぐ開始出来ます。

3.複数の開発方法を併用する開発をサポート→1つのツールでプロジェクト全体を管理出来る
例えば、以下のような1つのプロジェクトに複数の開発手法が混在する場合であっても、
『Hansoft』だけでプロジェクト管理が出来ます。

・組み込み開発:ソフトウェア開発チームはアジャイル的に開発する一方、ハードウェア開発チームはガントチャートを利用している。
・ゲーム開発:ソフトウェア開発チームが反復で開発しつつ、デザインチームはカンバン方式で開発する。

『Hansoft』はアジャイル開発プロジェクト管理をサポートすることはもちろん、従来のガントチャートを用いたプロジェクト管理にも対応出来ます。

4.多言語対応→多国間の共同開発をサポートする
ユーザーは自分の好みによって、インターフェースを英語、日本語、中国語の中から選ぶ事が出来る。

以上がHansoftの基本的な機能と特長です。

実際に私が調べた使い方をご紹介します!

まずはHansoftのインストールと設定です。

今回の説明はWindowsOSにおいての説明となります。

まずは、

Downloads


でソフトをダウンロードします。

rinkou1

Hansoftは9名まで無料で使用出来ます。
作業をするパソコンをサーバーにする場合、サーバーとクライアントを一緒にダウンロードできる
「All-in-One Small Team Edition」の「Installer for Windows」をクリックしてダウンロードして下さい。

但し、この場合ホストの人のパソコンの電源を落としてしまうと他の人も使えなくなってしまうので微妙です。

常時起動出来るサーバー用パソコンをサーバーとして使用しましょう。
その場合、「Server」の「Installer for Windows」をクリックしてダウンロードして下さい。

その他ホストにならない方は、「Client」の「Installer for Windows」をクリックしてダウンロードして下さい。

今回は「All-in-One Small Team Edition」についての説明を行います。
ダウンロードした「Hansoft Trial 9.1047.exe」ファイルを起動します。

ドロップダウンを「日本語」→OK→次へ→同意する
→ホストとなるPCを使ってる方はドロップダウンを「すべて」
他の方は「クライアントのみ」にし次へ→次へ→インストール→インストール完了後自動的にHansoftが起動されます。

この自動的に起動されるソフトはクライアント側ですので、
まずはそっと閉じましょう。

スタートからすべてのプログラム→Hansoft→Hansoftサーバー管理を起動します。

無題2

サーバー管理のほうはサーバー管理者と書いてあります。

Hansoftサーバーにホストとなるコンピューター名を入れます。
(学校で使うならPCに貼ってあるシールの名前を入力して下さい。)

ポートに関しては最初から入力されている「50256」のままで大丈夫です。

接続→このサーバーを信頼しますをクリックします。
管理者パスワードを聞かれるので「hpmadm」を入力しサインインします。

無題

無事サインイン出来ると上の写真の画面が出てきます。
画面を見てもらうと分かりますが、新しいデータベースを作成出来たり、
データベースの削除を行えたりとサーバー関連の処理はここで行います。

次にクライアントを起動します。
スタートからすべてのプログラム→Hansoft→Hansoftクライアント

サーバーと同様にHansoftサーバーを入力し、ポートはそのままで接続します。

ユーザー名とパスワードを聞かれますが、
まだユーザーを作成していないので管理者としてサインインします。

ユーザー名「administrator」パスワード「hpmadm」と入力しサインインします。

無題1

サインイン出来ると上の写真の画面が出てきます。
まずは他の人がサインイン出来るようにユーザーを作成していきましょう。

ちなみにですが、先程説明した通り「All-in-One Small Team Edition」を使用すると、
9名までしかユーザーを作成出来ません。

さらに最初から3名作られていますので、必ず削除して下さい。

無題3

削除したら「新規ユーザーを作成」をクリックし、新しくユーザーを登録していきます。

無題4

「名前」は本人の名前を入力すると他の人が分かりやすくなります。
これがそのままサインインする際のユーザー名となります。

パスワードは全員まずは簡単なもので一緒にしておきます。
セキュリティ部分で「ユーザーは次回ログインの際にパスワードを変える必要があります」にチェックを入れましょう。

あとは各チームごとにルール決めをしてチェックを入れて下さい。

無題5

ユーザーグループは私達のチームではProjectSEEKER、プランナー、プログラマー、デザイナーで分けて各ユーザーに設定しています。

ユーザー登録が終わったらクライアントをダウンロードしたプロジェクトメンバーもサインイン出来るようになります。

ここからプロジェクトの管理の仕方になりますが、まだ使い方を全て把握出来ているわけではないので分かっている部分だけ説明します。

まずはプロジェクトの作成を行います。

無題ww

まずは上の写真の1番、先程はユーザータブでしたが今度はプロジェクトタブに変更します。
変更したら2番、新規プロジェクトの作成をクリックします。

無題aaa

まずはプロジェクト名を入れます。
Projectゲームタイトル みたいな名前にするといいと思います。

新規ユーザー向け標準モードを今回はアジャイルを使用にチェックします。

メソッドテンプレートをスクラム、スケジューリングメソッドを「固定期間」メソッドを使用(推奨)を選びます。

タスク完了メソッドは予定タスクの完了表示にステータスカラムのみを使用にチェックをします。

全て設定し終わったらOKをクリックします。

ユーザーを追加するか聞かれるのでプロジェクトメンバー全員を入れましょう。

ユーザーグループを追加すると手っ取り早いです。

無題222

プロジェクトが作成されるとメインマネージャー部分で「メインマネージャーが選択されていません」と出ていますので、
ウィンドウ下部分でメインマネージャーを設定しましょう。

他にもメンバーの閲覧制限やプロジェクト履歴へアクセス可能かどうかの設定も出来ます。

無題3333

上の写真のプロジェクト:プロジェクト名を選ぶと、プロダクトバックログ、品質保証(QA)、プランニングタブが出てきます。

無題22222

無題444444

最終的にはこんな感じになってくると思います。
まだ使い方の勉強中ですので勉強しながら分かった部分をブログにあげていきたいと思います!

C++コードをUE4で書いてみる。

お久しぶりです!!

最近うっかり更新するのを忘れていました。

今回はUnreal Engine4でC++のコードが書けると聞いたので、そのことについて、
書いていきます。

Unreal EngineではC++を」書く場合、手順があります。

まずはプロジェクトを作成します。(今回はSide Scrollerを使用)

プロジェクトを作ったら、UnrealEditorのメニューから「New C++ Class…」
を選択します。

無題

すると親クラスの選択が来ます。 続きを読む

コンテンツブラウザとアセット管理

UE4のアセットが実のファイルとして存在しているとはいえ、一つ守らなければならないルールがあります。それは、アセットの移動、コピー、複製、名前変更、削除といった操作はエクスプローラ上で行ってはいけないという鉄の錠です。必ず、コンテンツブラウザ上で操作するようにしましょう

アセットの移動とコピー

アセットを移動もしくはコピーする場合は、コンテンツブラウザ上で対象のアセットを移動先のフォルダにドラッグ&ドロップすることで行います。ドロップを終えるとサブメニューが開き移動か、コピーかのどちらを実行するかを尋ねてくるんで、選択して、移動やコピーを実行する。

アセットの名前の変更

アセットを右クリックし、コンテキストメニューから「名前変更」を選択

名前の変更も自動的に参照元に連絡がいき、新しい名前への参照に変更してくれます。それ以外のケースでも、リダイレクタが適切に吸収してくれる。

アセットの削除

使わなくなったアセットを削除するには、コンテンツブラウザ上でアセットのサムネイルを右クリックし、コンテキストメニューから「削除」を選択するか、アセットを選択した状態で「Delete」キーを押します。

地道でいいから勉強しよう pt4

こんにちは、
前回の続きから書いていきたいと思います。

<制作するマップを計画する>
1.移動ツールを使って設置したスタートを
  「X=-400,Y=400,Z=102」に設定します。

2.「モード」から「BSP」>「ボックス」をドラック&ドロップします。
   ボックスには分かりやすい名前を付けましょう。

3.名前を付けたボックスのサイズを「X=800,Y=200,Z=200」に設定し、
  「X=-100,Y=200,Z=110」の位置へ配置する。

4.ボックスを複製移動(Altキーを押しながら移動する)するか、
  もしくは新しい「ボックス」ブラシを「モード」パネルからビューポートに
  追加し、名前を付けましょう。

5.追加したボックスのサイズを「X=600,Y=400,Z=200」に追加し、
  「X=0,Y=-100,Z=110」の位置へ配置します。

6.3つ目の「ボックス」ブラシを追加して、名前を「SlopeBrush」に
  変更します。サイズはX,Y,Zすべて「200」とし、
  「X=200,Y=-400,Z=110」の位置に設定します。

<空洞を作る>
ドラック&ドロップするブラシの中には、形状を空間に追加する
「加算ブラシ」や形状を任意の形状に削り取る「減算ブラシ」があります。

1.「モード」パネルより、「BSP」>「ボックス」をビューポートに
   ドラッグ&ドロップし、分かるように名前を付けましょう。

2.「詳細」から「BrushSetting」>「BrushType」を「Subtractive」に
   変更します。これで、ブラシは加算から減算に変更できます。

とりあえず今回はここまで。

【輪講】ブループリントクラスと変数/関数について

今回は輪講について私が研究した事を書いていきます。

C++を理解していてもこれがブループリントになるとわけわからん!って人多くないですか?
私もそうでした。

しかし理解してからはなるほど!って思う事が多いです。

UnrealEngine4でブループリントを使うにはどれがクラスでどれが関数なのか、
まず把握した方がいいと思います。

今回はみんなが使い慣れているcocos2d-xのプログラムと見比べながら解説していきます!

まずはブループリントクラスの作成!

Content内で右クリック→Blueprint Class→親クラスを選択

無題1無題2

ここで選択したクラスによって使用出来る関数(以下ノード)が変わります。
いわゆる継承です。

作成したブループリントを見てみましょう。
右上にParent Class 〇〇とあるはずです!

無題3

これをcocos2d-xで見ると、大体みんながよく使うのは『Layer』『Node』辺りでしょうか。

class ThirdPersonCharacter : public Character
{
  ~略~
}

こんな感じになります。

ある程度はUnrealEngine側で用意しているものを使っていけば出来ますが、
例えばデザインパターンを取り入れたい時には、ブループリントクラス作成時に自分の作成したクラスを選択するなどしましょう。

次に関数の作成です。

その前にまずは変数の説明をします。

無題4

Variablesの『+』マークをクリックして変数を作成します。

無題5

・Variable Name→変数名
・Variable Type→変数の型(左側のドロップダウンで型指定、右側にある9個に区切られた四角マークをクリックすると配列になる)
・Editable→インスタンス上で変数がパブリックで編集可能かどうか
・Tooltip→コメントみたいなもの
・Expose on Spawn→SpawnActorノードにピンが追加される
・Private→プライベートにする
・Expose to Matinee→マチネに公開する
・Category→ラベル毎に変数を設定する事が出来る
・Replication→ネットワーク上で複製するか否かを指定する

Default Valueでデフォルト値を設定出来ます。

例えばPrivateにチェックを入れてint型のScoreという変数を作成するとします。

cocos2d-xというかC++ではこうなります。

~略~
private:
    int Score;
~略~

次に関数の使い方を説明します。

無題6

Functionsの『+』マークをクリックします。

無題7

Description→関数の説明
Category→カテゴリ
Keywords→キーワード
Compact Node Title→演算子のオーバーロードのような使い方が出来る例『+=』といれる
Access Specifier→Public、Protected、Privateを設定する
Pure→チェックを付けると純粋関数になる
Const→チェックを付けるとconst関数になる

Inputsで引数、Outputsで戻り値の設定が出来ます。
Pass-by-Referenceにチェックを入れると参照渡しになります。

例としてスコアのGet関数を作ってみましょう!

無題8

cocos2d-xで書くと、

int GetScore2() const { return Score };

となります。

基本的な説明となりますが以上となります。

各親クラスを継承したクラスで何のノードが使えるかの説明は、
ノードの量が膨大すぎて説明出来ませんので各自で調べながらゲームを作ってみましょう!

UE4でのAIの活用について

UE4ではブループリントのほかにBehaviorTree(ビヘイビアツリー)というものがあります。
このビヘイビアーツリーはAIの開発に特化していて、プレイヤーを追う追跡のAIやプレイヤーを見つけるまではステージを回る巡回のAIなどがあります。
今回は単純にプレイヤーを追う追跡のAIの作りかたおよび解説をしていきたいと思います。

まずはUE4でThirdPersonで新規プロジェクトの作成を行います。

追跡のAIで作るもの
・AI_Character ・・・ AIを実装するキャラクター
・AI_BehaviorTree ・・・ AIを実装するビヘイビアツリー
・AI_Track・・・追跡を実装するタスク
・AI_Controller・・・AI用のコントローラー

1.ブループリントクラスからAI用のキャラクターを作成する
キャラクターのMesh、Animationを自分好みに設定する。

2.ビヘイビアツリーを作成する
素材03
コンテンツブラウザー上で右クリック、「Artificial Intelligence」から「Behavior Tree」を選択する。
わかりやすいように「AI_BehaviorTree」などに変更しておくとよい。

3.Taskを作成する
素材04
先ほど作った「AI_BehaviorTree」を開き、ウィンドウの左上の「New Task」を選択する。
Taskを「AI_Track」という名前に変更しておく。

4.追跡するTaskを作成する
素材05
画像のようにノード同士をつなげる。
ここではAIのコントローラーを取得し、「Get PlayerPawn」で取得したPlayerPawnの位置まで移動させるということをしています。

5.ビヘイビアツリーを編集する
素材06
「Selecter」と先ほど作った「AI_Track」を作り画像のようにつなぐ。

6.AIControllerを作成する
素材07
コンテンツブラウザー上で右クリック、「Blueprint Class」を選択する。
ウィンドウ上の検索バーで「AIController」で検索し作成する。
「AI_Controller」という名前に変更しておく。
素材11
キャラクターのMesh、Animationを設定した後、画像のPawn部分のAI Controller Classを先ほど作った「AI_Controller」に設定します。

7.AIControllerの編集
素材08
画像のように「Event Tick」と「Run Behavior Tree」を作成しつなげます。
「Run Behavior Tree」の「BTAsset」で作成した「AI_Behaviortree」を選択します。

8.フィールド上の編集
素材09
画像の左側のクラスの検索バーで「Nav Mesh Bounds Volume」を検索しフィールドに出す。
画面左上にある「Show」をクリックし、「Navigation」のチェックに入れると、先ほど作ったMeshに入っているボックスの上に緑のエリアが表示されます。
これはAIが歩くことのできる範囲で、この中に追跡対象のキャラクターがいれば常についていくことができる。

素材10
このようにフィールド全体を囲う。

実行すると操作キャラクターについていくようになる。

独自のアセットをインポートする part3

コリジョンをつける

スタティックメッシュにコリジョンをつけるには、mayaなど3Dツールでつけるコリジョン形状を一緒にインポートする方法と、アンリアルで自動生成を使って設定する方法があります。

スタティックメッシュエディタ

初めに、コリジョンを確認する方法を解説します。すでに何度も使用しましたが、コンテンツブラザ上でスタティックメッシュアセットをダブルクリックすると、スタティックメッシュエディタが開き、一つのアセットを詳細に閲覧編集することができます。

メニューバー:一般的なウィンドウアプリケーションのメニューバーです、コリジョンを設定したり、削除しする機能はここからアクセスすることができます。

ツールバー:ここは、ビューオプションの切り替えボタンがあります。有効になったボタンはオレンジ色、クリックすると有効/無効の切り替えができます。

ビューポート:プレビューのためのビューポートです、レベルエディタの3Dビューと同じ操作で使います。

詳細パネル:レベルエディタの「詳細」パネルと同く、スタティックメッシュの詳細設定をここで設定できる。

シンプルなコリジョンを追加

まずスタティックメッシュエディタを開き、ツールバーで「コリジョン」ボタンをクリックし、コリジョンの表示をまずオンにする。

次はメニューバーで「コリジョン」ー>「ボックス単純化コリジョンを追加」を選んで。

ビューポートのメッシュのまわりはワイヤーフレームが追加されるはずです。このワイヤーフレームがコリジョンの形状を表しています。