‘ゲーム’ カテゴリーのアーカイブ

asm.js

 つぶやき, ゲーム, トピック, プログラム
 公開日:2013年3月22日 / 更新日:2013年5月14日

Firefox22がasm.js採用でネイティブに近い実行速度まで高速化。
だそうです。

聞いたことなかったので、
「asm.js」って何ぞ?
と思ったわけですが、

JavaScriptプログラムをネイティブコード速度の2倍程度の実行時間で済むように最適化するJavaScriptサブセット

とのこと。

ベンチマーク的には以下の様な感じになるらしいです。
これはちょっとスゴイのかも、

こちらをざっと参照した感じでは、
どうやら静的型付けを導入することで高速化を図るっぽいようです。
int と double を使い分けできるようになる感じです。
バイナリを扱うような場合に高速化が期待できそうな気がします。

動的型付けなJavaScriptでは、
数値は全てdouble として扱われるようになってます。
Typed Arrayとかあったりしますが使用は限定的)
整数で済むような場合でも倍精度浮動小数点数で処理されるので、
素直な実装ならそれなりにオーバーヘッドがあったりしそうですね。
asm.jsによって、こういうのとかが改善されるってことなのかな?
実装的には Typed Array をうまく使う感じっぽい。

具体的には、
“use asm”;
とか書いて宣言することで導入されるようです。

静的型付けの表記は以下のようにやるそうです。

実に巧妙な表記になってますね(^_^;)

本来なら、

とかActionScript3風味に記述できれば分かりやすいわけですが、
JavaScriptの言語仕様を変えずに巧妙に仕込んでる所がミソなんだと思います。
静的型付けのための巧妙な表記は上記の2種類しかなさそうなので、
int と double に割り振ったということなのでしょうね、たぶん。

ただ基本的には、
C/C++等 -> LLVM -> Emscripten -> JavaScript
という感じに機械的な変換で適用されることを
念頭に置いているみたいです。
人が書くのにはちょっとメンドーそうだし。

★2013/3/29追記。

UE3とかあっさり動かしてしまったようですよ。
自動変換おそるべし(^_^;)

enchant.jsでノベルゲーム(9)

 ゲーム, プログラム,
 公開日:2012年11月26日 / 更新日:2013年1月17日

3ヶ月ぶりくらいにenchant.js本体を更新したら、
バージョンが v0.6-pre とかになってて、
内部が大きく変更されていることに気づきました。
しかもtl.enchant.jsは本体に統合されたようです。

こちらのページによると、
DOMのelementベースからcanvasベースに描画エンジンが変更されるとのこと。
アクションやRPGとかの性能向上を図るためのようで、
個人的にもこの方針は正しいと思います。

ただ・・・

ノベルゲーム向けのプラグインであるoes.enchant.jsでは、
DOMのelementを前提としている機能が多々あるので、
canvasベースになるとうまく行かなくなってしまいます。
実際v0.6-preでやってみると、ものの見事に動作しません(^_^;)
Entityクラスから _element プロパティが消えてます!!!
がーん(T_T)
う~ん、これは激しく困りました。

elementベースな従来のやり方に対応するかどうかは検討中だそうですが、
ぜひサポートしてくれることを願いたいです。

ということで、
oes.enchant.jsプラグインを使用する際は、
v0.5以下のenchant.jsを使用してください。

ちなみに、
古いバージョンのenchant.jsをダウンロードするには、
githubのenchant.jsページにて、
「branch:master」となっているドロップダウンリストから
Tagsを押して必要なバージョンを選択してください。

ところで、
v0.5系の最新であるv0.5.2でテストしてたら、
バグを見つけたのでoes.enchant.jsを修正しました。
サウンドのボリューム値は0~1の範囲となっているのですが、
tweenとか使った場合に、微妙にその範囲を超えてしまうことがあるようです。
範囲を超えるとブラウザによっては例外を起こしてしまうので、
設定するボリューム値がその範囲を超えないように対処しました。

機能テストの実行やパッケージのダウンロードとかはこちらからどうぞ。
関連投稿はこちらで参照できます。

シムシティの最新作が何かスゲー!

 ゲーム, トピック
 公開日:2012年10月17日 / 更新日:2014年1月20日

SimCityのシリーズ6作目(開発中)のプレイ動画が何か凄いっす。
見た目とかUIとか革新的な予感!
ちなみに発売は来年の2月を予定しているようです。
PC性能はどのくらい必要なのかも気になりますね。

enchant.jsでノベルゲームの機能テスト(8)

 ゲーム, プログラム,
 公開日:2012年8月8日 / 更新日:2012年8月9日

なんか久しぶりに enchant.js の本体を更新したら、
animation.enchant.js に替わって tl.enchant.js になってるのに気づきました。
ということで、
animation.enchant.js ではなく tl.enchant.js に対応するように修正しました。
また、
oes.enchant.js の一部の機能を ex.enchant.js として独立させて、
他のアプリでも利用できるようにしてみました。
鉄道なブログパーツ温泉なブログパーツで使ってます)
そのため、
oes.enchant.js を使う場合は ex.enchant.js も読み込むようにしてください。
短縮版の ex.enchant.min.js でも構いません。

関連投稿はこちらで参照できます。
機能テストの実行やパッケージのダウンロードとかはこちらからどうぞ。

enchant.jsでノベルゲームの機能テスト(7)

 ゲーム, プログラム,
 公開日:2012年6月4日 / 更新日:2012年7月17日

関連投稿はこちらで参照できます。
機能テストの実行やパッケージのダウンロードとかはこちらからどうぞ。


前回の続きです。
ブラウザごとの差異について、
サウンド以外にも気づいたことがあるのでちょっと書いてみます。

まずはCSS3。
機能テストでの視覚表現はできるだけCSSでやるようにしました。
スクリプトを修正せずに済むなら、その方が良いと思うからです。
transform,box-shadow,text-shadow,linear-gradient あたりを活用すれば、
それなりに豊かな視覚表現が期待できます。
しかし現状では対応してないブラウザがあったり、
ベンダープレフィックスを指定する必要があったりするのが、
残念です。
各ブラウザでの対応状況が早期に改善されることを期待しています。
ちなみに、
ブラウザごとのCSS3対応状況はこちらで確認できます。
また、text-shadow を使うと動作が重くなったりすることがあります。
FirefoxやOperaでは文字数が多くなるほどだんだん描画が遅くなりますが、
webkit系のChromeやSafariでは遅くなることなく安定しています。
普通に考えれば、「影」処理を適用しつつ1文字ずつ描画するわけですから、
文字数が多くなれば処理時間が増えるのは当然とも思えるのですが、
webkit系は文章全体に一度だけ「影」を適用するなどして
うまくやっているのかもしれませんね。

次にサウンド。
前回でも触れましたが、
HTML5でコーディックが統一されていないのが現状の問題。
ビデオも同様なようです。
特許がらみの問題がない OGG Vorbis あたりでいいんじゃないのかと
個人的には思うのですが、
ブラウザごとに思惑とかあるのでしょうか・・・。

ということで、
現状ではクロスブラウザで動作させるには、
使用するCSSを制限したり、サウンドはOGGとMP3の2種類を用意するなど、
配慮する必要がありそうです。
ただし視覚表現とのトレードオフがあるのが悩ましいところです。
特に、text-shadow とか・・・。
個人的には、
対応状況や速度面で有利と感じる Chrome を使えばいいじゃないか、
と言いたかったりしますが(^_^;)

それから、
プラグインを少し修正しました。
OesText.printIcon を画像だけでなく汎用的にやれるようにしてみました。
また、選択肢を選択後の「余韻」を表現できるようにしてみました。
あと、微妙に内部処理を調整しました。
パッケージのダウンロードはこちらからどうぞ。