2007-01-01から1年間の記事一覧

agc-yh

キャラクタの定義を外部ファイル(agc-yh形式)に移動しました。 差分 agc-yhファイルはgame_character_classをbinary_oarchiveで出力した後に、例によってzlibで圧縮をかけています。 起動時にカレントディレクトリのagc-yhファイルを全部読み込んで、UUIDと…

続 hamigaki::uuid::serialize()

Boost.Uuidのコードと見比べて、実装レベルをprimitive_typeすることで昨日の問題を解決できることに気が付きました。 #include <boost/serialization/level.hpp> BOOST_CLASS_IMPLEMENTATION(hamigaki::uuid, boost::serialization::primitive_type) としておくと、アーカイバがテキストの</boost/serialization/level.hpp>…

game_character_class

キャラクタの定義をgame_character_classにまとめて、Boost.Serializationで入出力できるようにしました。 差分 bitsetはBoost.Serializationが対応していないので、to_ulong()でunsigned longにして出力しています。 unsigned longで足りるサイズなので良か…

hamigaki::uuid::serialize()

だいぶ体調も回復したので、今日は少しコーディングできました。 action_game.exeのキャラクタ定義はBoost.Serializationを使って書き出そうと考えているので、hamigaki::uuidをBoost.Serializationに対応させました。 差分 最初に書いたコードはこうでした…

キャラクタエディタ

今日は体調が悪くて、キャラクタエディタのダイアログしか出来ませんでした。 設定項目が多いため、妙に縦長になってしまいました。 あとで複数のプロパティシートに分割しようと思います。 とりあえず今日は寝ます。

新stage_map その2

マップエディタもデータの持ち方を変更しました。 差分 これでデータ上はドット単位の座標を扱えるわけですが、問題はこれをどう編集するかです。 単純に32ドットの縛りをなくすだけだと、 マップチップの座標が正確に一致しなければ削除できない マップチッ…

新stage_map

見た目は全く同じですが、action_game.exeのマップデータの持ち方をココの形式に変更しました。 差分 これに昨日コンバートしたagm-yhファイルを読み込んでみたところ、Y座標が16ドットずれていました。 というわけで保存処理も修正。 差分 一旦エディタで読…

agm-yh

昨日のリンクエラーはBoost.IostreamsのJamfile.v2でusage-requirementsが設定されていないのが原因でした。 仕方ないので、Hamigakiライブラリ側のboost-libプロジェクトに足りないusage-requirementsを追加しました。 差分 これでバイナリ形式(拡張子=agm-…

save_map_to_binary()

う〜ん、どうしても汎用的にしようとし過ぎてしまってまとまらないので、プラグイン化は後回しにします。 できるところから少しずつ直していくことにしました。 ひとまずマップの内部データ形式はそのままで、バイナリ形式での出力を書いてみました。 stage_…

続々 新ステージ構造考察

昨日の続きです。 キャラクタの種類をUUIDで表現すると、キャラクタを作成する関数はこんな感じになると思います。 boost::shared_ptr<game_character> create_character(game_system& game, const hamigaki::uuid& type); 座標等の設定はどのキャラクタでも同じなので引数に</game_character>…

続 新ステージ構造考察

おおよそ考えがまとまってきました。 マップチップ一個分を、 struct stage_component { int x; // 1ドット単位 int y; // 1ドット単位 hamigaki::uuid type; // キャラクタの種類 std::pair<int,int> x_y() const { return std::pair<int,int>(x,y); } std::pair<int,int> y_x() const </int,int></int,int></int,int>…

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…