SlideShare a Scribd company logo
1 of 68
YOUとゲームと自動化と
株式会社コールド・フュージョン
テッダー マイケル
Technical Director / CEO
アジャイル札幌 2018年1回目
2018年2月28日 (水)
出身: アメリカ(フロリダ州オーランド市)
仕事: ゲーム開発、3Dエンジン開発、オーディオ/DSP開発、ネットワーク開発、CEO
言語: C++14、PHP、TypeScript、アセンブラ(x86/x64/ARM/MIPS)
趣味: デモシーン(Tokyo Demo Festの主催者)、チップチューン、VR、AWS、宇宙
16歳で高校卒業、University of Central Florida大学に入学
1993年 大学インターンでVR開発を始めて、「Virtopia」をSIGGRAPH 1994で公開
1997年 Nintendo 64のエミュレータを作成、ゲーム業界に入る
2000年 日本(東京)へ移動
2005年 沖縄へ移動
2012年 株式会社コールド・フュージョンを設立
2013年 札幌へ移動
2017年 東京ゲームショウに出展、自社オリジナルのスマホ向けゲーム
「クリスタル・クラッシュ」(iOS / Android / Kindle Fire)を配信
テッダー マイケル (41歳)
michael.tedder42
@_Falken
Falken42
自己紹介
テッダー マイケル
Technical Director / CEO
北海道札幌市
福本 章
Game Design / Art Director
東京都
Eike “Romeo Knight” Steffen
Music / Sound Director
ドイツ デュッセルドルフ市
Cold Fusion エンジン
➤ クロスプラットフォーム: Windows / Linux / macOS / iOS / Android (全7つのCPUアーキテクチャ)
➤ 完全マルチスレッド化: パフォーマンスを最優先のため、複数CPUスレッドとGPU処理を並列化
➤ レンダリング: VulkanのAPIデザインを利用し、現在はOpenGL 4.1とGLES 3対応
➤ 並列化と最適化のパフォーマンスでCPU処理は低い → スマホでバッテリー消費と発生する熱が少ない
➤ 言語: 99.9% C++14 (ラムダ式最高!)、残りはObjective-C++ (macOS/iOS)とJava (Android)
クリスタル・クラッシュ【超攻撃的パズル合戦!】
➤ 瞬間的な考察力と判断力を必要とする、パズルとアクションが合体したリアルタイムオンライン対戦ゲーム
➤ Cold Fusion エンジンを利用、Tokyo Game Show 2017の3ヶ月前でゲーム開発を始めた
➤ AWS EC2でユーザー管理とランキングAPI (PHP) / ゲームのロービーサーバーとリアルタイム対戦通信 (C++)
めんどくさいこと①
➤ 5つのプラットフォームのビルドに対してのコンパイルとテスト
➤ CFエンジンはソースファイル1200個くらい(ライブラリ含め)
➤ コンパイラもOSによって違う(WindowsはVisual Studio、macOS/iOSはXcode等)
めんどくさいこと①
➤ PCをそれぞれ立ち上げて、手動でビルドし、exeファイルを実行すると大変な作業量
➤ 5つのプラットフォームのビルドに対してのコンパイルとテスト
➤ CFエンジンはソースファイル1200個くらい(ライブラリ含め)
➤ コンパイラもOSによって違う(WindowsはVisual Studio、macOS/iOSはXcode等)
めんどくさいこと②
➤ アプリ配信にて必要な大量の情報(メタデータ)
➤ アプリ説明、アイコン、キーワード、サポート情報、スクリーンショット、プレビュー動画(端末比率ごとに)
➤ 言語ごとに、そしてストアごとに・・・
➤ Web UIはどうしても手動なので、間違いしやすい
めんどくさいこと
全部自動化にする!
buildbotの紹介
➤ JenkinsやGitLabと同じような継続的インテグレーション(CI)ツール
➤ 何らかのイベントで何かのタスク(プロセス)を実行
➤ 例:ソースコードのリポへのコミット/プッシュに対してはコンパイルする
buildbotの紹介
➤ コンパイルだけではなく、スクリプトも実行可能
➤ JenkinsやGitLabと同じような継続的インテグレーション(CI)ツール
➤ 何らかのイベントで何かのタスク(プロセス)を実行
➤ 例:ソースコードのリポへのコミット/プッシュに対してはコンパイルする
buildbotの紹介
➤ buildbotはpython使ってるので、pythonが動くプラットフォームで利用可能
➤ JenkinsやGitLabと同じような継続的インテグレーション(CI)ツール
➤ 何らかのイベントで何かのタスク(プロセス)を実行
➤ 例:ソースコードのリポへのコミット/プッシュに対してはコンパイルする
➤ コンパイルだけではなく、スクリプトも実行可能
buildbotの紹介
➤ マスターとワーカーを設置して、マスターがワーカーにタスクを振る
➤ ワーカーのタスクのログ出力、タスク進行などは全てマスターに転送、メール / Web / Slackで見れる
(※buildbotのHPより)
CFでbuildbotの事例
➤ buildbotマスターはEC2のt2.microに設置
➤ 社内のiMac(1台)にVirtualBox VMを2つ
➤ Windows 10 (buildbotワーカー)
➤ Ubuntu 16.04 (buildbotワーカー)
➤ iMacにもbuildbotワーカー
➤ XcodeでmacOS/iOSビルドが必要のため、iMac
は欠かせない
➤ 今後はVMをEC2インスタンスに移動予定
CFでbuildbotの事例
➤ gitリポジトリへのコミット / プッシュ
➤ buildbotマスターはgitリポの更新を判断
➤ 5つのプラットフォームのワーカーが同時にビルド
➤ 黄色は実行中、青色は正常、赤はエラー発生 / テスト
失敗
CFでbuildbotの事例
➤ Windowsプラットフォームのビルドステップ:
➤ git更新 / gitハッシュをソースにつける
➤ デバッグ版をコンパイル (32/64 bit)
➤ デバッグ版のテストをコンパイル (32/64 bit)
➤ デバッグ版のテストを実行 (32/64 bit)
➤ リリース版をコンパイル (32/64 bit)
➤ リリース版のテストをコンパイル (32/64 bit)
➤ リリース版のテストを実行 (32/64 bit)
CFでbuildbotの事例
➤ 全プラットフォームは同じようにデバッグ版
とリリース版のコンパイルとテスト
➤ iOSとAndroidのテストは実機を使用
➤ USBでiMacに繋いてるiPodとKindle
➤ iOSは「ios-deploy」ツールで実行
➤ Androidは普通に「adb」で実行
CFでbuildbotの事例
➤ CFエンジンのテストが全てOKの場合はゲーム
コンパイルが自動的に行う
➤ ゲームのリリース版を配信用に準備される
➤ iOSはアーカイブから.ipaを作成
➤ Androidは.apkを電子署名をつける
➤ ワーカーはそれぞれのプラットフォームの実
行ファイルをDropboxへコピー
fastlaneの紹介
(※fastlaneのHPより)
➤ アプリのスクリーンショットを自動撮影
➤ 複数言語対応
➤ 各アプリストアの公開API利用してデプロイ
➤ ベータ版をテスターへ
➤ リリース版を公開ストアページへ
➤ アプリ証明書の自動電子署名付け
fastlaneの紹介
(※fastlaneのHPより)
➤ つまり、アプリ公開する前にテスターに配信
➤ iTunes ConnectはTestFlight
➤ Google Playはアルファ/ベータトラックある
➤ アプリのスクリーンショットを自動撮影
➤ 複数言語対応
➤ 各アプリストアの公開API利用してデプロイ
➤ ベータ版をテスターへ
➤ リリース版を公開ストアページへ
➤ アプリ証明書の自動電子署名付け
CFでfastlaneの事例
➤ buildbotにfastlaneを統合
➤ fastlane設定とメタデータはゲームのgitリポに
➤ Dropboxにコピーされた実行ファイルをデプロイ
➤ iOS .ipaはiTunes Connectへ
➤ Android .apkはGoogle Playへ
CFでfastlaneの事例
➤ 10~15分程度でビルドは配信され、テスターが
自分の端末にダウンロードできる
➤ buildbotにfastlaneを統合
➤ fastlane設定とメタデータはゲームのgitリポに
➤ Dropboxにコピーされた実行ファイルをデプロイ
➤ iOS .ipaはiTunes Connectへ
➤ Android .apkはGoogle Playへ
CFでfastlaneの事例
➤ 実際ゲームのチェックを行い、調整し、再ビルド
➤ デザイナーさんとフィードバックが早くて細かい
調整ができる
CFでfastlaneの事例
➤ 実際ゲームのチェックを行い、調整し、再ビルド
➤ デザイナーさんとフィードバックが早くて細かい
調整ができる
➤ PC版はある程度テスト可能けど、タッチ画面
触る感覚は実機が必要
CFでfastlaneの事例
➤ 完成したビルドは各ストアのWeb UIで公開
➤ Google Play Developer Consoleは「Promote to Production
」ボタン1つで約1時間で世界中に公開
➤ iTunes Connectはアップルの審査あるため、サブミットし
てから1〜2日間が必要
➤ Web UI使わずにfastlaneでできるけど、大した作業ではない
CFでfastlaneの事例
➤ 残念ながらAmazon Developer ConsoleのAPIがまだ公開さ
れてないので、Kindleへのデプロイはすべて手動・・・
➤ 完成したビルドは各ストアのWeb UIで公開
➤ Google Play Developer Consoleは「Promote to Production
」ボタン1つで約1時間で世界中に公開
➤ iTunes Connectはアップルの審査あるため、サブミットし
てから1〜2日間が必要
➤ Web UI使わずにfastlaneでできるけど、大した作業ではない
ゲーム/スマホ開発での苦労
ゲーム/スマホ開発での苦労
① 外部のライブラリはできるだけ利用しない
ゲーム/スマホ開発での苦労
① 外部のライブラリはできるだけ利用しない
➤ 5つのプラットフォームで7つのCPUアーキテクチャでは全て正常に動くの保証
はなかなかない
ゲーム/スマホ開発での苦労
➤ あるプラットフォームで動かない時のデバッグとサポートの時間(コスト)は
かかる
① 外部のライブラリはできるだけ利用しない
➤ 5つのプラットフォームで7つのCPUアーキテクチャでは全て正常に動くの保証
はなかなかない
ゲーム/スマホ開発での苦労
➤ 自作の物はプラットフォームベースが統一するので信頼があ
る
① 外部のライブラリはできるだけ利用しない
➤ 5つのプラットフォームで7つのCPUアーキテクチャでは全て正常に動くの保証
はなかなかない
➤ あるプラットフォームで動かない時のデバッグとサポートの時間(コスト)は
かかる
ゲーム/スマホ開発での苦労
➤ とはいえ、プラットフォームに関係のないライブラリ(zlib, sqlite, openssl,
freetypeなど)は使うけど、どうしても修正は必要な時がある
① 外部のライブラリはできるだけ利用しない
➤ 5つのプラットフォームで7つのCPUアーキテクチャでは全て正常に動くの保証
はなかなかない
➤ あるプラットフォームで動かない時のデバッグとサポートの時間(コスト)は
かかる
➤ 自作の物はプラットフォームベースが統一するので信頼があ
る
ゲーム/スマホ開発での苦労
② Androidで memset() のスタックオーバーフロー
ゲーム/スマホ開発での苦労
➤ Androidの新しいOSバージョンではnativeコードの負担を減らすためOS側で色
々とサポートしてくれてる(いいこと)
② Androidで memset() のスタックオーバーフロー
ゲーム/スマホ開発での苦労
② Androidで memset() のスタックオーバーフロー
➤ Androidの新しいOSバージョンではnativeコードの負担を減らすためOS側で色
々とサポートしてくれてる(いいこと)
➤ __aeabi_memset() という新しい関数はAPI 24から対応
➤ 普通のlibcの memset() 関数は直接 __aeabi_memset() を呼ぶ
➤ API 24より前の端末では当然存在しない(実行時dynamicリンクエラー発生)
ゲーム/スマホ開発での苦労
② Androidで memset() のスタックオーバーフロー
➤ Androidの新しいOSバージョンではnativeコードの負担を減らすためOS側で色
々とサポートしてくれてる(いいこと)
➤ __aeabi_memset() という新しい関数はAPI 24から対応
➤ 普通のlibcの memset() 関数は直接 __aeabi_memset() を呼ぶ
➤ API 24より前の端末では当然存在しない(実行時dynamicリンクエラー発生)
➤ API 24より前の端末を対応するには・・・
ゲーム/スマホ開発での苦労
② Androidで memset() のスタックオーバーフロー
void __aeabi_memset(void *dest, size_t n, int c)
__attribute__ ((weak))
{
u8 *pdst = static_cast<u8 *>(dest);
while (n--)
*pdst++ = c;
}
➤ API 24より前の端末を対応するにはweak関数を用意し、初期テストのためにシンプルなループで対応
ゲーム/スマホ開発での苦労
② Androidで memset() のスタックオーバーフロー
➤ API 24より前の端末を対応するにはweak関数を用意し、初期テストのためにシンプルなループで対応
void __aeabi_memset(void *dest, size_t n, int c)
__attribute__ ((weak))
{
u8 *pdst = static_cast<u8 *>(dest);
while (n--)
*pdst++ = c;
}
➤ デバッグ版で正常に動いたけど、リリース版で即クラッシュ・・・
ゲーム/スマホ開発での苦労
② Androidで memset() のスタックオーバーフロー
➤ clangの最適化がループは memset() と同じコードと判断し、実際 memset() に置き換えられた
void __aeabi_memset(void *dest, size_t n, int c)
__attribute__ ((weak))
{
u8 *pdst = static_cast<u8 *>(dest);
while (n--)
*pdst++ = c;
memset(dest, n, c); // clang最適化
}
ゲーム/スマホ開発での苦労
② Androidで memset() のスタックオーバーフロー
➤ clangの最適化がループは memset() と同じコードと判断し、実際 memset() に置き換えられた
void __aeabi_memset(void *dest, size_t n, int c)
__attribute__ ((weak))
{
u8 *pdst = static_cast<u8 *>(dest);
while (n--)
*pdst++ = c;
memset(dest, n, c); // clang最適化
}
➤ memset() → __aeabi_memset() → memset() → ・・・ → スタックオーバーフロー!
ゲーム/スマホ開発での苦労
③ Androidでアプリがフォーカスを失うとGLESコンテクストが廃棄される
ゲーム/スマホ開発での苦労
③ Androidでアプリがフォーカスを失うとGLESコンテクストが廃棄される
➤ フォーカス失うのはホームボタン押された時、電話着信など
➤ GLESコンテクストはGPU用のシェーダー、テクスチャのデータと設定などを管理する
ゲーム/スマホ開発での苦労
③ Androidでアプリがフォーカスを失うとGLESコンテクストが廃棄される
➤ フォーカス失うのはホームボタン押された時、電話着信など
➤ フォーカス戻ったら全てのアセットをGPUに再アップロードする必要がある
(再スタートに少しディレーかかる)
➤ GLESコンテクストはGPU用のシェーダー、テクスチャのデータと設定などを管理する
ゲーム/スマホ開発での苦労
③ Androidでアプリがフォーカスを失うとGLESコンテクストが廃棄される
➤ フォーカス失うのはホームボタン押された時、電話着信など
➤ フォーカス戻ったら全てのアセットをGPUに再アップロードする必要がある
(再スタートに少しディレーかかる)
➤ iOSではコンテクスト残してくれる(メモリがある限り、すぐアプリが再利用可能)
➤ GLESコンテクストはGPU用のシェーダー、テクスチャのデータと設定などを管理する
ゲーム/スマホ開発での苦労
④ Androidでは端末ごとのGPUが違うので細かい対策することがある
ゲーム/スマホ開発での苦労
④ Androidでは端末ごとのGPUが違うので細かい対策することがある
➤ GPUは端末のモデルによって変わる、OSバージョンにもGLES対応がバラバラ
ゲーム/スマホ開発での苦労
④ Androidでは端末ごとのGPUが違うので細かい対策することがある
➤ GPUは端末のモデルによって変わる、OSバージョンにもGLES対応がバラバラ
➤ シェダーコンパイラにバグも当たることはある
ゲーム/スマホ開発での苦労
④ Androidでは端末ごとのGPUが違うので細かい対策することがある
➤ GPUは端末のモデルによって変わる、OSバージョンにもGLES対応がバラバラ
➤ ユーザーの端末のバグは当然直せない・・・
➤ OSアップデートで期待しても、ユーザーはアプリが落ちるしか見ない(
悪いレビュー残す可能性大)
➤ シェダーコンパイラにバグも当たることはある
ゲーム/スマホ開発での苦労
out vec4 outputColor;
in vec2 uv;
uniform sampler2D tex0;
uniform sampler2D tex1;
uniform vec3 lightboxData;
void main() {
if (uv.x < lightboxData.x) {
if (lightboxData.y > 0.0) {
vec2 tuv = vec2(uv.x + (1.0 - lightboxData.x), uv.y);
outputColor = texture(tex0, tuv);
} else {
outputColor = vec4(0.0, 0.0, 0.0, 0.0);
}
} else {
if (lightboxData.z > 0.0) {
vec2 tuv = vec2(uv.x - lightboxData.x, uv.y);
outputColor = texture(tex1, tuv);
} else {
outputColor = vec4(0.0, 0.0, 0.0, 0.0);
}
}
}
ゲーム/スマホ開発での苦労
out vec4 outputColor;
in vec2 uv;
uniform sampler2D tex0;
uniform sampler2D tex1;
uniform vec3 lightboxData;
void main() {
if (uv.x < lightboxData.x) {
if (lightboxData.y > 0.0) {
vec2 tuv = vec2(uv.x + (1.0 - lightboxData.x), uv.y);
outputColor = texture(tex0, tuv);
} else {
outputColor = vec4(0.0, 0.0, 0.0, 0.0);
}
} else {
if (lightboxData.z > 0.0) {
vec2 tuv = vec2(uv.x - lightboxData.x, uv.y); // tuv is already defined
outputColor = texture(tex1, tuv);
} else {
outputColor = vec4(0.0, 0.0, 0.0, 0.0);
}
}
}
ゲーム/スマホ開発での苦労
⑤ Androidではオーディオドライバの対応は端末ごとにバラバラ
ゲーム/スマホ開発での苦労
⑤ Androidではオーディオドライバの対応は端末ごとにバラバラ
➤ 16チャンネルを同時に再生できる端末はある
ゲーム/スマホ開発での苦労
⑤ Androidではオーディオドライバの対応は端末ごとにバラバラ
➤ 16チャンネルを同時に再生できる端末はある
➤ ただ、4チャンネルしか同時に再生できる端末もある(最新端末でも!)
ゲーム/スマホ開発での苦労
⑤ Androidではオーディオドライバの対応は端末ごとにバラバラ
➤ 16チャンネルを同時に再生できる端末はある
➤ 自作でオーディオミクシングを行うことでどの端末でも欲しい結果は出る
➤ ただ、4チャンネルしか同時に再生できる端末もある(最新端末でも!)
ゲーム/スマホ開発での苦労
⑥ Xcode 8から9にアップデートしたらiOS .ipaが即クラッシュ問題
ゲーム/スマホ開発での苦労
⑥ Xcode 8から9にアップデートしたらiOS .ipaが即クラッシュ問題
➤ ローカルでデバッグ版、リリース版は正常に動く
ゲーム/スマホ開発での苦労
⑥ Xcode 8から9にアップデートしたらiOS .ipaが即クラッシュ問題
➤ ローカルでデバッグ版、リリース版は正常に動く
➤ TestFlightでダウンロードする.ipaは起動すると即クラッシュ
ゲーム/スマホ開発での苦労
⑥ Xcode 8から9にアップデートしたらiOS .ipaが即クラッシュ問題
➤ ローカルでデバッグ版、リリース版は正常に動く
➤ TestFlightでダウンロードする.ipaは起動すると即クラッシュ
➤ 2週間ほどのデバッグとAppleとの連絡やりとりでいくつの条件が重ねたことでツ
ールのバグ発生が判明:
➤ CFエンジン内でのグローバルoperator new / deleteの置き換え
➤ 「JSON for Modern C++」の外部ライブラリのstd::allocator使い方
➤ .ipaアーカイブの時にしか行わないAppleのstripツールの不具合
ゲーム/スマホ開発での苦労
⑥ Xcode 8から9にアップデートしたらiOS .ipaが即クラッシュ問題
➤ stripツールはデファルトパラメータでグローバルoperator new/deleteはdynamic link用のexportテ
ーブルに出ていなかった
ゲーム/スマホ開発での苦労
⑥ Xcode 8から9にアップデートしたらiOS .ipaが即クラッシュ問題
➤ stripツールはデファルトパラメータでグローバルoperator new/deleteはdynamic link用のexportテ
ーブルに出ていなかった
➤ stripのオプションをデファルトから変える(strip -u -r)とグローバルoperator new/deleteはexport
テーブルに出るようになった
ゲーム/スマホ開発での苦労
⑥ Xcode 8から9にアップデートしたらiOS .ipaが即クラッシュ問題
➤ stripツールはデファルトパラメータでグローバルoperator new/deleteはdynamic link用のexportテ
ーブルに出ていなかった
➤ stripのオプションをデファルトから変える(strip -u -r)とグローバルoperator new/deleteはexport
テーブルに出るようになった
➤ ゲームは正常に動くようになった!
まとめ
まとめ
➤ 繰り返してることをすぐに自動化にするとあとで得する
まとめ
➤ 繰り返してることをすぐに自動化にするとあとで得する
➤ buildbotとfastlaneのお陰で「クリスタル・クラッシュ」開発中
のチームフィードバックが早く取れて、約3ヶ月で作り上げた
まとめ
➤ 繰り返してることをすぐに自動化にするとあとで得する
➤ buildbotとfastlaneのお陰で「クリスタル・クラッシュ」開発中
のチームフィードバックが早く取れて、約3ヶ月で作り上げた
➤ エンジン開発は本当に楽しいけど、端末の断片化問題で時間は
かかって色々と苦労はする
まとめ
➤ 繰り返してることをすぐに自動化にするとあとで得する
➤ buildbotとfastlaneのお陰で「クリスタル・クラッシュ」開発中
のチームフィードバックが早く取れて、約3ヶ月で作り上げた
➤ エンジン開発は本当に楽しいけど、端末の断片化問題で時間は
かかって色々と苦労はする
➤ 覚悟してない方は作ってあるエンジンを利用した方が近道!
クリスタル・クラッシュ【超攻撃的パズル合戦!】 (iOS / Android / Kindle)
ご清聴ありがとうございます!

More Related Content

What's hot

GTMF 2016:『刺青の国』 ~SpriteStudioとUnityで開く背徳の宴~ 株式会社ウェブテクノロジ
GTMF 2016:『刺青の国』 ~SpriteStudioとUnityで開く背徳の宴~ 株式会社ウェブテクノロジGTMF 2016:『刺青の国』 ~SpriteStudioとUnityで開く背徳の宴~ 株式会社ウェブテクノロジ
GTMF 2016:『刺青の国』 ~SpriteStudioとUnityで開く背徳の宴~ 株式会社ウェブテクノロジGame Tools & Middleware Forum
 
FFRKを支えるWebアプリケーションフレームワークの技術
FFRKを支えるWebアプリケーションフレームワークの技術FFRKを支えるWebアプリケーションフレームワークの技術
FFRKを支えるWebアプリケーションフレームワークの技術dena_study
 
エターナらないゲーム開発
エターナらないゲーム開発エターナらないゲーム開発
エターナらないゲーム開発Kohki Miki
 
Unityプロファイラについて
UnityプロファイラについてUnityプロファイラについて
UnityプロファイラについてMio Ku-tani
 
Unity用ADV制作ツール「宴」概要
Unity用ADV制作ツール「宴」概要Unity用ADV制作ツール「宴」概要
Unity用ADV制作ツール「宴」概要Ryohei Tokimura
 
Unityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechconUnityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechconDeNA
 
Unityで本格戦国シュミレーションRPG 開発
Unityで本格戦国シュミレーションRPG 開発Unityで本格戦国シュミレーションRPG 開発
Unityで本格戦国シュミレーションRPG 開発dena_study
 
Effective web performance tuning for smartphone
Effective web performance tuning for smartphoneEffective web performance tuning for smartphone
Effective web performance tuning for smartphonedena_study
 
Aiming 開発ゲームの裏側
Aiming 開発ゲームの裏側Aiming 開発ゲームの裏側
Aiming 開発ゲームの裏側Katsutoshi Makino
 
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>
  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>エピック・ゲームズ・ジャパン Epic Games Japan
 
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例sairoutine
 
Unityとスマートフォンアプリの最適化
Unityとスマートフォンアプリの最適化Unityとスマートフォンアプリの最適化
Unityとスマートフォンアプリの最適化COLOPL, Inc.
 
『バランワンダーワールド』でのマルチプラットフォーム対応について UNREAL FEST EXTREME 2021 SUMMER
『バランワンダーワールド』でのマルチプラットフォーム対応について  UNREAL FEST EXTREME 2021 SUMMER『バランワンダーワールド』でのマルチプラットフォーム対応について  UNREAL FEST EXTREME 2021 SUMMER
『バランワンダーワールド』でのマルチプラットフォーム対応について UNREAL FEST EXTREME 2021 SUMMERエピック・ゲームズ・ジャパン Epic Games Japan
 
DeNA TechCon2019 How to implement live streaming client using Unity
DeNA TechCon2019 How to implement live streaming client using UnityDeNA TechCon2019 How to implement live streaming client using Unity
DeNA TechCon2019 How to implement live streaming client using UnityTakeyuki Ogura
 

What's hot (20)

GTMF 2016:『刺青の国』 ~SpriteStudioとUnityで開く背徳の宴~ 株式会社ウェブテクノロジ
GTMF 2016:『刺青の国』 ~SpriteStudioとUnityで開く背徳の宴~ 株式会社ウェブテクノロジGTMF 2016:『刺青の国』 ~SpriteStudioとUnityで開く背徳の宴~ 株式会社ウェブテクノロジ
GTMF 2016:『刺青の国』 ~SpriteStudioとUnityで開く背徳の宴~ 株式会社ウェブテクノロジ
 
FFRKを支えるWebアプリケーションフレームワークの技術
FFRKを支えるWebアプリケーションフレームワークの技術FFRKを支えるWebアプリケーションフレームワークの技術
FFRKを支えるWebアプリケーションフレームワークの技術
 
エターナらないゲーム開発
エターナらないゲーム開発エターナらないゲーム開発
エターナらないゲーム開発
 
UE4モバイルブートキャンプ
UE4モバイルブートキャンプUE4モバイルブートキャンプ
UE4モバイルブートキャンプ
 
Unityプロファイラについて
UnityプロファイラについてUnityプロファイラについて
Unityプロファイラについて
 
Unity用ADV制作ツール「宴」概要
Unity用ADV制作ツール「宴」概要Unity用ADV制作ツール「宴」概要
Unity用ADV制作ツール「宴」概要
 
最新UE4タイトルでのローカライズ事例 (UE4 Localization Deep Dive)
最新UE4タイトルでのローカライズ事例 (UE4 Localization Deep Dive)最新UE4タイトルでのローカライズ事例 (UE4 Localization Deep Dive)
最新UE4タイトルでのローカライズ事例 (UE4 Localization Deep Dive)
 
UE4モバイルでノンゲームコンテンツ
UE4モバイルでノンゲームコンテンツUE4モバイルでノンゲームコンテンツ
UE4モバイルでノンゲームコンテンツ
 
Unityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechconUnityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechcon
 
Unityで本格戦国シュミレーションRPG 開発
Unityで本格戦国シュミレーションRPG 開発Unityで本格戦国シュミレーションRPG 開発
Unityで本格戦国シュミレーションRPG 開発
 
Effective web performance tuning for smartphone
Effective web performance tuning for smartphoneEffective web performance tuning for smartphone
Effective web performance tuning for smartphone
 
Aiming 開発ゲームの裏側
Aiming 開発ゲームの裏側Aiming 開発ゲームの裏側
Aiming 開発ゲームの裏側
 
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>
  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>
 
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
 
Unityとスマートフォンアプリの最適化
Unityとスマートフォンアプリの最適化Unityとスマートフォンアプリの最適化
Unityとスマートフォンアプリの最適化
 
Unreal Engine 4 Education 2 UnityとUE4の違いは?
Unreal Engine 4 Education 2 UnityとUE4の違いは?Unreal Engine 4 Education 2 UnityとUE4の違いは?
Unreal Engine 4 Education 2 UnityとUE4の違いは?
 
『バランワンダーワールド』でのマルチプラットフォーム対応について UNREAL FEST EXTREME 2021 SUMMER
『バランワンダーワールド』でのマルチプラットフォーム対応について  UNREAL FEST EXTREME 2021 SUMMER『バランワンダーワールド』でのマルチプラットフォーム対応について  UNREAL FEST EXTREME 2021 SUMMER
『バランワンダーワールド』でのマルチプラットフォーム対応について UNREAL FEST EXTREME 2021 SUMMER
 
60fpsアクションを実現する秘訣を伝授 基礎編
60fpsアクションを実現する秘訣を伝授 基礎編60fpsアクションを実現する秘訣を伝授 基礎編
60fpsアクションを実現する秘訣を伝授 基礎編
 
DeNA TechCon2019 How to implement live streaming client using Unity
DeNA TechCon2019 How to implement live streaming client using UnityDeNA TechCon2019 How to implement live streaming client using Unity
DeNA TechCon2019 How to implement live streaming client using Unity
 
60fpsアクションを実現する秘訣を伝授 解析編
60fpsアクションを実現する秘訣を伝授 解析編60fpsアクションを実現する秘訣を伝授 解析編
60fpsアクションを実現する秘訣を伝授 解析編
 

Similar to Game Development and Automation @ Agile Sapporo 2018 #1

ゲームアプリの数学@GREE GameDevelopers' Meetup
ゲームアプリの数学@GREE GameDevelopers' Meetupゲームアプリの数学@GREE GameDevelopers' Meetup
ゲームアプリの数学@GREE GameDevelopers' Meetupgree_tech
 
ゲームアプリの数学@GREE GameDevelopers' Meetup
ゲームアプリの数学@GREE GameDevelopers' Meetupゲームアプリの数学@GREE GameDevelopers' Meetup
ゲームアプリの数学@GREE GameDevelopers' MeetupRyuichi Kubuki
 
Unity 名古屋セミナー [Sprite Studio]
Unity 名古屋セミナー [Sprite Studio]Unity 名古屋セミナー [Sprite Studio]
Unity 名古屋セミナー [Sprite Studio]MakotoItoh
 
Xbox LIVEインディーズゲーム「ピアレビュー攻略」のためのXNAにおける開発のコツと特有の課題
Xbox LIVEインディーズゲーム「ピアレビュー攻略」のためのXNAにおける開発のコツと特有の課題Xbox LIVEインディーズゲーム「ピアレビュー攻略」のためのXNAにおける開発のコツと特有の課題
Xbox LIVEインディーズゲーム「ピアレビュー攻略」のためのXNAにおける開発のコツと特有の課題IGDA Japan
 
【GCC2019】モノビットエンジンがついにクラウド化!しかし、インフラでまさかのAzureを利用!?本当に大丈夫なの?
【GCC2019】モノビットエンジンがついにクラウド化!しかし、インフラでまさかのAzureを利用!?本当に大丈夫なの?【GCC2019】モノビットエンジンがついにクラウド化!しかし、インフラでまさかのAzureを利用!?本当に大丈夫なの?
【GCC2019】モノビットエンジンがついにクラウド化!しかし、インフラでまさかのAzureを利用!?本当に大丈夫なの?モノビット エンジン
 
Regional Scrum Gathering Tokyo 2023 Keiji Kikuchi Remote Mobbing
Regional Scrum Gathering Tokyo 2023 Keiji Kikuchi Remote MobbingRegional Scrum Gathering Tokyo 2023 Keiji Kikuchi Remote Mobbing
Regional Scrum Gathering Tokyo 2023 Keiji Kikuchi Remote MobbingKeiji Kikuchi
 
初心者向けAndroidゲーム開発ノウハウ
初心者向けAndroidゲーム開発ノウハウ初心者向けAndroidゲーム開発ノウハウ
初心者向けAndroidゲーム開発ノウハウKentarou Mukunasi
 
Web制作で培ってきたFlashのリッチな表現力をモバイルアプリに
Web制作で培ってきたFlashのリッチな表現力をモバイルアプリにWeb制作で培ってきたFlashのリッチな表現力をモバイルアプリに
Web制作で培ってきたFlashのリッチな表現力をモバイルアプリにinvogue
 
スマートフォン勉強会 関東 19
スマートフォン勉強会 関東 19スマートフォン勉強会 関東 19
スマートフォン勉強会 関東 19Kenji Daikoku
 
新型登場!! Surface Book 3 / Surface Go 2
新型登場!! Surface Book 3 / Surface Go 2新型登場!! Surface Book 3 / Surface Go 2
新型登場!! Surface Book 3 / Surface Go 2Tomokazu Kizawa
 
Michael Tedder @ 10th Pleasant 100 persons with Hokkaido vol.2
Michael Tedder @ 10th Pleasant 100 persons with Hokkaido vol.2Michael Tedder @ 10th Pleasant 100 persons with Hokkaido vol.2
Michael Tedder @ 10th Pleasant 100 persons with Hokkaido vol.2Michael Tedder
 
[120915] igda sig indie9
[120915] igda sig indie9[120915] igda sig indie9
[120915] igda sig indie9IGDA Japan
 
Windows 8 Developers カンファレンス
Windows 8 Developers カンファレンスWindows 8 Developers カンファレンス
Windows 8 Developers カンファレンスKaoru NAKAMURA
 
Microsoft Copilot Studio.pdf
Microsoft Copilot Studio.pdfMicrosoft Copilot Studio.pdf
Microsoft Copilot Studio.pdfTomokazu Kizawa
 
20101127 Android Usability Seminar
20101127 Android Usability Seminar20101127 Android Usability Seminar
20101127 Android Usability SeminarVisso株式会社
 
unityゲーム開発基礎講座
unityゲーム開発基礎講座unityゲーム開発基礎講座
unityゲーム開発基礎講座Yuki Tada
 
どこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティスどこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティス5mingame2
 
革新的ブラウザゲームを支えるプラットフォーム技術
革新的ブラウザゲームを支えるプラットフォーム技術革新的ブラウザゲームを支えるプラットフォーム技術
革新的ブラウザゲームを支えるプラットフォーム技術Toru Yamaguchi
 
Html5conference2012 yota hisamichi_世界に向けたスマートフォンゲームを支える、 greeのテクニカルアーティストについて。
Html5conference2012 yota hisamichi_世界に向けたスマートフォンゲームを支える、 greeのテクニカルアーティストについて。Html5conference2012 yota hisamichi_世界に向けたスマートフォンゲームを支える、 greeのテクニカルアーティストについて。
Html5conference2012 yota hisamichi_世界に向けたスマートフォンゲームを支える、 greeのテクニカルアーティストについて。ひさし App
 
ngCore engine for mobage platform
ngCore engine for mobage platformngCore engine for mobage platform
ngCore engine for mobage platformToru Yamaguchi
 

Similar to Game Development and Automation @ Agile Sapporo 2018 #1 (20)

ゲームアプリの数学@GREE GameDevelopers' Meetup
ゲームアプリの数学@GREE GameDevelopers' Meetupゲームアプリの数学@GREE GameDevelopers' Meetup
ゲームアプリの数学@GREE GameDevelopers' Meetup
 
ゲームアプリの数学@GREE GameDevelopers' Meetup
ゲームアプリの数学@GREE GameDevelopers' Meetupゲームアプリの数学@GREE GameDevelopers' Meetup
ゲームアプリの数学@GREE GameDevelopers' Meetup
 
Unity 名古屋セミナー [Sprite Studio]
Unity 名古屋セミナー [Sprite Studio]Unity 名古屋セミナー [Sprite Studio]
Unity 名古屋セミナー [Sprite Studio]
 
Xbox LIVEインディーズゲーム「ピアレビュー攻略」のためのXNAにおける開発のコツと特有の課題
Xbox LIVEインディーズゲーム「ピアレビュー攻略」のためのXNAにおける開発のコツと特有の課題Xbox LIVEインディーズゲーム「ピアレビュー攻略」のためのXNAにおける開発のコツと特有の課題
Xbox LIVEインディーズゲーム「ピアレビュー攻略」のためのXNAにおける開発のコツと特有の課題
 
【GCC2019】モノビットエンジンがついにクラウド化!しかし、インフラでまさかのAzureを利用!?本当に大丈夫なの?
【GCC2019】モノビットエンジンがついにクラウド化!しかし、インフラでまさかのAzureを利用!?本当に大丈夫なの?【GCC2019】モノビットエンジンがついにクラウド化!しかし、インフラでまさかのAzureを利用!?本当に大丈夫なの?
【GCC2019】モノビットエンジンがついにクラウド化!しかし、インフラでまさかのAzureを利用!?本当に大丈夫なの?
 
Regional Scrum Gathering Tokyo 2023 Keiji Kikuchi Remote Mobbing
Regional Scrum Gathering Tokyo 2023 Keiji Kikuchi Remote MobbingRegional Scrum Gathering Tokyo 2023 Keiji Kikuchi Remote Mobbing
Regional Scrum Gathering Tokyo 2023 Keiji Kikuchi Remote Mobbing
 
初心者向けAndroidゲーム開発ノウハウ
初心者向けAndroidゲーム開発ノウハウ初心者向けAndroidゲーム開発ノウハウ
初心者向けAndroidゲーム開発ノウハウ
 
Web制作で培ってきたFlashのリッチな表現力をモバイルアプリに
Web制作で培ってきたFlashのリッチな表現力をモバイルアプリにWeb制作で培ってきたFlashのリッチな表現力をモバイルアプリに
Web制作で培ってきたFlashのリッチな表現力をモバイルアプリに
 
スマートフォン勉強会 関東 19
スマートフォン勉強会 関東 19スマートフォン勉強会 関東 19
スマートフォン勉強会 関東 19
 
新型登場!! Surface Book 3 / Surface Go 2
新型登場!! Surface Book 3 / Surface Go 2新型登場!! Surface Book 3 / Surface Go 2
新型登場!! Surface Book 3 / Surface Go 2
 
Michael Tedder @ 10th Pleasant 100 persons with Hokkaido vol.2
Michael Tedder @ 10th Pleasant 100 persons with Hokkaido vol.2Michael Tedder @ 10th Pleasant 100 persons with Hokkaido vol.2
Michael Tedder @ 10th Pleasant 100 persons with Hokkaido vol.2
 
[120915] igda sig indie9
[120915] igda sig indie9[120915] igda sig indie9
[120915] igda sig indie9
 
Windows 8 Developers カンファレンス
Windows 8 Developers カンファレンスWindows 8 Developers カンファレンス
Windows 8 Developers カンファレンス
 
Microsoft Copilot Studio.pdf
Microsoft Copilot Studio.pdfMicrosoft Copilot Studio.pdf
Microsoft Copilot Studio.pdf
 
20101127 Android Usability Seminar
20101127 Android Usability Seminar20101127 Android Usability Seminar
20101127 Android Usability Seminar
 
unityゲーム開発基礎講座
unityゲーム開発基礎講座unityゲーム開発基礎講座
unityゲーム開発基礎講座
 
どこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティスどこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティス
 
革新的ブラウザゲームを支えるプラットフォーム技術
革新的ブラウザゲームを支えるプラットフォーム技術革新的ブラウザゲームを支えるプラットフォーム技術
革新的ブラウザゲームを支えるプラットフォーム技術
 
Html5conference2012 yota hisamichi_世界に向けたスマートフォンゲームを支える、 greeのテクニカルアーティストについて。
Html5conference2012 yota hisamichi_世界に向けたスマートフォンゲームを支える、 greeのテクニカルアーティストについて。Html5conference2012 yota hisamichi_世界に向けたスマートフォンゲームを支える、 greeのテクニカルアーティストについて。
Html5conference2012 yota hisamichi_世界に向けたスマートフォンゲームを支える、 greeのテクニカルアーティストについて。
 
ngCore engine for mobage platform
ngCore engine for mobage platformngCore engine for mobage platform
ngCore engine for mobage platform
 

Game Development and Automation @ Agile Sapporo 2018 #1

Editor's Notes

  1. [00:00 - 00:15] イントロ: “皆さん、こんばんは!” 会社名、タイトル、名前 “今日はどうぞよろしくお願いします”
  2. [00:15 - 02:00] 自己紹介: 出身、仕事、言語、趣味 16歳で高卒、VRをUCFで始め、Jacki MorieのVirtopiaをサウンド開発、SIGGRAPH 94で公開 N64エミュでゲーム業界に入る 2000年に日本へ(18年前) 東京5年でPS2、そしてゲームキューブでポケモン関連2作、沖縄へ引っ越し コールド・フュージョン設立、札幌へ 2016年から完全独立、東京ゲームショウの出展と同時にクリクラをリリース SNS多少やってますので、ぜひフォローしてください!
  3. [02:00 - 02:30] 会社紹介: 3名、全員リモート(開発は札幌、デザイナーの福本は東京、音楽作成のEikeはドイツ) コミュニケーションツールはSlack データ共有はGoogle Docs、Google Drive、とDropbox
  4. [02:30 - 03:45] CF Engine: 去年、2017年2月の画像 並列化(へいれつか) 開発期間:1人で1年間くらい
  5. [03:45 - 05:00] クリクラ紹介: 考察力(こうさつりょく) TGSの3ヶ月前というと、3ヶ月でゲームのv1.0を作り上げた(自動化のおかげ)
  6. [05:00 - 05:20] 1/2
  7. [05:20 - 05:30] 2/2
  8. [05:30 - 06:00]
  9. [06:00 - 06:00]
  10. [06:00 - 06:30] 1/3
  11. [06:30 - 06:45] 2/3
  12. [06:45 - 07:00] 3/3
  13. [07:00 - 08:00]
  14. [08:00 - 09:00]
  15. [09:00 - 09:45]
  16. [09:45 - 10:30]
  17. [10:30 - 11:15]
  18. [11:15 - 12:00] 1) 電子署名(でんししょめい)
  19. [12:00 - 12:45] 1/2
  20. [12:45 - 13:00] 2/2
  21. [13:00 - 13:45] 1/2 1) 統合(とうごう)
  22. [13:45 - 14:00] 2/2
  23. [14:00 - 15:00] 1/2
  24. [14:00 - 15:00] 2/2
  25. [15:00 - 16:00] 1/2
  26. [15:00 - 16:00] 2/2
  27. [16:00 - 16:00]
  28. [16:00 - 17:00] 1/5
  29. [16:00 - 17:00] 2/5
  30. [16:00 - 17:00] 3/5
  31. [16:00 - 17:00] 4/5
  32. [16:00 - 17:00] 5/5
  33. [17:00 - 19:00] 1/8
  34. [17:00 - 19:00] 2/8
  35. [17:00 - 19:00] 3/8
  36. [17:00 - 19:00] 4/8
  37. [17:00 - 19:00] 5/8
  38. [17:00 - 19:00] 6/8
  39. [17:00 - 19:00] 7/8
  40. [17:00 - 19:00] 8/8
  41. [19:00 - 20:00] 1/4
  42. [19:00 - 20:00] 2/4
  43. [19:00 - 20:00] 3/4
  44. [19:00 - 20:00] 4/4
  45. [20:00 - 21:00] 1/6
  46. [20:00 - 21:00] 2/6
  47. [20:00 - 21:00] 3/6
  48. [20:00 - 21:00] 4/6
  49. [20:00 - 21:00] 5/6
  50. [20:00 - 21:00] 6/6
  51. [21:00 - 22:00] 1/4
  52. [21:00 - 22:00] 2/4
  53. [21:00 - 22:00] 3/4
  54. [21:00 - 22:00] 4/4
  55. [22:00 - 23:00] 1/7
  56. [22:00 - 23:00] 2/7
  57. [22:00 - 23:00] 3/7
  58. [22:00 - 23:00] 4/7
  59. [22:00 - 23:00] 5/7
  60. [22:00 - 23:00] 6/7
  61. [22:00 - 23:00] 7/7
  62. [23:00 - 24:00] 1/5
  63. [23:00 - 24:00] 2/5
  64. [23:00 - 24:00] 3/5
  65. [23:00 - 24:00] 4/5 1) 断片化(だんぺんか)
  66. [23:00 - 24:00] 5/5