Home 暗号プロセッサ OpenICF3


2014年11月13日(更新) SDL2で再挑戦の結果

NscripterのJavaScript版の試作

ノベルゲームのゲームエンジンNScripter のオープンソースONScripteremscriptenでJavaScriptに変換。動作するか試しました。 試作の動機は4Gamer.netのこの記事 「Mozillaのゲームに対する本気度を担当者が語る。 WebGLが拓くゲームプラットフォームとしてのWebブラウザの姿」。 詳しくは読んでみるといいと思いますがMozillaのエンジニアの方が
ゲーム開発者は,まずネイティブのビルド環境で,SDL (Simple DirectMedia Layer:2DやUIのためのライブラリセット)やOpenGLと いったライブラリをそのまま使って普通にゲームを開発し,ネイティブ環境で デバッグして,最後のステップでemscriptenを使ってJavaScriptを出力できます。
と書かれています。 ONScripterは、SDLを使って実装されています。これなら簡単にできそうかと 思ったのです。 しかし2014年10月30日の時点ではemscriptenがサポートするSDLの関数が 足りなくて、試作はかなり困難でした。一番苦労したのは、JavaScriptなので、 その場でウェイトすることができないこと。 つまりキーなどの入力待ちができません。必ず処理を続けていかないといけません。 ONScripterは、その場で入力待ちすることを前提としたコードなので、困りました。 emscriptenのコンパイルオプションで「-s ASYNCIFY=1」というものがあり sleep関数を使えるようになるのですが、非推奨のオプションで、実際に使うと メモリ破壊して使えませんでした。 ウェイトが必要な処理が発生したところでコールバック関数をセットするのが 基本なのですが、コールバック関数の中でウェイトが必要になることがあり、 難しいです。ONScripterのコードは、無限にコールバックできる構造なのです。
この問題以外にも、SDLのファイル操作関係の実装がなかったり、英語フォントしか 対応していなかったり、画像の読み込み関数で読み込めないjpg画像やpng画像が あったり、問題ありすぎでした。複数の画像をもつpng画像では、場合によっては 全画像を表示してしまう問題も起きました。
いろいろな問題がありますが、デモ動画が作れるくらいまで動作するように なったので、デモ動画を公開します。

デモ動画「黄昏ウィズ -Twilight Invocation-」

infinity-Sさんの 最新作「黄昏ウィズ -Twilight Invocation-」のゲーム開始直前までの動画です。

注) まだ表示のおかしいところがあります


性能や動作環境について

emscriptenの性能チューニングがまだ十分ではないのかもしれないですが 古いパソコンでは動作するものの性能が足りません。 iPad(A1458 2012年製)でも性能が足りないような気がします。 ただinfinity-Sさんのデモ動画に使ったゲーム以外では、もう少し軽く動作 するようです。

JavaScriptなのでOperaなどのブラウザでも動作しました。

NscPlayer もNScripterの互換エンジンでブラウザで動作します。 Windows/Linux/MacOSX/ChromeOSで動作します。 このJavaScriptのNScripter互換エンジンが完成すれば Android/iOS/FreeBSD/Firefox OSでも NScripterのゲームができるようになるのですがONScripterは、既にAndroid/iOS/FreeBSDで 動作するので、役に立つのはFirefox OSでしょうか。Android/iOSでも、 ストアに登録できない18禁ゲームや年会費が惜しいケースの需要があるかもと 思っています。


SDL2で再挑戦

2014年11月13日、emscriptenのSDL2を使うとどうなるか知りたくなってSDL2で ONScripterをコンパイルすることに。ONScripterは、SDL2に対応していないので 適当にSDL2で通るように修正した。しかし実行するとSDL_Init()でエラーになった。 SDLがスレッドをサポートしていないというエラーメッセージだった。 そこでSDL_INIT_TIMERをはずして、もう一度、実行するとSDL_Init()に成功、 ONScripterが動きだすが、最初のbg命令を実行したところで停止した。 やはりタイマーは実装されていないようだ。




AdMax広告