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人。描きあがったら主人公とあわせて適当に公開する予定。

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

 

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

2009/01/24

今日の公転

・弾幕作成

・復讐攻撃作成

・復讐木ボス描画

数日前に構想した弾幕を作った。5面なので難易度高め。そのうち調整をすることになるだろうけれど。レーザーを実装したから作れるレパートリーはかなり広がった。

それと、蘇生の曲のタイトルを考え始めた。現在1面道中曲のタイトルを考えた。語呂が良くて曲にあってゲームにもあうものをがんばって考えている。

復讐も進めた。主人公の攻撃を実装。およびキャラクター対キャラクターの当たり判定後の処理を強化して、貫通や反射といった処理を作るための土台を作った。

それでプログラムを書くのに疲れて、描きかけだった復讐の木ボスを完成させてみた。なかなかいい感じに描けた。

 

ここ一週間ぐらい、想像力が枯れている。普段、暇なときには何かネタを考えるのだが、この頃だと何を考えるか考えているだけで暇がつぶれてしまう。原因を分析して、ありえそうなのは遊んでいないから、もしくはタスクの積みすぎ。今のところは新しいものを考えずに作れるものや、以前考えたものを作ってこの状態をしのいでいる。タスクの積みすぎなのだとしたら、さっさと完成しそうなRe:Actionを完成させたい。

2009/01/23

今日の円柱

・Re:Actionライフシステム実装
・3次元よけげー進捗
Re:Actionにライフの概念を実装。及び色々調整。パーティクル数の上限を512でやっていたら一瞬にしてキャラオーバーしたので8倍に拡張。
衆人環視の状態で1時間ほど作業をしたので、真面目に見える3次元よけげーをいじっていた。円柱のワイヤー描画を作って背景に使ってみた。

今日は何か忙しくて、その上疲れて大したことをしていない。SSを進めていないのは結構久しぶりだと思う。

2009/01/22

今日の内分

・蘇生弾幕作成

・復讐空中ダッシュ作成

・Re:Action進行

まず、レーザー弾幕を改善。そのためにレーザー上の点を取得する関数作成。弾幕としてのコンセプトがやや失われたがバランスが良くなった。次に花っぽい弾幕を作りたかったのでスプリンクラーを4重に重ねてみた。スプリンクラーは軌道が単純だけど隙間が狭くなりがちで避けにくい。

次に復讐。ただのダッシュというのはいまいちだと思ったので空中ダッシュにした。緻密なアクションとかを要求したいのでそれにあった性能にするべく調整をしている。

最後にRe:Action。昨日の改善によって新たに出たバグを多分つぶした。もともと再現性が結構低いものだったので撲滅できているかどうかは怪しいが、理論的には大丈夫のはず。

それからRe:Action花形のパーティクル関係の部分を製作。別にたいして難しいことはなかった。

2009/01/21

今日の反発

・蘇生弾幕作成

・Re:Action製作

・復讐キャラ構想

久しぶりにまともな弾幕を作った。それと弾幕の名前をいくつか考えたり。5面は中ボスの弾幕から先に完成しそう。

Re:Actionにも手を着けた。以前書いていた衝突の処理から発想を転換して作った結果、だいぶうまく行くようになったのだが、その方法ではそれはそれでバグがでてくる。原因は大体見当が付いているので何とかなりそう。

そして復讐のボスでまだ構想が決まっていなかった木属性のボスを構想して、描き始めてみた。蘇生の風神雷神をそのまま使っても良かったのではあったけれど、他のキャラクターとの調和を考えて新しいキャラにした。

 

今日は暇だったのでいろいろと考えた結果がこれ。

2009/01/20

今日の発射

・復讐敵弾実装

・蘇生隠しボス実装

このところ、復讐のキャラクターの実装を進めている。今日は敵が弾を撃てるようにしたのと、キャラクター全般の機能強化。せっかく多角形判定ライブラリを作ったのでそれも実装。あとは主人公の攻撃を書いて、敵をマップエディタで配置できるようにすればひとまずベースシステムは完成となる。

それと、ちまちまと進めている蘇生。隠しボスをシステム的に実装して、残るはそれを呼び出す場所と、勝ったときのご褒美の作成。

 

この頃SSばかり作っていて、物理ゲームを進める気がしない。

2009/01/19

今日の極太

・復讐ジャンプ調整

・復讐敵との体当たり実装

・蘇生レーザーいじり

復讐のジャンプを調整。いままでマップスクロールのデバッグ用にFPSを3倍の180で動かしていて、それを戻し忘れたままジャンプを作ってしまったので60FPS用に調整しなおした。

次に蘇生のレーザーをいじっていた。回転3Way極太レーザーを作ってみた。ワインダーに使えそう。レーザーをキャラオーバーの255本まで撃って、回転処理を施したりもしたが全く処理落ちしなかったので、レーザーはソースのややこしさほどには重くないらしい。

そして後は復讐のキャラクター同士の当たり判定を作成。まだ弾を撃ったりするのを作っていないので、とりあえず敵との体当たり。

 

タイムアタック要素を盛り上げるために高速移動でもつけてみようかと思っている。そのほかにも、何かの条件によって主人公を発狂させるとか。

2009/01/18

今日の躍進

・復讐ジャンプ正式版実装

・復讐効果音実装

・復讐敵エンジン製作開始

・蘇生レーザー本格使用開始

今日はずいぶんと進めた。連休で寝るのにも遊ぶのにも飽きたから。

まずは仮実装しておいたジャンプをちゃんとしたものにした。押しっぱなしでジャンプの高さが変化するように。

それで、このときジャンプ力と重力とのバランスを取るべくテストを繰り返していて、着地したときに音を鳴らせばわかりやすくなるのではないか、と思って効果音を実装。結局バランスが取れなかった原因はバグだった。

次に敵のエンジンを作ってみた。まだソース上から直接敵を生成するだけだが、それでも動きはする。キャラクター同士の当たり判定はまだない。

 

で、それにも飽きて、蘇生のレーザーを正式に使えるようにした。回転やら全弾消しやらに対応。ためしに弾幕を作ってみたが詰むのでまだまだ。普通の魔法による弾消しやカスリは面倒なので対応させない。

 

昨日配列が何とか、と書いたのは、refと書かなくても配列はもともと参照渡しだったからだった。

2009/01/17

今日の記録

・Re:Actionシステム作り

・復讐入力周り

・絵作成

Re:Actionを何か進めないといけないと思ってとりあえず難しいことを考えずに作れるシステム周りを作成。タイトル画面とゲーム画面の接続を関数ポインタとかを使って作って、タイトル画面を動かさないといけないという話を聞いたので文字通り動かした。このとき、自作ベクトルクラスのバグに気が付いたので修正した。正月記念のやつのバグの原因もこれだった。

 

それで飽きたので次は復讐をいじった。だがこっちはこっちでマップ周りがひと段落して次にどこに手をつけるか迷ったので、入力を整理した。で、何を思ったかリプレイを作り始めた。

そのときにキー入力を格納した静的配列を参照渡しとして引数にしようとしたのだが駄目だといわれた。だからといって動的配列に変換して参照渡しすることもできず、結局静的配列の中身を一度動的配列にコピーして、その動的配列を参照渡しして、結果を再び元の静的配列に戻すという面倒なことになった。ポインタを使えばいけるのかもしれないがD言語でわざわざポインタを使うのも嫌。何かいい解決法はないのだろうか。

 

それと、蘇生の5面ボスと復讐のボスの絵を描いた。5面ボスでは絵の輪郭線をつけるかどうか悩んでいる。4面のボスの絵には輪郭線をつけたのだが、それはとぐろを巻いているという特殊な理由があったから。

復讐のボスの絵のほうは以前描いたものの修正。身軽なイメージで書くべく努力しているのだが、どうもうまく描けない。

2009/01/16

今日のランタイム

・スクロール改善
マップ切り替え時にスクロールのバグがあったのでそれを修正。それに際して座標系を変更して、それで統一性なくコードを変更していたら動かなくなって焦った。最終的には理由は分からないが予期した通りに動作したのだが、復讐のコードに、どうして上手く行っているのかが分からない場所が増えてきた。

XNAについて調べてみたら、配布はわざわざインストーラーを作って、その上ランタイムも必要らしい。いわば開発するのは気軽で遊ぶのは手間がかかる。いかにもマイクロソフトという感じ。なのでXNA開発はメインにすえるのはやめておく。

2009/01/15

今日の統一

・イベント管理方法改良
眠くて新しく何かをしようという意思が起きなかったので、考えておいたイベント管理方法の変更を実装しておいた。マップチップとイベントを分離して、別のマップチップでも同じイベントのデータを参照できるように。これでフラグ操作が楽になる。

2009/01/14

今日のXNA

・C#とXNA導入

興味があったので導入してみた。感想としては、C#は結構使いやすい。D言語と似ている部分が結構あるので習得も簡単そう。VisualC#はC++よりも機能が強力に感じる。

そしてXNAも導入。ほとんどコードを書かなくても動くのが不思議な感覚。今のところは2Dのテクスチャの描画と2Dの文字列の描画と入力を受け取るところ。3Dモデルの描画を試してみようと思ったが標準で付いていなかったことには若干驚いた。手書きしてもOpenGLで自作するよりははるかに短いコードで済むようだけど。

少し触った感想としては悪くない感じ。機能の全貌をまだ見ていないからまだはっきりとしたことはわからないが、こだわって作るのには向いていそう。ひとまず卓球をXNAで作ってみようと思っている。

2009/01/13

今日の3次元

・復讐構想

・3Dシューティング風作成

昨晩、イベントエディタができてそれでイベントを書いていて、セーブイベントを作るかどうかと考えたときに、復讐をいったいどのようなゲームにするのかを明確に決めていないことに気が付いた。

横スクロールアクションということは、作っていたのだから決まっているのだが、それでシナリオ性のある長いマップにするのか、それともストーリーはあまり語らない短いマップにするのかが未定だった。で、そのときに思いついたコンセプトが「スコアアタック」。クリアするだけであればあまり難しくないが、スコアを稼ぐための高度なパターン化や精密操作を要求するというやりこみ属性。いわばシューティングの精神をアクションゲームに当てはめたという感じ。

 

今日作ったのは3Dシューティング風。弾幕を3Dにしたら面白いという話があがって1時間程度で作ってみた。弾が3Dで飛んできて当たり判定も3D。ただ、3Dで何かを作るときに常に壁となるのが操作方法。ボタンを押すことで操作する座標軸を切り替える、というようなシステムを考えては見たが多分使いにくい。

これはもうこれ以上作り進める気はないが、卓球に向けた3Dの練習にはなった。あとglutを使うと落ちることも確認。gluは使えた。

2009/01/12

今日の編集

・イベントエディタ完成

・マップ移動作成

イベントエディタを完成させた。開発にEntice Designerを使っていたのだが、手書きでコードを書いてやるのもなかなか。Dfl使っていて、イベントを入れるのにやや手間がかかって、一度にたくさんコントロールを入れると入れ間違いや、入れ忘れが出てきて混乱。順番を考えずに一度にやるのが悪かった。

手書きでやることが多い分、融通が利いて使っているうちにわかってくるのがいい点かもしれない。

イベントエディタができたので、早速本来の目的であったマップ間の移動を作った。想定していたよりもソースが汚くなったので要改善。

一段落したので今度こそ物理ゲームを進めるべき。

2009/01/11

今日の設計

・イベントエディタ製作中

相変わらず。wxWidgetsならばSDLやOpenGLと一緒に使うための情報がいろいろあったので、昨日の失敗にめげずに何度も試してみた。公式な情報と同じ手順でやったり燃してみたのだが、結局ことごとく同じエラーで通らずついに断念。

原因として考えられるのは、D1.0系列だからか、Vistaだからか、D以外の環境が入っていてそれが影響しているのか、TangoではなくPhobosを使っているからなのか。

で、結局Dflを使って製作を継続中。だいぶ使い方がわかってきて、APIリファレンスも発見したので調子が乗ってきた。でも結構時間がかかっている。

 

今日の日記は試しにWindows Live Writerで投稿してみる。

2009/01/10

今日のGUI

・弾幕試作
・復讐イベントエディタ製作中
なんとなく響きだけで三十二層式洗濯機というものを作ってみた。結果は弾の密度が濃すぎてどうにもならなかった無念。でも見た目が結構綺麗なので実用にならないものか。

復讐のイベントエディタを結局Dflを使って作ってみているところ。D専用に作られているだけあってビルドに失敗するようなことはないのだがGUIエディタの機能が十分とはいえないので結構手書きしている。まぁ、それほど複雑なことをやるわけでもないので問題はなさそう。

このごろは弾幕書いたり復讐のシステム考えて実装したりするのが楽しいのだが、そのせいで物理ゲーム製作に手をつけられない。

2009/01/09

今日の発狂

・隠しボス弾幕完成
もはやめちゃくちゃに。最終的には三層式洗濯機などという意味不明なものまで出している。最も最初の洗濯機の時点ですでに殺されるので大丈夫。避けることを考えて作らない弾幕というのは、もはや爽快感がある。

復讐のイベントエディタを作ろうと思ってwxWidgetを調べ始めた。それでサンプルを動かしてみようとしたのだがリンカがうまく行かない。ファイルが多いのでその問題を解決するのも大変。

2009/01/08

今日の混合

・Re:Action再開
・蘇生5,6面追加作業
・弾幕作成中
宣言をしたのでRe:Actionを触り始めた。だったのだが、前いじっていたときに残っていた問題がそのまま放置されていて、まだその問題を解決するための頭が回り始めていないのでどうにもならず、結局タイトル画面を作っていた。物理演算部分を書くのに試行錯誤の繰り返しだったらしく、大量の書き損じのコードがコメントアウトされて残っていて、その部分がとことん読みづらい。バグを解決するためにはその部分を洗わないといけないのでそれが憂鬱。

で、その憂鬱とは別に関係はないのだが蘇生の隠しボスに使わせる弾幕のネタを考えたので作り始めた。単に弾幕を書くのが目的だったので隠しボス自体を実装する気にはならず、とりあえず5面の中ボスに使わせようとしたところ、5/6面をシステムに組み込むのに結構時間がかかった。
それで肝心の弾幕は、隠しボスなのでだいぶふざけて作っている。今のところ自分でも瞬殺される難易度なのだが隠しボスなので成分無調整で。耐久力も普通の5倍ぐらいで制限時間も2倍程度、弾速も2倍以上というわけだが隠しボスなので大丈夫。そのくせボムバリアを持っているが、それも隠しボスなので。あっさりと倒せる攻略法が用意されるのだが隠しボスだから。隠しボス万歳。

2009/01/07

今日の始点

・復讐イベントチップ製作
・物理ゲーム展望
何をやるか考えて、マップから別のマップへの移動を作ることにした。その際、必ずしも移動処理は画面端のみで行うといったものでもないので、マップ移動をイベントとして扱うことにしたので、イベントをマップチップのように配置できるようにイベントチップの製作に取り掛かった。
それでイベントをマップエディタ上で配置してデータに記録するまでを作って、後はテスト用に主人公のスタート位置を設定するイベントを作って実際に動かしてみた。これで大体6時間程度。

物理ゲームを3月末に完成させると漫然と考えていたのだが、カレンダーを見てみるとあまり余裕がなさそうだったので、頭を物理ゲーム製作に切り替えて考えてみた。その結果以下の方針が決定
・Re:Actionはゲームとして
・卓球は3Dの技術力として
・パラボラマスターは物理、数学力として
フォトンは切る
4作を3ヶ月以下で作るというのは結構なハイペースの上に、卓球やらパラボラマスターやらは間違いなく壁になるだろうということでフォトンを諦めた。フォトンは多分計算に時間がかかり、そして描画部分も地獄が見られる、そしてモデルファイル読み込みをOpenGLで実装するか、DirectXを使うかという茨な二択を迫られる、その割にはぱっとしなさそう、ということでいいとこなし。

明日からはRe:Actionの完成に向けて製作を進めていく。復讐の製作はその気分転換用に。

2009/01/06

今日の跳躍

・マップとの当たり判定完成
3日目にしてようやく。ごちゃごちゃ書いていてうまく行ったのでどうして上手く行っているのか、本当に上手く行っているのか、は怪しくて効率のいいコードであるかも分からないのだが、ひとまず動くには動く。
目下の一番の課題が終わったのでその後どこに手をつけるか浮かばず、今日はそれきりで何もやっていない。
やるとすればジャンプの改良、敵の実装、メッセージ窓の作成、マップから別のマップへの移動、といった辺りか。

だいぶ放置されていた物理ゲームもそろそろ再開したい。復讐の絵も沢山作らないといけない。JOIに向けた勉強も手をつけないといけないのかもしれない。

2009/01/05

今日の着地

・蘇生0.61リリース
・マップ判定試行錯誤中
蘇生を通してプレイしていたら、戦績まわりにバグが見つかったので修正パッチを作成。
http://cid-eccdf3ba5a7e82b6.skydrive.live.com/self.aspx/.Public/SS061Patch.lzh
修正内容は
・始めてプレイするダンジョンのハイスコアや挑戦履歴がおかしくなる点
・プラクティスでまだプレイしたことのない技の名前が表示されてしまう点
・1面をクリアした段階で3面をプレイできるようになってしまう点
・画面を左右にスクロールできる画面で、右下に表示されるはずの矢印が表示されないことがある点
この4つ。どれもプレイする上で支障はないので更新しなくても大丈夫だけれども、0.70を出すまで放置しておくのも気持ちが悪いので作った。

そして復讐ではマップとの当たり判定で相変わらず悩んでいる。丸1日悩んで行き詰ってきたと思ったら、実は解決策として作ったコードが機能していなかったことに気が付いて先ほどそれを修正した。それによってだいぶ良くなったのだが、まだ問題が残っている。
詰んでいたときにデバッガに頼ってみようと思ったのだが、やはりSDLとddbgの相性はよくないらしい。何度やっても初期化中にフリーズする。

2009/01/04

今日の角

・スクロール改良
・マップとの当たり判定製作開始
・ubuntu導入
相変わらず復讐を進めている。
まずはスクロールをまともにした。昨日作ったのは常に主人公が画面中央にいる、見た目だけまともで実用性のないスクロールだったのでそれを改良した。それで主人公が画面の一定の範囲から出たら画面をスクロールさせるようにして、システムも汎用性があるものに作り変えた。
次にややこしいのに必需品なマップとの当たり判定の製作開始。特に何も考えずに書いて、時間はかかったがそれっぽくなったが、そこから先のすり抜けの問題で案の定詰まった。調べれば解決法ぐらい出てくるのだろうが、それは何か癪なので車輪を再発明する。

なんとなくubuntuを入れた。適当にいじって普通に使う程度にはできるようになったのだがdmdが動かないのと、windowsのcドライブが開けない。

2009/01/03

今日の移動

・復讐製作再開
久しぶりに製作を再開した。まずはライブラリの仕様変更にあわせて修正。それとマップチップのサイズを32に変更した。このときマップチップの大きさが、一部定数ではなくそのまま16と書かれているソースがあってその修正がややこしかった。マジックナンバーは使わないほうがいいと痛感。なのでいろいろと定数に置き換えたり。
これが製作再開前の手続き。それで製作も進行させた。マップのスクロールで範囲外にでていたのを修正して、マップチップ単位の座標と1ピクセル単位の座標をaliasを使って紛らわしくないように。そして、キャラクターをキー入力で操作してそれにあわせてマップがスクロールするようにした。

久しぶりに触ってコードが読めないかと思ったが暫くいじっているうちにわかってきて安心した。このペースで進めていきたい。明日はマップのスクロールの改善と、できればマップとの当たり判定に着手したい。

2009/01/02

今日のループ

・全方位STG製作中
ロックシステムを改良した。具体的には、ロックボタンを押すとロックの射程内に入っている敵全部を仮ロックして、仮ロックされた敵をロックする。ロックした対象はA/Sキーもしくはロックしている敵を倒すことで他の仮ロック中の敵に切り替える。
これの、A/Sキーで対象を切り替える処理を書いているときに詰んだ。原因は配列のlengthプロパティの型がintではなく符号なしであったことだった。たしかにlengthは負の値をとらないので当たり前といえば当たり前なのだがわかりにくいと思う。あと%演算子の動作が正確にわからなくなって、調べようと思ったのだがあまりに当たり前のこと過ぎて載っていなかった。
結局%演算子を使わずにいちいちキャストすることで解決したのだがうまく書けない物か。

ロックする順番を敵配列のインデックス順から距離の近い順に変えたら全方位STGとして特徴的なシステムは完成。どこまで作りこむかが問題。どうせなら遊べる形にまで作ってしまいたい気もするけれどそれをやっても特に得られるものがない。と、いうわけでリクエストがあれば作る。なければ復讐の製作を再開するなり蘇生のレーザー周りを使えるようにするなり。物理ゲームもそろそろ再開しないといけない。

2009/01/01

今日の平

・新年
・全方位STGプロトタイプ作成
新年記念。http://cid-eccdf3ba5a7e82b6.skydrive.live.com/self.aspx/.Public/nenga.lzh
だいぶ前に作ったものであるのは秘密。何が記念かは知らない。よくわからないバグがあるけれど動くから気にしない。

SSが一段落したので前々から作りたかった全方位STGを作り始めた。以前作ったシューティングテンプレートをベースに進めている。その前に自作D言語SDL+OpenGLライブラリの整理と、FPS管理の修正を行ってすっきり。
今日作ったのは照準の操作と、敵をロックオンする機能。現状では一番近い敵を毎回ロックオンして、範囲内に敵がいなければロックオンを解除するという形。これでは使い勝手が悪いので一番近い敵以外にも切り替えられるような方式にしたいのだが、敵との距離が変化するのでどのようなシステムにすればいいのかを考えている。

昨日出した蘇生についても触れておくと、蘇生の完成期日が5月の末ごろ。そろそろストーリーも書きたくなってきたので5面の作成とストーリー執筆とを並行して進めていく予定。5面ではレーザーを登場させたり、ビットを使う弾幕を出したりといろいろ新しいこともやりたい。あと道中も激しくしないといけない道中なので激しくする。5面の完成は3月中が目標。

とまあ、今年も特に代わり映えなく過ごしている。この一週間ぐらいはこの全方位STGと復讐とをちまちまといじっていようと思う。今年はプログラムを書く時間をPC使う時間中で半分以上の比率にするのが抱負。そうでもしないと復讐が間に合わない。