Emscripten と OpenGLを使ってゲームを作ろうと思いたって、
まずは、SDL2の基本的な使い方を試していた。
しかし、今の所は、SDL 1系 の方が、良いと思いました。
SDL2があるのに、SDL1 を選ぶのはなぜか?
# 2017y 9m7d
SDL と SDL2 が、ちゃんぽんのゲームライブラリーを作ろう
素の OpenGL の APIを直接いじるのは、大変なので、欲しい機能を抽象化してライブラリー化する事にしました。
SDL2をベースに作成しています。ただ、これを、ブラウザー用には「SDL1」、Windows OSX用には「SDL2」を利用する形にしたいと結論しました。
なぜに?
SDLはコンピューターゲーム用のハードに近い部分のライブラリ
SDLは、音やグラフィック、マウスイベント、タッチイベントなどを、扱う事ができるC言語のライブラリです。
Android、 iOS、 Windows、 Mac、 Browser上で動作します。
このライブラリーを利用して書けば、作成したアプリやゲームが、ありとあらゆるPFで動作するようになります。
Emscriptenを使えば、SDLがブラウザーで動作する
EmscriptenはLLVMでバイトコードを、ブラウザーで動作できるようするライブラリーです。
Clangを利用すれば、LLVM用のバイトコードをC言語で作れますから、
SDL系 x C系 のアプリを ブラウザーで動作させる事ができます。
SDL2は、最新のSDL
SDLの最新版が、SDL2.x 系です。 SDL1.2.x から、大幅に変更されました。
VideoAPI、new Sprite 2dGmae, Touch Event, IMF, Mobile PF対応
などなど、様々な機能を追加されました。
kyorohiro/cgame のブラウザー向け、SDL1 を使う事にした。
kyorohiro/cgameのブラウザー向けは、SDL1を使う事にしました。
SDL2 系だと、現在(2017y 9m7d) 一部使えない機能があったのと、
SDL2系を使った時に生成される Javascriptのサイズが大きかったからです。
以下に作成したものおきます。
画像の表示、オーディオ化の再生、OpenGL、タッチイベント、マウスイベント、
の取得等、SDL1とSDL2で書いたコードです。
Emscripten と、OSXと、Windows(MinGW)で動作します。
a. SDL1系の方が2系よりも軽い
だいたい、SDL2系だと、1.2〜3.4 MBくらいのJavaScripteを出力します。
ただ、SDL1系だと、120kbから300KBくらいです。
めちゃくちゃ軽いです。
b. SDL2系で SDL_mixerが思い通りに動作しない
SDL_mixerの初期化に失敗しました。SDL_Mixierが使えないと
音の再生が面倒です。
c. SDL1系でも、タッチイベントが使える
Emscriptenでは、SDL1系でもFinger Event を取得できます。
スマートフォンのユーザー向けには、タッチイベントをサポートしたいですよね!!
という事で、kyorohiroの選択は、 browser用には、SDL1系、それ以外はSDL2系 で進める事にしました。
おわり!!
.
------
試したコード
https://github.com/kyorohiro/sdl2_doc
This codes can build for windows and mac and html5 on windows and mac
作成中のライブラリー
https://github.com/kyorohiro/cgame
ことはじめ
https://kyorohiro.blogspot.jp/2017/09/which-use-sdl1-or-sdl2-at-emscripten.html
.
0 件のコメント:
コメントを投稿