Alchemy いじってみた


昨日?だったっけ、Adobe MAX で発表された Alchemy をいじってみたわけよ、C とか C++ で Flash Player 用のコードが書けるってやつ。FAQ によると AS3 の 10 倍ぐらい高速に動く可能性があるとかって。

環境構築は Getting Started 見ながらやれば問題ない。簡単。サンプルの stringecho も問題なく動いた。

んで次、いきなり Box2D (C++) やってみたね。これ速くなるとうれしい。ソースコード落としてきて 適当に Makefile 書き換えてコンパイル、ってするとー、

/Volumes/Data/Temp/alchemy/avm2-libc/include/c++/3.4/new:82: error: 'operator new' takes type 'size_t' ('long unsigned int') as first parameter

こんなのがたああくさん。該当するヘッダファイルのぞいてみたけど、どこをどう直せばいいかわらななくで断念。

次、ARToolKit (C)。これもねー、速くなると嬉しいねー。FLARToolKit は遅いからねぇ。こっちは swc 作るとこまではなんとかいけた。(いくつか手動でヘッダファイルを書き換えないとダメだけど。)

んで ARToolKit の関数を呼ぶとこまでたどりついたんだけどどうも内部の値がおかしい。arParamLoad できない(fread できない)から ByteArray 渡して AS3_ByteArray_readBytes で ARParam を作ってみたら endian が逆っぽい値になってる。これもどこ直せばいいかわからなくって断念。

つーわけで、成果ナシ。まぁ、まだバージョン 0.4 だしね。このへんの問題もそのうち解決するだろ。もうちょっとバージョンあがってからまた試そう。

ああそうだ、Alchemy どんだけ速いねんってことで軽くテスト (Graphics#lineTo を 100,000 回呼び出すとか) してみてたのだけど、C/C++ → AS3 の関数呼び出しがめちゃくちゃ遅い。AS3 → AS3 の 100 倍ぐらい時間かかってた。ので、やっぱ数値計算メインのことをやらせるのが吉な感じ。

・・・

フォーラムにあまりにも投稿がなくてわろた。