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使う時間中で半分以上の比率にするのが抱負。そうでもしないと復讐が間に合わない。