「バイキング流UEの使い方 僕のヒーローアカデミア One's Justice 制作事例」適当メモ

 適当メモなので正確性*1は保証しません^^;
あと発表ペースが速かったので、後半メモが力尽きました

# 10:00- 星と翼のパラドクス

登壇者紹介

  橘川 優樹 P
  奥井 健   IyasiP

来月11/21稼働

2レバー2ペダル、専用巨体
8人チーム16人対戦

開発   :30カ月
UE4Ver : 4.9.l1-4.16.3

???VRではないのか

低速移動は、移動方向と椅子の動作は同じ(振り回されている感じが出ないように、わざと
高速移動時のみ、逆方向に動く(Gを体感出来るように

** ue4を用いたキャラクター制作

AActor <- APawn <- **ACharacter**


** マルチプレイで問題




# 11.10- バイキング流「ヒロアカOJ」制作事例

登壇者紹介

  稲田 義信 PL
  瀬田 掃除 PGreat 背景、アニメーション、サウンド

アンリアルエンジン3タイトル目(マジシャン、パラドクス、僕アカで3つ?


製作期間: 14カ月
UE4Ver  : 4.15-4.18.3


PS4,NW(,XboxOne,Steam海外のみ)


販売ナムコ、開発バイキング


- TOC
  - キャラクタシステム
  - 背景の破壊と表示
  - アセットローカライゼイション

## キャラクタシステム

ゲームエンジンアーキテクチャを読んでも1Pでさっと流してる
情報が少ないので(15年作っているが分からんなんも)発表してみる

20体以上
量産出来るように多くを共通化
BPに変わるスクリプトシステム導入
即座に反映できるパラメータ設定機能の作成


キャラクタの個性(専用処理)


## キャラクタ、アクション、ステートマシン

1.通常アクション 待機、移動、ジャンプ、ガード、
2.攻撃アクション 敵にダメージ
3.ダメージアクション


上記3種類のカテゴリを遷移するステートマシンとして実装

  **特にダメージは重要**

  目的:相手を倒す
  方法:攻撃
  結果:ダメージ

  (ダメージは)正解に対するご褒美
  が、対戦ではジレンマ。
  対戦相手にとっては(ダメージは)褒美でなく罰なので
  拘束時間を納得してもらう必要。そのためにダメージアニメーションが重要に


 デクのダメージモーション
   攻撃を受ける、のけ反る、踏ん張る、体制を戻す、待機
                          ↑ここだとテンポ悪い
                                        ↑ので、ここで操作を受け付ける
              <-  スロー可能区間  ->

     アニメーションはそのままで、ダメージの拘束時間を調整
       スロー可能区間、AnimNotifyなどでStart<->End


UObject(UE) <- UActionBase <- UActionBattleBase 
                                                 <- ???UActionControlComponent???
                                                 <-
                                                 <-

## アクション、2つのコンポ―ネットに分離

分割理由、戦闘以外でも、アクションしたいので


 UActionControlComponent(これを差し替えると)
プレイヤーの入力、キャラクターの状態に応じて

  UActionDriveComponent
   キャラクタを実際に動かすため


## アクションの実装

C++
  良い
    デバッグしやすい、早い
  悪い
  コンパイル遅い


 スクリプトはLuaを使用

 テキストベースの言語が欲しい(去年のスクエニ、紙山さんも欲しいと言ってた

C++ 30%
 固定処理、まとまった機能
スクリプト70%
  処理フロー、パラメータ設定、アニメーション設定


共通処理とキャラクター専用処理
 1、通常、ほとんど共通(3キャラ、3アクションのみ専用アクション)
 2、攻撃、専用アクション
 3、ダメージ、共通

パラメータはJson形式
 問題:(プログラマ以外が弄るには)フォーマット厳しい

  通常パラメータはプランナーが弄るので、尾畑さん用Excelツールを作成

   Json -> Excel edit -> save -> Json


  リアルタイム


ActionParam.json
  移動、旋回性能
AttackParam.json
  
Damege.json


## 壁バトル

 壁と

UCharacterMovementComponentは使わず、UpawnMovementComponentを継承した独自クラスを使用

 −>
 −>(独自クラスのため)ACharacterも必然的に使用できない

垂直方向制御

・保管なしに、バシッと壁垂直に切り替える

最後にまとめ。

自由に使えるUE凄い(褒め
Epicさんの公式テキストスクリプト欲しいよ(願い


## 背景の破壊と表示

目標:
 派手に壊れる背景
 それでもゲームとして戦える


ロジックはC++,設定はBP(検証はBPがやっぱり早い)
 
A. 尾畑さん「背景は派手に壊して、でも処理は軽めで」

背景オブジェクト種類
 壊れるオブジェクト
  3種類
   物理モデル
   
 壊れないオブジェクト

物理モデル(DestructibleMesh
 長所
  簡単、リッチな表現
 短所
  重い、4.8.1でプラグインに(そのままフェードアウトする?

アニメーションモデル
 長所
  処理負荷低い(物理に比べて)
  Mayaの物理シミュを利用
 短所
  バリエーションが少なくメモリを圧迫

エフェクトモデル
 長所
  UE4のカスケードで作成
  ランダム性あり
 短所
  物理モデルに比べると単調
  破壊前の形状と会わない


Q. 破壊されるタイミング
A. 尾畑「キャラクタに振れれば破壊でいいのでは」

 破壊前(StaticMesh
 破壊時(3タイプ組み合わせ
  キャラクタの速度と衝撃度をかけた値と、ぶつかった位置

 破壊後(StaticMesh

尾畑「大きなオブジェクトが振れただけで壊れるのはおかしいのでは?」

 すぐこわれないオブジェクトも用意


地面や壁も派手に壊したい
 とりあえず、地面に壊れるパーツを敷き詰める
  処理負荷高い
   壁バトル(壁も壊す必要が

同じオブジェクトを一杯
 InstancedStaticMeshComponent使う

      Game   Draw    GPU
SM    40.5   188.3   93.0
ISM   15.1   3.5     21.1
HISM  14.0   ?       ?

ISM はLODできない
 HirerarchicalInstancedStaticMeshComponentを使う


TODO



破壊後の表示

  HISMを二重化

ゲームを遊んでみると

 尾畑「一回しか破壊出来ないのは物足りない」
  破壊後は変わらないけど、破壊エフェクトは何回でも発生



破壊時のエフェクト
  
  大きなものは複数個所設定したい(StaticMeshにSocketを追加



壁バトルについて

 キャラクタが壁バトル中であることを表現したい
  窓ガラス
    キャラクタが歩くだけで破壊
      窓ガラスが落ちる方向で、重力方向が分かる



背景オブジェクトについて
 ゲームの邪魔にならない用に
  カメラ位置は、1P2Pのキャラクタ位置より


  キャラクタに被ると半透明処理(半透明用のStaticMeshと切り替える
  
 遮蔽チェック
  複数判定の可能性
   LineTrace -> SphereTrace


  影が消える

*** このへんでメモの限界w=。

P.S.
メモが力尽きた以降は、以下togetter辺り等を参考に
https://togetter.com/li/1276894?page=8

エリアチェック

 ステージは

  デバッグはFreezeRendaring便利




アセットローカライゼイション

 ???なんか気付いてたら終わってたw=)

*1:誤字脱字は気にするな^^;