【概要編】ホラーゲーム「真砂楼」発売しました。
恥ずかしながら戻ってまいりました。
数年ぶりの更新となります。
ひっそりとインディーでゲームを作っておりました。
買ってください。 (現在超絶最強の賛否両論の評価)
ゲーム内のラジオは自分なので声優としてもデビュー作だから買ってね。
ゲームの設計や仕組みなどに更新していこうとは思っていますが、やるやる詐欺が多いブログなのでやるかわかりません。
またゲーム実装に関しては特に難しいことをしなかったプロジェクトなので特筆して書くこともないです。(SteamAudioとか最適化は自分担当じゃないからわからない)
(ギミック系をモーションではなくシーケンサーで完結させたのはちょっと特殊かも・・・
トレーラーに関しては絵コンテ書いてそこから字幕含めシーケンサーで作ったのもちょっと特殊かも・・・)
開発体制
ディレクター、背景、ゲームデザインのあかたねさん
プログラム、ゲームデザインの自分
サウンド、最適化のTekktekkさん
がメインで開発を進めておりました。
開発期間は1年 基本土日作業
となります。
プロジェクトの方針としてとにかくリリースさせることだったのでどれだけ最短でゲームを完成させられるかをメインの指標として掲げました。
UE4に関して
UE4は素のエンジンを使用しています。エンジンに手を入れるとバージョンアップの作業工数が発生するためやらない事は最初決めていました。
そのため立案の段階でUE4が不得意とすることはやらなず(そもそも不得意なことをさせる時点でおかしい)UE4に優しい仕様に合わせる形にしました。
5年もUE4触ってると得意なことと不得意なことは瞬時に見抜ける特殊能力を得れるものですね・・・。
実装に関して
プロジェクトに関しては全てBlueprintで作成しています。
理由としましては
・UEC++の恩恵が受けたとしてもゲームの質が上がるジャンルではない
・土日作業になるためNullアクセスでエディタークラッシュして他の人が作業が出来なくなるリスクを減らす
・BPにすることで何か大量の修正を行う事が発生した場合に作業を分散できる
などUEC++のメリットよりデメリットのほうが大きくなってしまったためとなります。
アクションゲーム以外の大規模プロジェクトだとシステムはC++、ロジックはBPであるべきですが少人数なので保守の観点でもBPのみで完結させる形としました。
(95%BPのゲームをコンシューマーで出した経験があるので特に不安はありませんでした。)
このゲームはローカライズに対応しており、ゲームの初回起動時にSteamクライアントにアクセスして言語を取得する必要がありましたがマーケットプレイスにBP化したプラグインがあったので金で解決しました。
書くの疲れてきたのでこのあたりにしますが、今回ゲームを出すに当たり様々な仮説を立てて勧めていたのでいつかその結果も共有できればと思います。
後多分SteamAudioや最適化系は結構知見が溜まったのでTekkTekkさんがブログでまとめると思うのでそちらを見てください(自分もよくわかってない)
個人的な話
個人的に嬉しかったのは
・20代の目標だったインディーでゲーム発売を達成出来たこと。
・トレーラーの評判が良かったこと。
・自作の曲をゲーム内に入れられたこと。
・沢山の人が配信、実況してくれたこと。
・RTAやってくれたこと
など色々と数え切れません。
この一年土日削ってゲーム作ってよかったなぁとしみじみ思います(高校の同級生から結婚報告きたときは何やってるんだろ・・・と思いましたが!!!)
みなさんもゲーム作りましょ!!
ではさよなら~!
自分用記事一覧
2018年 8月
過去記事書きなおします。
時が経ち今のルールに則ってない処理方法の修正及びバージョンアップによって意味のなくなった記事の削除を行います。
古い記事からメスを入れていきます。週一で。
あとドロンジョに踏まれる記事は必ず消します...
必ず....
物忘れが激しい自分が見やすいように作った記事一覧です。
宣伝です。
第4回ぷちコンで3位をいただきました。
[UE4] 第4回UE4ぷちコン、最優秀賞作品発表! | historia Inc - 株式会社ヒストリア
受賞したゲームの実行ファイルです!
是非遊んでみてください!
2015年に作ったギミックたち - 僕の私のUnrealな日々
チュートリアル的な奴
UE4:Eventノードを使った簡単なBluePrintの作り方
色々あって悲しくなった記事です。
実装編
VR系
・UE4+VR:画面の中心とオブジェクト(アクター)が重なった時にイベントを発生させるブループリントについて
Player側の実装系
・一人称と三人称の切り替えのBluePrintの作り方 (New:画像を入れ替えたためノードが少し見やすくなりました。)
・アクターへのターゲットのロックオンのブループリントの実装について
・リロードなどのステートマシンを使用しないアニメーションの実装について
サウンド系
ギミック系
被破壊メッシュ系
その他
・:BoxCollisionのスケールをLineTraceでHitしたLocationまで伸ばすBPについて
・オブジェクトのアウトラインをM_Highlightを使って光らせる。
配布物
・TheForestっぽいクラフトのギミックのマクロの配布と使い方
BluePrint研究(気になったノードを調べる奴)
Random Point in Bounding Box メモ
マテリアル研究
マテリアル:Rotatorを使用してテクスチャを回転させる時に四隅に出てくる部分を消す
その他
UE4:アニメーションシーケンスでのNiagaraエフェクトの再生方法
お疲れ様です。
現在Chaos of warという変なゲームを作成中です。
Chaos of warというマルチプレイゲームを開発してます。
— ぶっさん (@Bussan_desu) 2018年9月30日
武器、魔法、特殊能力、クラフトなどの要素が入った対戦・協力ゲームです。
協力者を探してますので興味ある方は是非。#UE4https://t.co/C7V4QWo0vLhttps://t.co/IBO7HJts5j
このプロジェクトではカスケードそしてNiagaraを使用しています。
まだアーリーアクセスなのか、カスケードのようにアニメーションシーケンスでエフェクトを設定して確認する及びアタッチ機能がありません・・・。
そのため通知BPにてこの機能を補完することにしました。
エフェクト提供:@torisutamoyasitwitter.com
まず通知BPの特性を説明します。
通知BPはサウンドやエフェクトをアニメーションシーケンス内にて発生及びスポーンさせることが可能です。
続きを読む
UE4:WheeledVehicleを用いたアクターへの乗車処理
どうもです。
製作中のゲームで車への乗車処理を作成しました。
バイクにエンジン音とカーステレオが入りました。音楽を鳴らす意味は・・・。あんまりないかもしれません。 #UE4 pic.twitter.com/fj4lWdkHub
— ぶっさん (@Bussan_desu) 2018年10月28日
マルチでの複数人で乗車可能なクルマが出来た~。処理的に4人乗りまで行けるはず(PC足りなくて出来てない。 #UE4 pic.twitter.com/rgYY8LpbVY
— ぶっさん (@Bussan_desu) 2018年11月4日
簡易的な作成方法をまとめようと思います。
(マルチだとカメラカクつきが出たため処理を変えました。)
— ぶっさん (@Bussan_desu) 2018年11月11日
(手が上がっているのは気にしないで・・・・)
仕様
車に近づいて"E"を押すと車に乗れる
車に乗っている状態でEを押すと戻る
使用するもの
Vehicleテンプレート
ThirdPersonCharacterテンプレート
構成としてはコントローラー側で入力処理を行う。
BaseCharacterを作成しThirdPersonCharacterとDriverCharacterに継承させる。
カメラ処理はBaseCharacterで行う。
エンジンを起動しVehicleテンプレートを選択します。
マップに配置されているSedanを選択し、詳細のInputからAutoReceiveinputをDisabledにします。
続きを読む
UE4:新・簡単なOculus(VR)用のメインメニューの作り方(複数対応編 2018年バージョン)
この記事の複数対応についてTwitterのDMにて質問を受けましたので記事にしました。
UE4:簡単なOculus(VR)用のメインメニューの作り方 - 僕の私のUnrealな日々
BarWIDのコンポーネントにプログレスとテキストを起きます。
アンカーは中央に設定してください
コンポーネントをボックスコリジョンを親にして、子にWidgetを設定してください。
Widgetには先程作成したBarWIDを設定します。
BoxのコリジョンをAllBlockに。WidgetをNoCollisionに設定してください
BarWID
BarWIDにてパーセントを設定する関数、Textにセットする関数を作成しました。
バインドを作成しテキストに設定を行いました。
LoadBarBP
タイムラインを作成しました。
5秒間で1になるようなものです。プログレスバーの時間を変更する場合はここの時間の設定を変えてください。
IsLoadingというBoolの変数を作成しました。EventLoadingに処理が走った際、Falseだったらタイムラインの処理が、EventStopLoadingの処理の際はTrueだった場合にタイムラインの処理が入るようにしました。
処理終了後はOpenLevelを呼んでいます。Name型の変数を作って接続しています。
この変数は編集可能にしてください。
ThirdPersonCharacter
TickからLineTraceの処理を呼んでいます。これはカメラから1000離れた所までトレースを出すといったものです。HitActorにLoadBarBPをキャストで他のBPにあたった時の処理を弾いています。
LoadBPというLoadBarBP型の変数を作成し、変数がNullだった場合変数に入れEventLoadingを呼び出します。また、Traceに失敗知ている場合及びLoadBarBP型ではなかった場合、EventStopLoadingを呼び出し変数を空にします。
レベルに配置し、作成した変数OpenLevelにレベル名を入れます。
Loadのバーのテキストにレベル名を入れたいのでBeginPlayでSetName関数にOpenLevelを入れます。
以上
Chaos of War:2月3月の進捗
どうもです。 引き続き作っています。
何でもありの複数人対戦ゲーム作りたくなったので作ってるよ。ステージにある武器や魔法スキルや素材を拾って銃乱射したり魔法使ったりクラフトしたりするよ。最終的には召喚獣とか出すよ。一緒に開発してくれる人募集してます。よろしくね。 #UE4 https://t.co/C7V4QWo0vL
— ぶっさん (@Bussan_desu) 2018年3月10日
WebPageを作成しました。
3Dモデル、アニメーション担当が1人増え、5人になりました。
この2ヶ月で実装したものは以下の通りです。
サウンドの導入
エフェクト及び銃での攻撃のネットワークテスト
仮ゲームルールの追加
その他いろいろ
サウンドSEの導入
通常SpawnSoundAtLocationノードを使用してサウンドを再生するのですが、マルチになるとこれがめんどくさい。そこで色々と検証した結果、サウンドSEのみのBPを作成しました。
続きを読む
UE4:リッスンサーバーでの通知BPの挙動~足音編~
やっぱり何でもありの複数人対戦ゲーム作りたくなったので少しづつ作るよ。ステージにある武器や魔法スキルや素材を拾って銃乱射したり魔法使ったりクラフトしたりしたいね。召喚獣とか出したいね。協力してくれる人常に募集してるから助けてね。でもこれ結構しんどいね。
— ぶっさん (@Bussan_desu) 2017年8月16日
最近サウンドを入れ始めました。
攻撃エフェクトのマルチのテストを行ないました。サウンドも徐々に入っていい感じです!(作業者:@Bussan_desu(実装),@tekk_private (サウンド)) #UE4 #EpicFriday #ChaosOfWar pic.twitter.com/OqD3FMamoF
— DobullDogsStudio (@DDogsStudio) 2018年2月16日
で、足音をいれるため通知BPを作成し、音を鳴らすことに。
すると、音が複数回なることに気づく。クライアントを3人で行うとクライアントで歩いた際に4重になって音が聞こえる。
調べて見るとデディケートサーバーだとうまくいくらしい。
困っているとそこに
それはね、サーバーとクライアントで実行されるからだよ
— ゆういち (@nullpodesu) 2018年2月13日
なるほど。
— ゆういち (@nullpodesu) 2018年2月13日
問題の箇所を見せてもらえたらさくっとわかりそうな気がしますね。
てことで相談すると、
アニメーション通知はマルチキャストと同じ挙動になるとおもうので、クライアントからサーバーで実行してレプリケートの仕組みを作るか、各々のローカルだけで再生するための通知を出すかを振り分けたら解決するはずです
なるほど・・・・。
続きを読む