Slide 1

Slide 1 text

Emscripten で Unity WebGL のプラグインを作る Emscripten Night! 2016-10-05

Slide 2

Slide 2 text

自己紹介 鈴木 成門 株式会社CRI・ ミドルウェア エンジニア サウンド系のミドルウェア開発とか C++ でWeb プログラミングしたい系 Google Native Client Emscripten, WebAssembly

Slide 3

Slide 3 text

すごいゲー ムエンジン C# でプログラミングする Windows,Mac,iOS,Android, 各ゲー ム機用のゲー ムが作れる 最近のスマホゲー ムでめっちゃ使われている

Slide 4

Slide 4 text

Unity のWebGL ビルド Unity 5.2 辺りから対応 NPAPI 等のプラグインを使わず、HTML5 とWebGL,WebAudio などの標準機能だけで動くゲー ムが出力できる 主にWindows or Mac 向け( スマホではまだ不安定) 最近のゲー ムアプリにとって、 Web ブラウザはiOS,Android に続く、 第三のター ゲットになりつつある。

Slide 5

Slide 5 text

Unity WebGL の仕組み

Slide 6

Slide 6 text

Unity エンジン Unity エンジンはC++ で書かれているので Emscripten でJavaScript にコンバー トしている。

Slide 7

Slide 7 text

Unity ユー ザー スクリプト Unity で使われるスクリプトはC# とUnityScript C++ を経由して最終的にJavaScript にコンバー トされる。

Slide 8

Slide 8 text

Unity WebGL ランタイム環境 割と普通のEmscripten 環境っぽい 拡張プラグインが作れそう!

Slide 9

Slide 9 text

Unity WebGL 環境の ネイティブプラグインを作る

Slide 10

Slide 10 text

ネイティブプラグイン C# やUnityScript ではなく、 プラットフォー ムネイティブなプログ ラミング言語で作られたプログラムをUnity から呼ぶ仕組み プラットフォー ム 使える言語 Windows C/C++ Android C/C++,Java iOS Objective-C WebGL C/C++,JavaScript

Slide 11

Slide 11 text

JavaScript の場合 .jslib という形式で作って Plugins/WebGL/ に置く WebGL ビルド時にリンクしてくれる。 C/C++ の場合 .c/.cpp を Plugins/WebGL/ に置く WebGL ビルド時にEmscripten でコンパイルしてくれる

Slide 12

Slide 12 text

cpp をそのまま置きたくない問題 ソー スファイル数が多いと面倒 コンパイルオプションつけたい 他社に渡すときにソー スを見せたくない → じゃあ自分でビルドすればいいじゃない

Slide 13

Slide 13 text

プラグインをEmscripten ビルドする 1) 出力ファイルを .bc としてビルドする e m c c M y P l u g i n . c p p - o M y P l u g i n . b c ※ .bc : LLVM bitcode file 2) .bc ファイル を Plugins/WebGL/ に置く そうするとWebGL ビルド時にリンクしてくれる。 スタティックライブラリの感じに似てますね

Slide 14

Slide 14 text

MyPlugin.cs ↑iOS 向けネイティブプラグインと同じ感じ MyPlugin.cpp e x t e r n " C " v o i d D o P l u g i n F u n c t i o n ( c o n s t c h a r * m e s s a g e ) { / / S o m e t h i n g c o d e } ↑ 他の環境と同じ感じ c l a s s M y P l u g i n { [ D l l I m p o r t ( " _ _ I n t e r n a l " ) ] p u b l i c s t a t i c e x t e r n v o i d D o P l u g i n F u n c t i o n ( s t r i n g m e s s a g e }

Slide 15

Slide 15 text

注意 Emscripten のバー ジョン LLVM bitcode はバー ジョン間で互換性がなくなる可能性があるの で、 なるべくEmscripten SDK のバー ジョンは合わせましょう。 Unity Emscripten Unity 5.3, 5.4 1.34.1 Unity 5.5β 1.36.7 ( ただ実際そんなに変わらないです。)

Slide 16

Slide 16 text

Unity 内のEmscripten SDK がある場所 C:⧵Program Files⧵Unity⧵ Editor⧵Data⧵PlaybackEngines⧵WebGLSupport⧵BuildTools この中のEmscripten を使うと安心かもしれない。

Slide 17

Slide 17 text

参考 凹みTips - Unity 5 x WebGL について詳しく調べてみた http://tips.hecomi.com/entry/2014/12/08/002719

Slide 18

Slide 18 text

No content