自作ゲーム配布方法の歴史
2000年頃のインターネットを懐かしむ会(インターネット老人会)というイベントで発表したので、スライドを貼っておきます。
(Chromeだと埋め込みスライドのボタンが効かないっぽいので、下のリンク先で見てください)
書ききれなかったけど、他にも、ベクター PACK5000 とかの、CD-ROMに沢山のフリーソフト・シェアウェア(無料アプリ・有料アプリのこと)が収録されたムックとかもありましたね。
Vimで、ファイルの存在するディレクトリ単位で、インデントの設定とかを変える
Haxe用の使いやすそうなエディタを調べていくうちに、vaxeというVimプラグインがなかなか良さげな感じだったので、結局 Vimを使い始めることにした。
ファイルタイプごとにインデントの設定を変えるには、vimrcに、例えば autocmd FileType haxe setlocal noexpandtab tabstop=4 shiftwidth=4 softtabstop=4
などと書いておけば良い。
しかし、ファイルタイプに加えて、さらにプロジェクト単位で、インデントの設定を変えたくなることがよくある。(参加しているプロジェクトごとにインデントの規則が違うとか、ある日突然好きなインデントのタイプが変わったとか)
そこで、localvimrc というvimプラグインを入れて、プロジェクトごと(ファイルが存在するディレクトリごと)に追加のvimrcを設定できるようにしてみた。
プロジェクトのトップディレクトリに .lvimrc というファイルを作っておくと、そのディレクトリ以下(サブディレクトリ含む)のファイルを開いたときに、自動的に .lvimrc の内容を実行してくれるので、ここにインデントの設定などを書いておけば良い。
NeoBundleを使っているので、vimrcに、プラグインの場所を追加してインストール
" vimrcに追記 NeoBundle 'embear/vim-localvimrc'
デフォルトのままだと、毎回 .lvimrc を実行するか聞かれて面倒なので、選択を保存する設定にする。ただし、あらかじめ空のファイル ~/.localvimrc_persistent
を作成しておく必要があるみたい。
" vimrcに追記 let g:localvimrc_persistent=2
デフォルトのままだと、sandboxで実行されるため、インデントの設定とかを変えられないようなので、無効にしておく(実はsandboxが何なのかよく分かっていない...)
" vimrcに追記 let g:localvimrc_sandbox=0
あとは、プロジェクトのトップディレクトリに、以下のような .lvimrc をおけば、このプロジェクト専用のインデントの設定ができる。(この例の場合、filetypeがhaxeの場合のみインデントの設定を変更している)
if &filetype=='haxe' setlocal expandtab tabstop=4 shiftwidth=4 softtabstop=4 endif
やったね!
Windows 8 で簡単シャットダウン
Windows 8をシャットダウンするのが面倒臭いので、ショートカットを作った。
以下のファイルを"confirm-shutdown.js"等の名前で作成し
var sh = new ActiveXObject("WScript.Shell"); if (sh.Popup("Are you sure you want to shutdown?",0, "Confirmation", 1+32) == 1) { sh.Exec("shutdown -s -t 0") }
"wscript.exe [confirm-shutdown.jsのパス]"という内容のショートカットを作っておく。起動すると、シャットダウンを確認するダイアログが出る
おまけ1
こっちのほうがいいかも?(試してない)
http://crystaldew.info/2012/07/16/windows-8-sleep-shortcut/
おまけ2
Haxe NME
NMEという、Haxe言語用のクロスプラットフォームライブラリがあり、Flash風のAPIを使って書いた単一のコードから、Flash、html5、iOS、android、mac、windowsなど、色々なプラットフォーム向けの実行ファイルを出力できる。
JavaScript (中略) ハッカソンに参加したので、NMEを使って生成されたアプリの、いくつかのプラットフォーム上での実行時間を比較してみた。
比較には、id:yoshihiro503さん作のAOBench Haxe版を、NME用に移植したものを使った。ソースはこちら。html5版の生成されたアプリはこちら
実行にかかった時間(ms)
10回(iPhone 4sのhtml5のみ3回)測定した平均値です。
MacBook Pro (15-inch Mid 2010, Core i7 2.66GHz) で実行
html5 (JavaScript) Chrome上 | html5 (JavaScript) Safari上 | Mac nativeアプリ (C++) | Flash | |
---|---|---|---|---|
1574.1 ms | 2812.3 ms | 1092.9 ms | 3601.8 ms |
感想
- MacのChrome上でのJavaScriptがかなり速い。nativeアプリの1.4倍程度の時間。Flashよりも速い
- iOSのSafari上でのJavaScriptは、nativeアプリの6.6倍程度の時間。
NME のセットアップメモ
追記:NMEのインストーラを使うと、いくつかの手順やコマンドの名前を省略てきて便利なようです(コメント欄参照)。
haxelibのインストール方法はこちら
Mac上でのNMEのセットアップ手順(うろ覚え)
sudo haxelib install nme sudo haxelib run nme setup html5 (jeashライブラリをインストール) sudo haxelib run nme setup flash sudo haxelib run nme setup ios (XCode4を別途インストール) sudo haxelib run nme setup mac sudo haxelib install hxcpp (これを忘れると、Source Path "libstd..." does not exists、などのエラーが出る) sudo /usr/bin/xcode-select -switch /Applications/Xcode.app/Contents/Developer (これを忘れると、/Developer パスが無いと言われる)
実行
haxelib run nme test application.nmml html5 haxelib run nme test application.nmml flash haxelib run nme test application.nmml mac haxelib run nme test application.nmml ios
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