Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ゲーム開発で UE を使い始めた初級者の経験談が聞こえてくる25分間【MIXI TECH CONFERENCE 2023】

ゲーム開発で UE を使い始めた初級者の経験談が聞こえてくる25分間【MIXI TECH CONFERENCE 2023】

MIXI TECH CONFERENCE 2023
にてお話した角の資料です。

動画:https://youtu.be/P-2mkbLZV4E
セッション詳細:https://techcon.mixi.co.jp/2023/d2-6

MIXI ENGINEERS

March 02, 2023
Tweet

Video

More Decks by MIXI ENGINEERS

Other Decks in Technology

Transcript

  1. ©MIXI 手短に教えて欲しい • クライアントエンジニア ◦ 主にインゲーム担当、アウトもやってた • モンストチームに5年以上所属していた ◦ 色々作ってました

    • 3Dゲーム制作の経験を積みたい ◦ 個人で Unreal Engine を触りはじめた • 業務レベルの力が欲しい ◦ 居心地の良い場所を離れて、冷たい風に触れよう 4
  2. ©MIXI 用途 • ゲーム • 映画&テレビ • 建築 • 自動車&輸送

    • 放送&ライブイベント • シミュレーション • (その他いろいろ) Unreal Engine とは? 7
  3. ©MIXI Unreal Engine とは? 触る前の所感 • とても美麗な3Dグラフィック、フォトリアル • 言語がC++ •

    オープンソース • 大規模タイトルでの採用事例が増えている • 基本無料 • 日本語のサンプルが少なめ • ちょっと扱うの難しそう‥‥ ◦ でも使いこなせたら強そう 8
  4. ©MIXI Asym Altered Axis • UEを採用した主な理由 ◦ オンラインに関する機能が標準サポート ◦ Gameplay

    Ability System ◦ 新しいことへの挑戦 • 社内にUEの知見はほぼゼロ ◦ よく会社が許した ◦ 特に角の場合、業務で扱うのは初 ◦ アドバイザー • 切磋琢磨 ◦ 調査や研究から始まる ◦ 実装しながら挙動確認 ◦ 知見の共有 12
  5. ©MIXI Integrated Development Environment (IDE) • Visual Studio (2019 →

    2022) ◦ 単体での使用は厳しい ▪ IntelliSenseが暴れる ▪ マクロの補間が出たり出なかったり • Visual Studio 拡張機能 ◦ UnrealVS ◦ ReSharper C++ ▪ VS起動時にだいぶ重くなる ◦ (Visual Assist) 13
  6. ©MIXI Integrated Development Environment (IDE) • Rider ◦ 一部のメンバーで試用中 ◦

    ReSharperが標準搭載 ▪ VSほど重くない ◦ UEとの親和性が高い ▪ UE独自のマクロもサポート ▪ BPでの使用箇所も教えてくれる ▪ Unreal Editor 側のログも出る ◦ マウスorキーボードのショートカットにVSとの違いがある ▪ 設定でなんともならない箇所もある • Visual Studio Code ◦ 未検証 14
  7. ©MIXI Version Control System (VCS) • Git LFS (Large File

    Storage) • Subversion (SVN) • Plastic SCM • Helix Core (Perforce) 15
  8. ©MIXI Blueprint 経験前 • コードを書かなくても挙動を実装できる ◦ エンジニアじゃなくても実装できる • 処理フローが目で追えるので分かりやすい ◦

    ビジュアルスクリプティングの良さ • ブレークポイントもある • 変数の中身も見れる • シンプルな処理を書くのに最適 • 挙動確認までのイテレーションが短い 18
  9. ©MIXI Blueprint 経験後 • 規模が大きくなるほどスパゲッティ化が急速に進む ◦ チームで開発するなら尚更 • 結局エンジニアが管理しないと最適化のコストは上がる •

    シンプルな処理を書くのに最適なのは間違いない • 挙動確認までのイテレーションが短い • BPだけでゲームを作れる ≠ 簡単 20
  10. ©MIXI C++ 経験後 • バージョンを気にする前に覚えることがいっぱい ◦ モジュール ◦ ディレクトリ構造 ◦

    ファイル名とクラス名 ◦ クラス名の接頭辞ルール ◦ デリゲート宣言 ◦ インターフェースの概念 ◦ 必須レベルのUE独自のマクロが沢山 ◦ etc… 23
  11. ©MIXI C++とBlueprint 経験後 • BPはイテレーションが短い、C++はランタイム処理が軽い • C++とBPのバランス迷子になる ◦ C++で実装した関数をBPで呼べる ◦

    C++で実装した関数をBPでoverrideできる ◦ C++で宣言だけした関数をBPで実装できる ◦ Latentな処理はBPに分がある ◦ ランタイム処理にはC++に分がある • Unreal Editor の起動が遅い ◦ 挙動確認までのイテレーションが長い(早くても1分以上かかる) ◦ Live Coding 機能である程度緩和 26
  12. ©MIXI 公式リファレンス • 無論、英語 • 残念ながら日本語訳は鵜呑みにできない ◦ 致命的な誤訳も少なくない • 実装例が少ない

    ◦ 機能の説明だけが多い 故に‥‥ • 必然的に英語を読む機会が多くなる • 能動的な研究、調査が必要 • 有志の日本語サイトもあるので活用する リファレンス関連 27
  13. ©MIXI 有料のサポートフォーラム • Epic Games の専門スタッフが回答してくれる • 解答の精度は高め 使ってみると •

    フォーラムサイトが激重 • (もちろん)回答までに時間がかかる ◦ 経験上、最初の返答までに最短2日、最長17日 ◦ その後にも解決まで複数回のやり取りが必要 • 自分で調べる以上のコストがかかることもある Unreal Developer Network (UDN) 28
  14. ©MIXI 経験後 • PRは既に1800件あるので、いつ採用されるか不明 ◦ 世界中の人が改善したい気持ちの表れでもある • Source Build 環境を用意しないとデバッグしづらい

    ◦ カスタムエンジン側を用意すべき時がやがて来る • UE側のコードは最適化されていて内部処理が見づらい ◦ 手間だが、最適化を抑制する方法はある • エンジン側の処理を追う力を求められる オープンソース 30
  15. ©MIXI Online Multiplayer 関連の機能 • Number of Players • Net

    Mode ◦ Play As Listen Server ◦ Play As Client 33
  16. ©MIXI Gameplay Ability System • 多岐に渡るアクションの切り分けに便利 • 特定のアクション中に他のアクションを開始したり、開始できなくしたり できる。 ◦

    しゃがみ中にジャンプさせない ◦ ノックバック中にジャンプさせない ◦ ジャンプ中にしゃがめない • キャラクターごとの特殊能力の実装フロー 35
  17. ©MIXI Gameplay Ability System 他にも • キャラクターが持つ各種パラメーターの管理 ◦ HP、MP、移動速度、ジャンプ力などなど ◦

    状態異常による値の一時的or恒久的な変動 • 近接武器や遠距離武器によるダメージ処理枠 • 火や氷などの特殊ダメージ処理枠 • VFXの生成 • etc… 何よりも • オンラインでのレプリケーションに対応している • 予測処理もしてくれる(一部は非対応) 36
  18. ©MIXI Gameplay Ability System • Gameplay Ability ◦ 攻撃、防御、ダッシュ、スプリント、隕石落とす‥‥などなど •

    Gameplay Effect ◦ ダメージ、ヒール、DoTダメージ、移動速度低下‥‥とか • Gameplay Cue ◦ パーティクルとかのVFX • Gameplay Tag ◦ 付けたり外したり • Attribute Set ◦ HP、MP、Staminaなどの値 37
  19. ©MIXI Gameplay Ability System 良いんじゃないか点 • ゼロからアクションシステムを構築しなくて済む • UE5の公式サンプル『Lyra』で積極的に使われている 思うところもある点

    • C++が使えないと利用できない • 開発途中からの導入、除外はとても大変(破壊的作業) • C++との配分迷子 • 新しめの機能なので、不備や不具合も少なくない • これらを鑑みても検討の余地有り 38
  20. ©MIXI 締め 現在の総合所感 • UEはやっぱり難しい、覚えることいっぱい • 非常に強力なポテンシャルを感じる • オープンソース •

    オンライン機能の標準サポート • Gameplay Ability System などの強力なツール • (リアルな表現に拘る必要は無い) • (3Dだけでなく2Dゲーム制作用の機能もある) 40