2009/01/31

今日の三角

・復讐いろいろ強化

・Re:Action再開

復讐の主にキャラクター関連の機能を強化した。それでキャラクターの向いている向きを取得したり、穴に落ちたときの処理を作ったりした。

デストラクタバグがゲーム中に発生するようになったがGCを手動制御したら起こらなくなった。起きてもそのまま例外を無視して動くようにしてみたが、弊害があるかもしれない。

 

物理ゲーム製作のモチベーションが急に上がってきたのでとりあえず手をつけられるRe:Actionの製作を再開した。それでボスとして使う予定のフラクタルを実装。適当にやったら面白くなったのでスクリーンショットもつけておく。

reaction

2009/01/30

今日の無効

・復讐バグ修正
・復讐敵管理作成
・蘇生ラスボス絵作成
このところ続いているバグと決別。デストラクタのバグは何故かゲーム中では発生せず、エディタ上での発生もGCを動かすタイミングを手動管理することで、落ちても問題のないところで発生するように管理できるようになったので、これ以上調べたところで時間の無駄と放置することにした。そう決めたとたん、GCによって、まだ使用しているメモリが開放されるという怪事件が起きたが無視。スタティックデストラクタを使えば落ちてもデータのバックアップは可能なのかもしれないし。
もう一方の敵の配置のバグは単なる書き間違いが原因だった。前々から紛らわしいとは思いつつも、変えずにおいた場所で間違えた。
バグと決別したので、ようやく本来進めている所であった敵の管理を実装できた。だいぶステージをロードするときの処理量が大きくなってきている。そのうちマルチスレッドの学習も兼ねてNow Loading表示を作ることになるかもしれない。

ソファに座りながら、平らな場所がなくてもマウスを使う方法を編み出したのでその技術を使って、暖かい部屋で寛ぎながら絵を描けるようになった。それで描いてみたのが蘇生のラスボス。描いたはいいが絵のサイズが小さいために、細かい部分がくっついて見た目が悪いのでまだまだ修正が必要。

2009/01/29

今日のGC

・復讐バグ修正中
全然取れない。大量にtry-catchを張り巡らせて、それでより調べてみたところ、デストラクタが呼び出されるときにアクセス違反が発生することを確認。そこでdelete文を全部消してGCに全て任せてみたり、GCを動かすタイミングを手動で変えてみたりと、色々と試したのだがやはり例外が発生する。OpenGLのテクスチャを開放するときに何か間違いがあるかとも思ったが、関係のない場所でも落ちる。そろそろ手詰まり感が漂ってきた。
そしてもう一つ取れないバグが、マップエディタで配置した敵の記録と読み込みでずれること。こちらは直さないと先に進めない問題なのだが、これも原因が不明。デストラクタのバグとは多分関係はない。

バグのせいというわけでもないだろうが、ここ一週間程度ずっと体調が悪い。症状的には徹夜明けのような症状なので寝不足のように感じるが、特に睡眠時間が減った自覚もなく、周りで風邪が流行っているのに自分には影響がないと、これも原因不明のバグ。

2009/01/28

今日の5乗

・エディタバグ原因捜索中

昨日のバグがいまだに取れない。設計を変える以前からたまに起きていた記憶があるので設計を変えたことは直接の原因ではないはず。

表面的にはオブジェクト一式を初期化するときと、描画するときにアクセス違反が発生している。調べによれば、起動した直後には起きずに、何度もその操作を繰り返しているとアクセス違反となる。そのあたりから、オブジェクトを削除したあとに何かしらが残っていて、それが悪さをしているように感じる。SDやOpenGLを操作するときに何か問題があるのかもしれない。

今のところはマップエディタでしか確認していないから、それの連続使用を避ければ実用において問題はないのだが、ゲームは何度もリセットを繰り返すということをまだテストしていなく、プレイヤーによりそのような操作が取られる可能性はありえるので、ゲームでも発生するのであれば解決しなければならない。

例外が起きたときに、assertのようにどこが例外をthrowしたのかわかる機能があればデバッグが便利になるのだけど。

 

今日で年齢が5桁になった。そのお祝いとしてのケーキが、通常よりも2,3回り大きいどら焼きにクリームをはさんで、さらにその上にクリームを乗せて団子と抹茶のアイスクリームを飾ったというカオスなもの。

2009/01/27

今日の読み込み

・復讐ステージ読み込み機能作成

・復讐敵配置機能作成中

今日は復讐を進めていた。

まずはステージを外部ファイルから読み込む機能。エディタを作ろうかと思ったけれども、手書きでテキストファイルとして作ったほうが効率がよさそうだったので手書きすることに。

次に、今まで置いておいた、敵のマップエディタ上からの配置を作り始めた。しかし設計を変更したので同じコードでは通らずその修正が大変だった。それで本題のマップエディタ上からの配置は、システム的にはイベントの配置の流用でいけているのに、何故か全く関係のなさそうなところでアクセス違反を起こす。それで今とまっている所。

敵の配置が完成したら、システムのコア部分は完成。あとはキャラクターのアニメーション用に絵を描いたり、会話ボックスを表示したりが今後の課題。この調子で進めていけば2月中旬ごろに遊べるものができそうだが、そろそろJOIのための勉強をしたり、物理ゲームを本格的に作ったりしないといけない。

2009/01/26

今日の設計

・復讐設計変更

昨日課題として出てきたステージの管理方法。もともとは敵をステージ内でどのように管理するかというところからでてきたのだが、その設計を考えていたら、ステージを使ってゲーム内の全てのオブジェクトを管理してしまうということになった。

大幅な設計の変更だったので、Poseidon付属のファイル圧縮機能を使ってバックアップをとってから組み始めた。それで、予測したとおりに動かなくなったので、バックアップを参考にして調べようということになったら、圧縮されたファイルが解凍できなくてはまった。結局フラッシュメモリに以前バックアップしたソースを参照した。

それでも詰んでいて、原因不明で呻っていたら原因が見つかった。原因は、コンストラクタ内で生成中のオブジェクトを参照していることだった。冷静になって考えてみれば、

hoge = new Hoge();

と書いた時に、コンストラクタが終わるまではhogeに値は返されず、そのためコンストラクタの中ではhogeは初期化されないのだから当たり前といえば当たり前。結局コンストラクタ内に書いてあった処理を丸々別の関数に移転して、コンストラクタが終わったあとにその関数を呼び出して解決。

2009/01/25

今日のCSS

・蘇生曲名作成

・復讐ボス絵作成

・ウェブサイト模様替え開始

昨晩から考えていた、蘇生の曲名。結構すらすらと決まった。曲名のリストと、作曲者の薩摩芋氏によるコメントなどはこちらから。それに伴ってゲーム内でも曲名が表示されるようにした。漢字は便利。

あと、蘇生の0.61の置き場所がわかりにくいので、わかりやすい場所置いておいた。

復讐のボス絵も描いている。稲荷を新しく描いて、それと以前の白虎を改善。なかなか良く描けた。ボスのテーマが五行に変わったので、デザインは同じキャラクターでも蘇生とは違ったものになっている。あと書いていないのは5人中2人。描きあがったら主人公とあわせて適当に公開する予定。

サイトのデザインに駄目出しをされた記憶があるので、模様替えを開始した。外部スタイルシートは結構便利。

 

想像力が枯れた原因にプログラミング疲れがあるのではないかということで、今日は蘇生の曲名表示以外にプログラムを書かなかった。復讐のステージ管理方法という考えるネタが出てきたので、明日はそれを考えて、作るつもり。