Submit Search
Upload
ゲームエンジンの中の話
•
Download as PPTX, PDF
•
77 likes
•
39,140 views
Masayoshi Kamai
Follow
モバイル・コンシューマ開発比較勉強会 #3
Read less
Read more
Entertainment & Humor
Report
Share
Report
Share
1 of 40
Download now
Recommended
RPGにおけるイベント駆動型の設計と実装
RPGにおけるイベント駆動型の設計と実装
Koji Morikawa
ゲームの仕様書を書こうまとめ
ゲームの仕様書を書こうまとめ
Sugimoto Chizuru
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
京大 マイコンクラブ
任天堂の呪いとナラティブについてバンナム編
任天堂の呪いとナラティブについてバンナム編
Kawamura Yasuhisa
オンラインで同期した100体の巨大生物から地球を衛る方法 UNREAL FEST EXTREME 2021 SUMMER
オンラインで同期した100体の巨大生物から地球を衛る方法 UNREAL FEST EXTREME 2021 SUMMER
エピック・ゲームズ・ジャパン Epic Games Japan
ゲーム仕様書の書き方 ~大久保磨編~ ver.1.2.0
ゲーム仕様書の書き方 ~大久保磨編~ ver.1.2.0
Osamu Ohkubo
Nintendo Switch『OCTOPATH TRAVELER』はこうして作られた
Nintendo Switch『OCTOPATH TRAVELER』はこうして作られた
エピック・ゲームズ・ジャパン Epic Games Japan
CEDEC 2020 - 高品質かつ低負荷な3Dライブを実現するシェーダー開発 ~『ラブライブ!スクールアイドルフェスティバル ALL STARS』(スク...
CEDEC 2020 - 高品質かつ低負荷な3Dライブを実現するシェーダー開発 ~『ラブライブ!スクールアイドルフェスティバル ALL STARS』(スク...
KLab Inc. / Tech
Recommended
RPGにおけるイベント駆動型の設計と実装
RPGにおけるイベント駆動型の設計と実装
Koji Morikawa
ゲームの仕様書を書こうまとめ
ゲームの仕様書を書こうまとめ
Sugimoto Chizuru
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
京大 マイコンクラブ
任天堂の呪いとナラティブについてバンナム編
任天堂の呪いとナラティブについてバンナム編
Kawamura Yasuhisa
オンラインで同期した100体の巨大生物から地球を衛る方法 UNREAL FEST EXTREME 2021 SUMMER
オンラインで同期した100体の巨大生物から地球を衛る方法 UNREAL FEST EXTREME 2021 SUMMER
エピック・ゲームズ・ジャパン Epic Games Japan
ゲーム仕様書の書き方 ~大久保磨編~ ver.1.2.0
ゲーム仕様書の書き方 ~大久保磨編~ ver.1.2.0
Osamu Ohkubo
Nintendo Switch『OCTOPATH TRAVELER』はこうして作られた
Nintendo Switch『OCTOPATH TRAVELER』はこうして作られた
エピック・ゲームズ・ジャパン Epic Games Japan
CEDEC 2020 - 高品質かつ低負荷な3Dライブを実現するシェーダー開発 ~『ラブライブ!スクールアイドルフェスティバル ALL STARS』(スク...
CEDEC 2020 - 高品質かつ低負荷な3Dライブを実現するシェーダー開発 ~『ラブライブ!スクールアイドルフェスティバル ALL STARS』(スク...
KLab Inc. / Tech
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
エピック・ゲームズ・ジャパン Epic Games Japan
コンシューマゲーム開発におけるHansoftの活用事例
コンシューマゲーム開発におけるHansoftの活用事例
Hiroyuki Tanaka
【Unity道場スペシャル 2017札幌】カッコいい文字を使おう、そうtext meshならね
【Unity道場スペシャル 2017札幌】カッコいい文字を使おう、そうtext meshならね
Unity Technologies Japan K.K.
日本一詳しい人が教えるUE4
日本一詳しい人が教えるUE4
エピック・ゲームズ・ジャパン Epic Games Japan
UniRxでMV(R)Pパターンをやってみた
UniRxでMV(R)Pパターンをやってみた
torisoup
UE4背景アーティスト勉強会(前編) 背景ワークフロー解説
UE4背景アーティスト勉強会(前編) 背景ワークフロー解説
Aiko Shinohara
ローカライズって何?(UE4 Localization Deep Dive)
ローカライズって何?(UE4 Localization Deep Dive)
エピック・ゲームズ・ジャパン Epic Games Japan
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
エピック・ゲームズ・ジャパン Epic Games Japan
Riderはいいぞ!
Riderはいいぞ!
UnityTechnologiesJapan002
プログラマが欲しい仕様書とは
プログラマが欲しい仕様書とは
Katsutoshi Makino
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫
Yuta Imai
UE4における大規模レベル実装ワークフローとブループリント活用事例
UE4における大規模レベル実装ワークフローとブループリント活用事例
エピック・ゲームズ・ジャパン Epic Games Japan
CEDEC2015「加算合成コストが0になる!?すぐに使えるP-MAPブレンドテクニック」発表スライド
CEDEC2015「加算合成コストが0になる!?すぐに使えるP-MAPブレンドテクニック」発表スライド
Toshiyasu Miyabe
ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用
ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用
Sugimoto Chizuru
実行時のために最適なデータ構造を作成しよう
実行時のために最適なデータ構造を作成しよう
Hiroki Omae
シェーダーを活用した3Dライブ演出のアップデート ~『ラブライブ!スクールアイドルフェスティバル ALL STARS』(スクスタ)の開発事例~
シェーダーを活用した3Dライブ演出のアップデート ~『ラブライブ!スクールアイドルフェスティバル ALL STARS』(スクスタ)の開発事例~
KLab Inc. / Tech
企画が考えるスマホUIデザイン
企画が考えるスマホUIデザイン
Katsumi Mizushima
UniTask入門
UniTask入門
torisoup
徹底解説!UE4を使ったモバイルゲーム開発におけるコンテンツアップデートの極意!
徹底解説!UE4を使ったモバイルゲーム開発におけるコンテンツアップデートの極意!
エピック・ゲームズ・ジャパン Epic Games Japan
UE4における大規模背景制作事例 最適化ワークフロー編
UE4における大規模背景制作事例 最適化ワークフロー編
エピック・ゲームズ・ジャパン Epic Games Japan
UnityでもTaskが使いたい!~MinimumAsyncBridgeの紹介~
UnityでもTaskが使いたい!~MinimumAsyncBridgeの紹介~
Shoichi Yasui
マジシャンズデッド ポストモーテム ~マテリアル編~ (株式会社Byking: 鈴木孝司様、成相真治様) #UE4DD
マジシャンズデッド ポストモーテム ~マテリアル編~ (株式会社Byking: 鈴木孝司様、成相真治様) #UE4DD
エピック・ゲームズ・ジャパン Epic Games Japan
More Related Content
What's hot
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
エピック・ゲームズ・ジャパン Epic Games Japan
コンシューマゲーム開発におけるHansoftの活用事例
コンシューマゲーム開発におけるHansoftの活用事例
Hiroyuki Tanaka
【Unity道場スペシャル 2017札幌】カッコいい文字を使おう、そうtext meshならね
【Unity道場スペシャル 2017札幌】カッコいい文字を使おう、そうtext meshならね
Unity Technologies Japan K.K.
日本一詳しい人が教えるUE4
日本一詳しい人が教えるUE4
エピック・ゲームズ・ジャパン Epic Games Japan
UniRxでMV(R)Pパターンをやってみた
UniRxでMV(R)Pパターンをやってみた
torisoup
UE4背景アーティスト勉強会(前編) 背景ワークフロー解説
UE4背景アーティスト勉強会(前編) 背景ワークフロー解説
Aiko Shinohara
ローカライズって何?(UE4 Localization Deep Dive)
ローカライズって何?(UE4 Localization Deep Dive)
エピック・ゲームズ・ジャパン Epic Games Japan
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
エピック・ゲームズ・ジャパン Epic Games Japan
Riderはいいぞ!
Riderはいいぞ!
UnityTechnologiesJapan002
プログラマが欲しい仕様書とは
プログラマが欲しい仕様書とは
Katsutoshi Makino
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫
Yuta Imai
UE4における大規模レベル実装ワークフローとブループリント活用事例
UE4における大規模レベル実装ワークフローとブループリント活用事例
エピック・ゲームズ・ジャパン Epic Games Japan
CEDEC2015「加算合成コストが0になる!?すぐに使えるP-MAPブレンドテクニック」発表スライド
CEDEC2015「加算合成コストが0になる!?すぐに使えるP-MAPブレンドテクニック」発表スライド
Toshiyasu Miyabe
ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用
ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用
Sugimoto Chizuru
実行時のために最適なデータ構造を作成しよう
実行時のために最適なデータ構造を作成しよう
Hiroki Omae
シェーダーを活用した3Dライブ演出のアップデート ~『ラブライブ!スクールアイドルフェスティバル ALL STARS』(スクスタ)の開発事例~
シェーダーを活用した3Dライブ演出のアップデート ~『ラブライブ!スクールアイドルフェスティバル ALL STARS』(スクスタ)の開発事例~
KLab Inc. / Tech
企画が考えるスマホUIデザイン
企画が考えるスマホUIデザイン
Katsumi Mizushima
UniTask入門
UniTask入門
torisoup
徹底解説!UE4を使ったモバイルゲーム開発におけるコンテンツアップデートの極意!
徹底解説!UE4を使ったモバイルゲーム開発におけるコンテンツアップデートの極意!
エピック・ゲームズ・ジャパン Epic Games Japan
UE4における大規模背景制作事例 最適化ワークフロー編
UE4における大規模背景制作事例 最適化ワークフロー編
エピック・ゲームズ・ジャパン Epic Games Japan
What's hot
(20)
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
コンシューマゲーム開発におけるHansoftの活用事例
コンシューマゲーム開発におけるHansoftの活用事例
【Unity道場スペシャル 2017札幌】カッコいい文字を使おう、そうtext meshならね
【Unity道場スペシャル 2017札幌】カッコいい文字を使おう、そうtext meshならね
日本一詳しい人が教えるUE4
日本一詳しい人が教えるUE4
UniRxでMV(R)Pパターンをやってみた
UniRxでMV(R)Pパターンをやってみた
UE4背景アーティスト勉強会(前編) 背景ワークフロー解説
UE4背景アーティスト勉強会(前編) 背景ワークフロー解説
ローカライズって何?(UE4 Localization Deep Dive)
ローカライズって何?(UE4 Localization Deep Dive)
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
Riderはいいぞ!
Riderはいいぞ!
プログラマが欲しい仕様書とは
プログラマが欲しい仕様書とは
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫
UE4における大規模レベル実装ワークフローとブループリント活用事例
UE4における大規模レベル実装ワークフローとブループリント活用事例
CEDEC2015「加算合成コストが0になる!?すぐに使えるP-MAPブレンドテクニック」発表スライド
CEDEC2015「加算合成コストが0になる!?すぐに使えるP-MAPブレンドテクニック」発表スライド
ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用
ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用
実行時のために最適なデータ構造を作成しよう
実行時のために最適なデータ構造を作成しよう
シェーダーを活用した3Dライブ演出のアップデート ~『ラブライブ!スクールアイドルフェスティバル ALL STARS』(スクスタ)の開発事例~
シェーダーを活用した3Dライブ演出のアップデート ~『ラブライブ!スクールアイドルフェスティバル ALL STARS』(スクスタ)の開発事例~
企画が考えるスマホUIデザイン
企画が考えるスマホUIデザイン
UniTask入門
UniTask入門
徹底解説!UE4を使ったモバイルゲーム開発におけるコンテンツアップデートの極意!
徹底解説!UE4を使ったモバイルゲーム開発におけるコンテンツアップデートの極意!
UE4における大規模背景制作事例 最適化ワークフロー編
UE4における大規模背景制作事例 最適化ワークフロー編
Viewers also liked
UnityでもTaskが使いたい!~MinimumAsyncBridgeの紹介~
UnityでもTaskが使いたい!~MinimumAsyncBridgeの紹介~
Shoichi Yasui
マジシャンズデッド ポストモーテム ~マテリアル編~ (株式会社Byking: 鈴木孝司様、成相真治様) #UE4DD
マジシャンズデッド ポストモーテム ~マテリアル編~ (株式会社Byking: 鈴木孝司様、成相真治様) #UE4DD
エピック・ゲームズ・ジャパン Epic Games Japan
大規模タイトルにおけるエフェクトマテリアル運用 (SQEX大阪: 林武尊様) #UE4DD
大規模タイトルにおけるエフェクトマテリアル運用 (SQEX大阪: 林武尊様) #UE4DD
エピック・ゲームズ・ジャパン Epic Games Japan
なぜなにリアルタイムレンダリング
なぜなにリアルタイムレンダリング
Satoshi Kodaira
マテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DD
マテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DD
エピック・ゲームズ・ジャパン Epic Games Japan
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術
Unity Technologies Japan K.K.
Viewers also liked
(6)
UnityでもTaskが使いたい!~MinimumAsyncBridgeの紹介~
UnityでもTaskが使いたい!~MinimumAsyncBridgeの紹介~
マジシャンズデッド ポストモーテム ~マテリアル編~ (株式会社Byking: 鈴木孝司様、成相真治様) #UE4DD
マジシャンズデッド ポストモーテム ~マテリアル編~ (株式会社Byking: 鈴木孝司様、成相真治様) #UE4DD
大規模タイトルにおけるエフェクトマテリアル運用 (SQEX大阪: 林武尊様) #UE4DD
大規模タイトルにおけるエフェクトマテリアル運用 (SQEX大阪: 林武尊様) #UE4DD
なぜなにリアルタイムレンダリング
なぜなにリアルタイムレンダリング
マテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DD
マテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DD
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術
Similar to ゲームエンジンの中の話
Unity * スマートフォン開発で学んだこと
Unity * スマートフォン開発で学んだこと
Katsutoshi Makino
Introduction of Unity ML-Agents
Introduction of Unity ML-Agents
Tomohiro Namba
誰でも今日から実践できるUnity x PlayFab(Demoパート)
誰でも今日から実践できるUnity x PlayFab(Demoパート)
YutoNishine
HTML と CSS の社内勉強会を主催した話
HTML と CSS の社内勉強会を主催した話
suno88
LogicFlow 実践編~LogicFlowでいろいろつくってみた ~
LogicFlow 実践編~LogicFlowでいろいろつくってみた ~
典子 松本
UnityでのLINQ活用例
UnityでのLINQ活用例
Ryota Murohoshi
ネットワーク分散型フレームワークConView
ネットワーク分散型フレームワークConView
Rakuten Group, Inc.
リアルタイムトレンド抽出飛び込み用
リアルタイムトレンド抽出飛び込み用
DMM.com
Unityでこんなことができる KLab×博多Tech塾
Unityでこんなことができる KLab×博多Tech塾
KLab Inc. / Tech
オンラインゲームのRails複数db戦略
オンラインゲームのRails複数db戦略
Yasutomo Uemori
インフラエンジニアのスキルパターンを作ってみた話
インフラエンジニアのスキルパターンを作ってみた話
Ken SASAKI
各種ゲームエンジンの紹介と利用について
各種ゲームエンジンの紹介と利用について
Katsutoshi Makino
hbstudy#6LTyuzorock
hbstudy#6LTyuzorock
yuzorock
ngCore engine for mobage platform
ngCore engine for mobage platform
Toru Yamaguchi
Android開発者とデザイナーの効率的な連携について
Android開発者とデザイナーの効率的な連携について
lychee .
【17-E-4】 未来はどこにいても誰にでも平等にある。 未来を創るのは自分自身だ。 ~SIerの中で生きるということ~
【17-E-4】 未来はどこにいても誰にでも平等にある。 未来を創るのは自分自身だ。 ~SIerの中で生きるということ~
Yoshitaka Kawashima
アプリエンジニアがサーバーサイドで最初に勉強するべきこと
アプリエンジニアがサーバーサイドで最初に勉強するべきこと
YutoNishine
「ディープラーニングでは、エコシステムが大切よ!」
「ディープラーニングでは、エコシステムが大切よ!」
Mr. Vengineer
もしSIerのエンジニアがSRE本を読んだら
もしSIerのエンジニアがSRE本を読んだら
Tomoki Ando
Adminとうまく共存するためのApex開発Tips
Adminとうまく共存するためのApex開発Tips
Takashi Hatamoto
Similar to ゲームエンジンの中の話
(20)
Unity * スマートフォン開発で学んだこと
Unity * スマートフォン開発で学んだこと
Introduction of Unity ML-Agents
Introduction of Unity ML-Agents
誰でも今日から実践できるUnity x PlayFab(Demoパート)
誰でも今日から実践できるUnity x PlayFab(Demoパート)
HTML と CSS の社内勉強会を主催した話
HTML と CSS の社内勉強会を主催した話
LogicFlow 実践編~LogicFlowでいろいろつくってみた ~
LogicFlow 実践編~LogicFlowでいろいろつくってみた ~
UnityでのLINQ活用例
UnityでのLINQ活用例
ネットワーク分散型フレームワークConView
ネットワーク分散型フレームワークConView
リアルタイムトレンド抽出飛び込み用
リアルタイムトレンド抽出飛び込み用
Unityでこんなことができる KLab×博多Tech塾
Unityでこんなことができる KLab×博多Tech塾
オンラインゲームのRails複数db戦略
オンラインゲームのRails複数db戦略
インフラエンジニアのスキルパターンを作ってみた話
インフラエンジニアのスキルパターンを作ってみた話
各種ゲームエンジンの紹介と利用について
各種ゲームエンジンの紹介と利用について
hbstudy#6LTyuzorock
hbstudy#6LTyuzorock
ngCore engine for mobage platform
ngCore engine for mobage platform
Android開発者とデザイナーの効率的な連携について
Android開発者とデザイナーの効率的な連携について
【17-E-4】 未来はどこにいても誰にでも平等にある。 未来を創るのは自分自身だ。 ~SIerの中で生きるということ~
【17-E-4】 未来はどこにいても誰にでも平等にある。 未来を創るのは自分自身だ。 ~SIerの中で生きるということ~
アプリエンジニアがサーバーサイドで最初に勉強するべきこと
アプリエンジニアがサーバーサイドで最初に勉強するべきこと
「ディープラーニングでは、エコシステムが大切よ!」
「ディープラーニングでは、エコシステムが大切よ!」
もしSIerのエンジニアがSRE本を読んだら
もしSIerのエンジニアがSRE本を読んだら
Adminとうまく共存するためのApex開発Tips
Adminとうまく共存するためのApex開発Tips
ゲームエンジンの中の話
1.
ゲームエンジンの中の話 釜井政義 <@i_love_falcom> 2015/12/1 モバイル・コンシューマ「開発比較」勉強会
#3
2.
誰? 釜井政義(@i_love_falcom) コンシューマでアクション系開発ばかり10数年
描画やシステム低層側実装が主な仕事 昔は(社内)インフラなんかもやってました バイク命
3.
注意! ゲームエンジンが提供する機能は、 • Game Editor(+Tool群) •
Run-time Framework 大きく分けてこの二つに別れますが、 今日はRun-time Frameworkの話をします
4.
本日のお題 ゲームエンジンを理解する ゲームループ内で実行する処理
ゲームループ外の処理 まとめ
5.
ゲームエンジンを理解する
6.
ゲームエンジンを理解しようとするとき、 どこから手を付ければいい?
7.
取りあえずソースコードとか読んでみる?
8.
9.
うん、無理!
10.
関連技術を確認しながらならどう?
11.
12.
やっぱ、無理!
13.
じゃあどこから理解する?
14.
複雑でよく分からないなら、 基本に立ち戻ってシンプルに考える
15.
更新 描画 終了? 終了 ゲームループ 開始 Yes No フレーム同期
16.
なぜゲームループ? どんなRun-time Frameworkにも必ずある(はず)
最外の処理なので全体の流れを見るのに都合がいい 対象となるプラットフォームによって、目的のコードが何処 にあるのかある程度見当がつく 例えばAndroidの場合、SurfaceViewを継承しているクラ スを探す等
17.
古典的ループ CPU GPU 同期 GPU待ち CPU待ち 更新 更新 更新
18.
CPU-GPU並列ループ N+1 Frame 更新 N Frame 描画 N
Frame 描画 CPU GPU 同 期 N+1 Frame 描画 N+1 Frame 描画
19.
2スレッドループ N Frame 更新 N Frame 描画初期化 N-1
Frame 描画 CPU2 GPU 同 期 CPU1 N Frame 描画 同 期 N+1 Frame 更新 N Frame 描画 N-1 Frame 描画
20.
2スレッド+ジョブ並列化ループ N Frame 更新 N Frame 描画初期化 N-1
Frame 描画 CPU2 GPU 同 期 CPU1 N Frame 描画 同 期 N+1 Frame 更新 N Frame 描画 N-1 Frame 描画 CPU3~ CPU1/2発行ジョブ
21.
2スレッド+ジョブ +非同期コンピュート並列ループ N Frame 更新 N Frame 描画初期化 N-1
Frame 描画 CPU2 GPU 同 期 CPU1 N Frame 描画同 期 N+1 Frame 更新 N Frame 描画 N-1 Frame 描画 CPU3~ CPU1/2発行ジョブ GPGPU
22.
並列・非同期化の方向へ進化する事によって、 CPU/GPU使用率が向上! 複雑なエンティティを大量に処理できるようになる 反面、入力~描画間レイテンシが増大
対戦格闘やシューティングなど、低レイテンシであることが 必須のゲームに向かない 描画で使用していない間、汎用計算リソースとしてGPUを使用 する事で、これまで出来なかった事が可能になった
23.
ゲームループ内で実行する処理
24.
ゲームループ内で実行する処理 エンティティシステム(タスクシステム) エンティティの生成と破棄、およびリソース管理
エンティティ更新、休止管理 描画システム 描画リソースの生成、破棄、解決処理 描画コマンドの発行、Kick ゲームステート ゲームの状態・遷移管理 ゲームシーン(ステージ)管理
25.
エンティティ ゲーム内オブジェクト全ての基底 エンティティシステムによって生成・破棄の管理を行う
通常一意のIDを持ち、これによって他のエンティティから検 索、参照する機能を提供する エンティティ間を疎結合にするため、メッセージ通信機能を 提供する場合も多い
26.
class ClassicalEntity { public: void
Register(); void Unregister(); const char * GetID(); ClassicalEntity & Find(const char * id); protected: virtual void Update(const float delta) = 0; virtual void Draw() {} ClassicalEntity(const char * id) {} virtual ~ClassicalEntity() {} private: std::string myId; }; 古典的なエンティティの例 新しいエンティティを実装するには、 このクラスを継承して以下のように使う 1 一意のIDを設定 2 更新処理をUpdateに実装 3 必要なら描画処理をDrawに実装 4 Register/Unregisterを使って自身の登録処理、 登録解除処理を行う 5 Findを使って他エンティティを検索
27.
古典的なエンティティの問題点 継承によって機能追加を行うため、多重継承、菱形継承問題 が発生してしまう可能性が高い 本来不要な機能までも継承してしまうため、本来必要のない 無駄な処理が行われてしまう可能性がある
28.
多重継承、菱形継承の例 Game Object Movable Object Collidable
Object Animation Object Skeletal Object CatDogHuman Game Object 乗りもの 武器 戦車
29.
is-a関係からhas-a関係へ Game Object Component Mesh
Renderer Transform Rigid Body Animation Controller 1 *
30.
エンティティの更新処理 更新処理は複数のステージに分ける事が一般的 更新タイミングによっての分類
アニメーション処理前の更新 剛体物理処理後の更新 処理方法による分類 ジョブを使った並列更新 他エンティティはRead参照のみ可 単一スレッドによる逐次更新 他エンティティをRead/Write参照可
31.
描画システム 全エンティティから描画情報(メッシュなど)を収集 更新・描画の並列化を行う場合ダブルバッファ化が必要
収集した描画情報が描画対象となるかを判定 各描画パス毎に描画コマンドを生成、GPUへKick ジョブが使用可能なら並列に描画コマンドを生成 使用しなくなった描画リソースの生存管理 リソースを保持するエンティティが破棄されても、GPU側 で使用中の可能性があるのでリソースは描画システムが管 理する
32.
タイトル オプション ステージ1 ステージ2 ステージ3 エンディング ゲームステート スタート ゲーム全体を管理するステート ステージ管理ステートなどを持つ場合、 ゲームステート下に階層的に持つ
各種イベントをここからトリガ ステートの内容をスクリプトで記述でき るようにしたエンジンも多い
33.
ゲームループ外の処理
34.
ゲームループ外の処理とは、 描画と同期しなくない処理 ファイルのロード処理 各種リソースの初期化処理
GPUリソースなどは、例外的にゲームループと同期する必 要がある サウンド処理 ネットワーク処理
35.
ファイルのロード処理 ファイルをロードしている間ゲームループを止めるわけには いかない為、通常非同期ロードが必要とされる デバッグ時を除き、通常ファイルは圧縮されているので解凍 処理も実行される
解凍処理はジョブや非同期コンピュート(GPU)で実行 解凍されたリソースはリソースマネージャへ登録、解決処理 などが実行される 解決処理とは、名前などを用いて外部のリソースとの関 連付けを行う処理 解決処理の例 メッシュと頂点データとの解決 マテリアルとシェーダとの解決
36.
サウンド処理 ゲームループが処理落ちしてしまった場合など、もしサウン ドの更新がゲームループと同期しているとプチノイズ等が発 生してしまう ネットワーク処理 通信データの送受信は、その時々のトラフィック状態によっ てレイテンシが大きく異なってしまうため、描画と同期する わけにはいかない(ネットワークの遅延でゲームループが止 まってしまう)
37.
まとめ ゲームエンジンの処理は複雑でよく分からないが、ゲームル ープを追う事で全体的な流れを理解しやすくなる ゲームループはCPU、GPUの利用効率を上げることで大量の エンティティを扱うことができるようになった反面、レイテ ンシが犠牲になってしまった
ゲームループの内で処理を行うか、または外で行うかの基準 は、主に描画と同期する必要があるかどうかで決まる
38.
更にゲームエンジンについて学ぶなら・・・
39.
絶賛発売中
40.
質問?
Download now