2007-11-01から1ヶ月間の記事一覧

D○L-T1○○○○

ついでにちょっと検索したらこんなの発見。 http://page19.auctions.yahoo.co.jp/jp/auction/x18525430 MACアドレスとシリアルナンバーの写真が載ってるから流出元割れそうだけど、3万円って、、、。

ICOのアレ

PS2用ソフト「ICO」で使われているらしいlibarcを見てみました。 http://www.onicos.com/staff/iz/release/#libarc 確かにGPLでした。 ぜひともソースコードを公開して頂きたいところです。 サードパーティーがソース公開するとSCEとの契約違反になりそうで…

新ステージ構造考察

新しいステージデータの持ち方を考えています。 最低限必要なのは、 複数ステージ対応 ワープ(土管、扉等) 背景 強制スクロール 一定区間で何度でも出現する敵(画面外から現れるキラーやプクプク等) あたりでしょうか。 下の二つは画面単位で設定を持つ感じ…

まさにバグ

C++

char bug[128]; ::wsprintfA(buf, "%d %d %d", info.nMin, info.nMax, info.nPos);

マップの編集 その4

マップチップ配置処理でマウス入力を捕捉するように変更しました。 差分 マウスボタンが押されたらSetCapture()して、ボタンを離すかWM_CAPTURECHANGEDが飛んでくるまでチップを置くようにしています。 これならボタンを押したままアプリケーションを切り替…

マップの編集 その3

マップエディタに新規作成コマンドを実装しました。 差分 今のところ指定できるのはマップに幅と高さだけです。 上のコードではダイアログボックスから入力データを返すのにnewしたオブジェクトを返しているんですが、SetWindowLongPtrでDWLP_USERにポインタ…

マップの編集 その2

今日は地味な修正ばかりです。 まず、マウスのボタン押しっぱなしでマップチップを置けるようにしました。 差分 今度はWM_MOUSEMOVEイベントで左ボタンが押されていたらマップチップを置くようにしたんですが、「開く」ダイアログのOKを押した直後に必ずマッ…

マップの編集

マップチップの配置とマップの保存を実装しました。 マップチップの配置の差分 マップの保存の差分 マップチップ選択ウィンドウ(char_select_window)で選択チップを変更すると親ウィンドウ(main_window)にウィンドウメッセージで通知が来て、main_windowがマ…

続 マップの表示

昨日の表示方法だとゲーム中の表示とほぼ同じなため、 ブロックの中身が分からない 隠しブロックが見えない 同じ画像の敵を区別できない といった問題がありました。 いろいろ対処法を考えたんですが、今のマップデータの形式に合ったものとして、とりあえず…

マップの表示

マップを読み込んで表示するところまでできました。 action_game_editor 一応、スクロールにも対応しています。 コードの大部分はaction_game.exeからのコピーです。 これらのコードはsvn copyしているので、ある程度弄った後でマージ(&共通化)するつもりで…

action_game_editor

今度はaction_game.exe用のマップエディタを作成することにしました。 というのも、土管や扉のようなワープ装置を実装しようとすると、ステージマップに単なる地形以上のデータを設定する必要があり、現在のアスキーアート状のフォーマットでは表現が困難に…

続 libpng

パレットカラーと透過色に対応しました。 png_loader.cppの差分 libpngにはよく使用されるフォーマット変換用のフィルタが用意されているので、これを使って常に32ビットカラー(BGRA)で読み込むようにしています。 実は昨日のコードにも組み込んではいたので…

libpng

action_game.exeでPNGの読み込みにBoost.GILを使っていたのですが、パレットモードや透過色に対応していないため、仕方なく24/32ビットカラーのみをサポートしていました。 やっぱりこれだと不便なので、直接libpngを呼ぶように書き換えました。 png_loader.…

side_scrolling_routine

横スクロールの座標処理を擬似キャラクタの移動で代用するようにしてみました。 差分 要するにマリオ64のようにカメラをキャラクタ扱いにしたということです。 このために作成したside_scrolling_routineは予め設定したプレイヤーキャラの座標を元にスクロー…

weak_ptr

キャラクタリストの要素をshared_ptrに変更しました。 差分は機械的に置換しただけなので見ても面白くありません。 これで移動アルゴリズムの中で他のキャラクタの動きを監視できるようになりました。 このときshared_ptrのまま保持しているとキャラクタを削…

ファイアボール

これまでは、スクロールアウトしたキャラクタが削除される仕組みを利用して、削除したいキャラクタを画面外に移動させるようにしていましたが、削除対象のキャラクタにフラグを立てるようにしました。 差分 これで昨日の激重現象は改善されました。 また、昨…

ビーム

ロックバスターのように直進するだけのビームを撃てるようにしました。 差分 デカの状態でアイテムを出すと、ミルクの代わりにカプセルが出て、カプセルを取ると頭が赤色になり、パンチの代わりにビームを撃てるようになります。 ビームが敵に衝突すると、ブ…

リフト用コードをマージ終了

ブロックすり抜けも再実装完了して、ようやくマージ作業終了です。 差分 その他、バグ修正。 下りリフトに下からぶつかったときにキャラクタがリフトに吸い付いていたバグを修正 後ろ向きの攻撃範囲が間違っていたのを修正 明日から新機能の実装に移ります。…

リフト用コードをマージ中 その12

残作業をほぼ消化しました。 敵をブロック越しに突き上げて倒す処理を再実装 敵同士が衝突した場合に折り返すように修正 パンチ、滑り降りでの敵への攻撃を再実装 隠しブロックを再実装 隠しブロックは静止した見えないキャラクタとして配置しておいて、on_c…

リフト用コードをマージ中 その11

ミスしたときの効果音とモーション、敵の踏みつけまで再実装できました。 ミス差分 踏みつけ差分 今のところ、衝突(on_collide_player)/踏み付け(on_stomp)時のイベントに何を設定するかだけで判断可能なので、もしかするとenemy属性はいらないかもしれませ…

リフト用コードをマージ中 その10

パワーアップとパワーダウンを再実装しました。 パワーアップ差分 パワーダウン差分 敵からダメージ受けるのに、こちらは踏めないのでテストプレイがやりにくいです。

std::list::sort()

C++

昨日、Zソートに使ったstd::list<T,A>::sort()ですが、安定(stable)ソートじゃないとマズいことに気が付いて規格を確認しました。 23.2.2.4/31 Notes: Stable: the relative order of the equivalent elements is preserved. ISO/IEC 14882/2003 セーフ。 std::li</t,a>…

続 ウィルスバスター2008

action_game.exeがウィルスバスター2008からDLLインジェクションで怒られる問題で、さすがに警告がうざくなってきたので調査しました。 再現する最小コードを調べたところ、dinput.dllをロードするだけで再現しました。 #define DIRECTINPUT_VERSION 0x0500 …

リフト用コードをマージ中 その9

Zソートするかどうかの目安として、FPSを表示するようにしてみました。 差分 FPSを見てみると30FPSぐらいしかでてなくて、コードを見直したらフレームが全く更新されていない場合でもレンダリングしていて、V-sync待ちで時間を無駄に消費していました。 FPS…

リフト用コードをマージ中 その8

コインブロックとアイテムボックスを再実装しました。 コインブロックの差分 アイテムボックスの差分 ついでにスプライト情報のメンバ変数がごちゃごちゃしていたので、キャッシュクラスを作り、ステージマップと共にgame_systemのメンバにしました。 sprite…

ブロック破壊 その4

ブロックを叩いて壊せるようにしました。 差分その1 差分その2 まだデカ棒人間になれないので、チビ状態で壊せるようにしています。 写真はバグって1行分連鎖してブロックが壊れている図です。 最初は敵でも誰でもブロックを壊せるようになっていたため、…

リフト用コードをマージ中 その7

予定通り、残りの敵の移動ルーチンも新形式に移行させました。 turn_routine.cpp hop_routine.cpp hop_step_jump_routine.cpp hop_step_jump_routine以外は状態を持たないのでコルーチンではなくなっています。 どれもすべてspeed_routine用です。 #今、SVN…

リフト用コードをマージ中 その6

プレイヤーキャラもキャラクタリストに追加して、リフトの移動ルーチンを新しいバージョンに置き換えました。 キャラクタリスト追加差分 リフト対応差分 これでようやく動くリフトに乗れるようになりました。 以前迷っていたリフトの横幅は、天秤リフトや水…

POV

今日はあまりやる気が起きなかったので、悩む必要のない単純作業としてPOV入力への対応をやりました。 今日の差分 これで360コントローラの十字ボタンでも移動できるようになりました。 通常のジョイスティックの入力がX/Yの2軸で絶対座標を報告するのに対…

リフト用コードをマージ中 その5

今日は坂道関連バグは後回しで他のバグを修正してました。 Bダッシュで穴を飛び越えられないバグを修正 ジャンプ中にブロックにかすったときにブロックを避ける処理を追加 Bダッシュで穴に落ちていたのは、穴の上に移動したときに既に落下が始まっていたから…