Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Rust で asm.js で Piston した話 / Rust + asm.js + Pi...

Rust で asm.js で Piston した話 / Rust + asm.js + Piston

Rust のゲーム作成用ライブラリである Piston を使って作ったライフゲームを Emscripten で asm.js へと移植する話です。

文中のリンクを参照するためには、PDFダウンロードしてください。

Live Demo: https://gifnksm.github.io/game-of-life-rs/

コンパイル手順等の詳細は GitHub リポジトリを参照。
https://github.com/gifnksm/game-of-life-rs/

2016/11/21 RustのLT会! Rust入門者の集い

NAKASHIMA, Makoto

November 21, 2016
Tweet

Other Decks in Technology

Transcript

  1. R ust で asm.js で P iston した話 @gifnks m

    (ぎふ) 2016/11/21 R ust の L T 会! R ust 入門者の集い
  2. R ust 1.13.0 (stable) リリー スおめでとうござ います! 今日は R ust

    1.13.0‑nightly からサポー トされた、 as m.js ター ゲット と P ist on を組み合わせる話をします R ust の可能性はネイティブアプリに留まらない! ということを感じていただければ幸いです 2
  3. asm.js とは? (雑な説明) C /C ++ (そして R ust) を

    J av a S cr ipt へコンパイルできるスゴいやつ ⇒ ⇒ asm.js を使えば R ust でウェブアプリケー ションが作 れる! / / R u s t のコー ド f n m a i n ( ) { p r i n t l n ! ( " H e l l o J S ! " ) ; } / / J S のコー ド f u n c t i o n _ _ Z N 5 h e l l o 4 m a i n 1 7 h e 0 4 5 6 e 9 a f e v a r $ 0 = 0 , $ 1 = 0 , $ 2 = s p = S T A C K T O P ; S T A C K T O P = S T A C K T O P + 3 2 $ _ 2 = s p ; . . . } 3
  4. asm.js + P iston でブラウザで動くゲー ムが簡 単に作れるのでは? ライフゲー ム (C

    onway's game of life) を作ってみた ライフゲー ム: 生命を模したシミュレー ションゲー ム。 一定のルー ルに従 って生命が生まれたり死んだりする ソー スはこちら: https://git hu b.com/gifnks m/game‑of‑life‑rs 5
  5. デモ 1 W indows/L inux/M ac で動く c a r

    g o r u n ‐ ‐ r e l e a s e 6
  6. デモ2 ブラウザでも動く! デモ: https://gifnks m.git hu b.io/game‑of‑life‑rs/ # E m

    s c r i p t e n ツー ルのP A T H 設定 & e m c c コンパイラオプションの指定 s o u r c e e m s d k _ p o r t a b l e / e m s d k _ e n v . s h e x p o r t E M M A K E N _ C F L A G S = " ‐ s U S E _ S D L = 2 ‐ O 3 " c a r g o b u i l d ‐ ‐ t a r g e t a s m j s ‐ u n k n o w n ‐ e m s c r i p t e n ‐ ‐ r e l e a s e 詳細な手順は以下の README 参照 https://git hu b.com/gifnks m/game‑of‑life‑rs 7
  7. 感想 よかったこと コー ドの書き換え量は少なくて済んだ バックエンドを意識せず書ける P ist on すごい JS

    はシングルスレッド ⇒ イベントルー プは少し工夫が必要 O p en GL /W eb GL 全く知らないけどなんとか(?)できた つらかったこと as m.js + P ist onの先行事例は悉くソー スが見つからず。。。 大量のエラー メッセー ジ (無視しても動く) 動かないライブラリとの格闘 ( p i s t o n _ w i n d o w , g f x _ g r a p h i c s ) 結局、 別のライブラリを使う ( s d l 2 w i n d o w , o p e n g l _ g r a p h i c s ) as m.js と C のコー ド (SDL 2) を比較しつつのデバッグがつらい ブラウザのデバッガがフリー ズ 8
  8. 私見 R ust は as m.js/W eb A ss embly

    と相性が良いのでは? ランタイムなし LLVM C /C ++ よりもつらくない R ust も as m.js も M oz illa 言語の開発元が as m.js/W eb A ss embly サポー トに積極的 ⇒ W eb A ssembly 界の覇権言語、 狙えるのでは?? R ust + W eb A ss embly を盛り上げていきましょう!! 9