LASERREIMU 体験版 [例大祭10]の紹介動画をアップロードしました。
1分ちょいの短い動画です。
例大祭と頒布物の予定など (2)
頒布予定の体験版は無事なんとか形になりまして、昨日今日はマニュアルまわりを整備していました。
ゲームのサイトの内容を、頒布するバージョンに合わせて少し変更しましたので良かったらご覧ください。→LASERREIMUのサイトへ
ひとまず開発の方は一区切り付いたということで、体験版のスクリーンショットを数点。こんな感じになっております。
タイトル画面。デバッグ用に各面選択のメニュー項目があったのを直前まで消し忘れてました。気付いてよかった |
コンフィグ画面。スコアネームはここで設定です。 |
右下に顔グラフィックと、ちょっとだけ会話が出てきたり。でもプレイ中は見てる暇ないかもしれないですね; |
ぼむぅで点数が倍倍。 |
進捗状況とか(5/15)
「制作のしおり」さんのところでうちのゲームのことを書いてくださってました。わーい
ありがとうございます!
http://sshiori.dtiblog.com/blog-entry-5275.html
てことで現在、絶賛製作中です。
といってもほぼ終わっているんですが、あとは文章とかプログラム以外のあれこれが残っている感じなのですが…
readme.txtを書くのに数時間使ってたりして、なかなか進まないですね。困った
例大祭と頒布物の予定など
突然ですが例大祭10に受かってたみたいです。スペースは「し10a」です。
当日は、製作中のSTG「LASERREIMU」の体験版を頒布する予定です。
どんなゲームなのか? 特設サイトを用意してみましたのでご覧ください。
LASERREIMUのページへ
C++ + Lua for WindowsでMetaluaを使う
C++へLuaを組み込んでいる場合にMetaluaを使用するやりかたがわかったのでメモしておきます。LuaはLua for Windowsの5.1.4を使っています。
ちなみにMetaluaというのは、Luaにマクロ等の拡張機能を追加できるものです。Lua for Windowsに最初から入っているのですぐ使用できます。
まずはMetaluaの文法に則ってスクリプトを書きます(とりあえず script.mlua とします)。このままでは実行出来ませんのでMetaluaでコンパイルします。コマンドプロンプトにて以下を実行します。
metalua script.mlua -o script.luac -v --no-runtime
※–no-runtimeパラメータは状況により付けたり付けなかったり
この”metalua”というのはLuaのインストール先にあるバッチファイルです。見つからないというエラーが出る場合はパスを通してください(Win7ならC:\Program Files (x86)\Lua とかですね)
パラメータ -o でコンパイル後のファイル名を決めています。-v は進捗状況を細かく見たいという指定です。
最後の –no-runtime ですが、これはコンパイル後のスクリプトが自動でMetaluaライブラリをロードしないようにするオプションです。これを付けないと、コンパイル後のスクリプトに require “metalua.runtime” が付加されます。その場合、今回はC++からLuaスクリプトを呼び出すという前提なので、C++側の実行ファイルと同じフォルダにMetaluaライブラリが一式揃っていないとエラーになってしまうので注意してください。もちろん、–no-runtimeを付けた場合は他の方法でMetaluaライブラリをロードしておく必要があります。自分はprecompiler.luaを使ってruntime.luaがロードしている3つのファイル(base.lua, string2.lua, table2.lua)をコンパイルしておきC++に組み込む形にしました。具体的にはLuaインストール先のluaフォルダで以下を実行します。
lua precompiler.lua -o metalua -l metalua/?.lua metalua/base.lua metalua/string2.lua metalua/table2.lua
するとmetalua.cとmetalua.hが生成されるのでC++プロジェクトに追加し、そのファイル内に定義されている関数をlua_open()の後くらいに実行することでライブラリをロードできます。
そしてmetaluaコマンドにより生成されたファイルを読み込み、luaL_loadbuffer(), lua_pcall()して無事実行できました。
Visual Studio 2008のインストーラでエラーが出る
Google日本語入力のプライバシー関連の設定on/offを切り替えるAutoHotkeyスクリプト
いちいちダイアログ開いて項目探して、って毎回やるのが面倒だったので。
Google日本語入力プロパティダイアログの「プライバシー」タブにある2つのチェックボックスをクリックして終了します。チェック状態を取得してなにか判定したりはしてません。というかAutoIt3でチェックボックスのクラス名とか取得できなかったので諦めました。
#NoEnv #WinActivateForce SetKeyDelay,100 SendMode, Event ; コントロールパネル「地域と言語のオプション」を実行 Run, intl.cpl WinWait, 地域と言語のオプション, , 5 WinActivate Sleep,100 ; 最初のタブじゃないと操作できない ControlGet, tabid, Tab, , SysTabControl321 if (tabid != 1) { MsgBox, 最初のタブじゃない(1) return } ; 「テキスト サービスと入力言語」ダイアログを開く Send, ^{TAB}d WinWait, テキスト サービスと入力言語,,5 ; 最初のタブじゃないと操作できない ControlGet, tabid2, Tab, , SysTabControl321 if (tabid2 != 1) { MsgBox, 最初のタブじゃない(2) return } ; Google日本語入力が選択されてないといけない ControlGetText, combotext, ComboBox1 if (combotext != "日本語 - Google 日本語入力") { MsgBox, Google日本語入力を使っていない return } ; プロパティを開く Send, !p WinWait, Google 日本語入力 プロパティ, , 5 ; 目的のタブページで設定切替 Send, ^{TAB}^{TAB}^{TAB}^{TAB}{TAB}{SPACE}{TAB}{SPACE} ; 確認して終了 Sleep, 1500 ControlSend, , {ENTER}, A ControlSend, , {ESC}, A ControlSend, , {ESC}, A
お絵描きとか
Visual Studioでブレークポイントが設定できなかったり
Visual Studio 2008でC++プログラムのデバッグをしようと思ったのですが、ブレークポイントを設定しても「!」マークになってしまい「ソースコードが元のバージョンと異なります」という表示が出てブレークできなくなりました。
リビルド、VS再起動を試すも解消せず。
で、結局ソースコードのコメントを少し変えるなどして保存しビルドし直したところ、なぜかまた無事ブレークするように…。
ファイルの文字コードを変更して保存したら解消したという例もあるみたいですがVSのバグなんでしょうか。
http://social.msdn.microsoft.com/Forums/ja/vcgeneralja/thread/eb1744d6-4304-45a2-a69c-502f826b1f40
VS2010は以前インストールしてみたんですがIDEの反応のもたつきが気になって使うのをやめてしまったので、まだ移行する気にはならず。。
Boost.Preprocessorを少しだけ使ってみる
使ったこと無いなーと思いまして、触り程度にちょっとだけ
例えば以下のように、ある一部分を除いてほぼ同じ内容の関数をたくさん定義しなきゃいけない場合
void test1() {
cout << "A" << endl;
}
void test2() {
cout << "B" << endl;
}
…(以下延々と続く)…
[/cpp]
Boost.Preprocessorのリファレンスをだらだら眺めながら、以下のように書いてみました。
ちゃんと上記のように展開されるようです。
[cpp]
#define SEQ1 (test1) (test2) (test3) (test4)
#define SEQ2 (A) (B) (C) (D)
#define MACRO(r,data,i,elem) \
void elem () { \
cout << BOOST_PP_STRINGIZE(BOOST_PP_SEQ_ELEM(i,SEQ2)) << endl; \
}
BOOST_PP_SEQ_FOR_EACH_I(MACRO, _, SEQ1)
[/cpp]
BOOST_PP_SEQ_FOR_EACH_Iを使ってMACROをSEQ1の数だけ展開して、
そのMACROの中ではインデックスiを使ってSEQ2にアクセスする感じで。
STRINGIZEは、標準の#xみたいなやつですね。
今の自分には使う機会が思いつきませんが、いつか必要になった時のとっかかりになればという事で。