Haxe+OpenFL+Box2Dについていろいろ
先月末くらいから Haxe + OpenFL + Box2D でよくわからないものを作ってみたりしました。 そのときに思ったことをつらつらと書いてみます。
- flash ターゲットはもちろん、windows や mac ターゲットも普通に動く
- 画像、音、キーボード、マウスは完璧
- TextField がかなり怪しい
- フォントサイズ指定しても、環境によって大きさが違って崩れる
- ttfフォント指定してもだめだし、同じフォントなのに高さが違ったりする
- wrapping も挙動不審
- mobile系のターゲットだとそもそも表示されないこともある
- Asset がすこし不安
- 動作自体は全く問題ないんですが、いざ配布するというときに中身が丸見えでそれに対応する方法がなさそう
- ネイティブのファイルIOがあるので、それを使って自前で用意する必要がありそう
- ドキュメント少なすぎて最悪
- 頻繁にソース読みにいったりした
- よく見たドキュメント
- ソースからドキュメント生成してるらしいけど、改行とかの扱いが雑でひたすら読みづらい
- 鵜呑みにしてはいけないけど Haxe2 の古いドキュメントも役に立つ
- Haxe 言語リファレンス - Haxe
- Haxe の enum 最高!!!!!!
- 貴重な日本語情報
- fukuokahaxe / Haxe勉強会 / wiki / Home — Bitbucket
- たまにリンク切れてたりしてちょっと不便なので fukuokahaxe / Haxe勉強会 — Bitbucket からみるといいかも
- iOSターゲットが割と動いて楽しい
- ただしビルドとデバッグがひたすら苦痛
- マルチタッチも簡単
- frosty/NME-Multitouch-Example
- NME時代のコードなので適宜OpenFLに読み替えてください
- Box2D が悪いのかひたすらメモリを食いつぶすバグが出来て困ってます
- Instruments とか使ってみたけどC++のコードを元に情報が表示されるので、なにがなんだかわからない
- OpenFL版Box2Dは、本家をどれくらい追いかけられてるのかが不明
- 確か本家の新しいバージョンだとBodyからContactが取れなかったはずだけど、OpenFL版は取れる
- 困ったらソース読みましょう
- openfl/box2d
- samples/TestBed は非常に役に立ちますが、なかなかエグい実装
- 最初は HaxeFlixel も使っていたんですが、それについていた Nape という物理エンジンの機能が少なすぎてやりたいことができなかったため、HaxeFlixel を諦めて OpenFL + Box2D という形になりました
- OpenFL + HaxeFlixel + Box2D だと世界が3つになって管理が非常に難しい
- OpenFL + Box2D だと2つの世界の橋渡しをするだけなのでまだ楽
- Mac で開発する場合は Atom を入れるとよさげ
- Haxe 向けのパッケージが充実
- language-haxe
- linter
- autocomplete-plus
- haxe
- とりあえずこれだけ入れればOK
- lint と autocomplete を動かすためには、プロジェクトディレクトリに
hoge.hxml
が必要openfl display flash > hoge.hxml
みたいな感じにすると生成できます- atom の tree view で
hoge.hxml
を右クリックするとSet as active HXML file
という項目があるはずなので、それをクリックするとよい
- 【完全な余談】
- Contributors | Box2D にいる "Motokimi Kuzume" さんが気になる
2D でマルチプラットフォームなゲームを作りたければ Haxe + OpenFL は割とありな選択肢だと思います。 特にWindows + Mac + Linux みたいな感じだったらソース書き換える必要すらないかと。
ガリガリ気張って書かなければいけないこともなく、かといって果てしないブラックボックスということもないこのバランス感が好きです。