HaxeでJavaScriptゲームを作ってみた
最近、JSXやHaxeなどのJavaScriptを生成できる言語が流行っているみたいなので、Haxeを少し勉強してみた。
試しに、以前OCaml(ocamljs)で書いたシューティングゲームを、Haxeで書き直してみた。
Haxeのインストール
- Mac用のものもhomebrewにあったけど、現時点のバージョンではhaxelibがエラーが出て動かなかった。
- 追記:@choplin さんが 解決法 を書かれています
- 結局、Ubuntu 12.04 に入れた
- Ubuntu標準のリポジトリにあるものは古いけど、haxeのリポジトリを追加すれば最新版をインストールできた
- 参考: http://haxe.org/installation/ubuntu
- そのままではライブラリが足りないのか実行時エラーになった
- libneko0 を追加したら動作した(よく分からん)
実行したコマンド:
sudo add-apt-repository ppa:eyecreate/haxe sudo apt-get update sudo apt-get install haxe libneko0
html5ライブラリのインストール
実行したコマンド:
sudo mkdir -p /usr/lib/haxe/lib sudo haxelib setup sudo haxelib install html5
感想
- 良さげな点
MSXでプレゼン
MSXでプレゼンしてみました。
プレゼン生成に使ったツールも公開しています:
https://bitbucket.org/sunflat/mlnagoya/
こんな感じのScalaコードから、プチコンのBASIC風の中間形式を経て、こんな感じのMSX-BASICコード(UTF-8版)を生成します。
補足
- MSX2以降なら、「SHIFT+かな」でローマ字入力できるそうです(Twitterで教えてもらいました)。昔使ってたのはMSX1だったので知らなかった…
- MSXでは、こんな感じの文字コード(半角ひらがなやグラフィック文字がある)を使っているので、Unicodeからの変換テーブルを作って変換しています
- 実は、DEF FN文を使って1つの式だけの簡単な関数なら定義できたりします。でも、条件式や再帰などが使えないので、共通の処理をまとめたりするのには使いづらい(代わりにサブルーチンコールを使う)
Macのサウンド出力先を切り替えるAppleScript
iMac用にHDMI出力コネクタを買ったのだが、音声の出力先をHDMI(外部ディスプレイ)と内蔵スピーカで切り替えたいことが良くあるので、AppleScriptにしてみた。
システム環境設定をUI操作しているので、「ユニバーサルアクセス>補助装置にアクセスできるようにする」にチェックする必要あり。AppleScriptのスクリプトメニューに登録しておくと便利かも。
環境によって、row番号やラベル文字列が違うかもしれないので、適当に修正して。
tell application "System Preferences" activate set current pane to pane id "com.apple.preference.sound" end tell tell application "System Events" tell process "System Preferences" tell tab group 1 of window "サウンド" click radio button "出力" if (selected of row 1 of table 1 of scroll area 1) then set selected of row 2 of table 1 of scroll area 1 to true else set selected of row 1 of table 1 of scroll area 1 to true end if end tell end tell end tell quit application "System Preferences"
参考:http://www.oreillynet.com/mac/blog/2006/07/applescript_audio_output_switc.html
Windows Phone
Windows Phone のゲームアプリについて話したので、スライドを貼っておきます
LLNagoya
LL名古屋で、AppleScriptの話をしたので、スライドを貼っておきます
チート対策と、framework内のクラスのデバッグについて
Android用ゲームのチート対策と、Android framework内のクラスのデバッグについて話したので、スライドを貼っておきます