SlideShare a Scribd company logo
1 of 48
Download to read offline
Copyright Drecom Co., Ltd. All Rights Reserved. 1
HTML5
ゲームフレームワーク
開発について
Copyright Drecom Co., Ltd. All Rights Reserved. 2
自己紹介
山﨑 拓也 @zprodev
ドリコム
- HTML5 ゲームフレームワーク開発
- HTML5 技術検証 / 課題解決
Copyright Drecom Co., Ltd. All Rights Reserved. 3
HTML5ゲームフレームワーク開発の知見から
ゲーム開発に必要な要素を知ってもらう
HTML5での実現方法を知ってもらう
目的
Copyright Drecom Co., Ltd. All Rights Reserved. 4
HTML5ゲームを作れる人が増える
目的
Copyright Drecom Co., Ltd. All Rights Reserved. 5
HTML5ゲーム市場が
盛り上がる
目的
Copyright Drecom Co., Ltd. All Rights Reserved. 6
アジェンダ
● ゲーム開発に必要な要素とは?
○ ゲームとして成立させるための要素
○ ゲーム開発でラクするための要素
● HTML5でどう実現する?
○ スマホとPCの両対応が前提
○ 約2年前のブラウザでも動作する機能
■ Chrome50系、Safari10系
● まとめ
Copyright Drecom Co., Ltd. All Rights Reserved. 7
ゲーム開発に必要な要素とは?
Copyright Drecom Co., Ltd. All Rights Reserved. 8
グラフィック描画
見た目 大事
Copyright Drecom Co., Ltd. All Rights Reserved. 9
サウンド再生
音も無いと盛り上がらない
Copyright Drecom Co., Ltd. All Rights Reserved. 10
ムービー再生
演出はド派手にムービーで
(演出の実装は辛い)
Copyright Drecom Co., Ltd. All Rights Reserved. 11
プレイヤーとの対話
これが出来なきゃゲームじゃ無い
Copyright Drecom Co., Ltd. All Rights Reserved. 12
リソース管理
- 画像や音声など大量リソースへのアクセス
- キャッシュ化やメモリ解放などの効率化
ライフサイクル管理
- シーン単位で開発できるとラク
- デバイスイベントのハンドリング
デバッグ機能
- パフォーマンスチューニングに必要
Copyright Drecom Co., Ltd. All Rights Reserved. 13
HTML5でどう実現する?
Copyright Drecom Co., Ltd. All Rights Reserved. 14
グラフィック描画
★ 描画にはWebGLを使う
GPUを使って高速に描画可能
HTML要素はcanvasだけあればOK
Copyright Drecom Co., Ltd. All Rights Reserved. 15
グラフィック描画
★ 描画にはWebGLを使う
WebGLは低レベルなAPIですが、
描画ライブラリを使えばお手軽です
有名どころ
- 2DならPixiJS
- 3Dならthree.js
Copyright Drecom Co., Ltd. All Rights Reserved. 16
ブラウザの描画タイミングを拾えるAPI
グラフィック描画
★ requestAnimationFrameで定期的に更新
Copyright Drecom Co., Ltd. All Rights Reserved. 17
最高60FPSで呼ばれる(約16.6ms間隔)
負荷が高いとフレーム間隔が延びる
ゲームを完璧に実装したとしても、
外部要因でFPSは変動します。
(バックグラウンドでのアプリ自動更新とか…)
グラフィック描画
★ requestAnimationFrameで定期的に更新
Copyright Drecom Co., Ltd. All Rights Reserved. 18
フレーム毎に固定値のアニメーションは❌
グラフィック描画
★ requestAnimationFrameで定期的に更新
60FPS
30FPS
33.2ms後
66.4ms後
Copyright Drecom Co., Ltd. All Rights Reserved. 19
グラフィック描画
★ performance.now()でフレーム間隔を算出
performance.now() では
起動からの経過時間をマイクロ秒単位で取得できる。
requestAnimationFrameのコールバック毎に経過時間を算
出し、時間ベースでアニメーションさせる。
30FPS
33.2ms後 66.4ms後
Copyright Drecom Co., Ltd. All Rights Reserved. 20
★ Web Audio API を使用する
サウンド再生
音声をJavaScriptで制御する多機能API
エフェクトかけたり色々出来ます
Copyright Drecom Co., Ltd. All Rights Reserved. 21
自動再生ポリシーへの対応
- ユーザー操作を契機に再生開始する必要がある
メモリ使用量に注意
- 解放バグや解放のためにテクニックが必要です
バックグラウンドでも音が鳴り続ける
- ライフサイクル制御(後述)との連携が必要
★ Web Audio API を使用する
サウンド再生
Copyright Drecom Co., Ltd. All Rights Reserved. 22
その他の問題や対策などQiitaにまとめてます
★ Web Audio API を使用する
サウンド再生
Copyright Drecom Co., Ltd. All Rights Reserved. 23
WebGLはHTMLVideoElementを
テクスチャとして受け入れます
★ videoをWebGLに食わせる
ムービー再生
Copyright Drecom Co., Ltd. All Rights Reserved. 24
iOSはplaysinline属性が必要
- iOS10から属性付加でインライン再生が可能になった
- 属性を付けないとコントロールUI付きの全画面表示
videoも自動再生ポリシーに抵触する
- 無音で良いならmuted属性をつける
- 音出したいならユーザー操作を契機に再生
★ videoをWebGLに食わせる
ムービー再生
Copyright Drecom Co., Ltd. All Rights Reserved. 25
Chrome73からβのみで発生するバグがある
- play直後にWebGLに食わせるとエラーになる
- 74以降もβでは発生するがリリース版では再現しない
- play後に数ms待ってからWebGLに渡すと大丈夫
★ videoをWebGLに食わせる
ムービー再生
Copyright Drecom Co., Ltd. All Rights Reserved. 26
MouseEvents
- PCのマウス操作を拾えるAPI
TouchEvents
- スマホなどタッチデバイスの操作を拾えるAPI
★ MouseEvnetsとTouchEventsを併用
プレイヤーとの対話
Copyright Drecom Co., Ltd. All Rights Reserved. 27
TouchEvents
- touchstart
- touchend
- touchcancel
- touchmove
MouseEvents
- mousedown
- mouseup
- mousemove
- mouseenter
- mouseleave
- mouseover
- mouseout
★ MouseEvnetsとTouchEventsを併用
プレイヤーとの対話
イベントリスナーでキャッチ
Copyright Drecom Co., Ltd. All Rights Reserved. 28
TouchEvents
- touchstart
- touchend
- touchcancel
- touchmove
MouseEvents
- mousedown
- mouseup
- mousemove
- mouseenter
- mouseleave
- mouseover
- mouseout
★ MouseEvnetsとTouchEventsを併用
プレイヤーとの対話
押す 離す 移動
Copyright Drecom Co., Ltd. All Rights Reserved. 29
MouseEvents
- mousedown
- mouseup
- mousemove
- mouseenter
- mouseleave
- mouseover
- mouseout
TouchEvents
- touchstart
- touchend
- touchcancel
- touchmove
着信など
★ MouseEvnetsとTouchEventsを併用
プレイヤーとの対話
マウスカーソルが対象から外れた時
“離す”が発火しないパターンに注意
Copyright Drecom Co., Ltd. All Rights Reserved. 30
Touchではマルチタッチ考慮も必要
座標はコールバック引数から取得する
★ MouseEvnetsとTouchEventsを統合
プレイヤーとの対話
Copyright Drecom Co., Ltd. All Rights Reserved. 31
MouseとTouchの統合イベント
★ PointerEvnetsがやってくる
プレイヤーとの対話
Safari対応待ってました
Copyright Drecom Co., Ltd. All Rights Reserved. 32
Gamepad APIも結構前から使えます
★ 実はゲームパッドも使える
プレイヤーとの対話
Chromeのジョイコン対応が少し前にバズってました
Copyright Drecom Co., Ltd. All Rights Reserved. 33
★ ブラウザキャッシュで通信量節約
HTML5ゲームでは全てのリソース取得にWeb通
信を伴います。
HTTPレスポンスヘッダーにリソース寿命を設定
することで、ブラウザにリソースがキャッシュされ
再通信時の通信量を節約できます。
リソース管理
Copyright Drecom Co., Ltd. All Rights Reserved. 34
★ ブラウザキャッシュで通信量節約
リソース寿命系レスポンスヘッダー
- Expires : 日時指定の強いキャッシュ
- Cache-Control : 秒数指定の強いキャッシュ
- Last-Modified : 更新日時で管理する弱いキャッシュ
- ETag : 更新日時やファイルサイズから生成したユニーク
なIDで管理する弱いキャッシュ
サーバー側で適切な設定を
リソース管理
Copyright Drecom Co., Ltd. All Rights Reserved. 35
ブラウザで動作するDBシステム
バイナリデータも保存可能なため、
大容量ファイルストレージとして使える
★ IndexedDBでJS主導の通信量節約
リソース管理
Copyright Drecom Co., Ltd. All Rights Reserved. 36
iOSは12.2までblob非対応
- blob → ArrayBufferに変換すれば保存可能
容量上限にも注意
- Web上には実際の挙動と異なる情報が散見されます
- 現状実機で見る限り、Android Chromeで数GB、iOS
Safariはストレージを食い潰すまでは保存可能
- Safari13で上限が実装されます
- Exceptionが発生しても死なない実装を!
★ IndexedDBでJS主導の通信量節約
リソース管理
Copyright Drecom Co., Ltd. All Rights Reserved. 37
リソースキャッシュに特化したライブラリをOSSと
して公開してます。
★ IndexedDBでJS主導の通信量節約
リソース管理
https://github.com/drecom/idb-cache
Copyright Drecom Co., Ltd. All Rights Reserved. 38
@drecom/idb-cache の特徴
- データ容量 or ファイル数で保存上限を設定可能
- ファイル毎にキャッシュ期間を設定可能
- 上限を超える場合は期限の近いファイルから削除
- 期限などのmetaデータとファイルの実データを分割保存
し検索を効率化
- String、Blob、ArrayBufferの保存に対応
★ IndexedDBでJS主導の通信量節約
リソース管理
Copyright Drecom Co., Ltd. All Rights Reserved. 39
★ Page Visibility API でポーズ・レジューム
Page Visibility API でブラウザ表示状況を監視できます。
ライフサイクル管理
これを利用し、サウンドがバックグラウンドで鳴り続ける問題
への対処や、performance.now()で計測しているゲーム内時
間の一時停止を行います。
Copyright Drecom Co., Ltd. All Rights Reserved. 40
スマホ回転やソフトウェアキーボード出現などでの描画領域
が変わる場合がある。
ゲーム体験を損ねないよう、resizeイベントを検知して
canvasをリサイズする。
★ resizeイベントを検知してcanvasリサイズ
ライフサイクル管理
Copyright Drecom Co., Ltd. All Rights Reserved. 41
リサイズは少し待ってから
- resizeイベント発生直後は正しいwindowサイズが取れな
い場合がある
- resizeイベントが短時間で多重発生する場合がある
★ resizeイベントを検知してcanvasリサイズ
ライフサイクル管理
Copyright Drecom Co., Ltd. All Rights Reserved. 42
ログ、通信量、メモリ使用、ストレージ内容などは
ブラウザ備え付けの開発者ツールで確認できま
す。
Android Chrome や iOS SafariもPCと接続して
確認する方法があります。
★ ブラウザ備え付けの開発者ツールを活用
デバッグ機能
Copyright Drecom Co., Ltd. All Rights Reserved. 43
three.js開発者、Mr.doob氏のstats.jsカスタマイ
ズ版を公開してます。
★ @drecom/stats.js
デバッグ機能
https://github.com/drecom/stats.js
Copyright Drecom Co., Ltd. All Rights Reserved. 44
★ @drecom/stats.jsの特徴
デバッグ機能
Copyright Drecom Co., Ltd. All Rights Reserved. 45
まとめ
Copyright Drecom Co., Ltd. All Rights Reserved. 46
まとめ
● グラフィック周りはWebGL
● 描画更新はrequestAnimationFrame
● 時間計算はperformance.now()
● サウンドはWebAudioAPI
● プレイヤーとの対話はMouseやTouchイベント
● ブラウザキャッシュやIndexedDBで通信量節約
● PageVisibilityAPIやresizeイベントでブラウザの表示状況をハ
ンドリング
● パフォーマンスチューニングは開発者ツールを活用
Copyright Drecom Co., Ltd. All Rights Reserved. 47
これでHTML5ゲーム作れますね!
Copyright Drecom Co., Ltd. All Rights Reserved. 48
ご静聴ありがとうございました

More Related Content

What's hot

Social Engineering the Windows Kernel by James Forshaw
Social Engineering the Windows Kernel by James ForshawSocial Engineering the Windows Kernel by James Forshaw
Social Engineering the Windows Kernel by James ForshawShakacon
 
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例UnityTechnologiesJapan002
 
Web ブラウザで DRM
Web ブラウザで DRMWeb ブラウザで DRM
Web ブラウザで DRMYusuke Goto
 
Assembly Definition あれやこれ
Assembly Definition あれやこれAssembly Definition あれやこれ
Assembly Definition あれやこれNakanoYosuke1
 
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫Yuta Imai
 
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]DeNA
 
SSL/TLSの基礎と最新動向
SSL/TLSの基礎と最新動向SSL/TLSの基礎と最新動向
SSL/TLSの基礎と最新動向shigeki_ohtsu
 
MRTKで始めるAR開発 (HoloLens 1 and 2, ARCore, ARkit)
MRTKで始めるAR開発 (HoloLens 1 and 2, ARCore, ARkit)MRTKで始めるAR開発 (HoloLens 1 and 2, ARCore, ARkit)
MRTKで始めるAR開発 (HoloLens 1 and 2, ARCore, ARkit)Takashi Yoshinaga
 
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法モノビット エンジン
 
Unityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechconUnityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechconDeNA
 
[CEDEC2012]ネットワークゲームの不正行為と対策
[CEDEC2012]ネットワークゲームの不正行為と対策[CEDEC2012]ネットワークゲームの不正行為と対策
[CEDEC2012]ネットワークゲームの不正行為と対策gree_tech
 
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~UnityTechnologiesJapan002
 
Protocol Buffers 入門
Protocol Buffers 入門Protocol Buffers 入門
Protocol Buffers 入門Yuichi Ito
 
IDベース暗号の概観と今後の展望(次世代セキュア情報基盤ワークショップ )
IDベース暗号の概観と今後の展望(次世代セキュア情報基盤ワークショップ )IDベース暗号の概観と今後の展望(次世代セキュア情報基盤ワークショップ )
IDベース暗号の概観と今後の展望(次世代セキュア情報基盤ワークショップ )Akira Kanaoka
 
スマートフォンアプリ企画書ver.0.1
スマートフォンアプリ企画書ver.0.1スマートフォンアプリ企画書ver.0.1
スマートフォンアプリ企画書ver.0.1tmr2013
 
The Joy of Sandbox Mitigations
The Joy of Sandbox MitigationsThe Joy of Sandbox Mitigations
The Joy of Sandbox MitigationsJames Forshaw
 

What's hot (20)

Social Engineering the Windows Kernel by James Forshaw
Social Engineering the Windows Kernel by James ForshawSocial Engineering the Windows Kernel by James Forshaw
Social Engineering the Windows Kernel by James Forshaw
 
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例
 
Photonのサービス選択の勘どころ
Photonのサービス選択の勘どころPhotonのサービス選択の勘どころ
Photonのサービス選択の勘どころ
 
Web ブラウザで DRM
Web ブラウザで DRMWeb ブラウザで DRM
Web ブラウザで DRM
 
Assembly Definition あれやこれ
Assembly Definition あれやこれAssembly Definition あれやこれ
Assembly Definition あれやこれ
 
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫
 
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
 
SSL/TLSの基礎と最新動向
SSL/TLSの基礎と最新動向SSL/TLSの基礎と最新動向
SSL/TLSの基礎と最新動向
 
MRTKで始めるAR開発 (HoloLens 1 and 2, ARCore, ARkit)
MRTKで始めるAR開発 (HoloLens 1 and 2, ARCore, ARkit)MRTKで始めるAR開発 (HoloLens 1 and 2, ARCore, ARkit)
MRTKで始めるAR開発 (HoloLens 1 and 2, ARCore, ARkit)
 
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
 
Machinationの紹介
Machinationの紹介Machinationの紹介
Machinationの紹介
 
Unityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechconUnityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechcon
 
[CEDEC2012]ネットワークゲームの不正行為と対策
[CEDEC2012]ネットワークゲームの不正行為と対策[CEDEC2012]ネットワークゲームの不正行為と対策
[CEDEC2012]ネットワークゲームの不正行為と対策
 
UE4 MultiPlayer Online Deep Dive 基礎編1 -Getting Started- (historia様ご講演) #UE4DD
UE4 MultiPlayer Online Deep Dive 基礎編1 -Getting Started-  (historia様ご講演) #UE4DDUE4 MultiPlayer Online Deep Dive 基礎編1 -Getting Started-  (historia様ご講演) #UE4DD
UE4 MultiPlayer Online Deep Dive 基礎編1 -Getting Started- (historia様ご講演) #UE4DD
 
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
 
Protocol Buffers 入門
Protocol Buffers 入門Protocol Buffers 入門
Protocol Buffers 入門
 
IDベース暗号の概観と今後の展望(次世代セキュア情報基盤ワークショップ )
IDベース暗号の概観と今後の展望(次世代セキュア情報基盤ワークショップ )IDベース暗号の概観と今後の展望(次世代セキュア情報基盤ワークショップ )
IDベース暗号の概観と今後の展望(次世代セキュア情報基盤ワークショップ )
 
スマートフォンアプリ企画書ver.0.1
スマートフォンアプリ企画書ver.0.1スマートフォンアプリ企画書ver.0.1
スマートフォンアプリ企画書ver.0.1
 
FizzBuzzで学ぶJavaの進化
FizzBuzzで学ぶJavaの進化FizzBuzzで学ぶJavaの進化
FizzBuzzで学ぶJavaの進化
 
The Joy of Sandbox Mitigations
The Joy of Sandbox MitigationsThe Joy of Sandbox Mitigations
The Joy of Sandbox Mitigations
 

Similar to HTML5 ゲームフレームワーク開発について

VRの浸透と、 最適なUXの為に気をつけたいこと。
VRの浸透と、 最適なUXの為に気をつけたいこと。VRの浸透と、 最適なUXの為に気をつけたいこと。
VRの浸透と、 最適なUXの為に気をつけたいこと。Tomoyo Hirayama
 
第5回業開中心会議
第5回業開中心会議第5回業開中心会議
第5回業開中心会議Kaoru NAKAMURA
 
Delphi Debut Tokyo #1 - FireMonkey HD の基本
Delphi Debut Tokyo #1 - FireMonkey HD の基本Delphi Debut Tokyo #1 - FireMonkey HD の基本
Delphi Debut Tokyo #1 - FireMonkey HD の基本Jun Hosokawa
 
Gcm#3 vr project making of サラと毒蛇の王冠
Gcm#3 vr project making of サラと毒蛇の王冠Gcm#3 vr project making of サラと毒蛇の王冠
Gcm#3 vr project making of サラと毒蛇の王冠GREE/Art
 
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
 
KinectやRealSenseの概要とさまざまな使い方
KinectやRealSenseの概要とさまざまな使い方KinectやRealSenseの概要とさまざまな使い方
KinectやRealSenseの概要とさまざまな使い方Kaoru NAKAMURA
 
いま注目のセンサー&デバイス
いま注目のセンサー&デバイスいま注目のセンサー&デバイス
いま注目のセンサー&デバイスKaoru NAKAMURA
 
Delphi Community Edition Meet up !
Delphi Community Edition Meet up !Delphi Community Edition Meet up !
Delphi Community Edition Meet up !Jun Hosokawa
 
大規模SNSにおけるソーシャルアプリの運用とマネタイズ
大規模SNSにおけるソーシャルアプリの運用とマネタイズ大規模SNSにおけるソーシャルアプリの運用とマネタイズ
大規模SNSにおけるソーシャルアプリの運用とマネタイズyouthk kamiya
 
ジェスチャ認識・物体形状取得がもたらす新たな未来
ジェスチャ認識・物体形状取得がもたらす新たな未来ジェスチャ認識・物体形状取得がもたらす新たな未来
ジェスチャ認識・物体形状取得がもたらす新たな未来Kaoru NAKAMURA
 
Terraform with Bitbucket pipeline
Terraform with Bitbucket pipelineTerraform with Bitbucket pipeline
Terraform with Bitbucket pipelineMasatomo Ito
 
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!Unity Technologies Japan K.K.
 
UX on HTML5 x Touch UI
UX on HTML5 x Touch UIUX on HTML5 x Touch UI
UX on HTML5 x Touch UIdsuke Takaoka
 
少人数でも新規事業を成功させるために意識している3つのこと
少人数でも新規事業を成功させるために意識している3つのこと少人数でも新規事業を成功させるために意識している3つのこと
少人数でも新規事業を成功させるために意識している3つのこと光典 小川
 
「デモリッションロボッツK.K.」のGenvidインティグレート事例
「デモリッションロボッツK.K.」のGenvidインティグレート事例「デモリッションロボッツK.K.」のGenvidインティグレート事例
「デモリッションロボッツK.K.」のGenvidインティグレート事例Takaaki Ichijo
 
UnityとnodeとMMDと
UnityとnodeとMMDとUnityとnodeとMMDと
UnityとnodeとMMDとsters
 
非ゲーム業界のデザイナーが CEDECに参加してきた
非ゲーム業界のデザイナーが CEDECに参加してきた非ゲーム業界のデザイナーが CEDECに参加してきた
非ゲーム業界のデザイナーが CEDECに参加してきたMeyco U
 
【Unite 2018 Tokyo】Windows Mixed Reality 最新アプリ開発情報 ~HoloLens からVRまで~
【Unite 2018 Tokyo】Windows Mixed Reality 最新アプリ開発情報 ~HoloLens からVRまで~【Unite 2018 Tokyo】Windows Mixed Reality 最新アプリ開発情報 ~HoloLens からVRまで~
【Unite 2018 Tokyo】Windows Mixed Reality 最新アプリ開発情報 ~HoloLens からVRまで~UnityTechnologiesJapan002
 
Dev(ice)love デバイス祭り
Dev(ice)love デバイス祭りDev(ice)love デバイス祭り
Dev(ice)love デバイス祭りKaoru NAKAMURA
 

Similar to HTML5 ゲームフレームワーク開発について (20)

VRの浸透と、 最適なUXの為に気をつけたいこと。
VRの浸透と、 最適なUXの為に気をつけたいこと。VRの浸透と、 最適なUXの為に気をつけたいこと。
VRの浸透と、 最適なUXの為に気をつけたいこと。
 
第5回業開中心会議
第5回業開中心会議第5回業開中心会議
第5回業開中心会議
 
Delphi Debut Tokyo #1 - FireMonkey HD の基本
Delphi Debut Tokyo #1 - FireMonkey HD の基本Delphi Debut Tokyo #1 - FireMonkey HD の基本
Delphi Debut Tokyo #1 - FireMonkey HD の基本
 
Gcm#3 vr project making of サラと毒蛇の王冠
Gcm#3 vr project making of サラと毒蛇の王冠Gcm#3 vr project making of サラと毒蛇の王冠
Gcm#3 vr project making of サラと毒蛇の王冠
 
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
 
KinectやRealSenseの概要とさまざまな使い方
KinectやRealSenseの概要とさまざまな使い方KinectやRealSenseの概要とさまざまな使い方
KinectやRealSenseの概要とさまざまな使い方
 
いま注目のセンサー&デバイス
いま注目のセンサー&デバイスいま注目のセンサー&デバイス
いま注目のセンサー&デバイス
 
Delphi Community Edition Meet up !
Delphi Community Edition Meet up !Delphi Community Edition Meet up !
Delphi Community Edition Meet up !
 
大規模SNSにおけるソーシャルアプリの運用とマネタイズ
大規模SNSにおけるソーシャルアプリの運用とマネタイズ大規模SNSにおけるソーシャルアプリの運用とマネタイズ
大規模SNSにおけるソーシャルアプリの運用とマネタイズ
 
ジェスチャ認識・物体形状取得がもたらす新たな未来
ジェスチャ認識・物体形状取得がもたらす新たな未来ジェスチャ認識・物体形状取得がもたらす新たな未来
ジェスチャ認識・物体形状取得がもたらす新たな未来
 
Terraform with Bitbucket pipeline
Terraform with Bitbucket pipelineTerraform with Bitbucket pipeline
Terraform with Bitbucket pipeline
 
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
 
UX on HTML5 x Touch UI
UX on HTML5 x Touch UIUX on HTML5 x Touch UI
UX on HTML5 x Touch UI
 
少人数でも新規事業を成功させるために意識している3つのこと
少人数でも新規事業を成功させるために意識している3つのこと少人数でも新規事業を成功させるために意識している3つのこと
少人数でも新規事業を成功させるために意識している3つのこと
 
What's TMCN?
What's TMCN?What's TMCN?
What's TMCN?
 
「デモリッションロボッツK.K.」のGenvidインティグレート事例
「デモリッションロボッツK.K.」のGenvidインティグレート事例「デモリッションロボッツK.K.」のGenvidインティグレート事例
「デモリッションロボッツK.K.」のGenvidインティグレート事例
 
UnityとnodeとMMDと
UnityとnodeとMMDとUnityとnodeとMMDと
UnityとnodeとMMDと
 
非ゲーム業界のデザイナーが CEDECに参加してきた
非ゲーム業界のデザイナーが CEDECに参加してきた非ゲーム業界のデザイナーが CEDECに参加してきた
非ゲーム業界のデザイナーが CEDECに参加してきた
 
【Unite 2018 Tokyo】Windows Mixed Reality 最新アプリ開発情報 ~HoloLens からVRまで~
【Unite 2018 Tokyo】Windows Mixed Reality 最新アプリ開発情報 ~HoloLens からVRまで~【Unite 2018 Tokyo】Windows Mixed Reality 最新アプリ開発情報 ~HoloLens からVRまで~
【Unite 2018 Tokyo】Windows Mixed Reality 最新アプリ開発情報 ~HoloLens からVRまで~
 
Dev(ice)love デバイス祭り
Dev(ice)love デバイス祭りDev(ice)love デバイス祭り
Dev(ice)love デバイス祭り
 

More from Drecom Co., Ltd.

コンテナで始める柔軟な AWS Lambda 生活
コンテナで始める柔軟な AWS Lambda 生活コンテナで始める柔軟な AWS Lambda 生活
コンテナで始める柔軟な AWS Lambda 生活Drecom Co., Ltd.
 
サービスのインシデントを解決するには.pdf
サービスのインシデントを解決するには.pdfサービスのインシデントを解決するには.pdf
サービスのインシデントを解決するには.pdfDrecom Co., Ltd.
 
ドリコムサマージョブ報告 by 佐々木 誠治
ドリコムサマージョブ報告 by 佐々木 誠治ドリコムサマージョブ報告 by 佐々木 誠治
ドリコムサマージョブ報告 by 佐々木 誠治Drecom Co., Ltd.
 
DRECOM Summer Internship 2019 成果発表 by 鹿内 裕介
DRECOM Summer Internship 2019 成果発表 by 鹿内 裕介DRECOM Summer Internship 2019 成果発表 by 鹿内 裕介
DRECOM Summer Internship 2019 成果発表 by 鹿内 裕介Drecom Co., Ltd.
 
「AROW」お披露目(導入編)
「AROW」お披露目(導入編)「AROW」お披露目(導入編)
「AROW」お披露目(導入編)Drecom Co., Ltd.
 
「AROW」お披露目(実用編)
「AROW」お披露目(実用編)「AROW」お披露目(実用編)
「AROW」お披露目(実用編)Drecom Co., Ltd.
 
AROW の紹介 〜概要編〜
AROW の紹介 〜概要編〜AROW の紹介 〜概要編〜
AROW の紹介 〜概要編〜Drecom Co., Ltd.
 
AROW の紹介 〜実践編〜
AROW の紹介 〜実践編〜AROW の紹介 〜実践編〜
AROW の紹介 〜実践編〜Drecom Co., Ltd.
 
rails-developers-meetup-day4
rails-developers-meetup-day4rails-developers-meetup-day4
rails-developers-meetup-day4Drecom Co., Ltd.
 
html5conf2018-sponsor-session
html5conf2018-sponsor-sessionhtml5conf2018-sponsor-session
html5conf2018-sponsor-sessionDrecom Co., Ltd.
 
DApps のユーザ認証に web3.eth.personal.sign を使おう!
DApps のユーザ認証に web3.eth.personal.sign を使おう!DApps のユーザ認証に web3.eth.personal.sign を使おう!
DApps のユーザ認証に web3.eth.personal.sign を使おう!Drecom Co., Ltd.
 
3Dリアルマップを用いたモバイルゲーム開発における課題とその解決方法
3Dリアルマップを用いたモバイルゲーム開発における課題とその解決方法3Dリアルマップを用いたモバイルゲーム開発における課題とその解決方法
3Dリアルマップを用いたモバイルゲーム開発における課題とその解決方法Drecom Co., Ltd.
 
LoveChainのスマートコントラクトを見てみよう & 非中央集権なトークンのカタチ
LoveChainのスマートコントラクトを見てみよう & 非中央集権なトークンのカタチLoveChainのスマートコントラクトを見てみよう & 非中央集権なトークンのカタチ
LoveChainのスマートコントラクトを見てみよう & 非中央集権なトークンのカタチDrecom Co., Ltd.
 
今月のレッツゴー陰陽師!
今月のレッツゴー陰陽師!今月のレッツゴー陰陽師!
今月のレッツゴー陰陽師!Drecom Co., Ltd.
 
位置情報を常に取得するのはつらいよ
位置情報を常に取得するのはつらいよ位置情報を常に取得するのはつらいよ
位置情報を常に取得するのはつらいよDrecom Co., Ltd.
 
カンバンと朝会とわたくし
カンバンと朝会とわたくしカンバンと朝会とわたくし
カンバンと朝会とわたくしDrecom Co., Ltd.
 
CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介
CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介
CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介Drecom Co., Ltd.
 
CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜
CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜
CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜Drecom Co., Ltd.
 
CEDEC 2015 IoT向け汎用protocol MQTTのリアルタイムゲーム通信利用と実装、そして未来へ…
CEDEC 2015 IoT向け汎用protocol MQTTのリアルタイムゲーム通信利用と実装、そして未来へ…CEDEC 2015 IoT向け汎用protocol MQTTのリアルタイムゲーム通信利用と実装、そして未来へ…
CEDEC 2015 IoT向け汎用protocol MQTTのリアルタイムゲーム通信利用と実装、そして未来へ…Drecom Co., Ltd.
 
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”Drecom Co., Ltd.
 

More from Drecom Co., Ltd. (20)

コンテナで始める柔軟な AWS Lambda 生活
コンテナで始める柔軟な AWS Lambda 生活コンテナで始める柔軟な AWS Lambda 生活
コンテナで始める柔軟な AWS Lambda 生活
 
サービスのインシデントを解決するには.pdf
サービスのインシデントを解決するには.pdfサービスのインシデントを解決するには.pdf
サービスのインシデントを解決するには.pdf
 
ドリコムサマージョブ報告 by 佐々木 誠治
ドリコムサマージョブ報告 by 佐々木 誠治ドリコムサマージョブ報告 by 佐々木 誠治
ドリコムサマージョブ報告 by 佐々木 誠治
 
DRECOM Summer Internship 2019 成果発表 by 鹿内 裕介
DRECOM Summer Internship 2019 成果発表 by 鹿内 裕介DRECOM Summer Internship 2019 成果発表 by 鹿内 裕介
DRECOM Summer Internship 2019 成果発表 by 鹿内 裕介
 
「AROW」お披露目(導入編)
「AROW」お披露目(導入編)「AROW」お披露目(導入編)
「AROW」お披露目(導入編)
 
「AROW」お披露目(実用編)
「AROW」お披露目(実用編)「AROW」お披露目(実用編)
「AROW」お披露目(実用編)
 
AROW の紹介 〜概要編〜
AROW の紹介 〜概要編〜AROW の紹介 〜概要編〜
AROW の紹介 〜概要編〜
 
AROW の紹介 〜実践編〜
AROW の紹介 〜実践編〜AROW の紹介 〜実践編〜
AROW の紹介 〜実践編〜
 
rails-developers-meetup-day4
rails-developers-meetup-day4rails-developers-meetup-day4
rails-developers-meetup-day4
 
html5conf2018-sponsor-session
html5conf2018-sponsor-sessionhtml5conf2018-sponsor-session
html5conf2018-sponsor-session
 
DApps のユーザ認証に web3.eth.personal.sign を使おう!
DApps のユーザ認証に web3.eth.personal.sign を使おう!DApps のユーザ認証に web3.eth.personal.sign を使おう!
DApps のユーザ認証に web3.eth.personal.sign を使おう!
 
3Dリアルマップを用いたモバイルゲーム開発における課題とその解決方法
3Dリアルマップを用いたモバイルゲーム開発における課題とその解決方法3Dリアルマップを用いたモバイルゲーム開発における課題とその解決方法
3Dリアルマップを用いたモバイルゲーム開発における課題とその解決方法
 
LoveChainのスマートコントラクトを見てみよう & 非中央集権なトークンのカタチ
LoveChainのスマートコントラクトを見てみよう & 非中央集権なトークンのカタチLoveChainのスマートコントラクトを見てみよう & 非中央集権なトークンのカタチ
LoveChainのスマートコントラクトを見てみよう & 非中央集権なトークンのカタチ
 
今月のレッツゴー陰陽師!
今月のレッツゴー陰陽師!今月のレッツゴー陰陽師!
今月のレッツゴー陰陽師!
 
位置情報を常に取得するのはつらいよ
位置情報を常に取得するのはつらいよ位置情報を常に取得するのはつらいよ
位置情報を常に取得するのはつらいよ
 
カンバンと朝会とわたくし
カンバンと朝会とわたくしカンバンと朝会とわたくし
カンバンと朝会とわたくし
 
CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介
CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介
CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介
 
CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜
CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜
CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜
 
CEDEC 2015 IoT向け汎用protocol MQTTのリアルタイムゲーム通信利用と実装、そして未来へ…
CEDEC 2015 IoT向け汎用protocol MQTTのリアルタイムゲーム通信利用と実装、そして未来へ…CEDEC 2015 IoT向け汎用protocol MQTTのリアルタイムゲーム通信利用と実装、そして未来へ…
CEDEC 2015 IoT向け汎用protocol MQTTのリアルタイムゲーム通信利用と実装、そして未来へ…
 
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
 

HTML5 ゲームフレームワーク開発について

  • 1. Copyright Drecom Co., Ltd. All Rights Reserved. 1 HTML5 ゲームフレームワーク 開発について
  • 2. Copyright Drecom Co., Ltd. All Rights Reserved. 2 自己紹介 山﨑 拓也 @zprodev ドリコム - HTML5 ゲームフレームワーク開発 - HTML5 技術検証 / 課題解決
  • 3. Copyright Drecom Co., Ltd. All Rights Reserved. 3 HTML5ゲームフレームワーク開発の知見から ゲーム開発に必要な要素を知ってもらう HTML5での実現方法を知ってもらう 目的
  • 4. Copyright Drecom Co., Ltd. All Rights Reserved. 4 HTML5ゲームを作れる人が増える 目的
  • 5. Copyright Drecom Co., Ltd. All Rights Reserved. 5 HTML5ゲーム市場が 盛り上がる 目的
  • 6. Copyright Drecom Co., Ltd. All Rights Reserved. 6 アジェンダ ● ゲーム開発に必要な要素とは? ○ ゲームとして成立させるための要素 ○ ゲーム開発でラクするための要素 ● HTML5でどう実現する? ○ スマホとPCの両対応が前提 ○ 約2年前のブラウザでも動作する機能 ■ Chrome50系、Safari10系 ● まとめ
  • 7. Copyright Drecom Co., Ltd. All Rights Reserved. 7 ゲーム開発に必要な要素とは?
  • 8. Copyright Drecom Co., Ltd. All Rights Reserved. 8 グラフィック描画 見た目 大事
  • 9. Copyright Drecom Co., Ltd. All Rights Reserved. 9 サウンド再生 音も無いと盛り上がらない
  • 10. Copyright Drecom Co., Ltd. All Rights Reserved. 10 ムービー再生 演出はド派手にムービーで (演出の実装は辛い)
  • 11. Copyright Drecom Co., Ltd. All Rights Reserved. 11 プレイヤーとの対話 これが出来なきゃゲームじゃ無い
  • 12. Copyright Drecom Co., Ltd. All Rights Reserved. 12 リソース管理 - 画像や音声など大量リソースへのアクセス - キャッシュ化やメモリ解放などの効率化 ライフサイクル管理 - シーン単位で開発できるとラク - デバイスイベントのハンドリング デバッグ機能 - パフォーマンスチューニングに必要
  • 13. Copyright Drecom Co., Ltd. All Rights Reserved. 13 HTML5でどう実現する?
  • 14. Copyright Drecom Co., Ltd. All Rights Reserved. 14 グラフィック描画 ★ 描画にはWebGLを使う GPUを使って高速に描画可能 HTML要素はcanvasだけあればOK
  • 15. Copyright Drecom Co., Ltd. All Rights Reserved. 15 グラフィック描画 ★ 描画にはWebGLを使う WebGLは低レベルなAPIですが、 描画ライブラリを使えばお手軽です 有名どころ - 2DならPixiJS - 3Dならthree.js
  • 16. Copyright Drecom Co., Ltd. All Rights Reserved. 16 ブラウザの描画タイミングを拾えるAPI グラフィック描画 ★ requestAnimationFrameで定期的に更新
  • 17. Copyright Drecom Co., Ltd. All Rights Reserved. 17 最高60FPSで呼ばれる(約16.6ms間隔) 負荷が高いとフレーム間隔が延びる ゲームを完璧に実装したとしても、 外部要因でFPSは変動します。 (バックグラウンドでのアプリ自動更新とか…) グラフィック描画 ★ requestAnimationFrameで定期的に更新
  • 18. Copyright Drecom Co., Ltd. All Rights Reserved. 18 フレーム毎に固定値のアニメーションは❌ グラフィック描画 ★ requestAnimationFrameで定期的に更新 60FPS 30FPS 33.2ms後 66.4ms後
  • 19. Copyright Drecom Co., Ltd. All Rights Reserved. 19 グラフィック描画 ★ performance.now()でフレーム間隔を算出 performance.now() では 起動からの経過時間をマイクロ秒単位で取得できる。 requestAnimationFrameのコールバック毎に経過時間を算 出し、時間ベースでアニメーションさせる。 30FPS 33.2ms後 66.4ms後
  • 20. Copyright Drecom Co., Ltd. All Rights Reserved. 20 ★ Web Audio API を使用する サウンド再生 音声をJavaScriptで制御する多機能API エフェクトかけたり色々出来ます
  • 21. Copyright Drecom Co., Ltd. All Rights Reserved. 21 自動再生ポリシーへの対応 - ユーザー操作を契機に再生開始する必要がある メモリ使用量に注意 - 解放バグや解放のためにテクニックが必要です バックグラウンドでも音が鳴り続ける - ライフサイクル制御(後述)との連携が必要 ★ Web Audio API を使用する サウンド再生
  • 22. Copyright Drecom Co., Ltd. All Rights Reserved. 22 その他の問題や対策などQiitaにまとめてます ★ Web Audio API を使用する サウンド再生
  • 23. Copyright Drecom Co., Ltd. All Rights Reserved. 23 WebGLはHTMLVideoElementを テクスチャとして受け入れます ★ videoをWebGLに食わせる ムービー再生
  • 24. Copyright Drecom Co., Ltd. All Rights Reserved. 24 iOSはplaysinline属性が必要 - iOS10から属性付加でインライン再生が可能になった - 属性を付けないとコントロールUI付きの全画面表示 videoも自動再生ポリシーに抵触する - 無音で良いならmuted属性をつける - 音出したいならユーザー操作を契機に再生 ★ videoをWebGLに食わせる ムービー再生
  • 25. Copyright Drecom Co., Ltd. All Rights Reserved. 25 Chrome73からβのみで発生するバグがある - play直後にWebGLに食わせるとエラーになる - 74以降もβでは発生するがリリース版では再現しない - play後に数ms待ってからWebGLに渡すと大丈夫 ★ videoをWebGLに食わせる ムービー再生
  • 26. Copyright Drecom Co., Ltd. All Rights Reserved. 26 MouseEvents - PCのマウス操作を拾えるAPI TouchEvents - スマホなどタッチデバイスの操作を拾えるAPI ★ MouseEvnetsとTouchEventsを併用 プレイヤーとの対話
  • 27. Copyright Drecom Co., Ltd. All Rights Reserved. 27 TouchEvents - touchstart - touchend - touchcancel - touchmove MouseEvents - mousedown - mouseup - mousemove - mouseenter - mouseleave - mouseover - mouseout ★ MouseEvnetsとTouchEventsを併用 プレイヤーとの対話 イベントリスナーでキャッチ
  • 28. Copyright Drecom Co., Ltd. All Rights Reserved. 28 TouchEvents - touchstart - touchend - touchcancel - touchmove MouseEvents - mousedown - mouseup - mousemove - mouseenter - mouseleave - mouseover - mouseout ★ MouseEvnetsとTouchEventsを併用 プレイヤーとの対話 押す 離す 移動
  • 29. Copyright Drecom Co., Ltd. All Rights Reserved. 29 MouseEvents - mousedown - mouseup - mousemove - mouseenter - mouseleave - mouseover - mouseout TouchEvents - touchstart - touchend - touchcancel - touchmove 着信など ★ MouseEvnetsとTouchEventsを併用 プレイヤーとの対話 マウスカーソルが対象から外れた時 “離す”が発火しないパターンに注意
  • 30. Copyright Drecom Co., Ltd. All Rights Reserved. 30 Touchではマルチタッチ考慮も必要 座標はコールバック引数から取得する ★ MouseEvnetsとTouchEventsを統合 プレイヤーとの対話
  • 31. Copyright Drecom Co., Ltd. All Rights Reserved. 31 MouseとTouchの統合イベント ★ PointerEvnetsがやってくる プレイヤーとの対話 Safari対応待ってました
  • 32. Copyright Drecom Co., Ltd. All Rights Reserved. 32 Gamepad APIも結構前から使えます ★ 実はゲームパッドも使える プレイヤーとの対話 Chromeのジョイコン対応が少し前にバズってました
  • 33. Copyright Drecom Co., Ltd. All Rights Reserved. 33 ★ ブラウザキャッシュで通信量節約 HTML5ゲームでは全てのリソース取得にWeb通 信を伴います。 HTTPレスポンスヘッダーにリソース寿命を設定 することで、ブラウザにリソースがキャッシュされ 再通信時の通信量を節約できます。 リソース管理
  • 34. Copyright Drecom Co., Ltd. All Rights Reserved. 34 ★ ブラウザキャッシュで通信量節約 リソース寿命系レスポンスヘッダー - Expires : 日時指定の強いキャッシュ - Cache-Control : 秒数指定の強いキャッシュ - Last-Modified : 更新日時で管理する弱いキャッシュ - ETag : 更新日時やファイルサイズから生成したユニーク なIDで管理する弱いキャッシュ サーバー側で適切な設定を リソース管理
  • 35. Copyright Drecom Co., Ltd. All Rights Reserved. 35 ブラウザで動作するDBシステム バイナリデータも保存可能なため、 大容量ファイルストレージとして使える ★ IndexedDBでJS主導の通信量節約 リソース管理
  • 36. Copyright Drecom Co., Ltd. All Rights Reserved. 36 iOSは12.2までblob非対応 - blob → ArrayBufferに変換すれば保存可能 容量上限にも注意 - Web上には実際の挙動と異なる情報が散見されます - 現状実機で見る限り、Android Chromeで数GB、iOS Safariはストレージを食い潰すまでは保存可能 - Safari13で上限が実装されます - Exceptionが発生しても死なない実装を! ★ IndexedDBでJS主導の通信量節約 リソース管理
  • 37. Copyright Drecom Co., Ltd. All Rights Reserved. 37 リソースキャッシュに特化したライブラリをOSSと して公開してます。 ★ IndexedDBでJS主導の通信量節約 リソース管理 https://github.com/drecom/idb-cache
  • 38. Copyright Drecom Co., Ltd. All Rights Reserved. 38 @drecom/idb-cache の特徴 - データ容量 or ファイル数で保存上限を設定可能 - ファイル毎にキャッシュ期間を設定可能 - 上限を超える場合は期限の近いファイルから削除 - 期限などのmetaデータとファイルの実データを分割保存 し検索を効率化 - String、Blob、ArrayBufferの保存に対応 ★ IndexedDBでJS主導の通信量節約 リソース管理
  • 39. Copyright Drecom Co., Ltd. All Rights Reserved. 39 ★ Page Visibility API でポーズ・レジューム Page Visibility API でブラウザ表示状況を監視できます。 ライフサイクル管理 これを利用し、サウンドがバックグラウンドで鳴り続ける問題 への対処や、performance.now()で計測しているゲーム内時 間の一時停止を行います。
  • 40. Copyright Drecom Co., Ltd. All Rights Reserved. 40 スマホ回転やソフトウェアキーボード出現などでの描画領域 が変わる場合がある。 ゲーム体験を損ねないよう、resizeイベントを検知して canvasをリサイズする。 ★ resizeイベントを検知してcanvasリサイズ ライフサイクル管理
  • 41. Copyright Drecom Co., Ltd. All Rights Reserved. 41 リサイズは少し待ってから - resizeイベント発生直後は正しいwindowサイズが取れな い場合がある - resizeイベントが短時間で多重発生する場合がある ★ resizeイベントを検知してcanvasリサイズ ライフサイクル管理
  • 42. Copyright Drecom Co., Ltd. All Rights Reserved. 42 ログ、通信量、メモリ使用、ストレージ内容などは ブラウザ備え付けの開発者ツールで確認できま す。 Android Chrome や iOS SafariもPCと接続して 確認する方法があります。 ★ ブラウザ備え付けの開発者ツールを活用 デバッグ機能
  • 43. Copyright Drecom Co., Ltd. All Rights Reserved. 43 three.js開発者、Mr.doob氏のstats.jsカスタマイ ズ版を公開してます。 ★ @drecom/stats.js デバッグ機能 https://github.com/drecom/stats.js
  • 44. Copyright Drecom Co., Ltd. All Rights Reserved. 44 ★ @drecom/stats.jsの特徴 デバッグ機能
  • 45. Copyright Drecom Co., Ltd. All Rights Reserved. 45 まとめ
  • 46. Copyright Drecom Co., Ltd. All Rights Reserved. 46 まとめ ● グラフィック周りはWebGL ● 描画更新はrequestAnimationFrame ● 時間計算はperformance.now() ● サウンドはWebAudioAPI ● プレイヤーとの対話はMouseやTouchイベント ● ブラウザキャッシュやIndexedDBで通信量節約 ● PageVisibilityAPIやresizeイベントでブラウザの表示状況をハ ンドリング ● パフォーマンスチューニングは開発者ツールを活用
  • 47. Copyright Drecom Co., Ltd. All Rights Reserved. 47 これでHTML5ゲーム作れますね!
  • 48. Copyright Drecom Co., Ltd. All Rights Reserved. 48 ご静聴ありがとうございました