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

衝突判定できた

たいしたことない部分のはずなのだが、いろいろとパターンを網羅していると結構時間がかかってしまった。 ところでゲームの1フレームごとのミクロな処理って結構細かいところが気になったりする。 例えばこの図のように。 バーでボールを跳ね返す場合だが、…

衝突判定実装中2

まだ未完成。 1フレームで横辺と縦辺に両方交差する場合(ブロックの角にちょっと交差するケース)だと先に交差してる方の辺で反射方向を決めないといけない。交点は求められるから、ボールの始点から交点までの距離で判定すればいいか。 あとバーの中央当て…

衝突判定実装中

1フレーム前の座標を保存して線分交差判定で実装したけど、時間なくてあまり進まず。貫通問題とかまだ残ってて不完全。 ところで今はz座標は0固定を前提にしてるので、見た目が3Dなだけで何も3Dっぽい処理とかしてないのよね。球と直方体の衝突判定とかちゃ…

衝突判定仮実装

未完成だがオブジェクト同士の衝突判定を実装。 とりあえずボールがバーやブロックに当たると跳ね返って、ブロックは消えるようにした。 バーの太さの領域にボールが入るとy軸速度を反転するようにしているだけなので、1フレームで領域から抜け出せないと振…

ここからが本番

いよいよゲームに必須の処理である衝突判定に入る。 今まではメインループのあたりにバーやボールの座標の計算なんかをすべて書いていたが、流石に長くなってきたのでそれぞれのオブジェクトをクラスにまとめる。すると、オブジェクトの座標などはメンバ変数…

ジョイスティック入力が・・・

バーを動かすためにジョイスティック入力の実装。 前書いたコードをそのまま移して、動くには動いたんだが・・・バックグラウンドから戻したときに動かなくなる。デバイスロストってやつだ。 前はちゃんと戻せてたのに、どっか抜けたかな。 ちょこちょこコー…

ウィンドウプロシージャとは・・・

昨日のバグについて説明しなおすと、デバイスロストを復旧するようにデバイスのAcquireDeviceメソッドを呼んでもデバイスが戻らないだとか、それどころか落ちるという問題。 原因としては、AcquireDeviceを呼ぶ場所がウィンドウプロシージャでWM_ACTIVATEを…

オブジェクトのモデル製作

昨日はこれ書いてる途中で寝てしまった。コードを載せると長くなって書く時間も食うのでやめた。 今日はブロック崩しに出てくるオブジェクトのモデリング。 まずはボールから。 メタセコイアを起動して「基本図形」で球選んでOK。おわり。 しかしそれだけだ…

製作開始

3Dブロック崩しの製作開始。の前に昨日描こうと思ってたラフ画を描いた。 ラフすぎるけど、この程度のゲームなら十分だろう。トラックボールだとペイントソフトがすごく描きにくい。ペンタブがほしいところだ。さて、まずはウィンドウだけを出すプログラムを…

3Dブロック崩しを作ろう

「毎日少しずつ」の意志が、明日の大学での発表準備でさっそくくじけるところだった。「簡単な3Dゲームを作る」という目的を立てたので、どういうゲームにするか考えていたけど、3Dゲームを作ったことがないので無理に想像で仕様を決めるのが怖い。そこで仕…

記録開始

試しにこれから毎日ゲーム開発の作業を何かしらやって、進捗の記録をつけてみることにした。基本的にまとまった時間が取れていないと作業を開始する気にならない性分なのだが、じゃああえて「毎日少しずつ」というスタンスにするとどうなるかなと。この方が…

携帯変えた

情弱っぽいけどいまさらWILLCOM 03にした。QMAIL3の自動受信の設定めんどくさすぎ・・・

階層型メッシュを用いるオブジェクトを複数表示

プロペラを回すとか、腕を動かすとか、メッシュを部分的にアニメーションさせたいときには階層型メッシュを使います。要はD3DXLoadMeshHierarchyFromX()で読み込むやつのことで、階層関係を持つ「フレーム」にパーツごとのメッシュが格納されています。 また…

アニメーションコントローラのトラックスピード

3Dゲームの素材をどうやって作ろうかという問題は、メタセコイアでモデルを作ってRokDeBone2でボーンとアニメーションを入れ込むという方法でとりあえずできそうです。それで作ったXファイルを読み込んでアニメーションさせるときに、スピードがどうなるのか…

で、スキンメッシュの衝突判定をOBBTreeで

やりました。コピペで。 カオスになった。 で、ここの情報で解決しました。 ぶっちゃけこの情報がなかったら一生判らなかった自信がある。 DirectX開発者とマニュアル執筆者は猛省すべき。 ばっちりだね。 でも正直こんなに分割いらないね。

スキンメッシュ、衝突判定、OBBTree

キーワードだけ並べて中身の話はありません。ざまぁ。 だって俺も同じ目に遭いまくってるんだもん。しかし実際の話めんどくさすぎ。 世の中の人たちはよくもまあこんなの実装しますね。ほんま尊敬するで・・・ ほんとは実装してないんじゃない?コピペなんじ…

スキンメッシュ意味不明すぎ(2)

スキンメッシュに関してはマルペケは珍しく参考にならないので(なんかボーン行列とかで独自のクラス構築をしてるけどその説明が全く抜け落ちててわけわかめ)、SDKサンプルとかこことかとりあえず丸写しでやってみる。というかいろんなところが参考文献に挙げ…

スキンメッシュ意味不明すぎ

スキンメッシュ意味不明すぎ

DirectXプログラミング(2)

しこしこと俺専用ミドルウェアライブラリの構築中。 しっかしこれに時間かけすぎると本題のゲーム作りに入れなくて本末転倒なんでもっと速くやれ俺。 新しくできたもの 描画 2D絵の描画(テクスチャフィルタリング可) 消失リソース管理 サウンド oggの再生 フ…

ゲーム用フォント

ゲームを作ることを考えるときにいつも悩みの種になるのがフォントである。そのゲームの世界観を表現するのに一役買うわけだからなるべくならオリジナルのものを作りたいが、そんなスキルも時間もないし、じゃあ金出して買おうというのもなかなかできず、か…

ウィンドウがバックグラウンドにあるときも音楽を鳴らす

DirectSoundのデフォルトでは、アプリがフォーカスを失うと音がミュートされる。バックグラウンドにあるときも再生されるようにするには、各セカンダリバッファを作成するときに指定するDSBUFFERDESC構造体のdwFlagsメンバにDSBCAPS_GLOBALFOCUSフラグを設定…

OggVorbisファイルの再生

VC2005で。 まずここで "FOR DEVELOPERS" から libogg と libvorbis を落とす。 libogg\include と libvorbis\include をVCのインクルードパスに設定。 あとは、 libogg をビルド libogg.lib をリンクして libvorbis をビルド libogg.lib libvorbis.lib をリ…

DirectXプログラミング

いいかげんうだうだ言ってる時間もなくなってきたのではじめました。 とりあえず俺専用ミドルウェアライブラリを作成中。 現在できたもの 描画 Direct3Dの初期化 デバッグ用フォント表示 サウンド DirectSoundの初期化 waveファイルの再生(ストリーミング・…

バージョンうp

Unlimited Fireworks 1.03を公開しました。 ダウンロード 変更点 ・FPSの調整が正しくなかったのを修正 ・垂直同期を切るときに切れてなかったのを修正

まだタイマによるFPS調整の話

なんか違う。 タイマがms単位でしか時間を取得できない以上、1フレーム=16.666…ms の小数点以下の誤差を補完することなど原理的に不可能だ。時間を3倍にすればそれは当然3の倍数になるので、スリープをかけるときに3で割れば相殺されてしまう。前のコードで…

バージョンうp

Unlimited Fireworks 1.02を公開しました。 ダウンロード 最新版をどうぞ。 変更点 ・FPSの調整が正しくなかったのを修正 ・起動メニューを作成 ・「強制的にタイマ同期する」オプションを追加

FPSとかの続きの続き

以前の話で prevTick = nowTick とする方法だとFPSが安定したとか書いてたけど、ふらつく原因はそれ以外のところにありました。んでもってその方法だと他のプロセスで高負荷をかけるとゲームがゆっくり簡単になっちゃうのはやっぱだめだろうってことで再修正…