僕の私のUnrealな日々

UE4のBluePrintを使って小さなギミックを作ったりしてます。ブログを通じて情報共有ができたらなと思います。

【概要編】ホラーゲーム「真砂楼」発売しました。

恥ずかしながら戻ってまいりました。

数年ぶりの更新となります。

 

ひっそりとインディーでゲームを作っておりました。

f:id:Bussan_dayo:20210403183221p:plain

 

youtu.be

 

 

store.steampowered.com

買ってください。 (現在超絶最強の賛否両論の評価)

ゲーム内のラジオは自分なので声優としてもデビュー作だから買ってね。

 

ゲームの設計や仕組みなどに更新していこうとは思っていますが、やるやる詐欺が多いブログなのでやるかわかりません。

またゲーム実装に関しては特に難しいことをしなかったプロジェクトなので特筆して書くこともないです。(SteamAudioとか最適化は自分担当じゃないからわからない)

(ギミック系をモーションではなくシーケンサーで完結させたのはちょっと特殊かも・・・

トレーラーに関しては絵コンテ書いてそこから字幕含めシーケンサーで作ったのもちょっと特殊かも・・・)

 

開発体制

ディレクター、背景、ゲームデザインのあかたねさん

twitter.com

 

プログラム、ゲームデザインの自分

twitter.com

サウンド、最適化のTekktekkさん

twitter.com

がメインで開発を進めておりました。

 

開発期間は1年 基本土日作業

となります。

 

プロジェクトの方針としてとにかくリリースさせることだったのでどれだけ最短でゲームを完成させられるかをメインの指標として掲げました。

 

UE4に関して

UE4は素のエンジンを使用しています。エンジンに手を入れるとバージョンアップの作業工数が発生するためやらない事は最初決めていました。

そのため立案の段階でUE4が不得意とすることはやらなず(そもそも不得意なことをさせる時点でおかしい)UE4に優しい仕様に合わせる形にしました。

 

5年もUE4触ってると得意なことと不得意なことは瞬時に見抜ける特殊能力を得れるものですね・・・。

 

実装に関して

プロジェクトに関しては全てBlueprintで作成しています。

理由としましては

UEC++の恩恵が受けたとしてもゲームの質が上がるジャンルではない

・土日作業になるためNullアクセスでエディタークラッシュして他の人が作業が出来なくなるリスクを減らす

・BPにすることで何か大量の修正を行う事が発生した場合に作業を分散できる

などUEC++のメリットよりデメリットのほうが大きくなってしまったためとなります。

アクションゲーム以外の大規模プロジェクトだとシステムはC++、ロジックはBPであるべきですが少人数なので保守の観点でもBPのみで完結させる形としました。

(95%BPのゲームをコンシューマーで出した経験があるので特に不安はありませんでした。)

 

このゲームはローカライズに対応しており、ゲームの初回起動時にSteamクライアントにアクセスして言語を取得する必要がありましたがマーケットプレイスにBP化したプラグインがあったので金で解決しました。

 

 

書くの疲れてきたのでこのあたりにしますが、今回ゲームを出すに当たり様々な仮説を立てて勧めていたのでいつかその結果も共有できればと思います。

 

 後多分SteamAudioや最適化系は結構知見が溜まったのでTekkTekkさんがブログでまとめると思うのでそちらを見てください(自分もよくわかってない)

 

個人的な話

個人的に嬉しかったのは

・20代の目標だったインディーでゲーム発売を達成出来たこと。

・トレーラーの評判が良かったこと。

・自作の曲をゲーム内に入れられたこと。

・沢山の人が配信、実況してくれたこと。

RTAやってくれたこと

など色々と数え切れません。

 

soundcloud.com

 

この一年土日削ってゲーム作ってよかったなぁとしみじみ思います(高校の同級生から結婚報告きたときは何やってるんだろ・・・と思いましたが!!!)

みなさんもゲーム作りましょ!!

 

ではさよなら~!

自分用記事一覧

 

2018年 8月

過去記事書きなおします。

時が経ち今のルールに則ってない処理方法の修正及びバージョンアップによって意味のなくなった記事の削除を行います。

古い記事からメスを入れていきます。週一で。

あとドロンジョに踏まれる記事は必ず消します...

必ず....

 

 

物忘れが激しい自分が見やすいように作った記事一覧です。

宣伝です。

第4回ぷちコンで3位をいただきました。

[UE4] 第4回UE4ぷちコン、最優秀賞作品発表! | historia Inc - 株式会社ヒストリア

 

受賞したゲームの実行ファイルです!

unrealbussan.hatenablog.com

 

是非遊んでみてください!

 

2015年に作ったギミックたち - 僕の私のUnrealな日々

 

 

チュートリアル的な奴

UE4:Eventノードを使った簡単なBluePrintの作り方

色々あって悲しくなった記事です。

 

実装編

Widget

 ・タイトル画面でのボタンの設置について

ポーズ画面の作り方

 

VR

Oculusを使ってMMDに壁ドンしてもらう方法

簡単なOculus(VR)用のメインメニューの作り方

UE4+VR:画面の中心とオブジェクト(アクター)が重なった時にイベントを発生させるブループリントについて 

 

Player側の実装系

一人称と三人称の切り替えのBluePrintの作り方 (New:画像を入れ替えたためノードが少し見やすくなりました。)

カメラを動かした一人称と三人称の切り替えの実装について 

アサルトライフルのブループリントの実装について 

アクターへのターゲットのロックオンのブループリントの実装について 

リロードなどのステートマシンを使用しないアニメーションの実装について 

プレイヤーのKey入力を取得するActorの簡易的な実装

 

スローモーションの実装について

走ってくるゴブリンに物理シミュレートを使って転ばせる方法

 

サウンド系

サウンドの音量とピッチをBluePrintで上げ下げする

 

ギミック系

Gateを使った手動扉の実装について

アクターをマウスを使って回転させる 

ジップラインのブループリントの実装について 

ターザン(ぽい)ギミックを実装する。

 

被破壊メッシュ系

被破壊メッシュを使用してアサルトライフルで壁を壊す。

 

その他

レベルブループリントを用いないカメラの切り替えについて

キャラクターを変えた簡単なローカルマルチの実装について

構造体 実装メモ

メモ:NavMeshを動的にする 

コナミコマンドなどのコマンド入力の実装

:BoxCollisionのスケールをLineTraceでHitしたLocationまで伸ばすBPについて

 

マテリアル系

アクターのフェードアウトの実装について 

ギャグアニメによく使われるフェードアウトの作成 

オブジェクトのアウトラインをM_Highlightを使って光らせる。

 

配布物

:電子ロック 配布あり

TheForestっぽいクラフトのギミックのマクロの配布と使い方

 

BluePrint研究(気になったノードを調べる奴)

Random Point in Bounding Box メモ 

マテリアル研究

水に覆われてる球体について

マテリアル:Rotatorを使用してテクスチャを回転させる時に四隅に出てくる部分を消す 

その他

UE4:アセット購入時に使用できないネット専用クレカについて 々

UE4:アニメーションシーケンスでのNiagaraエフェクトの再生方法

 f:id:Bussan_dayo:20181124183629p:plain

 

お疲れ様です。

 

現在Chaos of warという変なゲームを作成中です。

 

このプロジェクトではカスケードそしてNiagaraを使用しています。

 

まだアーリーアクセスなのか、カスケードのようにアニメーションシーケンスでエフェクトを設定して確認する及びアタッチ機能がありません・・・。

 

f:id:Bussan_dayo:20181124172942p:plain

 

 

f:id:Bussan_dayo:20181124173027p:plain

 

そのため通知BPにてこの機能を補完することにしました。

f:id:Bussan_dayo:20181124183710p:plain

 

エフェクト提供:@torisutamoyasitwitter.com

 

まず通知BPの特性を説明します。

通知BPはサウンドやエフェクトをアニメーションシーケンス内にて発生及びスポーンさせることが可能です。

 

続きを読む

UE4:WheeledVehicleを用いたアクターへの乗車処理

 

f:id:Bussan_dayo:20181111175113p:plain

 

どうもです。

 

製作中のゲームで車への乗車処理を作成しました。

 

 

 簡易的な作成方法をまとめようと思います。

(マルチだとカメラカクつきが出たため処理を変えました。)

 

 

(手が上がっているのは気にしないで・・・・)

 

仕様

車に近づいて"E"を押すと車に乗れる

車に乗っている状態でEを押すと戻る

 

使用するもの

Vehicleテンプレート

ThirdPersonCharacterテンプレート

 

 

構成としてはコントローラー側で入力処理を行う。

BaseCharacterを作成しThirdPersonCharacterとDriverCharacterに継承させる。

カメラ処理はBaseCharacterで行う。

 

 

エンジンを起動しVehicleテンプレートを選択します。

f:id:Bussan_dayo:20181108165248p:plain

 

マップに配置されているSedanを選択し、詳細のInputからAutoReceiveinputをDisabledにします。

f:id:Bussan_dayo:20181108170303p:plain

 

続きを読む

UE4:新・簡単なOculus(VR)用のメインメニューの作り方(複数対応編 2018年バージョン)

この記事の複数対応についてTwitterのDMにて質問を受けましたので記事にしました。

UE4:簡単なOculus(VR)用のメインメニューの作り方 - 僕の私のUnrealな日々

 

 

 

BarWIDのコンポーネントプログレスとテキストを起きます。

 

 

 

アンカーは中央に設定してください

f:id:Bussan_dayo:20180826171238p:plain

 

コンポーネントをボックスコリジョンを親にして、子にWidgetを設定してください。

Widgetには先程作成したBarWIDを設定します。

f:id:Bussan_dayo:20180826171339p:plain

BoxのコリジョンをAllBlockに。WidgetをNoCollisionに設定してください

 

BarWID

BarWIDにてパーセントを設定する関数、Textにセットする関数を作成しました。

f:id:Bussan_dayo:20180826171551p:plain

f:id:Bussan_dayo:20180826171614p:plain

 

バインドを作成しテキストに設定を行いました。

f:id:Bussan_dayo:20180826171657p:plain

f:id:Bussan_dayo:20180826171715p:plain

 

LoadBarBP

タイムラインを作成しました。

f:id:Bussan_dayo:20180826171834p:plain

 

5秒間で1になるようなものです。プログレスバーの時間を変更する場合はここの時間の設定を変えてください。 

f:id:Bussan_dayo:20180826171847p:plain

 

 IsLoadingというBoolの変数を作成しました。EventLoadingに処理が走った際、Falseだったらタイムラインの処理が、EventStopLoadingの処理の際はTrueだった場合にタイムラインの処理が入るようにしました。

f:id:Bussan_dayo:20180826172005p:plain

 

処理終了後はOpenLevelを呼んでいます。Name型の変数を作って接続しています。

この変数は編集可能にしてください。

f:id:Bussan_dayo:20180826173808p:plain

 

 

 

ThirdPersonCharacter

 TickからLineTraceの処理を呼んでいます。これはカメラから1000離れた所までトレースを出すといったものです。HitActorにLoadBarBPをキャストで他のBPにあたった時の処理を弾いています。f:id:Bussan_dayo:20180826172154p:plain

 

LoadBPというLoadBarBP型の変数を作成し、変数がNullだった場合変数に入れEventLoadingを呼び出します。また、Traceに失敗知ている場合及びLoadBarBP型ではなかった場合、EventStopLoadingを呼び出し変数を空にします。 

 

f:id:Bussan_dayo:20180826173652p:plain

 

 レベルに配置し、作成した変数OpenLevelにレベル名を入れます。

f:id:Bussan_dayo:20180826173913p:plain

 

 Loadのバーのテキストにレベル名を入れたいのでBeginPlayでSetName関数にOpenLevelを入れます。

f:id:Bussan_dayo:20180826174025p:plain

 

 以上

 

Chaos of War:2月3月の進捗

 

f:id:Bussan_dayo:20180323204031p:plain

 

どうもです。 引き続き作っています。

 

WebPageを作成しました。

www.chaosofwar.com

 

3Dモデル、アニメーション担当が1人増え、5人になりました。 

 

 この2ヶ月で実装したものは以下の通りです。

サウンドの導入

エフェクト及び銃での攻撃のネットワークテスト

仮ゲームルールの追加

その他いろいろ

 

サウンドSEの導入

通常SpawnSoundAtLocationノードを使用してサウンドを再生するのですが、マルチになるとこれがめんどくさい。そこで色々と検証した結果、サウンドSEのみのBPを作成しました。

f:id:Bussan_dayo:20180323195528p:plain

 

続きを読む

UE4:リッスンサーバーでの通知BPの挙動~足音編~

 

 

最近サウンドを入れ始めました。

 

で、足音をいれるため通知BPを作成し、音を鳴らすことに。

f:id:Bussan_dayo:20180218120354p:plain

 

f:id:Bussan_dayo:20180218121848p:plain

 

 

すると、音が複数回なることに気づく。クライアントを3人で行うとクライアントで歩いた際に4重になって音が聞こえる。

 

調べて見るとデディケートサーバーだとうまくいくらしい。

 

困っているとそこに

 

 

 

てことで相談すると、

アニメーション通知はマルチキャストと同じ挙動になるとおもうので、クライアントからサーバーで実行してレプリケートの仕組みを作るか、各々のローカルだけで再生するための通知を出すかを振り分けたら解決するはずです

 

 なるほど・・・・。

 

続きを読む