狠狠撸

狠狠撸Share a Scribd company logo
何が?
まじかよ
three.jsを「遅い」と思わせ
ないデータの扱い方
2017/2/15 jey-en
何作ったのさ
Three.jsというモノを使い、
Xbox360で配信していた
3D同人ゲームの
移植を行った
(1面のみの、おためし版)
はじめに three.js って何さ
ココがイイぞ!
three.jsでゲーム制作
ココがイケてない。
three.jsでゲーム制作
その他
悪あがき
シングルスレッドの限界に挑むデータロード
もくじのようなもの
はじめに three.js って何さ
ココがイイぞ!
three.jsでゲーム制作
ココがイケてない。
three.jsでゲーム制作
その他
悪あがき
シングルスレッドの限界に挑むデータロード
three.jsって?
オープンソースの、100%JavaScriptで作られた、
3D(WebGL)を扱いやすくするためのJSライブラリ。
https://threejs.org/
はじめに three.js って何さ
ココがイイぞ!
three.jsでゲーム制作
ココがイケてない。
three.jsでゲーム制作
その他
悪あがき
シングルスレッドの限界に挑むデータロード
ココがイイぞ!three.jsでゲーム制作
ゲーム作成に必要なモノは揃ってる。
アタリ判定、モデルとRayとの交点(高さ検出)、3D&2Dベクトル型、Matrix型、
ボーン、クォータニオン、3D座標からスクリーン座標&その逆などなど、
DirectXを触ったことがある人なら,ごくごくすんなりと開発できるはず。
ゼロからの人は、まぁ、頑張れ。いつか日の光は見える。
はじめに three.js って何さ
ココがイイぞ!
three.jsでゲーム制作
ココがイケてない。
three.jsでゲーム制作
その他
悪あがき
シングルスレッドの限界に挑むデータロード
ココがイイぞ!three.jsでゲーム制作
豊富なインポータ。
json(blender)、FBX、obj、なんとMMDも対応している。
MMDはモデル&アニメーションだけでなく、
頂点モーフまで対応。
あんなモデルが即ブラウザで表示できて動く!
はじめに three.js って何さ
ココがイイぞ!
three.jsでゲーム制作
ココがイケてない。
three.jsでゲーム制作
その他
悪あがき
シングルスレッドの限界に挑むデータロード
ココがイイぞ!three.jsでゲーム制作
遅くない。っていうか早い。
そして出来ることが多い
幾つかある3Dラッパーの中では最速。らしい。
シェーダーもぶっ叩ける。触れば触るほど
やれることが増えていく。楽しい!
はじめに three.js って何さ
ココがイイぞ!
three.jsでゲーム制作
ココがイケてない。
three.jsでゲーム制作
その他
悪あがき
シングルスレッドの限界に挑むデータロード
ここからが本題です。
配信直前で泣かない
ためのお話をしましょう
すこし先の話をしよう。
ゲームが完成した!
スペース借りて、公開だ!
「すごーい!君は
ブラウザで動く3Dゲームが作れる
フレンズなんだね!」
ちくしょう!台无しにしやがった!!
谁もお前を爱さない
シングルスレッドの限界に挑むデータロード
おさらい:
JavaScriptは、シングルスレッドである。
WebWorker?とりあえず忘れろ。
はじめに three.js って何さ
ココがイイぞ!
three.jsでゲーム制作
ココがイケてない。
three.jsでゲーム制作
その他
悪あがき
シングルスレッドの限界に挑むデータロード
シングルスレッドの限界に挑むデータロード
three.jsの、モデルデータの読み込みについてのフロー
ダウンロード完了後に、
「ローダープラグインが、モデルデータをthree.js用に変換する」
その後、メインプログラム側のコールバックにした「Load」に入る。
はじめに three.js って何さ
ココがイイぞ!
three.jsでゲーム制作
ココがイケてない。
three.jsでゲーム制作
その他
悪あがき
シングルスレッドの限界に挑むデータロード
データ
ダウンロード
ローダーでの解析?変換 ロード後コールバック
ローダーライブラ
リ
ユーザーコード
three.jsの、モデルデータの読み込みについてのフロー
ヤバイのは実は、「ダウンロードの時間」ではなく、
「ローダーでの解析時間」 と 「コールバック時処理」 のあわせ技!!
はじめに three.js って何さ
ココがイイぞ!
three.jsでゲーム制作
ココがイケてない。
three.jsでゲーム制作
その他
悪あがき
シングルスレッドの限界に挑むデータロード
データ
ダウンロード
ローダーでの解析 ロード後コールバック
マルチ可能 マルチ不可能!!!
シングルスレッドの限界に挑むデータロード
three.jsの、複数モデルデータの読み込みについてのフロー
ヤバイのは実は、「ダウンロードの時間」ではなく、その後の時間!
DL ローダーでの解析 ロード後コード
DL
DL
DL
ローダーでの解析 ロード後コード
画面更新可能 画面更新不可能画面更新不可能
谁もお前を爱さない
じゃあどうしよう。
魔法の呪文を唱えましょう。
はじめに three.js って何さ
ココがイイぞ!
three.jsでゲーム制作
ココがイケてない。
three.jsでゲーム制作
その他
悪あがき
シングルスレッドの限界に挑むデータロード
シングルスレッドの限界に挑むデータロード
大正義
はじめに three.js って何さ
ココがイイぞ!
three.jsでゲーム制作
ココがイケてない。
three.jsでゲーム制作
その他
悪あがき
シングルスレッドの限界に挑むデータロード
シングルスレッドの限界に挑むデータロード
three.jsの、モデルデータの読み込みについてのフロー
第一の改善点
一番楽に済む改修点がコレ。
はじめに three.js って何さ
ココがイイぞ!
three.jsでゲーム制作
ココがイケてない。
three.jsでゲーム制作
その他
悪あがき
シングルスレッドの限界に挑むデータロード
データ
ダウンロード
ローダーでの解析
ロード後コー
ド
ここにSetTimeOut
シングルスレッドの限界に挑むデータロード
three.jsの、モデルデータの読み込みコード第一の改善
コレを??
はじめに three.js って何さ
ココがイイぞ!
three.jsでゲーム制作
ココがイケてない。
three.jsでゲーム制作
その他
悪あがき
シングルスレッドの限界に挑むデータロード
loader.load( modelFile, function ( object ) {
mesh = object;
mesh.position.y = -10;
scene.add( mesh );
//中略
}, onProgress, onError );
シングルスレッドの限界に挑むデータロード
three.jsの、モデルデータの読み込みコード第一の改善
こうじゃ。
はじめに three.js って何さ
ココがイイぞ!
three.jsでゲーム制作
ココがイケてない。
three.jsでゲーム制作
その他
悪あがき
シングルスレッドの限界に挑むデータロード
loader.load( modelFile, function ( object ) {
var loadEnd = function (_object) {
mesh = (_object;
mesh.position.y = -10;
scene.add( mesh );
//中略
};
setTimeout(loadEnd(object), 10);
}, onProgress, onError );
シングルスレッドの限界に挑むデータロード
three.jsの、複数モデルデータの読み込みについてのフロー
現在のフローがこんな感じ
DL ローダーでの解析 ロード後コード
DL
DL
DL
ローダーでの解析 ロード後コード
画面更新が可能になった!
three.jsの、複数モデルデータの読み込みについてのフロー
次の問題はこの「1つのまとまりの大きさ」が、まだ大きい????。
DL ローダーでの解析 ロード後コード
DL
DL
DL
ローダーでの解析 ロード後コード
2.5~3秒 0.3秒
大正義
はじめに three.js って何さ
ココがイイぞ!
three.jsでゲーム制作
ココがイケてない。
three.jsでゲーム制作
その他
悪あがき
シングルスレッドの限界に挑むデータロード
シングルスレッドの限界に挑むデータロード
three.jsの、モデルデータの読み込みコード第一の改善
オープンソースの醍醐味を活かそう。
ローダーを独自改修し、SetTimeOutを仕込む!
はじめに three.js って何さ
ココがイイぞ!
three.jsでゲーム制作
ココがイケてない。
three.jsでゲーム制作
その他
悪あがき
シングルスレッドの限界に挑むデータロード
シングルスレッドの限界に挑むデータロード
MMDLoader.jsの、モデルデータの読み込みコードの魔改造
コレを??
//83行目(ビルド後ファイル?ver r84時点)
THREE.MMDLoader.prototype.load = function ( modelUrl, vmdUrls, callback, onProgress, onError ) {
var scope = this;
this.loadModel( modelUrl, function ( mesh ) {
scope.loadVmds( vmdUrls, function ( vmd ) {
scope.pourVmdIntoModel( mesh, vmd );
callback( mesh );
}, onProgress, onError );
}, onProgress, onError );
};
シングルスレッドの限界に挑むデータロード
MMDLoader.jsの、モデルデータの読み込みコードの魔改造
こうじゃ
//83行目(ver r84時点)
THREE.MMDLoader.prototype.load = function ( modelUrl, vmdUrls, callback, onProgress, onError ) {
var scope = this;
this.loadModel( modelUrl, function ( mesh ) {
var modeLoadEnd= function (_mesh) {
scope.loadVmds( vmdUrls, function ( vmd ) {
scope.pourVmdIntoModel( _mesh, vmd );
callback(_mesh );
}, onProgress, onError );
};
setTimeout(modeLoadEnd( mesh ), 10);
}, onProgress, onError );
};
シングルスレッドの限界に挑むデータロード
three.jsの、複数モデルデータの読み込みについてのフロー
トータルの読み込み時間は変わらないが、間に画面更新が可能になった!
DL ローダーでの解析 ロード後コード
DL
DL
DL
ロード後コード
2.5~3秒 0.3秒
ローダーでの解析
大正義
はじめに three.js って何さ
ココがイイぞ!
three.jsでゲーム制作
ココがイケてない。
three.jsでゲーム制作
その他
悪あがき
シングルスレッドの限界に挑むデータロード
シングルスレッドの限界に挑むデータロード
JunkFieldsでのデータの読み込みについてのフロー
メッシュ地形DL
本地形データDL
主人公メカデータDL
ボイスデータDL
敵メカデータDL
敵メカデータDL
本編ボイスデータDL
タダの暗闇
(長くて0.5秒) 戦闘説明デモ画面(全部見ると1分近い)
戦
闘
本
編
本
編
初
期
化
シナリオスクリプトDL
ココはイケてない。three.jsでゲーム制作
Unityの強力なアセットストアが使えない。
リソースは全て自前で用意する必要がある。
ストア以外でもUnity限定配信とかのフリーモデルとかある。
過剰なUnity信仰文化氏ね。
はじめに three.js って何さ
ココがイイぞ!
three.jsでゲーム制作
ココがイケてない。
three.jsでゲーム制作
その他
悪あがき
シングルスレッドの限界に挑むデータロード
ココはイケてない。three.jsでゲーム制作
ガチで3Dゲームを作りたいなら、
おとなしくUnityにしとけ!
ソース丸見えチートし放題問題&アセットストアの有用性で、
Unityのメリットが上回ると思う(個人の感想です)。
企業ユースのゲームとしては、three.jsはやっぱりキツイと思う。
three.jsでゲーム作成」というノウハウは少なく、デビュー作にはVeryHard
はじめに three.js って何さ
ココがイイぞ!
three.jsでゲーム制作
ココがイケてない。
three.jsでゲーム制作
その他
悪あがき
シングルスレッドの限界に挑むデータロード
今回の話と関係のない結論
●ガチじゃない、さくっと3Dゲームを作って公開したい!
ということに関しては、three.js は選択肢の一つとして十分オススメ出来る!
●本業がゲーム畑にいない人&元同人ゲーム作者にこそ、
覚えていただきたい選択肢!
●ゲーム以外で3Dの表現を使いたいなら、three.js最高!!
はじめに three.js って何さ
ココがイイぞ!
three.jsでゲーム制作
ココがイケてない。
three.jsでゲーム制作
その他
悪あがき
シングルスレッドの限界に挑むデータロード
おわり
ありがとうございました。お疲れ様でした。
three.jsが気になったひとは、ぜひ
three.js ぱんつ 検索

More Related Content

What's hot (20)

新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
infinite_loop
?
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するCEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Yoshifumi Kawai
?
Unityて?始めるハ?ーシ?ョン管理 Git LFS 入門編
Unityて?始めるハ?ーシ?ョン管理 Git LFS 入門編Unityて?始めるハ?ーシ?ョン管理 Git LFS 入門編
Unityて?始めるハ?ーシ?ョン管理 Git LFS 入門編
NAKAOKU Takahiro
?
ケ?ームエンシ?ニアのためのテ?ータヘ?ース设计
ケ?ームエンシ?ニアのためのテ?ータヘ?ース设计ケ?ームエンシ?ニアのためのテ?ータヘ?ース设计
ケ?ームエンシ?ニアのためのテ?ータヘ?ース设计
sairoutine
?
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチマイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
増田 亨
?
モバイルゲームの「大规模な开発」かつ「高频度の更新」を実现するための开発环境整备の取り组み
モバイルゲームの「大规模な开発」かつ「高频度の更新」を実现するための开発环境整备の取り组みモバイルゲームの「大规模な开発」かつ「高频度の更新」を実现するための开発环境整备の取り组み
モバイルゲームの「大规模な开発」かつ「高频度の更新」を実现するための开発环境整备の取り组み
MorioImai
?
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYOFINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
Game Tools & Middleware Forum
?
イベント?ソーシングを知る
イベント?ソーシングを知るイベント?ソーシングを知る
イベント?ソーシングを知る
Shuhei Fujita
?
【颁贰顿贰颁2018】一歩先の鲍苍颈迟测でのパフォーマンス/メモリ计测、デバッグ术
【颁贰顿贰颁2018】一歩先の鲍苍颈迟测でのパフォーマンス/メモリ计测、デバッグ术【颁贰顿贰颁2018】一歩先の鲍苍颈迟测でのパフォーマンス/メモリ计测、デバッグ术
【颁贰顿贰颁2018】一歩先の鲍苍颈迟测でのパフォーマンス/メモリ计测、デバッグ术
Unity Technologies Japan K.K.
?
Node.js Native ESM への道 ?最終章: Babel / TypeScript Modules との闘い?
Node.js Native ESM への道  ?最終章: Babel / TypeScript Modules との闘い?Node.js Native ESM への道  ?最終章: Babel / TypeScript Modules との闘い?
Node.js Native ESM への道 ?最終章: Babel / TypeScript Modules との闘い?
Teppei Sato
?
ゲームエンジンの中の话
ゲームエンジンの中の话ゲームエンジンの中の话
ゲームエンジンの中の话
Masayoshi Kamai
?
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
?
TDD のこころ @ OSH2014
TDD のこころ @ OSH2014TDD のこころ @ OSH2014
TDD のこころ @ OSH2014
Takuto Wada
?
【Unity】 Behavior TreeでAIを作る
 【Unity】 Behavior TreeでAIを作る 【Unity】 Behavior TreeでAIを作る
【Unity】 Behavior TreeでAIを作る
torisoup
?
レイトレ空间构造入门
レイトレ空间构造入门レイトレ空间构造入门
レイトレ空间构造入门
Toru Matsuoka
?
搁笔骋におけるイヘ?ント駆动型の设计と実装
搁笔骋におけるイヘ?ント駆动型の设计と実装搁笔骋におけるイヘ?ント駆动型の设计と実装
搁笔骋におけるイヘ?ント駆动型の设计と実装
Koji Morikawa
?
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
?
Test Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるかTest Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるか
Takuto Wada
?
ソフトウェアテストの最新动向の学び方
ソフトウェアテストの最新动向の学び方ソフトウェアテストの最新动向の学び方
ソフトウェアテストの最新动向の学び方
Keizo Tatsumi
?
データ履歴管理のためのテンポラルデータモデルと搁别濒补诲辞尘辞の绍介 #jjug_ccc #ccc_g3
データ履歴管理のためのテンポラルデータモデルと搁别濒补诲辞尘辞の绍介 #jjug_ccc #ccc_g3 データ履歴管理のためのテンポラルデータモデルと搁别濒补诲辞尘辞の绍介 #jjug_ccc #ccc_g3
データ履歴管理のためのテンポラルデータモデルと搁别濒补诲辞尘辞の绍介 #jjug_ccc #ccc_g3
Hiroshi Ito
?
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
infinite_loop
?
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するCEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Yoshifumi Kawai
?
Unityて?始めるハ?ーシ?ョン管理 Git LFS 入門編
Unityて?始めるハ?ーシ?ョン管理 Git LFS 入門編Unityて?始めるハ?ーシ?ョン管理 Git LFS 入門編
Unityて?始めるハ?ーシ?ョン管理 Git LFS 入門編
NAKAOKU Takahiro
?
ケ?ームエンシ?ニアのためのテ?ータヘ?ース设计
ケ?ームエンシ?ニアのためのテ?ータヘ?ース设计ケ?ームエンシ?ニアのためのテ?ータヘ?ース设计
ケ?ームエンシ?ニアのためのテ?ータヘ?ース设计
sairoutine
?
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチマイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
増田 亨
?
モバイルゲームの「大规模な开発」かつ「高频度の更新」を実现するための开発环境整备の取り组み
モバイルゲームの「大规模な开発」かつ「高频度の更新」を実现するための开発环境整备の取り组みモバイルゲームの「大规模な开発」かつ「高频度の更新」を実现するための开発环境整备の取り组み
モバイルゲームの「大规模な开発」かつ「高频度の更新」を実现するための开発环境整备の取り组み
MorioImai
?
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYOFINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
Game Tools & Middleware Forum
?
イベント?ソーシングを知る
イベント?ソーシングを知るイベント?ソーシングを知る
イベント?ソーシングを知る
Shuhei Fujita
?
【颁贰顿贰颁2018】一歩先の鲍苍颈迟测でのパフォーマンス/メモリ计测、デバッグ术
【颁贰顿贰颁2018】一歩先の鲍苍颈迟测でのパフォーマンス/メモリ计测、デバッグ术【颁贰顿贰颁2018】一歩先の鲍苍颈迟测でのパフォーマンス/メモリ计测、デバッグ术
【颁贰顿贰颁2018】一歩先の鲍苍颈迟测でのパフォーマンス/メモリ计测、デバッグ术
Unity Technologies Japan K.K.
?
Node.js Native ESM への道 ?最終章: Babel / TypeScript Modules との闘い?
Node.js Native ESM への道  ?最終章: Babel / TypeScript Modules との闘い?Node.js Native ESM への道  ?最終章: Babel / TypeScript Modules との闘い?
Node.js Native ESM への道 ?最終章: Babel / TypeScript Modules との闘い?
Teppei Sato
?
ゲームエンジンの中の话
ゲームエンジンの中の话ゲームエンジンの中の话
ゲームエンジンの中の话
Masayoshi Kamai
?
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
?
TDD のこころ @ OSH2014
TDD のこころ @ OSH2014TDD のこころ @ OSH2014
TDD のこころ @ OSH2014
Takuto Wada
?
【Unity】 Behavior TreeでAIを作る
 【Unity】 Behavior TreeでAIを作る 【Unity】 Behavior TreeでAIを作る
【Unity】 Behavior TreeでAIを作る
torisoup
?
レイトレ空间构造入门
レイトレ空间构造入门レイトレ空间构造入门
レイトレ空间构造入门
Toru Matsuoka
?
搁笔骋におけるイヘ?ント駆动型の设计と実装
搁笔骋におけるイヘ?ント駆动型の设计と実装搁笔骋におけるイヘ?ント駆动型の设计と実装
搁笔骋におけるイヘ?ント駆动型の设计と実装
Koji Morikawa
?
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
?
Test Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるかTest Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるか
Takuto Wada
?
ソフトウェアテストの最新动向の学び方
ソフトウェアテストの最新动向の学び方ソフトウェアテストの最新动向の学び方
ソフトウェアテストの最新动向の学び方
Keizo Tatsumi
?
データ履歴管理のためのテンポラルデータモデルと搁别濒补诲辞尘辞の绍介 #jjug_ccc #ccc_g3
データ履歴管理のためのテンポラルデータモデルと搁别濒补诲辞尘辞の绍介 #jjug_ccc #ccc_g3 データ履歴管理のためのテンポラルデータモデルと搁别濒补诲辞尘辞の绍介 #jjug_ccc #ccc_g3
データ履歴管理のためのテンポラルデータモデルと搁别濒补诲辞尘辞の绍介 #jjug_ccc #ccc_g3
Hiroshi Ito
?

Viewers also liked (16)

海外で注目されてるJs framework “mithril”の特徴
海外で注目されてるJs framework “mithril”の特徴海外で注目されてるJs framework “mithril”の特徴
海外で注目されてるJs framework “mithril”の特徴
Shoyo Kyou
?
OSC京都 2015 LT 「テスト自動化の闇と向き合う」
OSC京都 2015 LT 「テスト自動化の闇と向き合う」OSC京都 2015 LT 「テスト自動化の闇と向き合う」
OSC京都 2015 LT 「テスト自動化の闇と向き合う」
Osamu Shimoda
?
Onsen UI 2.0とUIライブラリの未来
Onsen UI 2.0とUIライブラリの未来Onsen UI 2.0とUIライブラリの未来
Onsen UI 2.0とUIライブラリの未来
アシアル株式会社
?
20151201 私が厂别濒别苍颈耻尘を使ってスクリーンショットを撮るまでに出会った闇の全て
20151201 私が厂别濒别苍颈耻尘を使ってスクリーンショットを撮るまでに出会った闇の全て20151201 私が厂别濒别苍颈耻尘を使ってスクリーンショットを撮るまでに出会った闇の全て
20151201 私が厂别濒别苍颈耻尘を使ってスクリーンショットを撮るまでに出会った闇の全て
Osamu Shimoda
?
第2回html5jゲーム部勉強会 Oh! JavaScript 夢の続きを語ろうよ?emscriptenの逆襲 - html5編
第2回html5jゲーム部勉強会   Oh! JavaScript 夢の続きを語ろうよ?emscriptenの逆襲 - html5編第2回html5jゲーム部勉強会   Oh! JavaScript 夢の続きを語ろうよ?emscriptenの逆襲 - html5編
第2回html5jゲーム部勉強会 Oh! JavaScript 夢の続きを語ろうよ?emscriptenの逆襲 - html5編
Takashi Toyoshima
?
意识低く惭别迟别辞谤绍介
意识低く惭别迟别辞谤绍介意识低く惭别迟别辞谤绍介
意识低く惭别迟别辞谤绍介
hashedrock
?
軽量フレームワーク狈补苍肠测
軽量フレームワーク狈补苍肠测軽量フレームワーク狈补苍肠测
軽量フレームワーク狈补苍肠测
Narami Kiyokura
?
私が厂别濒别苍颈耻尘を使ってスクリーンショットを撮るまでに出会った闇の全て
私が厂别濒别苍颈耻尘を使ってスクリーンショットを撮るまでに出会った闇の全て私が厂别濒别苍颈耻尘を使ってスクリーンショットを撮るまでに出会った闇の全て
私が厂别濒别苍颈耻尘を使ってスクリーンショットを撮るまでに出会った闇の全て
Osamu Shimoda
?
Riot + generator で始める新しいデータバインディング
Riot + generator で始める新しいデータバインディングRiot + generator で始める新しいデータバインディング
Riot + generator で始める新しいデータバインディング
Tsutomu Kawamura
?
Web Workerで○○する話
Web Workerで○○する話Web Workerで○○する話
Web Workerで○○する話
ushiboy
?
ライオンて?も分かる痴耻别箩蝉
ライオンて?も分かる痴耻别箩蝉ライオンて?も分かる痴耻别箩蝉
ライオンて?も分かる痴耻别箩蝉
lion-man
?
痴耻别.箩蝉入门
痴耻别.箩蝉入门痴耻别.箩蝉入门
痴耻别.箩蝉入门
Takuya Sato
?
最近のストリーム処理事情振り返り
最近のストリーム処理事情振り返り最近のストリーム処理事情振り返り
最近のストリーム処理事情振り返り
Sotaro Kimura
?
サイボウズのフロントエンド開発 現在とこれからの挑戦
サイボウズのフロントエンド開発 現在とこれからの挑戦サイボウズのフロントエンド開発 現在とこれからの挑戦
サイボウズのフロントエンド開発 現在とこれからの挑戦
Teppei Sato
?
海外で注目されてるJs framework “mithril”の特徴
海外で注目されてるJs framework “mithril”の特徴海外で注目されてるJs framework “mithril”の特徴
海外で注目されてるJs framework “mithril”の特徴
Shoyo Kyou
?
OSC京都 2015 LT 「テスト自動化の闇と向き合う」
OSC京都 2015 LT 「テスト自動化の闇と向き合う」OSC京都 2015 LT 「テスト自動化の闇と向き合う」
OSC京都 2015 LT 「テスト自動化の闇と向き合う」
Osamu Shimoda
?
20151201 私が厂别濒别苍颈耻尘を使ってスクリーンショットを撮るまでに出会った闇の全て
20151201 私が厂别濒别苍颈耻尘を使ってスクリーンショットを撮るまでに出会った闇の全て20151201 私が厂别濒别苍颈耻尘を使ってスクリーンショットを撮るまでに出会った闇の全て
20151201 私が厂别濒别苍颈耻尘を使ってスクリーンショットを撮るまでに出会った闇の全て
Osamu Shimoda
?
第2回html5jゲーム部勉強会 Oh! JavaScript 夢の続きを語ろうよ?emscriptenの逆襲 - html5編
第2回html5jゲーム部勉強会   Oh! JavaScript 夢の続きを語ろうよ?emscriptenの逆襲 - html5編第2回html5jゲーム部勉強会   Oh! JavaScript 夢の続きを語ろうよ?emscriptenの逆襲 - html5編
第2回html5jゲーム部勉強会 Oh! JavaScript 夢の続きを語ろうよ?emscriptenの逆襲 - html5編
Takashi Toyoshima
?
意识低く惭别迟别辞谤绍介
意识低く惭别迟别辞谤绍介意识低く惭别迟别辞谤绍介
意识低く惭别迟别辞谤绍介
hashedrock
?
軽量フレームワーク狈补苍肠测
軽量フレームワーク狈补苍肠测軽量フレームワーク狈补苍肠测
軽量フレームワーク狈补苍肠测
Narami Kiyokura
?
私が厂别濒别苍颈耻尘を使ってスクリーンショットを撮るまでに出会った闇の全て
私が厂别濒别苍颈耻尘を使ってスクリーンショットを撮るまでに出会った闇の全て私が厂别濒别苍颈耻尘を使ってスクリーンショットを撮るまでに出会った闇の全て
私が厂别濒别苍颈耻尘を使ってスクリーンショットを撮るまでに出会った闇の全て
Osamu Shimoda
?
Riot + generator で始める新しいデータバインディング
Riot + generator で始める新しいデータバインディングRiot + generator で始める新しいデータバインディング
Riot + generator で始める新しいデータバインディング
Tsutomu Kawamura
?
Web Workerで○○する話
Web Workerで○○する話Web Workerで○○する話
Web Workerで○○する話
ushiboy
?
ライオンて?も分かる痴耻别箩蝉
ライオンて?も分かる痴耻别箩蝉ライオンて?も分かる痴耻别箩蝉
ライオンて?も分かる痴耻别箩蝉
lion-man
?
痴耻别.箩蝉入门
痴耻别.箩蝉入门痴耻别.箩蝉入门
痴耻别.箩蝉入门
Takuya Sato
?
最近のストリーム処理事情振り返り
最近のストリーム処理事情振り返り最近のストリーム処理事情振り返り
最近のストリーム処理事情振り返り
Sotaro Kimura
?
サイボウズのフロントエンド開発 現在とこれからの挑戦
サイボウズのフロントエンド開発 現在とこれからの挑戦サイボウズのフロントエンド開発 現在とこれからの挑戦
サイボウズのフロントエンド開発 現在とこれからの挑戦
Teppei Sato
?

Recently uploaded (10)

Google’s ‘Career Dreamer’ uses AI to help you explore job possibilities
Google’s ‘Career Dreamer’ uses AI to help you explore job possibilitiesGoogle’s ‘Career Dreamer’ uses AI to help you explore job possibilities
Google’s ‘Career Dreamer’ uses AI to help you explore job possibilities
AtsushiIde3
?
ALPHABET FLASHCARD FOR PRESCHOOL TO KINDERGARTEN LEARNERS.docx
ALPHABET FLASHCARD FOR PRESCHOOL TO KINDERGARTEN LEARNERS.docxALPHABET FLASHCARD FOR PRESCHOOL TO KINDERGARTEN LEARNERS.docx
ALPHABET FLASHCARD FOR PRESCHOOL TO KINDERGARTEN LEARNERS.docx
ruthbarnuevo1
?
脳神経内科:専攻医の陥るpitfallとその解決法 【ADVANCED2024】
脳神経内科:専攻医の陥るpitfallとその解決法 【ADVANCED2024】脳神経内科:専攻医の陥るpitfallとその解決法 【ADVANCED2024】
脳神経内科:専攻医の陥るpitfallとその解決法 【ADVANCED2024】
NEURALGPNETWORK
?
GAM E.pptx
GAM                                        E.pptxGAM                                        E.pptx
GAM E.pptx
phuyquang74
?
cardiom??????????????????????yopathy .pdf
cardiom??????????????????????yopathy .pdfcardiom??????????????????????yopathy .pdf
cardiom??????????????????????yopathy .pdf
ssuser16d694
?
Introduction to Local Image Features....
Introduction to Local Image Features....Introduction to Local Image Features....
Introduction to Local Image Features....
YiTingTseng6
?
タワーマンション効果 ?高所からの眺望が、人の心理状態に及ぼす影響を探るRCTs
タワーマンション効果 ?高所からの眺望が、人の心理状態に及ぼす影響を探るRCTsタワーマンション効果 ?高所からの眺望が、人の心理状態に及ぼす影響を探るRCTs
タワーマンション効果 ?高所からの眺望が、人の心理状態に及ぼす影響を探るRCTs
KeisukeHattori1
?
中毒診療ことはし?め 【ADVANCED2024】 by よしか病院 佐々木弥生
中毒診療ことはし?め 【ADVANCED2024】 by よしか病院 佐々木弥生中毒診療ことはし?め 【ADVANCED2024】 by よしか病院 佐々木弥生
中毒診療ことはし?め 【ADVANCED2024】 by よしか病院 佐々木弥生
NEURALGPNETWORK
?
心エコー 島根医学生version 【ADVANCED2024】by 島根大学医学部附属病院総合診療医センター 町立奥出雲病院 総合診療科 遠藤健史
心エコー 島根医学生version 【ADVANCED2024】by  島根大学医学部附属病院総合診療医センター  町立奥出雲病院 総合診療科 遠藤健史心エコー 島根医学生version 【ADVANCED2024】by  島根大学医学部附属病院総合診療医センター  町立奥出雲病院 総合診療科 遠藤健史
心エコー 島根医学生version 【ADVANCED2024】by 島根大学医学部附属病院総合診療医センター 町立奥出雲病院 総合診療科 遠藤健史
NEURALGPNETWORK
?
表出と抑制の二面性効果 ?手書きの心理的影響に関するRCT研究(青山学院大学経営学部服部ゼミ)
表出と抑制の二面性効果 ?手書きの心理的影響に関するRCT研究(青山学院大学経営学部服部ゼミ)表出と抑制の二面性効果 ?手書きの心理的影響に関するRCT研究(青山学院大学経営学部服部ゼミ)
表出と抑制の二面性効果 ?手書きの心理的影響に関するRCT研究(青山学院大学経営学部服部ゼミ)
KeisukeHattori1
?
Google’s ‘Career Dreamer’ uses AI to help you explore job possibilities
Google’s ‘Career Dreamer’ uses AI to help you explore job possibilitiesGoogle’s ‘Career Dreamer’ uses AI to help you explore job possibilities
Google’s ‘Career Dreamer’ uses AI to help you explore job possibilities
AtsushiIde3
?
ALPHABET FLASHCARD FOR PRESCHOOL TO KINDERGARTEN LEARNERS.docx
ALPHABET FLASHCARD FOR PRESCHOOL TO KINDERGARTEN LEARNERS.docxALPHABET FLASHCARD FOR PRESCHOOL TO KINDERGARTEN LEARNERS.docx
ALPHABET FLASHCARD FOR PRESCHOOL TO KINDERGARTEN LEARNERS.docx
ruthbarnuevo1
?
脳神経内科:専攻医の陥るpitfallとその解決法 【ADVANCED2024】
脳神経内科:専攻医の陥るpitfallとその解決法 【ADVANCED2024】脳神経内科:専攻医の陥るpitfallとその解決法 【ADVANCED2024】
脳神経内科:専攻医の陥るpitfallとその解決法 【ADVANCED2024】
NEURALGPNETWORK
?
cardiom??????????????????????yopathy .pdf
cardiom??????????????????????yopathy .pdfcardiom??????????????????????yopathy .pdf
cardiom??????????????????????yopathy .pdf
ssuser16d694
?
Introduction to Local Image Features....
Introduction to Local Image Features....Introduction to Local Image Features....
Introduction to Local Image Features....
YiTingTseng6
?
タワーマンション効果 ?高所からの眺望が、人の心理状態に及ぼす影響を探るRCTs
タワーマンション効果 ?高所からの眺望が、人の心理状態に及ぼす影響を探るRCTsタワーマンション効果 ?高所からの眺望が、人の心理状態に及ぼす影響を探るRCTs
タワーマンション効果 ?高所からの眺望が、人の心理状態に及ぼす影響を探るRCTs
KeisukeHattori1
?
中毒診療ことはし?め 【ADVANCED2024】 by よしか病院 佐々木弥生
中毒診療ことはし?め 【ADVANCED2024】 by よしか病院 佐々木弥生中毒診療ことはし?め 【ADVANCED2024】 by よしか病院 佐々木弥生
中毒診療ことはし?め 【ADVANCED2024】 by よしか病院 佐々木弥生
NEURALGPNETWORK
?
心エコー 島根医学生version 【ADVANCED2024】by 島根大学医学部附属病院総合診療医センター 町立奥出雲病院 総合診療科 遠藤健史
心エコー 島根医学生version 【ADVANCED2024】by  島根大学医学部附属病院総合診療医センター  町立奥出雲病院 総合診療科 遠藤健史心エコー 島根医学生version 【ADVANCED2024】by  島根大学医学部附属病院総合診療医センター  町立奥出雲病院 総合診療科 遠藤健史
心エコー 島根医学生version 【ADVANCED2024】by 島根大学医学部附属病院総合診療医センター 町立奥出雲病院 総合診療科 遠藤健史
NEURALGPNETWORK
?
表出と抑制の二面性効果 ?手書きの心理的影響に関するRCT研究(青山学院大学経営学部服部ゼミ)
表出と抑制の二面性効果 ?手書きの心理的影響に関するRCT研究(青山学院大学経営学部服部ゼミ)表出と抑制の二面性効果 ?手書きの心理的影響に関するRCT研究(青山学院大学経営学部服部ゼミ)
表出と抑制の二面性効果 ?手書きの心理的影響に関するRCT研究(青山学院大学経営学部服部ゼミ)
KeisukeHattori1
?

迟丑谤别别.箩蝉を「遅い」と思わせないデータの扱い方

Editor's Notes

  • #2: えーみなさま、はじめましてでございます。
  • #3: 大したことは言いません。どうぞご歓談メインで、聞き流していただければと思います。 そのかわりウルサクさせていただきます。 ということでライトニングトークのお題です。
  • #4: スリーJSを「遅い」と思わせないデータの扱い方 ということで、お話させていただきたいと思います。よろしくお願いします。 -- 30s
  • #5: 今さらお前は誰だ、ということでですね、申し遅れました。私、タムラと申します。スリーJSで、個人制作でゲームなんて作ってみました。個人制作です。ゲーム作りをプロでやってるわけじゃありません、大したお話はできません。 チョット時間が5分からはみ出ちゃうと思うんですけど、ちらっとどんなゲームか、30秒ほど動画でおみせします。 このゲーム、お世辞ではなく、Edgeが一番早いです。 はい、お粗末様でした。
  • #6: 本日の流れ。どうでもいいですね。多分この通りに喋りません。時間使っちゃったし。 1m
  • #7: えーそもそもスリーJsってなんぞや、ということなんですが、JavaScriptの3Dプログラム向けのライブラリです。さきほど豊島さんがスリーJsって言ってたのでちょっと安心しました。知名度ちゃんとありますね。 WebGLをラッピングして、使いやすくしてくれたものです。もちろんオープンソースです。すげえ!
  • #8: この辺は流しますね。 えー大体あります。ゲーム向けメソッド多いです。素敌!はい次。
  • #9: インポータも结构そろってます。惭惭顿、动かせます。楽しいです。
  • #10: だいたいこんなかんじです。すりーJSなんて初めて聞いたし、細かく知りたーい、と思ってくださったら、ググってみてください。 はい。 1m15s
  • #11: 今日はですね、完成直前とか、配信を意識するとか、そういう最後の段階で詰まったときの、解決につながる、かもしれないお話をさせていただきます。 先ほどカシマさんからも、ブラウザゲーム復興だーなんてありましたが、そんなリリース前のお話です。
  • #12: すりー闯厂で根性だして、3顿ゲームを完成させました! すごい!やりきった! サーバースペースを用意して、アップロードして公开するとしましょう。
  • #13: もーね、きっと明日の朝には、すごーい、たーのしー!のコメントでいっぱいだ!!ワクワクしますね。  って思うと、
  • #14: 大体の場合、こうなるんですね。 あーあ。コレダメなやつだ。かーらーの
  • #15: こうなるんですね。 何がいけなかったのでしょう? 1m45
  • #16: いまさらな話をさせていただきます。JavaScriptは、シングルスレッドです。何を今更です。みんな知ってるだろうと。 2m
  • #17: こちらに、3Dモデルデータを、ダウンロードして使えるようにするまでフローを書いてみました。  ご覧の通り、ダウンロードの後に、まずは 「 ローダー側での処理 」がありまして、 すりーJS用に頂点データとか何やらを変換します。  みんな書くのは最後のコールバックのところだけ。 でも、その前にも動いてる処理がある、そのことをちょっと思い出しましょう。 2m30s
  • #18: そうなんです。2D画像やオーディオと違って、ダウンロード即実行可能、じゃなくて、間に一発いるんですね。 この解析部分、当然、タダのJavaScriptなんで、ふつーにシングルスレッドで走ります。   さぁ、もう嫌な予感がしてきましたね。
  • #19: これが複数ファイルだと、こうなります。ダウンロードは確かに時間のかかる処理かもしれないですが、ダウンロードは別スレッドですので、その間、画面を止めないのは、実はそれほど難しくない。 スピナーでもくるくる回しとけばいいんです。 ヤバイのはその後。 ここで、この1組の処理が終わるまで、画面の更新が一切行われなくなります。でもって、その次のファイルも同じように、長く止まっちゃうと。 もーヤバイです。スピナー君もこの最中は、回ってくれません。 
  • #20: んで、こうなります。 秒間1フレームという地獄のできあがりです。 2m30
  • #21: じゃあどうしましょうってことで、魔法の呪文を唱えましょう。 みんな知ってるあの呪文です。  せーの!
  • #22: 厂别迟罢颈尘别翱耻迟!みんな大好き。最强です。今回もなんとかしてもらいましょう。
  • #23: ということで、解析が终わったところの、ロード后のコードのところで、厂别迟罢颈尘别翱耻迟をはさみます。
  • #24: 元がコレですね。っていうかスライドのソースの字なんて见えませんね。ざっくりいきます。予想できると思いますけど、 コレを、
  • #25: こんな感じ。蝉别迟罢颈尘别辞耻迟 の呼び出しを付けるだけ。これだけで、结构なんとかなります。
  • #26: この回収で、タイムライン的にはこんな感じになります。SetTimeOutのおかげで、画面更新のタイミングができます。 ぶっちゃけローポリで、アニメーションが長くないキャラだったら、これでなんとかなることも多いです。だがまだ足りないこともあると。
  • #27: これがデカイデータだとどうなるか。 自分のゲームのデータで3000頂点、5000フレームかな、ですと、解析時間だけで3秒。 画面ごと固まってるってのは、やっぱりキッツイですよね。まだなんとかしたい。なんとかできないだろうか。
  • #28: お前の力は、こんなもんじゃないだろと。まだいけます。なんとかしてもらいましょう。
  • #29: こっから先は、ソースをいじくるのが、ちょっと疲れます。必要ならば、やってみる感じです。 オープンソースって事を活かしましょう。フォークしても、ビルドしたやつをいじっても、どっちでもいいんじゃないですか。
  • #30: 例のMMDローダーを試しにいじってみることにしましょう。 元がコレですね。見えませんね。  まぁ続けますけど、見た感じ、二つの処理が繋がってるぞと。コレを、
  • #31: こうするわけですね。やったことは、さっきと同じです。 処理の区切りを意識して、見つけて、そこにSetTimeOutを仕込んでいく、それだけです。
  • #32: こうすることで、当然、トータルの読み込み時間は減りませんが、間に画面が更新できるタイミングが生まれます。 これを必要な負荷に応じて分割を増やすことで、止まったような画面を見なくて済む、かもしれません。頑張れば!
  • #33: ありがとう厂别迟罢颈尘别辞耻迟。今回も世界は救われた。君のことは忘れない!
  • #34: というわけで時間ないんですけど、自分のゲームのロード部分の図解です。 小刻みにいろいろなファイルが読まれていって、間あいだで画面の更新ができてます。ありがとうSetTimeOut! はい! --------- 最後に、自分が作ったゲームでの、データのロードの図解っぽいやつです。 (1分以上余ってた場合のみ全部言う) 最初に、ワイヤーフレームで表示する用の軽いモデルデータのダウンロードが走りまして、そのモデルのダウンロードと読み込みが終わると、いわゆる戦闘説明画面っぽいデモが入ります。そのデモ画面の最中、裏ではガリガリとダウンロードとダウンロード後の解析をやるわけですが、こんな感じでSetTimeOutを使って、それぞれが小刻みに読まれていく感じなんですね。んで、全部終わった所で本編突入です。これで、いわゆる「止まらないけど後ろではロードしてるんだぞ」という画面が可能になりました。何かの参考になれば幸いです。
  • #35: ちょっとお時間が余ってますので、 順番が前後しましたが、すりーじぇいえすの欠点といいますかなんといいますか、無理矢理な話しですけども。余談を話します。  unityのアセットストアが使えないので、データの用意に苦労することになるんですね。 3Dのデータって作れる人は2Dに比べたら一気に少なくなりますから、そこをカバーできるアセットストアは、ホント凄いと思います。リソースの自前は、おもったよりもキツイです。 まぁこれはあくまでUnityと比べたら、ということで。unity以外の環境からしたら、別に劣ってるということじゃないです。Unityがスゴすぎるだけ。 でも、 今日見せてだいたプレイカンバスは楽しそうだったので、 もし次、こういう機会があれば、プレイカンバスとの比較も用意してみたいなと思います。
  • #36: ということで、まとまらないまとめなんですけれども、 鲍苍颈迟测でよくね、以上ですって、话が终わっちゃうので。ブラウザで公开したい!という特殊な事情がない限りは、别に迟丑谤别别.箩蝉にこだわることって无いと思います。とにかく、3顿モデルデータが用意できるかどうか、まず最初の分かれ目はそこですね。
  • #37: --- 残り15s ------------ ということで、なんか今日話したことと全然関係ないまとめのようなんですけど、先ほどですね、オガワさんからWebGLでゲームはお金にはならんという泣ける結論がありましたけども、もしゲームを個人で作ってる人とかいらっしゃたら、three.jsは、ぜひやってみろと!面白いぞ!と、おすすめしたいと思います。
  • #38: ということで、おつきあいいただきまして、ありがとうございました。 すりーJSが気になった方はですね、ぜひとも画面に出てる、どーしょもないキーワードとかでググっていただいて、少しでも興味をもって頂けたら幸いです。 ということで、以上になります。 ありがとうございました。