SlideShare ist ein Scribd-Unternehmen logo
1 von 35
Downloaden Sie, um offline zu lesen
Copyright © DeNA Co.,Ltd. All Rights Reserved.
DeNA のゲーム開発を
支える技術
クライアントサイド編
January 29, 2016
Hironori Bono
System Management Unit
DeNA Co., Ltd.
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Games and DeNA
Feed the world.
Band Aid - Do They Know It's Christmas?
Copyright © DeNA Co.,Ltd. All Rights Reserved.
DeNA のミッション
 ユーザを楽しませる
⁃ 高品質のゲームの提供
 ゲーム開発者のサポート
⁃ 解析ツールの提供
⁃ Mobage APIs の提供
⁃ クライアント SDKs の提供
Games
APIs
3
Copyright © DeNA Co.,Ltd. All Rights Reserved.
ゲーム開発者の要望
 ネイティブ並の品質のゲームの開発
⁃ リッチなグラフィクス (2D or 3D)
⁃ リッチなサウンド (BGM, SEs, and voices)
⁃ スムーズな動作 (30 fps ~ 60 fps)
⁃ 高いデバイス互換性
 開発費の削減
⁃ 資産の購入 (ハードウェアやソフトウェア)
⁃ 実装
⁃ テスト
⁃ 運用
4
ネイティブ並の品質のゲームを
Web ゲーム並の費用で開発したい
Copyright © DeNA Co.,Ltd. All Rights Reserved.
DeNA がやるべきこと
0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
Native Games
DeNA Games
Web Games
品質
5
 ゲーム開発者への高品質なサポート
⁃ ゲームの品質をネイティブ並に向上
品質向上
Copyright © DeNA Co.,Ltd. All Rights Reserved.
DeNA がやるべきこと
0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
Native Games
DeNA Games
Web Games
コスト
6
 ゲーム開発者への高品質なサポート
⁃ ゲームの品質をネイティブ並に向上
⁃ ゲーム開発コストの削減
コスト削減
Copyright © DeNA Co.,Ltd. All Rights Reserved.
開発者へのアクション
 リッチなクライアント SDK の提供
⁃ ネイティブゲーム並の機能
• グラフィック (OpenGL ES や Cocoa など)
• サウンド (OpenSL ES や OpenAL など)
• ネットワーク (sockets)
⁃ ネイティブゲーム並の速度
⁃ デバイス互換性の向上
• PCs (Chrome, Firefox, IE 10+, and Safari)
• スマートフォン (Android, iPhone, and Windows Phone)
⁃ 開発費の削減
• 既存資産の再利用
• テスト工数の削減
7
Copyright © DeNA Co.,Ltd. All Rights Reserved.
現在の状況
 ShellApp SDK
 CreateJS-Lite (仮)
⁃ CreateJS 互換の JavaScript ライブラリ
⁃ ゲーム実行速度の向上
⁃ スマートフォンへの最適化
 CreateJS-Lite (仮) Accelerator
⁃ CreateJS-Lite (仮) ゲーム高速化用ネイティブライブラリ
⁃ Android および iOS デバイスにおけるゲーム速度の向上
⁃ アプリ開発コストの削減
8
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Games and CreateJS-Lite
There’s nothing to gain,
if I would restrain.
Helloween - My God-Given Right
Copyright © DeNA Co.,Ltd. All Rights Reserved.
CreateJS-Lite (仮) の目的
 CreateJS ゲームの実行速度を 10 倍にする
⁃ 高速な HTML5 API を用いた CreateJS の部分エミュレート
• 100% 互換を目指さない
• 非実装機能に対しては代替案を提案
⁃ 描画結果やアニメーション状態のキャッシュ
⁃ 低速な処理のバックグラウンド実行
⁃ ネットワークリソースのキャッシュ
 CreateJS ゲームの移行コストの最小化
⁃ Flash が生成した CreateJS コードの直接実行
⁃ ブラウザおよびデバイス依存コードの吸収
10
Copyright © DeNA Co.,Ltd. All Rights Reserved.
CreateJS-Lite の概要 (グラフィック)
11
 複数の方法を用いたグラフィック機能 (EaselJS) の実装
⁃ WebGL
⁃ Canvas 2D
⁃ OpenGL ES (CreateJS-Lite Accelerator 利用時)
 ブラウザおよびデバイスに最適な方法を自動選択
⁃ ゲーム開発者の負荷軽減
CreateJS-Lite EaselJS
WebGL
Canvas 2D
OpenGL ES
Copyright © DeNA Co.,Ltd. All Rights Reserved.
CreateJS-Lite の概要 (サウンド)
12
 複数の方法を用いたサウンド機能 (SoundJS) の実装
⁃ Web Audio + <iframe> workers
⁃ Web Audio
⁃ HTML Audio
⁃ OpenSL ES (CreateJS-Lite Accelerator 利用時)
 標準では <iframe> workers を用いてバックグラウンドで再生
CreateJS-Lite SoundJS
Web Audio + Worker
Web Audio
HTML Audio
OpenSL ES
Copyright © DeNA Co.,Ltd. All Rights Reserved.
CreateJS-Lite の概要 (リソースロード)
13
 複数の方法を用いたロード部分 (PreloadJS) の実装
⁃ XMLHttpRequest v2 + Indexed Database
⁃ XMLHttpRequest (v1)
⁃ Tag Loader
 ロードされたリソースを自動キャッシュ
⁃ Images, Sounds, CSS stylesheets, and JavaScript files.
CreateJS-Lite PreloadJS
XMLHttpRequest v2 + Indexed DB
XMLHttpRequest (v1)
Tag Loader
Copyright © DeNA Co.,Ltd. All Rights Reserved.
CreateJS-Lite and WebGL
When the children cry,
let them know we tried.
White Lion - When The Children Cry
Copyright © DeNA Co.,Ltd. All Rights Reserved.
WebGL の概要
 OpenGL ES 2.0 をベースにした HTML5 API
⁃ (比較的) 低レベルの API
⁃ Canvas 2D と比べて高速
 Shader program を用いた GPU でのコード実行
⁃ GPU の方が CPU より高速 (並列性が高い処理の場合)
⁃ 全ての CPU 処理を置き換えることはできない
 (CreateJS が用いている) Canvas 2D と等価ではない
⁃ テキストやベクタ画像の描画
⁃ 座標系の相違
 主要なブラウザで実装済
⁃ Android browsers (5.0~), Chrome, Firefox, IE (11~), and
Safari (8.0~)
⁃ (主に GPU の非互換性のため) disabled の場合有
15
Copyright © DeNA Co.,Ltd. All Rights Reserved.
CreateJS-Lite (仮) と WebGL
 WebGL を用いて CreateJS の遅い処理を GPU で実行
⁃ Canvas 2D を用いた画面描画部分
⁃ 互換性のため一部 Canvas 2D 処理を用いている
 JavaScript 処理を追加して CreateJS をエミュレート
⁃ CreateJS オブジェクトから WebGL テクスチャの生成
⁃ CreateJS オブジェクトのプロパティから WebGL 行例の生成
16
CreateJS-Lite
CreateJS
Canvas 2D
WebGL
JavaScript
Copyright © DeNA Co.,Ltd. All Rights Reserved.
CreateJS-Lite (仮) と WebGL テクスチャ
1. Text (shape) のサイズを計算
2. 空の <canvas> 要素を作成
3. Text (shape) を <canvas>
要素に描画
4. この <canvas> 要素を
WebGL テクスチャに変換
17
Text (shape) 変更時のみ実行
Copyright © DeNA Co.,Ltd. All Rights Reserved.
CreateJS-Lite (仮) と WebGL 行列
1. CerateJS オブジェクトのプロ
パティからアフィン変換行列
を計算
2. 先祖オブジェクトのアフィン
変換行列との積を計算
3. 座標系変換行列との積を計算
⁃ HTML 座標系から WebGL 座
標系
18
𝑥, 𝑦, 𝑠𝑐𝑎𝑙𝑒 𝑥, 𝑠𝑐𝑎𝑙𝑒 𝑦, 𝑟𝑜𝑡𝑎𝑡𝑖𝑜𝑛,
𝑠𝑘𝑒𝑤𝑥, 𝑠𝑘𝑒𝑤 𝑦, 𝑟𝑒𝑔 𝑥, 𝑟𝑒𝑔 𝑦
𝑇𝑖 =
𝑎𝑖 𝑐𝑖 𝑡𝑥𝑖
𝑏𝑖 𝑑𝑖 𝑡𝑦𝑖
0 0 1
𝑇𝑖
1
𝑖=𝑛
=
𝑎 𝑛 𝑐 𝑛 𝑡𝑥 𝑛
𝑏 𝑛 𝑑 𝑛 𝑡𝑦𝑛
0 0 1
⋯
𝑎1 𝑐1 𝑡𝑥1
𝑏1 𝑑1 𝑡𝑦1
0 0 1
2
𝑤𝑖𝑑𝑡ℎ
0 −1
0
−2
ℎ𝑒𝑖𝑔ℎ𝑡
1
0 0 1
⋅ 𝑇𝑖
𝑛
𝑖=1
プロパティ変更時のみ実行
タップ処理も利用
Copyright © DeNA Co.,Ltd. All Rights Reserved.
CreateJS-Lite and
Indexed Database
I can't live with or without you.
U2 - With Or Without You
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Indexed Database の概要
 データベース処理用 HTML5 API
⁃ データベースの実装 (SQLite や My SQL など) に非依存
 バイナリデータの読み書きが可能
⁃ 画像やサウンドなどのバイナリファイルの直接読み書き可能
 主要なブラウザで実装済
⁃ Android browsers (4.4+), Chrome, Firefox, IE (10+), and
Safari (8.0+)
⁃ データベースサイズの上限有
20
Copyright © DeNA Co.,Ltd. All Rights Reserved.
CreateJS-Lite (仮) と Indexed Database
 ファイルのキャッシュ
⁃ (ゲーム開始時における) ロード処理の高速化
• ロード済みファイル (画像・サウンド) をリロードしない
⁃ ゲーム中のロード処理の軽減
• ゲームサーバとクライアント間の通信を妨害しない
 キャッシュ管理用処理の追加
⁃ ゲーム更新時にキャッシュを全削除
21
CreateJS-Lite
CreateJS
XMLHttpRequest
Indexed DB
JavaScript
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Game
CreateJS-Lite (仮) のファイル読み込み (キャッシュ)
1. プリロード開始
2. キャッシュ読込
⁃ ファイルデータ受信
3. キャッシュ更新
⁃ ファイルの更新時刻 (利用さ
れていないファイルの削除に
利用)
⁃ バックグラウンド実行
4. CreateJS オブジェクト作成
22
ServerCache
CreateJS
Lite
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Game
CreateJS-Lite (仮) のファイル読み込み (サーバ)
1. プリロード開始
2. キャッシュ読込
⁃ ファイルが存在しない
3. サーバからファイル読込
⁃ XMLHttpRequest v2 を利用
してデータを直接取得
4. キャッシュ書込
⁃ ファイルデータと更新時刻
⁃ バックグラウンドで実行
5. CreateJS オブジェクト作成
23
ServerCache
CreateJS
Lite
Copyright © DeNA Co.,Ltd. All Rights Reserved.
CreateJS-Lite and Optimization
Truth will find its reward.
Judas Priest - Sword Of Damocles
Copyright © DeNA Co.,Ltd. All Rights Reserved.
CreateJS-Lite (仮) の制約
 CreateJS と 100% 互換ではない
⁃ 未実装な機能
• WebGL や OpenGL で実装困難な機能
• ゲームで利用されていない機能
⁃ Bugs
 (一般的に) CreateJS よりもメモリ使用量が多い
⁃ 描画キャッシュ
 ブラウザの制約
⁃ CPU 負荷の高いブラウザ機能との同時利用
• CreateJS-Lite (仮) が利用可能な CPU リソース減少
25
Copyright © DeNA Co.,Ltd. All Rights Reserved.
CreateJS-Lite (仮) 向け最適化
 CreateJS アニメーションの負荷軽減
⁃ (一般的に) Flash アニメータの作業量と反比例
 メモリ利用量の削減
⁃ 不要な CreateJS オブジェクトの削除
• Text, Shapes は削除時にキャッシュも削除
⁃ ページ遷移 (unload または hashchange)
• すべての CreateJS オブジェクトを削除
⁃ テクスチャフォーマットの指定 (大きい Bitmap の場合)
 CPU 負荷の高いブラウザ機能の削減
⁃ CSS animations (transforms)
 バグ報告およびリクエスト
26
Copyright © DeNA Co.,Ltd. All Rights Reserved.
CreateJS-Lite and
CreateJS-Lite Accelerator
We'll get higher and higher.
Straight up we’ll climb.
Van Halen - Dreams
Copyright © DeNA Co.,Ltd. All Rights Reserved.
CreateJS-Lite (仮) Accelerator 開発の背景
 HTML5 API を提供していないデバイス (OS)
⁃ Android 4.3 以前
⁃ iOS 7 以前
 ネイティブゲームより遅い
⁃ ブラウザのオーバーヘッド
• WebGL テクスチャを OpenGL テクスチャ (<canvas>) に描画後そ
の OpenGL テクスチャを画面に描画
 HTML5 API 利用の制約
⁃ サウンドの再生にユーザアクション (タップ等) が必要
 HTML5 API のデバイス間 (ブラウザ間) 互換性
28
CreateJS-Lite (仮) ゲームアプリを
ネイティブアプリと同等にしたい
Copyright © DeNA Co.,Ltd. All Rights Reserved.
CreateJS-Lite (仮) Accelerator の概要
 ネイティブアプリと同等の品質を実現
⁃ ネイティブ API の直接利用
• OpenGL ES 2.0
• OpenSL ES
⁃ ブラウザが提供していない機能の提供
• ファイルシステム
• ネットワーク (開発中)
⁃ CPU 向け最適化 (Android)
• NEON, SSE2 の利用 (画像デコード)
• メモリ最適化
 ブラウザゲームからの移行コストの最小化
⁃ CreateJS-Lite (仮) は自動的に利用
• タップ処理も利用可
29
Copyright © DeNA Co.,Ltd. All Rights Reserved.
CreateJS-Lite (仮) Accelerator の構造
2 個の view で構成
 WebView (UIWebView)
⁃ ゲームの実行
⁃ DOM オブジェクトの表示
 CreateJS View
⁃ CreateJS オブジェクトの表示
• OpenGL ES を利用
⁃ SoundJS サウンドの再生
(Android)
• OpenSL ES で再生
30
WebView CreateJS view
Copyright © DeNA Co.,Ltd. All Rights Reserved.
CreateJS-Lite (仮) Accelerator の画面描画
1. OpenGL テクスチャの作成
⁃ 画像ロード時に作成
2. 描画コマンドの送信
⁃ 1フレームを描画するためのコ
マンド列を送信
⁃ Text, Shape の画像も送信
3. 描画コマンドの実行
31
描画コマンド
WebView OpenGL view
Copyright © DeNA Co.,Ltd. All Rights Reserved.
CreateJS-Lite (仮) Accelerator の制約
 対応 OS
⁃ Android 4.0 以降 (要 OpenGL ES 2.0 対応)
⁃ iOS 7.0 以降
 画像形式
⁃ PNG Baseline, JPEG Baseline のみ (Android)
 複数の stage の描画
⁃ 1 個の OpenGL View にまとめて描画
 Stage の <canvas> 要素 (およびその親要素) の背景
⁃ OpenGL View を下に表示するため transparent にする
32
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Laplace Link and CreateJS-Lite
gloops は、新しい価値に挑戦する
会社でありたい
Tomohiro Ueda
Copyright © DeNA Co.,Ltd. All Rights Reserved.
ラプラスリンクと CreateJS-Lite (仮)
事前登録受付中
http://laplacelink.jp/
34
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Thank You!
Take me where my future's lyin',
St. Elmo's fire.
John Parr - St. Elmo's Fire

Weitere ähnliche Inhalte

Was ist angesagt?

爆速でAndroidアプリを ビルドするための仕組み DeNA TechCon #denatechcon
爆速でAndroidアプリを ビルドするための仕組み DeNA TechCon #denatechcon爆速でAndroidアプリを ビルドするための仕組み DeNA TechCon #denatechcon
爆速でAndroidアプリを ビルドするための仕組み DeNA TechCon #denatechconYosaku Toyama
 
DeNA内製ゲームエンジンの現状と目指す未来 #denatechcon
DeNA内製ゲームエンジンの現状と目指す未来 #denatechconDeNA内製ゲームエンジンの現状と目指す未来 #denatechcon
DeNA内製ゲームエンジンの現状と目指す未来 #denatechconDeNA
 
FINAL FANTASY Record Keeperのマスターデータを支える技術
FINAL FANTASY Record Keeperのマスターデータを支える技術FINAL FANTASY Record Keeperのマスターデータを支える技術
FINAL FANTASY Record Keeperのマスターデータを支える技術dena_study
 
DeNA流cocos2d xとの付き合い方
DeNA流cocos2d xとの付き合い方DeNA流cocos2d xとの付き合い方
DeNA流cocos2d xとの付き合い方dena_study
 
B2B2Cなヘルスケアサービスの作り方
B2B2Cなヘルスケアサービスの作り方B2B2Cなヘルスケアサービスの作り方
B2B2Cなヘルスケアサービスの作り方Tomohiro MITSUMUNE
 
ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先Kazuho Oku
 
DeNAの動画配信サービスを支えるインフラの内部 #denatechcon
DeNAの動画配信サービスを支えるインフラの内部  #denatechconDeNAの動画配信サービスを支えるインフラの内部  #denatechcon
DeNAの動画配信サービスを支えるインフラの内部 #denatechconDeNA
 
DeNAのプログラミング教育の取り組み #denatechcon
DeNAのプログラミング教育の取り組み #denatechconDeNAのプログラミング教育の取り組み #denatechcon
DeNAのプログラミング教育の取り組み #denatechconDeNA
 
Unityで本格戦国シュミレーションRPG 開発
Unityで本格戦国シュミレーションRPG 開発Unityで本格戦国シュミレーションRPG 開発
Unityで本格戦国シュミレーションRPG 開発dena_study
 
Unity開発で週イチ呑み会を支える技術
Unity開発で週イチ呑み会を支える技術Unity開発で週イチ呑み会を支える技術
Unity開発で週イチ呑み会を支える技術kazuya noshiro
 
FINAL FANTASY
 Record Keeper アニメーション制作の濃ゆい話
FINAL FANTASY
 Record Keeper アニメーション制作の濃ゆい話FINAL FANTASY
 Record Keeper アニメーション制作の濃ゆい話
FINAL FANTASY
 Record Keeper アニメーション制作の濃ゆい話Toshiharu Shirai
 
DeNA private cloudのその後 #denatechcon
DeNA private cloudのその後 #denatechconDeNA private cloudのその後 #denatechcon
DeNA private cloudのその後 #denatechconDeNA
 
FINAL FANTASY Record Keeper の作り方
FINAL FANTASY Record Keeper の作り方FINAL FANTASY Record Keeper の作り方
FINAL FANTASY Record Keeper の作り方dena_study
 
AndApp開発における全て #denatechcon
AndApp開発における全て #denatechconAndApp開発における全て #denatechcon
AndApp開発における全て #denatechconDeNA
 
CEDEC 2013 - 徹底的にチューンしたハイブリッドアプリ「D.O.T. Defender of Texel」の制作
CEDEC 2013 - 徹底的にチューンしたハイブリッドアプリ「D.O.T. Defender of Texel」の制作CEDEC 2013 - 徹底的にチューンしたハイブリッドアプリ「D.O.T. Defender of Texel」の制作
CEDEC 2013 - 徹底的にチューンしたハイブリッドアプリ「D.O.T. Defender of Texel」の制作Nobutaka Takushima
 
FINAL FANTASY
 Record Keeper 演出データについて
FINAL FANTASY
 Record Keeper 演出データについてFINAL FANTASY
 Record Keeper 演出データについて
FINAL FANTASY
 Record Keeper 演出データについてdena_study
 
革新的ブラウザゲームを支えるプラットフォーム技術
革新的ブラウザゲームを支えるプラットフォーム技術革新的ブラウザゲームを支えるプラットフォーム技術
革新的ブラウザゲームを支えるプラットフォーム技術Toru Yamaguchi
 
アバター着せ替えアプリ開発におけるフロントエンド技術(Vue.js活用事例) #denatechcon
アバター着せ替えアプリ開発におけるフロントエンド技術(Vue.js活用事例) #denatechconアバター着せ替えアプリ開発におけるフロントエンド技術(Vue.js活用事例) #denatechcon
アバター着せ替えアプリ開発におけるフロントエンド技術(Vue.js活用事例) #denatechconDeNA
 
Unityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechconUnityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechconDeNA
 
その後のDeNAのネイティブアプリ開発 #denatechcon
その後のDeNAのネイティブアプリ開発 #denatechconその後のDeNAのネイティブアプリ開発 #denatechcon
その後のDeNAのネイティブアプリ開発 #denatechconDeNA
 

Was ist angesagt? (20)

爆速でAndroidアプリを ビルドするための仕組み DeNA TechCon #denatechcon
爆速でAndroidアプリを ビルドするための仕組み DeNA TechCon #denatechcon爆速でAndroidアプリを ビルドするための仕組み DeNA TechCon #denatechcon
爆速でAndroidアプリを ビルドするための仕組み DeNA TechCon #denatechcon
 
DeNA内製ゲームエンジンの現状と目指す未来 #denatechcon
DeNA内製ゲームエンジンの現状と目指す未来 #denatechconDeNA内製ゲームエンジンの現状と目指す未来 #denatechcon
DeNA内製ゲームエンジンの現状と目指す未来 #denatechcon
 
FINAL FANTASY Record Keeperのマスターデータを支える技術
FINAL FANTASY Record Keeperのマスターデータを支える技術FINAL FANTASY Record Keeperのマスターデータを支える技術
FINAL FANTASY Record Keeperのマスターデータを支える技術
 
DeNA流cocos2d xとの付き合い方
DeNA流cocos2d xとの付き合い方DeNA流cocos2d xとの付き合い方
DeNA流cocos2d xとの付き合い方
 
B2B2Cなヘルスケアサービスの作り方
B2B2Cなヘルスケアサービスの作り方B2B2Cなヘルスケアサービスの作り方
B2B2Cなヘルスケアサービスの作り方
 
ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
 
DeNAの動画配信サービスを支えるインフラの内部 #denatechcon
DeNAの動画配信サービスを支えるインフラの内部  #denatechconDeNAの動画配信サービスを支えるインフラの内部  #denatechcon
DeNAの動画配信サービスを支えるインフラの内部 #denatechcon
 
DeNAのプログラミング教育の取り組み #denatechcon
DeNAのプログラミング教育の取り組み #denatechconDeNAのプログラミング教育の取り組み #denatechcon
DeNAのプログラミング教育の取り組み #denatechcon
 
Unityで本格戦国シュミレーションRPG 開発
Unityで本格戦国シュミレーションRPG 開発Unityで本格戦国シュミレーションRPG 開発
Unityで本格戦国シュミレーションRPG 開発
 
Unity開発で週イチ呑み会を支える技術
Unity開発で週イチ呑み会を支える技術Unity開発で週イチ呑み会を支える技術
Unity開発で週イチ呑み会を支える技術
 
FINAL FANTASY
 Record Keeper アニメーション制作の濃ゆい話
FINAL FANTASY
 Record Keeper アニメーション制作の濃ゆい話FINAL FANTASY
 Record Keeper アニメーション制作の濃ゆい話
FINAL FANTASY
 Record Keeper アニメーション制作の濃ゆい話
 
DeNA private cloudのその後 #denatechcon
DeNA private cloudのその後 #denatechconDeNA private cloudのその後 #denatechcon
DeNA private cloudのその後 #denatechcon
 
FINAL FANTASY Record Keeper の作り方
FINAL FANTASY Record Keeper の作り方FINAL FANTASY Record Keeper の作り方
FINAL FANTASY Record Keeper の作り方
 
AndApp開発における全て #denatechcon
AndApp開発における全て #denatechconAndApp開発における全て #denatechcon
AndApp開発における全て #denatechcon
 
CEDEC 2013 - 徹底的にチューンしたハイブリッドアプリ「D.O.T. Defender of Texel」の制作
CEDEC 2013 - 徹底的にチューンしたハイブリッドアプリ「D.O.T. Defender of Texel」の制作CEDEC 2013 - 徹底的にチューンしたハイブリッドアプリ「D.O.T. Defender of Texel」の制作
CEDEC 2013 - 徹底的にチューンしたハイブリッドアプリ「D.O.T. Defender of Texel」の制作
 
FINAL FANTASY
 Record Keeper 演出データについて
FINAL FANTASY
 Record Keeper 演出データについてFINAL FANTASY
 Record Keeper 演出データについて
FINAL FANTASY
 Record Keeper 演出データについて
 
革新的ブラウザゲームを支えるプラットフォーム技術
革新的ブラウザゲームを支えるプラットフォーム技術革新的ブラウザゲームを支えるプラットフォーム技術
革新的ブラウザゲームを支えるプラットフォーム技術
 
アバター着せ替えアプリ開発におけるフロントエンド技術(Vue.js活用事例) #denatechcon
アバター着せ替えアプリ開発におけるフロントエンド技術(Vue.js活用事例) #denatechconアバター着せ替えアプリ開発におけるフロントエンド技術(Vue.js活用事例) #denatechcon
アバター着せ替えアプリ開発におけるフロントエンド技術(Vue.js活用事例) #denatechcon
 
Unityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechconUnityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechcon
 
その後のDeNAのネイティブアプリ開発 #denatechcon
その後のDeNAのネイティブアプリ開発 #denatechconその後のDeNAのネイティブアプリ開発 #denatechcon
その後のDeNAのネイティブアプリ開発 #denatechcon
 

Andere mochten auch

実際にSoundJSを使ってみて分かったこと
実際にSoundJSを使ってみて分かったこと実際にSoundJSを使ってみて分かったこと
実際にSoundJSを使ってみて分かったことYoshiya OKI
 
CreateJSでアプリつくった話
CreateJSでアプリつくった話CreateJSでアプリつくった話
CreateJSでアプリつくった話Ru MuckRu
 
C++11やemscriptenと付き合って1年間の振り返り
C++11やemscriptenと付き合って1年間の振り返りC++11やemscriptenと付き合って1年間の振り返り
C++11やemscriptenと付き合って1年間の振り返りpaosidufgythrj
 
自動運転に向けた取り組みと安全管理
自動運転に向けた取り組みと安全管理自動運転に向けた取り組みと安全管理
自動運転に向けた取り組みと安全管理Kuwabara Kunihito
 
Webエンジニアが学ぶ自動運転を支える技術
Webエンジニアが学ぶ自動運転を支える技術Webエンジニアが学ぶ自動運転を支える技術
Webエンジニアが学ぶ自動運転を支える技術Hideo Kimura
 
マイクロサービスっぽい感じの話
マイクロサービスっぽい感じの話マイクロサービスっぽい感じの話
マイクロサービスっぽい感じの話Makoto Haruyama
 
emscriptenでC/C++プログラムをwebブラウザから使うまでの難所攻略
emscriptenでC/C++プログラムをwebブラウザから使うまでの難所攻略emscriptenでC/C++プログラムをwebブラウザから使うまでの難所攻略
emscriptenでC/C++プログラムをwebブラウザから使うまでの難所攻略祐司 伊藤
 
DeNAにおける機械学習・深層学習活用
DeNAにおける機械学習・深層学習活用DeNAにおける機械学習・深層学習活用
DeNAにおける機械学習・深層学習活用Kazuki Fujikawa
 
Diccionario nombres biblicos
Diccionario nombres biblicosDiccionario nombres biblicos
Diccionario nombres biblicosvision2013
 
DeNAのゲーム開発を支える Game Backend as a Service
DeNAのゲーム開発を支える Game Backend as a ServiceDeNAのゲーム開発を支える Game Backend as a Service
DeNAのゲーム開発を支える Game Backend as a ServiceMakoto Haruyama
 
FINAL FANTASY Record Keeperを支えたGolang
FINAL FANTASY Record Keeperを支えたGolangFINAL FANTASY Record Keeperを支えたGolang
FINAL FANTASY Record Keeperを支えたGolangYoshiki Shibukawa
 
DeNAの機械学習・深層学習活用した 体験提供の挑戦
DeNAの機械学習・深層学習活用した体験提供の挑戦DeNAの機械学習・深層学習活用した体験提供の挑戦
DeNAの機械学習・深層学習活用した 体験提供の挑戦Koichi Hamada
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!mosa siru
 
DeNAが取り組む Software Engineer in Test
DeNAが取り組む Software Engineer in TestDeNAが取り組む Software Engineer in Test
DeNAが取り組む Software Engineer in TestMasaki Nakagawa
 
これからの Microservices
これからの Microservicesこれからの Microservices
これからの MicroservicesToru Yamaguchi
 
DeNAオリジナル ゲーム専用プラットフォーム Sakashoについて
DeNAオリジナル ゲーム専用プラットフォーム SakashoについてDeNAオリジナル ゲーム専用プラットフォーム Sakashoについて
DeNAオリジナル ゲーム専用プラットフォーム SakashoについてMakoto Haruyama
 
DeNAの分析を支える分析基盤
DeNAの分析を支える分析基盤DeNAの分析を支える分析基盤
DeNAの分析を支える分析基盤Kenshin Yamada
 
DeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組み
DeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組みDeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組み
DeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組みToshiharu Sugiyama
 

Andere mochten auch (20)

実際にSoundJSを使ってみて分かったこと
実際にSoundJSを使ってみて分かったこと実際にSoundJSを使ってみて分かったこと
実際にSoundJSを使ってみて分かったこと
 
CreateJSでアプリつくった話
CreateJSでアプリつくった話CreateJSでアプリつくった話
CreateJSでアプリつくった話
 
Play勉強会 第3回
Play勉強会 第3回Play勉強会 第3回
Play勉強会 第3回
 
C++11やemscriptenと付き合って1年間の振り返り
C++11やemscriptenと付き合って1年間の振り返りC++11やemscriptenと付き合って1年間の振り返り
C++11やemscriptenと付き合って1年間の振り返り
 
自動運転に向けた取り組みと安全管理
自動運転に向けた取り組みと安全管理自動運転に向けた取り組みと安全管理
自動運転に向けた取り組みと安全管理
 
Webエンジニアが学ぶ自動運転を支える技術
Webエンジニアが学ぶ自動運転を支える技術Webエンジニアが学ぶ自動運転を支える技術
Webエンジニアが学ぶ自動運転を支える技術
 
マイクロサービスっぽい感じの話
マイクロサービスっぽい感じの話マイクロサービスっぽい感じの話
マイクロサービスっぽい感じの話
 
emscriptenでC/C++プログラムをwebブラウザから使うまでの難所攻略
emscriptenでC/C++プログラムをwebブラウザから使うまでの難所攻略emscriptenでC/C++プログラムをwebブラウザから使うまでの難所攻略
emscriptenでC/C++プログラムをwebブラウザから使うまでの難所攻略
 
DeNAにおける機械学習・深層学習活用
DeNAにおける機械学習・深層学習活用DeNAにおける機械学習・深層学習活用
DeNAにおける機械学習・深層学習活用
 
Diccionario nombres biblicos
Diccionario nombres biblicosDiccionario nombres biblicos
Diccionario nombres biblicos
 
DeNAのゲーム開発を支える Game Backend as a Service
DeNAのゲーム開発を支える Game Backend as a ServiceDeNAのゲーム開発を支える Game Backend as a Service
DeNAのゲーム開発を支える Game Backend as a Service
 
FINAL FANTASY Record Keeperを支えたGolang
FINAL FANTASY Record Keeperを支えたGolangFINAL FANTASY Record Keeperを支えたGolang
FINAL FANTASY Record Keeperを支えたGolang
 
DeNAの機械学習・深層学習活用した 体験提供の挑戦
DeNAの機械学習・深層学習活用した体験提供の挑戦DeNAの機械学習・深層学習活用した体験提供の挑戦
DeNAの機械学習・深層学習活用した 体験提供の挑戦
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
 
DeNAが取り組む Software Engineer in Test
DeNAが取り組む Software Engineer in TestDeNAが取り組む Software Engineer in Test
DeNAが取り組む Software Engineer in Test
 
これからの Microservices
これからの Microservicesこれからの Microservices
これからの Microservices
 
DeNAオリジナル ゲーム専用プラットフォーム Sakashoについて
DeNAオリジナル ゲーム専用プラットフォーム SakashoについてDeNAオリジナル ゲーム専用プラットフォーム Sakashoについて
DeNAオリジナル ゲーム専用プラットフォーム Sakashoについて
 
Cmujp21_node-webkit
Cmujp21_node-webkitCmujp21_node-webkit
Cmujp21_node-webkit
 
DeNAの分析を支える分析基盤
DeNAの分析を支える分析基盤DeNAの分析を支える分析基盤
DeNAの分析を支える分析基盤
 
DeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組み
DeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組みDeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組み
DeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組み
 

Ähnlich wie DeNAのゲーム開発を支える技術 (クライアントサイド編)

剣と魔法のログレス いにしえの女神 〜スマホ時代の MMORPG を支える技術
剣と魔法のログレス いにしえの女神 〜スマホ時代の MMORPG を支える技術剣と魔法のログレス いにしえの女神 〜スマホ時代の MMORPG を支える技術
剣と魔法のログレス いにしえの女神 〜スマホ時代の MMORPG を支える技術Satoshi Yamafuji
 
GTMF2012 SpriteStudio と "Unity" と "CoronaSDK" と "ngCore" ! ~組み合わせて改善する 2D ワーク...
GTMF2012 SpriteStudio と "Unity" と "CoronaSDK" と "ngCore" ! ~組み合わせて改善する 2D ワーク...GTMF2012 SpriteStudio と "Unity" と "CoronaSDK" と "ngCore" ! ~組み合わせて改善する 2D ワーク...
GTMF2012 SpriteStudio と "Unity" と "CoronaSDK" と "ngCore" ! ~組み合わせて改善する 2D ワーク...Web Technology Corp.
 
Windows 8 Developers カンファレンス
Windows 8 Developers カンファレンスWindows 8 Developers カンファレンス
Windows 8 Developers カンファレンスKaoru NAKAMURA
 
DeNAの最新のマスタデータ管理システム Oyakata の全容
DeNAの最新のマスタデータ管理システム Oyakata の全容DeNAの最新のマスタデータ管理システム Oyakata の全容
DeNAの最新のマスタデータ管理システム Oyakata の全容sairoutine
 
改めて注目される2D アニメーションツール SpriteStudio ~国産2Dツールが(舶来ゲームエンジンの力を借りながら)世界へ~
改めて注目される2D アニメーションツール SpriteStudio ~国産2Dツールが(舶来ゲームエンジンの力を借りながら)世界へ~改めて注目される2D アニメーションツール SpriteStudio ~国産2Dツールが(舶来ゲームエンジンの力を借りながら)世界へ~
改めて注目される2D アニメーションツール SpriteStudio ~国産2Dツールが(舶来ゲームエンジンの力を借りながら)世界へ~Web Technology Corp.
 
GREE TechTalk グリーのクライアント技術戦略
GREE TechTalk グリーのクライアント技術戦略GREE TechTalk グリーのクライアント技術戦略
GREE TechTalk グリーのクライアント技術戦略Daniel-Hiroyuki Haga
 
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”Drecom Co., Ltd.
 
シンラ・テクノロジー第2回クラウドゲーム開発者会議
シンラ・テクノロジー第2回クラウドゲーム開発者会議シンラ・テクノロジー第2回クラウドゲーム開発者会議
シンラ・テクノロジー第2回クラウドゲーム開発者会議Shinra_Technologies
 
Rails on GKEで運用するWebアプリケーションの紹介
Rails on GKEで運用するWebアプリケーションの紹介Rails on GKEで運用するWebアプリケーションの紹介
Rails on GKEで運用するWebアプリケーションの紹介Makoto Haruyama
 
2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ LiveOps とデータ分析編 ~
2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ LiveOps とデータ分析編 ~2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ LiveOps とデータ分析編 ~
2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ LiveOps とデータ分析編 ~Daisuke Masubuchi
 
【de:code 2020】 2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ LiveOps とデータ分析編 ~
【de:code 2020】 2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ LiveOps とデータ分析編 ~【de:code 2020】 2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ LiveOps とデータ分析編 ~
【de:code 2020】 2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ LiveOps とデータ分析編 ~日本マイクロソフト株式会社
 
Dev camp2012jpn day2special
Dev camp2012jpn day2specialDev camp2012jpn day2special
Dev camp2012jpn day2specialKatsuhito Katoh
 
Developr Camp 2012 Japan Fall Day2 Special Session - Visual Studio 2012 で始める ...
Developr Camp 2012 Japan Fall Day2 Special Session - Visual Studio 2012 で始める ...Developr Camp 2012 Japan Fall Day2 Special Session - Visual Studio 2012 で始める ...
Developr Camp 2012 Japan Fall Day2 Special Session - Visual Studio 2012 で始める ...Developer Camp 2012 Japan Fall
 
クラウドサービスを使って作る動画サイト?
クラウドサービスを使って作る動画サイト?クラウドサービスを使って作る動画サイト?
クラウドサービスを使って作る動画サイト?Daichi Isami
 
LEGO MINDSTORMS EV3 API
LEGO MINDSTORMS EV3 APILEGO MINDSTORMS EV3 API
LEGO MINDSTORMS EV3 APIAkira Hatsune
 
性能問題を起こしにくい信頼されるクラウド RDB のつくりかた
性能問題を起こしにくい信頼されるクラウド RDB のつくりかた性能問題を起こしにくい信頼されるクラウド RDB のつくりかた
性能問題を起こしにくい信頼されるクラウド RDB のつくりかたTomoyuki Oota
 
Pull request時の画面差分取得の自動化
Pull request時の画面差分取得の自動化Pull request時の画面差分取得の自動化
Pull request時の画面差分取得の自動化Shunsuke Maeda
 
Html5conference2012 yota hisamichi_世界に向けたスマートフォンゲームを支える、 greeのテクニカルアーティストについて。
Html5conference2012 yota hisamichi_世界に向けたスマートフォンゲームを支える、 greeのテクニカルアーティストについて。Html5conference2012 yota hisamichi_世界に向けたスマートフォンゲームを支える、 greeのテクニカルアーティストについて。
Html5conference2012 yota hisamichi_世界に向けたスマートフォンゲームを支える、 greeのテクニカルアーティストについて。ひさし App
 
【14-B-2】グリーを支えるデータ分析基盤の過去と現在(橋本泰一〔グリー〕)
【14-B-2】グリーを支えるデータ分析基盤の過去と現在(橋本泰一〔グリー〕)【14-B-2】グリーを支えるデータ分析基盤の過去と現在(橋本泰一〔グリー〕)
【14-B-2】グリーを支えるデータ分析基盤の過去と現在(橋本泰一〔グリー〕)Developers Summit
 
Cocos2d-x 3.0を使ったゲーム “消滅都市” の開発事例
Cocos2d-x 3.0を使ったゲーム “消滅都市” の開発事例Cocos2d-x 3.0を使ったゲーム “消滅都市” の開発事例
Cocos2d-x 3.0を使ったゲーム “消滅都市” の開発事例gree_tech
 

Ähnlich wie DeNAのゲーム開発を支える技術 (クライアントサイド編) (20)

剣と魔法のログレス いにしえの女神 〜スマホ時代の MMORPG を支える技術
剣と魔法のログレス いにしえの女神 〜スマホ時代の MMORPG を支える技術剣と魔法のログレス いにしえの女神 〜スマホ時代の MMORPG を支える技術
剣と魔法のログレス いにしえの女神 〜スマホ時代の MMORPG を支える技術
 
GTMF2012 SpriteStudio と "Unity" と "CoronaSDK" と "ngCore" ! ~組み合わせて改善する 2D ワーク...
GTMF2012 SpriteStudio と "Unity" と "CoronaSDK" と "ngCore" ! ~組み合わせて改善する 2D ワーク...GTMF2012 SpriteStudio と "Unity" と "CoronaSDK" と "ngCore" ! ~組み合わせて改善する 2D ワーク...
GTMF2012 SpriteStudio と "Unity" と "CoronaSDK" と "ngCore" ! ~組み合わせて改善する 2D ワーク...
 
Windows 8 Developers カンファレンス
Windows 8 Developers カンファレンスWindows 8 Developers カンファレンス
Windows 8 Developers カンファレンス
 
DeNAの最新のマスタデータ管理システム Oyakata の全容
DeNAの最新のマスタデータ管理システム Oyakata の全容DeNAの最新のマスタデータ管理システム Oyakata の全容
DeNAの最新のマスタデータ管理システム Oyakata の全容
 
改めて注目される2D アニメーションツール SpriteStudio ~国産2Dツールが(舶来ゲームエンジンの力を借りながら)世界へ~
改めて注目される2D アニメーションツール SpriteStudio ~国産2Dツールが(舶来ゲームエンジンの力を借りながら)世界へ~改めて注目される2D アニメーションツール SpriteStudio ~国産2Dツールが(舶来ゲームエンジンの力を借りながら)世界へ~
改めて注目される2D アニメーションツール SpriteStudio ~国産2Dツールが(舶来ゲームエンジンの力を借りながら)世界へ~
 
GREE TechTalk グリーのクライアント技術戦略
GREE TechTalk グリーのクライアント技術戦略GREE TechTalk グリーのクライアント技術戦略
GREE TechTalk グリーのクライアント技術戦略
 
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
 
シンラ・テクノロジー第2回クラウドゲーム開発者会議
シンラ・テクノロジー第2回クラウドゲーム開発者会議シンラ・テクノロジー第2回クラウドゲーム開発者会議
シンラ・テクノロジー第2回クラウドゲーム開発者会議
 
Rails on GKEで運用するWebアプリケーションの紹介
Rails on GKEで運用するWebアプリケーションの紹介Rails on GKEで運用するWebアプリケーションの紹介
Rails on GKEで運用するWebアプリケーションの紹介
 
2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ LiveOps とデータ分析編 ~
2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ LiveOps とデータ分析編 ~2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ LiveOps とデータ分析編 ~
2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ LiveOps とデータ分析編 ~
 
【de:code 2020】 2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ LiveOps とデータ分析編 ~
【de:code 2020】 2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ LiveOps とデータ分析編 ~【de:code 2020】 2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ LiveOps とデータ分析編 ~
【de:code 2020】 2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ LiveOps とデータ分析編 ~
 
Dev camp2012jpn day2special
Dev camp2012jpn day2specialDev camp2012jpn day2special
Dev camp2012jpn day2special
 
Developr Camp 2012 Japan Fall Day2 Special Session - Visual Studio 2012 で始める ...
Developr Camp 2012 Japan Fall Day2 Special Session - Visual Studio 2012 で始める ...Developr Camp 2012 Japan Fall Day2 Special Session - Visual Studio 2012 で始める ...
Developr Camp 2012 Japan Fall Day2 Special Session - Visual Studio 2012 で始める ...
 
クラウドサービスを使って作る動画サイト?
クラウドサービスを使って作る動画サイト?クラウドサービスを使って作る動画サイト?
クラウドサービスを使って作る動画サイト?
 
LEGO MINDSTORMS EV3 API
LEGO MINDSTORMS EV3 APILEGO MINDSTORMS EV3 API
LEGO MINDSTORMS EV3 API
 
性能問題を起こしにくい信頼されるクラウド RDB のつくりかた
性能問題を起こしにくい信頼されるクラウド RDB のつくりかた性能問題を起こしにくい信頼されるクラウド RDB のつくりかた
性能問題を起こしにくい信頼されるクラウド RDB のつくりかた
 
Pull request時の画面差分取得の自動化
Pull request時の画面差分取得の自動化Pull request時の画面差分取得の自動化
Pull request時の画面差分取得の自動化
 
Html5conference2012 yota hisamichi_世界に向けたスマートフォンゲームを支える、 greeのテクニカルアーティストについて。
Html5conference2012 yota hisamichi_世界に向けたスマートフォンゲームを支える、 greeのテクニカルアーティストについて。Html5conference2012 yota hisamichi_世界に向けたスマートフォンゲームを支える、 greeのテクニカルアーティストについて。
Html5conference2012 yota hisamichi_世界に向けたスマートフォンゲームを支える、 greeのテクニカルアーティストについて。
 
【14-B-2】グリーを支えるデータ分析基盤の過去と現在(橋本泰一〔グリー〕)
【14-B-2】グリーを支えるデータ分析基盤の過去と現在(橋本泰一〔グリー〕)【14-B-2】グリーを支えるデータ分析基盤の過去と現在(橋本泰一〔グリー〕)
【14-B-2】グリーを支えるデータ分析基盤の過去と現在(橋本泰一〔グリー〕)
 
Cocos2d-x 3.0を使ったゲーム “消滅都市” の開発事例
Cocos2d-x 3.0を使ったゲーム “消滅都市” の開発事例Cocos2d-x 3.0を使ったゲーム “消滅都市” の開発事例
Cocos2d-x 3.0を使ったゲーム “消滅都市” の開発事例
 

DeNAのゲーム開発を支える技術 (クライアントサイド編)

  • 1. Copyright © DeNA Co.,Ltd. All Rights Reserved. DeNA のゲーム開発を 支える技術 クライアントサイド編 January 29, 2016 Hironori Bono System Management Unit DeNA Co., Ltd.
  • 2. Copyright © DeNA Co.,Ltd. All Rights Reserved. Games and DeNA Feed the world. Band Aid - Do They Know It's Christmas?
  • 3. Copyright © DeNA Co.,Ltd. All Rights Reserved. DeNA のミッション  ユーザを楽しませる ⁃ 高品質のゲームの提供  ゲーム開発者のサポート ⁃ 解析ツールの提供 ⁃ Mobage APIs の提供 ⁃ クライアント SDKs の提供 Games APIs 3
  • 4. Copyright © DeNA Co.,Ltd. All Rights Reserved. ゲーム開発者の要望  ネイティブ並の品質のゲームの開発 ⁃ リッチなグラフィクス (2D or 3D) ⁃ リッチなサウンド (BGM, SEs, and voices) ⁃ スムーズな動作 (30 fps ~ 60 fps) ⁃ 高いデバイス互換性  開発費の削減 ⁃ 資産の購入 (ハードウェアやソフトウェア) ⁃ 実装 ⁃ テスト ⁃ 運用 4 ネイティブ並の品質のゲームを Web ゲーム並の費用で開発したい
  • 5. Copyright © DeNA Co.,Ltd. All Rights Reserved. DeNA がやるべきこと 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100% Native Games DeNA Games Web Games 品質 5  ゲーム開発者への高品質なサポート ⁃ ゲームの品質をネイティブ並に向上 品質向上
  • 6. Copyright © DeNA Co.,Ltd. All Rights Reserved. DeNA がやるべきこと 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100% Native Games DeNA Games Web Games コスト 6  ゲーム開発者への高品質なサポート ⁃ ゲームの品質をネイティブ並に向上 ⁃ ゲーム開発コストの削減 コスト削減
  • 7. Copyright © DeNA Co.,Ltd. All Rights Reserved. 開発者へのアクション  リッチなクライアント SDK の提供 ⁃ ネイティブゲーム並の機能 • グラフィック (OpenGL ES や Cocoa など) • サウンド (OpenSL ES や OpenAL など) • ネットワーク (sockets) ⁃ ネイティブゲーム並の速度 ⁃ デバイス互換性の向上 • PCs (Chrome, Firefox, IE 10+, and Safari) • スマートフォン (Android, iPhone, and Windows Phone) ⁃ 開発費の削減 • 既存資産の再利用 • テスト工数の削減 7
  • 8. Copyright © DeNA Co.,Ltd. All Rights Reserved. 現在の状況  ShellApp SDK  CreateJS-Lite (仮) ⁃ CreateJS 互換の JavaScript ライブラリ ⁃ ゲーム実行速度の向上 ⁃ スマートフォンへの最適化  CreateJS-Lite (仮) Accelerator ⁃ CreateJS-Lite (仮) ゲーム高速化用ネイティブライブラリ ⁃ Android および iOS デバイスにおけるゲーム速度の向上 ⁃ アプリ開発コストの削減 8
  • 9. Copyright © DeNA Co.,Ltd. All Rights Reserved. Games and CreateJS-Lite There’s nothing to gain, if I would restrain. Helloween - My God-Given Right
  • 10. Copyright © DeNA Co.,Ltd. All Rights Reserved. CreateJS-Lite (仮) の目的  CreateJS ゲームの実行速度を 10 倍にする ⁃ 高速な HTML5 API を用いた CreateJS の部分エミュレート • 100% 互換を目指さない • 非実装機能に対しては代替案を提案 ⁃ 描画結果やアニメーション状態のキャッシュ ⁃ 低速な処理のバックグラウンド実行 ⁃ ネットワークリソースのキャッシュ  CreateJS ゲームの移行コストの最小化 ⁃ Flash が生成した CreateJS コードの直接実行 ⁃ ブラウザおよびデバイス依存コードの吸収 10
  • 11. Copyright © DeNA Co.,Ltd. All Rights Reserved. CreateJS-Lite の概要 (グラフィック) 11  複数の方法を用いたグラフィック機能 (EaselJS) の実装 ⁃ WebGL ⁃ Canvas 2D ⁃ OpenGL ES (CreateJS-Lite Accelerator 利用時)  ブラウザおよびデバイスに最適な方法を自動選択 ⁃ ゲーム開発者の負荷軽減 CreateJS-Lite EaselJS WebGL Canvas 2D OpenGL ES
  • 12. Copyright © DeNA Co.,Ltd. All Rights Reserved. CreateJS-Lite の概要 (サウンド) 12  複数の方法を用いたサウンド機能 (SoundJS) の実装 ⁃ Web Audio + <iframe> workers ⁃ Web Audio ⁃ HTML Audio ⁃ OpenSL ES (CreateJS-Lite Accelerator 利用時)  標準では <iframe> workers を用いてバックグラウンドで再生 CreateJS-Lite SoundJS Web Audio + Worker Web Audio HTML Audio OpenSL ES
  • 13. Copyright © DeNA Co.,Ltd. All Rights Reserved. CreateJS-Lite の概要 (リソースロード) 13  複数の方法を用いたロード部分 (PreloadJS) の実装 ⁃ XMLHttpRequest v2 + Indexed Database ⁃ XMLHttpRequest (v1) ⁃ Tag Loader  ロードされたリソースを自動キャッシュ ⁃ Images, Sounds, CSS stylesheets, and JavaScript files. CreateJS-Lite PreloadJS XMLHttpRequest v2 + Indexed DB XMLHttpRequest (v1) Tag Loader
  • 14. Copyright © DeNA Co.,Ltd. All Rights Reserved. CreateJS-Lite and WebGL When the children cry, let them know we tried. White Lion - When The Children Cry
  • 15. Copyright © DeNA Co.,Ltd. All Rights Reserved. WebGL の概要  OpenGL ES 2.0 をベースにした HTML5 API ⁃ (比較的) 低レベルの API ⁃ Canvas 2D と比べて高速  Shader program を用いた GPU でのコード実行 ⁃ GPU の方が CPU より高速 (並列性が高い処理の場合) ⁃ 全ての CPU 処理を置き換えることはできない  (CreateJS が用いている) Canvas 2D と等価ではない ⁃ テキストやベクタ画像の描画 ⁃ 座標系の相違  主要なブラウザで実装済 ⁃ Android browsers (5.0~), Chrome, Firefox, IE (11~), and Safari (8.0~) ⁃ (主に GPU の非互換性のため) disabled の場合有 15
  • 16. Copyright © DeNA Co.,Ltd. All Rights Reserved. CreateJS-Lite (仮) と WebGL  WebGL を用いて CreateJS の遅い処理を GPU で実行 ⁃ Canvas 2D を用いた画面描画部分 ⁃ 互換性のため一部 Canvas 2D 処理を用いている  JavaScript 処理を追加して CreateJS をエミュレート ⁃ CreateJS オブジェクトから WebGL テクスチャの生成 ⁃ CreateJS オブジェクトのプロパティから WebGL 行例の生成 16 CreateJS-Lite CreateJS Canvas 2D WebGL JavaScript
  • 17. Copyright © DeNA Co.,Ltd. All Rights Reserved. CreateJS-Lite (仮) と WebGL テクスチャ 1. Text (shape) のサイズを計算 2. 空の <canvas> 要素を作成 3. Text (shape) を <canvas> 要素に描画 4. この <canvas> 要素を WebGL テクスチャに変換 17 Text (shape) 変更時のみ実行
  • 18. Copyright © DeNA Co.,Ltd. All Rights Reserved. CreateJS-Lite (仮) と WebGL 行列 1. CerateJS オブジェクトのプロ パティからアフィン変換行列 を計算 2. 先祖オブジェクトのアフィン 変換行列との積を計算 3. 座標系変換行列との積を計算 ⁃ HTML 座標系から WebGL 座 標系 18 𝑥, 𝑦, 𝑠𝑐𝑎𝑙𝑒 𝑥, 𝑠𝑐𝑎𝑙𝑒 𝑦, 𝑟𝑜𝑡𝑎𝑡𝑖𝑜𝑛, 𝑠𝑘𝑒𝑤𝑥, 𝑠𝑘𝑒𝑤 𝑦, 𝑟𝑒𝑔 𝑥, 𝑟𝑒𝑔 𝑦 𝑇𝑖 = 𝑎𝑖 𝑐𝑖 𝑡𝑥𝑖 𝑏𝑖 𝑑𝑖 𝑡𝑦𝑖 0 0 1 𝑇𝑖 1 𝑖=𝑛 = 𝑎 𝑛 𝑐 𝑛 𝑡𝑥 𝑛 𝑏 𝑛 𝑑 𝑛 𝑡𝑦𝑛 0 0 1 ⋯ 𝑎1 𝑐1 𝑡𝑥1 𝑏1 𝑑1 𝑡𝑦1 0 0 1 2 𝑤𝑖𝑑𝑡ℎ 0 −1 0 −2 ℎ𝑒𝑖𝑔ℎ𝑡 1 0 0 1 ⋅ 𝑇𝑖 𝑛 𝑖=1 プロパティ変更時のみ実行 タップ処理も利用
  • 19. Copyright © DeNA Co.,Ltd. All Rights Reserved. CreateJS-Lite and Indexed Database I can't live with or without you. U2 - With Or Without You
  • 20. Copyright © DeNA Co.,Ltd. All Rights Reserved. Indexed Database の概要  データベース処理用 HTML5 API ⁃ データベースの実装 (SQLite や My SQL など) に非依存  バイナリデータの読み書きが可能 ⁃ 画像やサウンドなどのバイナリファイルの直接読み書き可能  主要なブラウザで実装済 ⁃ Android browsers (4.4+), Chrome, Firefox, IE (10+), and Safari (8.0+) ⁃ データベースサイズの上限有 20
  • 21. Copyright © DeNA Co.,Ltd. All Rights Reserved. CreateJS-Lite (仮) と Indexed Database  ファイルのキャッシュ ⁃ (ゲーム開始時における) ロード処理の高速化 • ロード済みファイル (画像・サウンド) をリロードしない ⁃ ゲーム中のロード処理の軽減 • ゲームサーバとクライアント間の通信を妨害しない  キャッシュ管理用処理の追加 ⁃ ゲーム更新時にキャッシュを全削除 21 CreateJS-Lite CreateJS XMLHttpRequest Indexed DB JavaScript
  • 22. Copyright © DeNA Co.,Ltd. All Rights Reserved. Game CreateJS-Lite (仮) のファイル読み込み (キャッシュ) 1. プリロード開始 2. キャッシュ読込 ⁃ ファイルデータ受信 3. キャッシュ更新 ⁃ ファイルの更新時刻 (利用さ れていないファイルの削除に 利用) ⁃ バックグラウンド実行 4. CreateJS オブジェクト作成 22 ServerCache CreateJS Lite
  • 23. Copyright © DeNA Co.,Ltd. All Rights Reserved. Game CreateJS-Lite (仮) のファイル読み込み (サーバ) 1. プリロード開始 2. キャッシュ読込 ⁃ ファイルが存在しない 3. サーバからファイル読込 ⁃ XMLHttpRequest v2 を利用 してデータを直接取得 4. キャッシュ書込 ⁃ ファイルデータと更新時刻 ⁃ バックグラウンドで実行 5. CreateJS オブジェクト作成 23 ServerCache CreateJS Lite
  • 24. Copyright © DeNA Co.,Ltd. All Rights Reserved. CreateJS-Lite and Optimization Truth will find its reward. Judas Priest - Sword Of Damocles
  • 25. Copyright © DeNA Co.,Ltd. All Rights Reserved. CreateJS-Lite (仮) の制約  CreateJS と 100% 互換ではない ⁃ 未実装な機能 • WebGL や OpenGL で実装困難な機能 • ゲームで利用されていない機能 ⁃ Bugs  (一般的に) CreateJS よりもメモリ使用量が多い ⁃ 描画キャッシュ  ブラウザの制約 ⁃ CPU 負荷の高いブラウザ機能との同時利用 • CreateJS-Lite (仮) が利用可能な CPU リソース減少 25
  • 26. Copyright © DeNA Co.,Ltd. All Rights Reserved. CreateJS-Lite (仮) 向け最適化  CreateJS アニメーションの負荷軽減 ⁃ (一般的に) Flash アニメータの作業量と反比例  メモリ利用量の削減 ⁃ 不要な CreateJS オブジェクトの削除 • Text, Shapes は削除時にキャッシュも削除 ⁃ ページ遷移 (unload または hashchange) • すべての CreateJS オブジェクトを削除 ⁃ テクスチャフォーマットの指定 (大きい Bitmap の場合)  CPU 負荷の高いブラウザ機能の削減 ⁃ CSS animations (transforms)  バグ報告およびリクエスト 26
  • 27. Copyright © DeNA Co.,Ltd. All Rights Reserved. CreateJS-Lite and CreateJS-Lite Accelerator We'll get higher and higher. Straight up we’ll climb. Van Halen - Dreams
  • 28. Copyright © DeNA Co.,Ltd. All Rights Reserved. CreateJS-Lite (仮) Accelerator 開発の背景  HTML5 API を提供していないデバイス (OS) ⁃ Android 4.3 以前 ⁃ iOS 7 以前  ネイティブゲームより遅い ⁃ ブラウザのオーバーヘッド • WebGL テクスチャを OpenGL テクスチャ (<canvas>) に描画後そ の OpenGL テクスチャを画面に描画  HTML5 API 利用の制約 ⁃ サウンドの再生にユーザアクション (タップ等) が必要  HTML5 API のデバイス間 (ブラウザ間) 互換性 28 CreateJS-Lite (仮) ゲームアプリを ネイティブアプリと同等にしたい
  • 29. Copyright © DeNA Co.,Ltd. All Rights Reserved. CreateJS-Lite (仮) Accelerator の概要  ネイティブアプリと同等の品質を実現 ⁃ ネイティブ API の直接利用 • OpenGL ES 2.0 • OpenSL ES ⁃ ブラウザが提供していない機能の提供 • ファイルシステム • ネットワーク (開発中) ⁃ CPU 向け最適化 (Android) • NEON, SSE2 の利用 (画像デコード) • メモリ最適化  ブラウザゲームからの移行コストの最小化 ⁃ CreateJS-Lite (仮) は自動的に利用 • タップ処理も利用可 29
  • 30. Copyright © DeNA Co.,Ltd. All Rights Reserved. CreateJS-Lite (仮) Accelerator の構造 2 個の view で構成  WebView (UIWebView) ⁃ ゲームの実行 ⁃ DOM オブジェクトの表示  CreateJS View ⁃ CreateJS オブジェクトの表示 • OpenGL ES を利用 ⁃ SoundJS サウンドの再生 (Android) • OpenSL ES で再生 30 WebView CreateJS view
  • 31. Copyright © DeNA Co.,Ltd. All Rights Reserved. CreateJS-Lite (仮) Accelerator の画面描画 1. OpenGL テクスチャの作成 ⁃ 画像ロード時に作成 2. 描画コマンドの送信 ⁃ 1フレームを描画するためのコ マンド列を送信 ⁃ Text, Shape の画像も送信 3. 描画コマンドの実行 31 描画コマンド WebView OpenGL view
  • 32. Copyright © DeNA Co.,Ltd. All Rights Reserved. CreateJS-Lite (仮) Accelerator の制約  対応 OS ⁃ Android 4.0 以降 (要 OpenGL ES 2.0 対応) ⁃ iOS 7.0 以降  画像形式 ⁃ PNG Baseline, JPEG Baseline のみ (Android)  複数の stage の描画 ⁃ 1 個の OpenGL View にまとめて描画  Stage の <canvas> 要素 (およびその親要素) の背景 ⁃ OpenGL View を下に表示するため transparent にする 32
  • 33. Copyright © DeNA Co.,Ltd. All Rights Reserved. Laplace Link and CreateJS-Lite gloops は、新しい価値に挑戦する 会社でありたい Tomohiro Ueda
  • 34. Copyright © DeNA Co.,Ltd. All Rights Reserved. ラプラスリンクと CreateJS-Lite (仮) 事前登録受付中 http://laplacelink.jp/ 34
  • 35. Copyright © DeNA Co.,Ltd. All Rights Reserved. Thank You! Take me where my future's lyin', St. Elmo's fire. John Parr - St. Elmo's Fire