SlideShare a Scribd company logo
1 of 40
Download to read offline
The Web-First Game Engine
Collaboratively build stunning HTML5 visualizations and games
PlayCanvas運営事務局
津田良太郎
本セッションの要旨
➢ PlayCanvasのビルトインコンポーネントのひとつ、
【物理エンジン】についてお話します
➢ 使い方や、できること
パフォーマンスや、内部実装の仕組み、小技まで
アジェンダ
 PlayCanvasの説明
 PlayCanvas Physics engine
 使い方/できること
 パフォーマンス
 内部の話
 事例
 まとめ
登壇者の自己紹介
 津田良太郎 @utautattaro
 Webとゲームの間を行ったり来たりなエンジニア
 短期間でいろいろ作るプロトタイパー
 趣味は旅行とバドミントン
 PlayCanvas運営事務局(2016.4 - )
 utautattaro.com
What is PlayCanvas?
イントロダクション
一言で PlayCanvasとは
ゲームエンジン
です!!
PlayCanvasとは
• ゲームエンジン
– WebGL向けのオープンソースなゲームエンジン
– すべてJavaScriptで記述されていて、scriptタグで呼ぶ
だけで使える
– ライブラリではなくゲームエンジンなので
カテゴリとしてはUnityやUnreal Engineと同じ
PlayCanvas エンジンの特徴
• 軽量
• オールJavaScript
• OSS
PlayCanvasを始めるには – Get Started
<script src=‘./playcanvas-stable.min.js'></script>
var canvas = document.getElementById(‘application’);
var app = new pc.Application(canvas, { });
app.start();
var camera = new pc.Entity(‘camera’);
camera.addComponent(‘camera’,{clearColor:new pc.Color(0.1,0.1,0.1)});
var right = new pc.Entity(‘light’);
light.addComponent(‘light’);
app.root.addChild(camera);
app.root.addChild(light);
app.on('update', function (deltaTime) {
Timer += deltaTime
});
<canvas id=‘application’></canvas>
canvas作成
エンジン読み込み
初期化
カメラとライトの配置
メインループ
これでゲームが作れる!
だけど、ねえ…
昨今のゲーム開発スタイルは…
• ビジュアルエディタを用いたものが主流
– 2Dゲーム開発でもエディタ付きのものを利用したり
• HTML+JSで3D空間を構築していくのはつらい
– 少なくともUnityで育ったゆとり世代の私には無理
_人人人人人人人人人人人_
> PlayCanvas Editor! <
 ̄Y^Y^Y^Y^Y^Y^Y^Y  ̄
そこで!
PlayCanvas Editor
• クラウドサービスとして提供
• 開発環境の構築必要なし!
• メールアドレス一つで登録、開始可能
• ブラウザ上で動くビジュアルエディタ!
• 初めての人でもHTML5ゲームが
簡単に作れる環境が整っています!
PlayCanvas Physics Engine
使い方/できること
ビルトインコンポーネントのひとつ
• すぐ使えるコンポーネント
• 衝突:Collision
• 剛体:Rigid Body
使い方
• entityにコンポーネントをアタッチするだけ
できること
• 物理シミュレーション
– 剛体/軟体(スクリプトで実装)
– Static/Dynamic/Kinematic
• 衝突判定/接触判定
– Collisionのみでtriggerとして利用可能
– Rigidbodyをつけると衝突判定
– RayCastでエンティティを取得 とか
Script.prototype.initialize = function(){
//接触時のコールバックを設定
this.entity.collision.on("triggerenter",
this._onTriggerEnter,this);
//接触終了時のコールバックを設定
this.entity.collision.on("triggerleave",
this._onTriggerLeave,this);
};
//*接触した瞬間に実行*//
Script.prototype._onTriggerEnter = function(result){
console.log(result.other);//衝突したentity
};
//*接触して離れた瞬間に実行*//
Script.prototype._onTriggerLeave = function(result){
console.log(result.other);//衝突したentity
};
接触判定
衝突判定
Script.prototype.initialize = function(){
//衝突時のコールバックを設定
this.entity.collision.on("collisionstart",
this._colstart,this);
//衝突終了時のコールバックを設定
this.entity.collision.on("collisionend",
this._colend,this);
};
//*衝突した瞬間に実行*//
Script.prototype._colstart = function(result){
console.log(result.other);//衝突したentity
};
//*衝突して離れた瞬間に実行*//
Script.prototype._colend = function(result){
console.log(result.other);//衝突したentity
};
PlayCanvas Physics Engine
パフォーマンス
ベンチマークアプリの開発と検証
• ベンチマークアプリを作成して検証
– 評価:20FPSに下がるまで
何インスタンスレンダリングできるか
• 項目
– スタティックメッシュ
– アニメーションつきスタティックメッシュ
– 物理制御されたプリミティブ(box, sphere)
– シンプルなパーティクル
– リッチなパーティクル(テクスチャ、カラー値)
– 2Dスプライトアニメーション
※イニシャライズ時のオーバーヘッドがあるため、初期インスタンス生成時のFPSのショットノイズは計測に考慮しない
各端末での検証結果
端末
項目
iPhone8
[373x553]
iPhone7plus
[375x591]
oppo R15 pro
[360x678]
Galaxy S6
edge[360x560]
MacBook Pro※1
[1280x703]
Let’s note※2
[1536x734]
スタティックメッシュ 1441 1343 533 303 815 992
アニメーション付き
メッシュ 875 796 250 150 438 588
物理プリミティブ(box) 325 336 245 104 315 460
物理プリミティブ
(Sphere) 568 458 303 271 417 575
シンプルなパーティクル 253 213 27 218 606 878
リッチなパーティクル 170 188 51 51 408 804
2Dスプライトアニメー
ション 4714 3631 2237 548 2860 3735
合計 9092 6965 3640 1650 5795 8009
※表示している結果は数回実行した結果の平均値として算出しています。ブラウザはすべてGoogle Chromeを利用して測定しています。
※1[Macbook Pro Retina 13-inch Early 2015 2.7GHz Intel Core i5, メモリ8GB, Intel Iris Graphics] ※2[2.4GHz Intel Core i5-6300U メモリ8GB, Intel HD Graphics 520]
グラフで比較
0
100
200
300
400
500
600
700
iPhone8 iPhone7plus oppo R15 pro Galaxy S6
edge[360x560]
MacBook Pro※1 Let’s note※2
物理プリミティブ(box) 物理プリミティブ(Sphere)
スコア
項目
使い方/できること/パフォーマンス まとめ
 ビルトインなのでアタッチするだけですぐ使える!
 剛体シミュレーションが可能
 スクリプトからイベントの設定も簡単
 端末によるが、300インスタンスくらいまでなら20FPS
のレンダリングをキープできる
PlayCanvas Physics Engine
内部の話
物理エンジンのソースコード
• 容量
コード全文
3.74
MB
ランタイム
1.83
MB
gZip
356
KB
コアエンジン
• ammo.jsを採用
– https://github.com/kripken/ammo.js
– Bullet(C++)をemscriptenでJavaScriptにしたもの
• PlayCanvasランタイムとは別で落ちてくる
– 不要な場合は削除可能
設計
• 決定性(Deterministic)は持たない
– 同一条件で複数回シミュレートしても同一の結果に
はならない
– Demo
物理エンジンのアップデート
• 2016年末にリファクタリングが完了
– 多くのBullet APIが使えるように
– PlayCanvasには表示されないが、
独自実装でBulletの軟体物理等もシミュレートできる
ラグドール デモ
(ドキュメントには載ってない!)Tips1
• initialize時に多少のオーバーヘッドがある
– コリジョンの数に大きく依存する
– 動作しだすと安定
• 負荷を軽くするためにスリーピングシステムがデ
フォルトで有効に
– 動かなくなったエンティティや衝突を受けないエンティ
ティなど
– 下記コードでテスト可能
this.entity.rigidbody.isActive(); //スリープならfalse
(ドキュメントには載ってない!)Tips2
• 薄いコライダー同士だとすり抜けることがある
– 高速で移動するコインと壁のような同一軸にcollision
が少ない場合に起きる
すり抜ける原因
• 原因:実際にはテレポートで移動
– 移動量に対する中間フレームをデルタタイムで割っ
たキーフレームになっているため
壁
N N+1 N+2 N+3
コイン
シミュレート位置で
接触していない!
シミュレート地点
この間は
キーフレーム
原因回避方法①
• コリジョンのサイズを大きくする
– 奥に何もなければこれが一番楽
壁
N N+1 N+2
N+3
コイン
シミュレート位置で
接触した!
シミュレート地点
見えない壁として
大きくcollisionを持つ
原因回避方法②
• 予測分解能を増やす
壁
N N+1 N+2 N+3
コイン
シミュレート位置で
壁に接触!
シミュレート地点
this.app.systems.rigidbody.fixedTimeStep = 1/120; //デフォルトは1/60
https://support.playcanvas.jp/hc/ja/articles/233088508
※パフォーマンスに大きく影響
するので注意!
物理エンジンを駆使したタイトル
• CMサイト様「OwlsDozer」
– Static/Dynamic/Kinematicすべて利用
– 詳しくはこちら
https://support.playcanvas.jp/hc/ja/articles/115005023268
まとめ
➢ PlayCanvasで物理エンジンは簡単に使えます!
➢ シンプルなシミュレーションならコーディング不要
➢ そこそこパフォーマンスは出る
➢ 20FPSなら300プリミティブは出せる
➢ 物理エンジンを駆使したタイトルも開発可能
➢ Ammoのドキュメントを読もう!
➢ PlayCanvasのドキュメントに書かれていない小技がたくさんある
お知らせ!
• ユーザー助け合い所開設しました!!!!!
– ラフな技術相談から作ったもの紹介などなど
• PlayCanvasユーザー寄り合い所
• https://www.facebook.com/groups/playcanvasjp/
お知らせ!
• We are Hiring!
– PlayCanvasを一緒に広めてくれるエンジニア/デザイナー
• Web/ゲーム両方の側面で探してます!
– Webエンジニア
• https://hrmos.co/pages/gmocloud/jobs/0000053
– Webデザイナー
• https://hrmos.co/pages/gmocloud/jobs/0000052
ご清聴ありがとうございました

More Related Content

What's hot

Azure Reserved Instances
Azure Reserved InstancesAzure Reserved Instances
Azure Reserved InstancesShinsuke Saito
 
Google Web Toolkit(GWT)入門
Google Web Toolkit(GWT)入門Google Web Toolkit(GWT)入門
Google Web Toolkit(GWT)入門Yuki Naotori
 
Unity 名古屋セミナー [Sprite Studio]
Unity 名古屋セミナー [Sprite Studio]Unity 名古屋セミナー [Sprite Studio]
Unity 名古屋セミナー [Sprite Studio]MakotoItoh
 
Unityプロファイラについて
UnityプロファイラについてUnityプロファイラについて
UnityプロファイラについてMio Ku-tani
 
Microsoft Azure 概要
Microsoft Azure 概要Microsoft Azure 概要
Microsoft Azure 概要Yuki Igarashi
 
【Unite Tokyo 2019】Unityでこんなに変わった!ぱちんこ映像開発ワークフロー
【Unite Tokyo 2019】Unityでこんなに変わった!ぱちんこ映像開発ワークフロー【Unite Tokyo 2019】Unityでこんなに変わった!ぱちんこ映像開発ワークフロー
【Unite Tokyo 2019】Unityでこんなに変わった!ぱちんこ映像開発ワークフローUnityTechnologiesJapan002
 

What's hot (6)

Azure Reserved Instances
Azure Reserved InstancesAzure Reserved Instances
Azure Reserved Instances
 
Google Web Toolkit(GWT)入門
Google Web Toolkit(GWT)入門Google Web Toolkit(GWT)入門
Google Web Toolkit(GWT)入門
 
Unity 名古屋セミナー [Sprite Studio]
Unity 名古屋セミナー [Sprite Studio]Unity 名古屋セミナー [Sprite Studio]
Unity 名古屋セミナー [Sprite Studio]
 
Unityプロファイラについて
UnityプロファイラについてUnityプロファイラについて
Unityプロファイラについて
 
Microsoft Azure 概要
Microsoft Azure 概要Microsoft Azure 概要
Microsoft Azure 概要
 
【Unite Tokyo 2019】Unityでこんなに変わった!ぱちんこ映像開発ワークフロー
【Unite Tokyo 2019】Unityでこんなに変わった!ぱちんこ映像開発ワークフロー【Unite Tokyo 2019】Unityでこんなに変わった!ぱちんこ映像開発ワークフロー
【Unite Tokyo 2019】Unityでこんなに変わった!ぱちんこ映像開発ワークフロー
 

Similar to 【HTML5ゲーム開発環境勉強会 】PlayCanvasビルトインコンポーネント ディープダイブ第一弾【物理エンジン】(2018/12/11講演)

【GCC2019】モノビットエンジンがついにクラウド化!しかし、インフラでまさかのAzureを利用!?本当に大丈夫なの?
【GCC2019】モノビットエンジンがついにクラウド化!しかし、インフラでまさかのAzureを利用!?本当に大丈夫なの?【GCC2019】モノビットエンジンがついにクラウド化!しかし、インフラでまさかのAzureを利用!?本当に大丈夫なの?
【GCC2019】モノビットエンジンがついにクラウド化!しかし、インフラでまさかのAzureを利用!?本当に大丈夫なの?モノビット エンジン
 
Infrastructure as Codeの取り組みと改善
Infrastructure as Codeの取り組みと改善Infrastructure as Codeの取り組みと改善
Infrastructure as Codeの取り組みと改善Takashi Honda
 
【20-E-5】実践!Infrastructure as a Codeの取り組みと改善
【20-E-5】実践!Infrastructure as a Codeの取り組みと改善【20-E-5】実践!Infrastructure as a Codeの取り組みと改善
【20-E-5】実践!Infrastructure as a Codeの取り組みと改善Developers Summit
 
PWA aruaru
PWA aruaruPWA aruaru
PWA aruarun_harada
 
Spring Boot + Doma + AngularJSで作るERP #jjug_ccc #ccc_r12
Spring Boot + Doma + AngularJSで作るERP #jjug_ccc #ccc_r12Spring Boot + Doma + AngularJSで作るERP #jjug_ccc #ccc_r12
Spring Boot + Doma + AngularJSで作るERP #jjug_ccc #ccc_r12学 松崎
 
PlayCanvas:2D機能とライブラリ組み込みのいろは - PlayCanvas運営事務局 - GTMF 2018 TOKYO
PlayCanvas:2D機能とライブラリ組み込みのいろは - PlayCanvas運営事務局 - GTMF 2018 TOKYOPlayCanvas:2D機能とライブラリ組み込みのいろは - PlayCanvas運営事務局 - GTMF 2018 TOKYO
PlayCanvas:2D機能とライブラリ組み込みのいろは - PlayCanvas運営事務局 - GTMF 2018 TOKYOGame Tools & Middleware Forum
 
[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...
[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...
[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...Insight Technology, Inc.
 
NV シリーズのインスタンスでGPU使ってイロイロ想像する
NV シリーズのインスタンスでGPU使ってイロイロ想像するNV シリーズのインスタンスでGPU使ってイロイロ想像する
NV シリーズのインスタンスでGPU使ってイロイロ想像するYasuaki Matsuda
 
運用中のゲームにAIを導入するには〜プロジェクト推進・ユースケース・運用〜 [DeNA TechCon 2019]
運用中のゲームにAIを導入するには〜プロジェクト推進・ユースケース・運用〜 [DeNA TechCon 2019]運用中のゲームにAIを導入するには〜プロジェクト推進・ユースケース・運用〜 [DeNA TechCon 2019]
運用中のゲームにAIを導入するには〜プロジェクト推進・ユースケース・運用〜 [DeNA TechCon 2019]DeNA
 
並列計算への道 2015年版
並列計算への道 2015年版並列計算への道 2015年版
並列計算への道 2015年版ryos36
 
アジャイルソフトウェア開発の道具箱
アジャイルソフトウェア開発の道具箱アジャイルソフトウェア開発の道具箱
アジャイルソフトウェア開発の道具箱Koichi ITO
 
【HTML5 Conference 2018】あんずフォト:PlayCanvasでリッチアドコンテンツを開発して発信してみた(2018/11/25講演)
【HTML5 Conference 2018】あんずフォト:PlayCanvasでリッチアドコンテンツを開発して発信してみた(2018/11/25講演)【HTML5 Conference 2018】あんずフォト:PlayCanvasでリッチアドコンテンツを開発して発信してみた(2018/11/25講演)
【HTML5 Conference 2018】あんずフォト:PlayCanvasでリッチアドコンテンツを開発して発信してみた(2018/11/25講演)PlayCanvas運営事務局
 
プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~
プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~
プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~normalian
 
[AWS re:invent 2013 Report] AWS New EC2 Instance Types
[AWS re:invent 2013 Report] AWS New EC2 Instance Types[AWS re:invent 2013 Report] AWS New EC2 Instance Types
[AWS re:invent 2013 Report] AWS New EC2 Instance TypesAmazon Web Services Japan
 
Challengers 2013 winter ハッカソンに参加してみて
Challengers 2013 winter ハッカソンに参加してみてChallengers 2013 winter ハッカソンに参加してみて
Challengers 2013 winter ハッカソンに参加してみてYukio Saito
 
コンサルタントが明かす 仮想化提案のすべて
コンサルタントが明かす 仮想化提案のすべてコンサルタントが明かす 仮想化提案のすべて
コンサルタントが明かす 仮想化提案のすべてVirtualTech Japan Inc.
 
新型登場!! 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
 
JAWSUG名古屋 AWS勉強会 20180309
JAWSUG名古屋 AWS勉強会 20180309JAWSUG名古屋 AWS勉強会 20180309
JAWSUG名古屋 AWS勉強会 20180309陽平 山口
 
佐賀大学 - データ分析と向き合う
佐賀大学 - データ分析と向き合う佐賀大学 - データ分析と向き合う
佐賀大学 - データ分析と向き合うDaiyu Hatakeyama
 

Similar to 【HTML5ゲーム開発環境勉強会 】PlayCanvasビルトインコンポーネント ディープダイブ第一弾【物理エンジン】(2018/12/11講演) (20)

【GCC2019】モノビットエンジンがついにクラウド化!しかし、インフラでまさかのAzureを利用!?本当に大丈夫なの?
【GCC2019】モノビットエンジンがついにクラウド化!しかし、インフラでまさかのAzureを利用!?本当に大丈夫なの?【GCC2019】モノビットエンジンがついにクラウド化!しかし、インフラでまさかのAzureを利用!?本当に大丈夫なの?
【GCC2019】モノビットエンジンがついにクラウド化!しかし、インフラでまさかのAzureを利用!?本当に大丈夫なの?
 
Infrastructure as Codeの取り組みと改善
Infrastructure as Codeの取り組みと改善Infrastructure as Codeの取り組みと改善
Infrastructure as Codeの取り組みと改善
 
【20-E-5】実践!Infrastructure as a Codeの取り組みと改善
【20-E-5】実践!Infrastructure as a Codeの取り組みと改善【20-E-5】実践!Infrastructure as a Codeの取り組みと改善
【20-E-5】実践!Infrastructure as a Codeの取り組みと改善
 
PWA aruaru
PWA aruaruPWA aruaru
PWA aruaru
 
Think.next
Think.nextThink.next
Think.next
 
Spring Boot + Doma + AngularJSで作るERP #jjug_ccc #ccc_r12
Spring Boot + Doma + AngularJSで作るERP #jjug_ccc #ccc_r12Spring Boot + Doma + AngularJSで作るERP #jjug_ccc #ccc_r12
Spring Boot + Doma + AngularJSで作るERP #jjug_ccc #ccc_r12
 
PlayCanvas:2D機能とライブラリ組み込みのいろは - PlayCanvas運営事務局 - GTMF 2018 TOKYO
PlayCanvas:2D機能とライブラリ組み込みのいろは - PlayCanvas運営事務局 - GTMF 2018 TOKYOPlayCanvas:2D機能とライブラリ組み込みのいろは - PlayCanvas運営事務局 - GTMF 2018 TOKYO
PlayCanvas:2D機能とライブラリ組み込みのいろは - PlayCanvas運営事務局 - GTMF 2018 TOKYO
 
[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...
[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...
[db tech showcase Tokyo 2015] B15:最新PostgreSQLはパフォーマンスが飛躍的に向上する!? - PostgreSQ...
 
NV シリーズのインスタンスでGPU使ってイロイロ想像する
NV シリーズのインスタンスでGPU使ってイロイロ想像するNV シリーズのインスタンスでGPU使ってイロイロ想像する
NV シリーズのインスタンスでGPU使ってイロイロ想像する
 
運用中のゲームにAIを導入するには〜プロジェクト推進・ユースケース・運用〜 [DeNA TechCon 2019]
運用中のゲームにAIを導入するには〜プロジェクト推進・ユースケース・運用〜 [DeNA TechCon 2019]運用中のゲームにAIを導入するには〜プロジェクト推進・ユースケース・運用〜 [DeNA TechCon 2019]
運用中のゲームにAIを導入するには〜プロジェクト推進・ユースケース・運用〜 [DeNA TechCon 2019]
 
並列計算への道 2015年版
並列計算への道 2015年版並列計算への道 2015年版
並列計算への道 2015年版
 
アジャイルソフトウェア開発の道具箱
アジャイルソフトウェア開発の道具箱アジャイルソフトウェア開発の道具箱
アジャイルソフトウェア開発の道具箱
 
【HTML5 Conference 2018】あんずフォト:PlayCanvasでリッチアドコンテンツを開発して発信してみた(2018/11/25講演)
【HTML5 Conference 2018】あんずフォト:PlayCanvasでリッチアドコンテンツを開発して発信してみた(2018/11/25講演)【HTML5 Conference 2018】あんずフォト:PlayCanvasでリッチアドコンテンツを開発して発信してみた(2018/11/25講演)
【HTML5 Conference 2018】あんずフォト:PlayCanvasでリッチアドコンテンツを開発して発信してみた(2018/11/25講演)
 
プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~
プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~
プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~
 
[AWS re:invent 2013 Report] AWS New EC2 Instance Types
[AWS re:invent 2013 Report] AWS New EC2 Instance Types[AWS re:invent 2013 Report] AWS New EC2 Instance Types
[AWS re:invent 2013 Report] AWS New EC2 Instance Types
 
Challengers 2013 winter ハッカソンに参加してみて
Challengers 2013 winter ハッカソンに参加してみてChallengers 2013 winter ハッカソンに参加してみて
Challengers 2013 winter ハッカソンに参加してみて
 
コンサルタントが明かす 仮想化提案のすべて
コンサルタントが明かす 仮想化提案のすべてコンサルタントが明かす 仮想化提案のすべて
コンサルタントが明かす 仮想化提案のすべて
 
新型登場!! Surface Book 3 / Surface Go 2
新型登場!! Surface Book 3 / Surface Go 2新型登場!! Surface Book 3 / Surface Go 2
新型登場!! Surface Book 3 / Surface Go 2
 
JAWSUG名古屋 AWS勉強会 20180309
JAWSUG名古屋 AWS勉強会 20180309JAWSUG名古屋 AWS勉強会 20180309
JAWSUG名古屋 AWS勉強会 20180309
 
佐賀大学 - データ分析と向き合う
佐賀大学 - データ分析と向き合う佐賀大学 - データ分析と向き合う
佐賀大学 - データ分析と向き合う
 

【HTML5ゲーム開発環境勉強会 】PlayCanvasビルトインコンポーネント ディープダイブ第一弾【物理エンジン】(2018/12/11講演)