2015/04/13(月)RGSSの停止について
「RGSS3(RGSS2) Playerは 動作を停止しました」

RGSSをカスタマイズして制作しているもので、よく見かける。
今回、天に届ける迎春花を制作している途中でこの現象が発生した。
再現性は100%ではないが、どうもカスタマイズした処理を
通すと落ちるような挙動を示す。
これの原因は「メモリリーク」である。
簡単に言えば、メモリが正しく解放されていなくて、
Rubyのインスタンスが残ったままになっている状態にある。
ここからは予測になるが、画像(Bitmap系)がdisposeされないまま、
参照がされなくなってしまうと、GCが働いてdisppose前の
領域をGCスレッドがクリアしようとして、メモリ違反的な
ことになっているのではないかと思う。
最初は原因不明だったが、GC.disable = trueにすると
落ちなくなったので、GCが絡んでいると思われる。
やっかいなのは、問題解消方法である。
基本的にはnewされたインスタンスが
正しいタイミングでdisposeされていることを確認するという手法になるが、
どこで発生しているかを特定するのが難しいため、
何度もエラーを起こして特定するか、あるいは
ソースをしらみつぶしに見るしかない。
あとは、newした際に別自動的に管理インスタンスに登録して、
disposeされる前に参照されなくなるような仕組みを
自前で作るという案もあるが、大規模プロジェクトじゃないと
効果がでないと思う。
(旧約)帽子世界でも、同様のエラーで落ちることがあるが、
VX版のサイドビューを導入したときに、たまに落ちていることがあった。
新約ではキャッシュの有無を選択できるようにしているようである。
キャッシュを利用すれば、結果的に落ちないということは、
やはりGCが絡んでいると思われる。
この件については、なかなか検索でヒットしないので、書いてみた。
2015/04/05(日)天に届ける迎春花の制作コンセプトとか
主要なことは記載してある。
<テーマ>
「手軽にできてテンポが良いゲーム」
「WWA初心者でもクリアできる」
<想定プレイ時間>
目標は、30分~1時間。
<レベルデザイン>
5フロアでは短いと思ったので、7フロア。
※この時点で、想定プレイ時間を超えていたような気がした。
フロア1~3:敵が徐々に強くなっていくようにする。
フロア4:ここで壁を用意する。場合によっては詰むようにする。
フロア5:壁を越えたときの爽快感を実現するために難易度は低めにする。
フロア6:お金を稼ぐためにモンスターハウスにする。さらに上の脅威を示す。
フロア7:壁を用意するが、それを解決させるためのアイテムを置く。
フロア4、フロア7を壁とするようにする。
※結果的にフロア7は、そんなに難しくしなかった。
<ゲームバランス>
作者は、ほぼ最善手を知っているため、
ギリギリのバランスにすると投げ出す人も多くなる。
どこで甘さを出すかという部分では、プレイヤーに調整が効く部分
すなわち「お金」を甘くすることにした。
終盤でハマると厳しいので、終盤の少し手前くらいで
お金をたくさん獲得できるようなモンスターハウス的な
フロアを作って、そこを稼ぎ場とした。
自分がやると、お金貯まりすぎる感じがスゴくするのだが、
そこは、グッと堪える調整となった。
<テーマ1(快適なゲームテンポを保つ)の解決>
・我がハサミ~とボコスカ監獄のシステムを素直に流用する。
→1画面完結+ワープ+1ボタンでセーブ画面+戦闘高速化
・セリフを少なくする。
→日数経過につれて、セリフを増やしていく
※必要なセリフも削ってしまった感もある。
<テーマ2(初心者救済)の解決>
・妖精の養成所を作る。
→当初はパラメータ増強だったが、アイテムの開放に変更。
赤い鍵によって蜜の羽衣を獲得できるのは大きい。
・魔法を使えるようにする。
→魔法を使わなくてもクリアできるけど、
ピンポイントで使うと、より簡単にクリアできる。
※贖罪の剣士がそれに相当する。
<公開してから感じた課題>
・初日クリアしてしまう人が予想以上に多かった。
→これが1番の誤算。とりあか氏がサクッとそれなりの点数で
クリアしてしまったのはビックリした。
昔のゲームの残機が3機だったことを考えて、
2回ダメで3回目でクリアするのを想定していた。
なので、養成所の開放は3日目にしていた。
・魔法の意味不明感が予想以上に大きかった。
→初期状態で何も覚えさせなったのは失敗。
1番最後に追加した要素だっただけにツメが甘かった。
・ネタへのツッコミが予想以上に少なかった。
→基本的にボケっぱなしの芸風なので、
プレイヤーがツッコまないと、かなり恥ずかしい状態になる。
ex) ⑨の項目が氷の妖精であるところ、など。
・チュートリアルはやはり必要だったかも。
→導入テンポが阻害されるので、あえて入れなかったが、
フロア1から結構自由なルートを選べるので、
少しだけでも入れれば良かったと思う。
<課題への解決>
・初日クリアしてしまう人がいる
→養成所の開放は、初日からできるようにする。
※2日目以降へ行かせるために、そういう仕様にしていたのだが、
本当の初心者はココでやめてしまう可能性があるため、
機会損失になってしまっていた。
・魔法
→はじめから1個だけ覚えさせておく。
ただし、習得順はランダム。
・ネタ
→難解なものについては、ウェブサイトのQAに掲載する。
・チュートリアル
→簡単なものを作る。詳細な説明は省き、
ゲーム感覚を掴んでもらうことを主目的とする。
<課題解決期限>
GW明けを目標としたい。
<おまけ>
開発中バージョン。
当時は魔法もたき火もなかった。
主人公もラルフだった。
半月でここまで来たが、ここから先が長かった…

2015/03/08(日)Kansasのゲームタイトル
書いてなかったことを思い出した。
タイトルは…「天に届ける迎春花」です。
タイトルを考えるのには毎回悩むのだが、
ゲームタイトルが、そのままゲームの目的となるように
わかりやすさを第一に考えて名付けた。
シナリオ的には、
「春が来ない村の為に春を告げる花“迎春花”を届ける」
というものなのだが…
王道くさくて、あんまりインパクトないなぁ…と思いつつ、
ハートウォーミング・ナーサリィ・ライム(心温まる童謡)に
したかったので、これはこれで良いのかなと自分に言い聞かせた。
ナーサリィ・ライムと言えば、名駅新幹線ホームにある
きしめん屋は一度も入ったことがない。
2015/02/14(土)Kansas完成!
システム…100%
ストーリー…100%
バランス調整…100%
デバッグ…100%
完成した!
やったー!
嬉しい!
やったー!
制作期間は1.5ヶ月。
基本システムまでは結構順調だったのだが、
仕上げの作業が結構大変だった。
これを期にwebサイトのコンテンツも
増やしたいと思っている。
Coloradoの制作再開は、
ちょっと先になりそうな感じ。
2015/02/08(日)Kansas完成間近!
システム…100%
ストーリー…100%
バランス調整…80%
デバッグ…40%
今週は、とにかく調整しまくった。
WWAというゲームの性質上、
調整すると最初からやり直しになるのが辛い。
そして終わりが見えてきました。
今週末にはリリースするぞい!