2018年8月31日金曜日

CEDEC2018レポート【SINoALICE -シノアリス-におけるUnity活用術】

セッション詳細
CEDEC2018 SINoALICE -シノアリス-におけるUnity活用術
資料
CEDil

目次


SINoALICE -シノアリス-とは

Wikipediaより引用。
『シノアリス』は、スクウェア・エニックスとポケラボが共同で企画・運営をしているスマートフォン向けゲームアプリ。2017年6月6日からサービスを開始しており、基本プレイ無料のアイテム課金制となっている。キャッチコピーは「それは最悪の『物語』」。
ちなみに僕は未プレイ。
今回はUnityで大規模ゲームを開発をした際に発生する問題とその解決方法についての講演となる。

活用術①マルチ・シーン・エディティング

Unityのここが凄い!

  • 開発速度がとても早い
    実際、SINoALICEのプロトタイプは1ヶ月程度で作ったらしい。スゴーイ!

Unityのここがだめ!

  • 同時に同じシーンを編集できない
    複数人でUnityでゲーム開発をした人なら誰にでも、シーンの編集がコンフリクトし作業が無駄になってしまった経験あると思う。それは仕方がないことということで僕は諦めていた。
    しかしSINoALICEのような大規模なプロジェクトとなると、1シーン1人しか編集できないとすると大変効率が悪い。

シーンを分割しよう

上記の問題はUnityのマルチ・シーン・エディティングという機能で解決したそう。 一体どういうものか、テラシュールブログさんを見てみよう。
【Unity】5.3に追加されたマルチ・シーン・エディティングで出来る事
マルチシーンエディティング(Multi Scene Editing)はUnity 5.3から入った機能で、複数のシーンを同時の編集する機能です。
そんな機能あったのか…。
これによりシーンを分割し複数人でいじることができる。みんな幸せ。
SINoALICEでは
  • フィールドシーン
  • UIシーン
  • ロジックシーン
と言った構成等で分割したとのこと。他にも色々と応用できそうですね。

活用術②ExecuteEvents.Execute

前提としてSINoALICEではUIとロジックを役割分担している。別れているのは珍しくないし、予算的に許されるならそれがいい。

2つのボタンで作業も2倍だな

いやそれはおかしい。
OnClickを使ってボタンにイベントリストを登録する場合、イベントリストの登録をロジックエンジニアが、ボタンの配置をUIエンジニアが担当し、両方に作業が発生してしまう。
これを何回も往復するとさぁ大変。仕様変更は何度でもやってくるぞ。

UI変更はViewだけで完結するのが理想

そこで登場するのがExecuteEvents!
例によってテラシュールブログさんを参照します。
SendMessageに変わる新しいメッセージシステム、ExecuteEvents.Execute
この機能は、特定のインターフェースを持つコンポーネントを一括で操作する機能を有しています。要するに文字列ではなくインターフェースでメソッドを呼び出すSendMessageみたいなものです。
🤔🤔🤔
SendMessageが便利になったやつ。多分。
うまく説明できないからテラシュールブログと資料見て…。
これを使うとイベント受信側は送信側を加味しないという設計ができ、Viewの修正はUIエンジニアで完結しやすくなったとさ。
めでたしめでたし。

活用術③FSM(ステートマシン)

その戦いは混沌を極めていた

SINoALICEでは
  • 蘇生モード
  • フィールドモード
  • ギルドシップモード
といった複数の状態を持つゲームコアがある。上の例はコロシアム。
その場しのぎの処理を重ねた結果か、その遷移はカオス。資料のパワーポイントを見ればわかる。まじでやばい。

もうマジ無理。ステートマシン使お…。

ステートマシンとは状態によって遷移する概念的なやつ。
Unityで3Dキャラを扱った人ならアニメーションステートマシンを見たことがあるはず。
SINoALICEではArborというアセットを利用して疎結合な実装にリファクタできたそう。 更にゲーム中の状態が一目で理解しやすくなったからデバッグも用意になったらしい。

まとめ

開発チームをスケールした時に柔軟に対応できるように疎結合な実装にしようって話だった。設計段階で間違えると直すのも大変!
登壇者の加茂 雄吾さん、ありがとうございました。

0 件のコメント:

コメントを投稿