(右上のメニューからプレゼンテーション表示ができます)
(勉強会で殴り書きですので内容は精査しておりません。間違いが含まれている場合があります。ご指摘は歓迎です。)

今時のゲームエンジンが備えている機能ひとめぐり

2022/01/29 R&D Slack Study Group


今日のお題

今時のゲームエンジンのいくつか選んで、特徴や機能を見ていこう


商業ゲームエンジン(公に外販・無償提供しているもの)

  • Unreal Engine (UE4/UE5)
  • Unity
  • SpriteKit (Apple)

オープンソースライセンスではないが、制約付きでソース公開のものが増えてきた。


インハウスエンジン

商用だが、サードパーティへの販売や提供をしていないもの。企業グループ内や外注開発業者への共有はありうる。

  • Frostbite (EA)
  • SlipSpace Engine (Halo series)
  • RE Engine (Capcom)
  • IW engine (for Call of Duty by Infinity Ward)
  • Sledgehammer (for Call of Duty by Sledgehammer Games and Raven Software)
  • CryEngine (Crytek)
  • Snowdrop (Ubisoft)
  • Anvil (for Assassin's Creed by Ubisoft)

--

Bungie released Destiny1/2 series after Halo Trilogy
Destiny 1/2 uses Deferred Lighting.
Deferred Lighting split geometry + Lighting (accumulate) + Shading.

Deferred Lighting lacks specular PBR accuracy due to smith specular model depends on light directions.
(Multiple Light directions can not be saved on single light accumulation buffer. Main light direction only)


オープンソースなエンジン

  • Open 3D Engine (formerly Lumberyard)
  • Godot
  • Filament (Google)
  • The Forge

Web3Dエンジン(ライブラリ)

  • Babylon.js (aiming to Fullstack GameEngine?)
  • AFrame (for WebXR)
  • Three.js (currenty base of other high level libraries like AFrame)
  • PlayCanvas (Rival to Unity on Web?)
  • Cesium (Leading Web3D Engine for Geolocation)

ゲームエンジンの設計トレンド

ゲームオブジェクト設計

言語

  • C
  • C++
  • Rust
  • Lua

GPU/3DAPI

  • Multipass Rendering (PS2)
  • Vertex/Pixel Shader age / PBR (PS3)
  • Compute Shader / GI (PS4)
  • RayTracing (PS5)

Rendering Approach

  • Forward Rendering
  • Deferred Rendering
  • Forward+/++
  • RayTracing
  • GPU-driven (Indirect/Mesh Shader)
  • GI

GPUパイプラインとシェーダーが複雑化

昔はRendering Pipelineのみだった
いつの間にか2つも増えた。

  • Rendering Pipeline
  • Compute Pipeline
  • RayTracing Pipeline

Rendering Pipeline

Geometry Stage

Pixel Stage


Compute Pipeline

こちらはシンプル


RayTracing Pipeline

レイトレーシングは複雑な仕組みのため、ハードウェア実行で加速すべき箇所とプログラマにシェーダーで自由にやらせた方が良い箇所がそれぞれある。


Pipeline間の連携が手間がかかる

  • Rendering Pipeline
  • Compute Pipeline
  • RayTracing Pipeline