スポンサーサイト

--年--月--日
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

XNA:バグ取り&自機関係の作業

2007年11月30日
マップ関係のコードが大方片付いたので、ビルボード表示時のバグ取りと自機関係のコードを書いています。

2P側のビルボードだけ向きが怪しかったのですが、ビルボードのワールドマトリクスを作る時に、常に1P側を向く値を渡していたので、2P側だけ向きがズレていた(場合によっては裏向きになって全く見えない時があった)ので、1P画面用と2P画面用の2つワールドマトリクスを用意して対応しました。画面分割を実装した時に気が付くべきでした。

今は自機関係のコードを書いています。
残りのライフ値にあわせて煙をが出る効果を実装しました。テクスチャと数値的な部分は仮なので、ぎこちない煙の出方なのですが、とりあえず一段落。
あと、破壊された時に派手に爆発するようにしました。3回ほど大爆発して消滅します。

作業残件も残り少なくなってきました。あと残っているのは
・弾発射時のマズルフラッシュを表示させる
・自機の慣性移動
・照準の表示
と、こんな感じです。
マズルフラッシュと照準はテクスチャを用意してしまえば、終わったようなもんですが、自機の慣性移動については、イイ感じの慣性感が出るまで試行錯誤という感じです。

XNA2.0が出る前に仕上げようと思っていたのですが、この調子で行けばなんとか間に合いそうです。(っていうか、本当は夏場に完成させるつもりだったのですが、、、)
ともあれ、もう少しで完成なので、例のごとくヌメヌメとやっていこうと思います。
スポンサーサイト

XNA:当たり判定 再び

2007年11月28日
以前、球の当たり判定が異様に簡単に出来たという日記を書きましたが、今回は箱(Box)の当たり判定についてです。
XNAには当たり判定(コリジョン)用の型がありますが、今回使うのはBoundingBox型です。
MinとMaxの値を設定して箱の大きさを設定し、あとはIntersectsメソッドで相手の箱を指定してやれば、TrueかFalseで結果を返します。

だ が 、 こ こ か ら が 本 題

今回は球×箱の判定を取ります。
自機のタンクは球でコリジョン情報を持っています。
対する箱はマップ上にある障害物です。
それぞれ、コリジョンの範囲値を与えておきます。
そして、、、

if(Sphere.Intersects(box) == true){
//HIT
}
else{
//not hit
}

以上!
各種コリジョン型のIntersectsメソッドはオーバーロードによって、異なったコリジョン型を指定できます。
球×球、球×箱等など、色んな組み合わせの当たり判定が出来ます。
「Boundingなんとかかんとか」みたいな型名が色々あるので、一度ヘルプリファレンスを参照してみてください。

ゲームを作る上で、当たり判定で足が止まってしまう方は結構多いと思いますが、XNAではその辺りが比較的楽に突破できるのではないでしょうか。

XNA:ソースコードの整理整頓

2007年11月26日
ソースコードの整理をしています。
タスクのノードが持っている各データを汎用的かつシンプルにまとめたり、各クラスのカプセル化を企ててみたり、結構スッキリしたソースコードになったと思います。
結果を急ぐあまり変数のスコープや寿命がめちゃくちゃで、結構酷い有様でした(汁
いわゆる「美しくないソース」というやつです。

とりあえずタイトル画面部分に関しては、若干微調整することになると思いますが一応の完成にこぎつけました。
次はマップ関係の残件を始末していきたいと重います。
残件は
・自機×マップの当たり判定
・ゲーム開始時・規定ラウンド終了時に行う、ランダムマップ選択
・自機の復活位置データ(リスポーン)の追加

毎度のごとく、地味にヌメヌメと作業します。

XNA:タイトル画面作りこみ

2007年11月23日
タイトル画面には、背景としてマップのオーバービューを表示する事にしているのですが、毎回同じマップが表示されていたのでは面白くありません。
やはり、タイトル画面に来る度に違うマップが表示されるのが普通だと思うので、そうなるようにコードを書きました。
ゲームを起動したときと、ゲーム中からタイトル画面に戻る時にランダムでマップ番号を選んで、タイトル画面に切り替わった時にそのマップを表示してるだけなので、楽なもんです。
XNA:

ついでに、単純ではあるのですが、マップを一個作成しました。
「マップ上の障害物との当たり判定」をやっとく必要があるので、それっぽいマップが必要だったのです。
即席で作ったわりには今までで一番イイような気がしないでもないです(汁
タイトルも「タイトル未定w」から「XNA TANK」に差し替えました。

あと、操作説明画面も仮にではあるのですが実装しました。
これは、もう少し作りこんで完成度を高める必要性アリです。


XNA:作業残件&タイトル名決定

2007年11月22日
完成したゲームを妄想してたら、作らなければならない項目が10出てきました(汁
すっかり忘れていたのですが、今はマップの壁にしか当たり判定が無いので、マップ上の障害物との当たり判定を考慮してやらねばなりません。
コリジョン情報を持たせるのに、簡潔且つ楽な(ココ重要)方法を考えなくていけません。
結局、面×線(Ray)で判定するのが楽かと思ったのですが、XNAライブラリのRayが「モデルとの交差」と書いてあるようなので、ポリゴン単位の交差をしてくれるかがまだわかりません。要調査です。

マップモデルごとに、コリジョン情報を書いたテキストファイルを用意して読ませてもいいのですが、複雑な障害物のあるマップになると、それこそコリジョンエディタを作らないと効率が悪くなりそうで、、(HSPでゲーム作ってた時は、マップエディタ兼コリジョンエディタを自作するハメになった)

手間かかりそうな項目は後回しにして、タイトル画面周りの残件から地道に仕上げて行こうと思います、、、、、嗚呼、先はまだ長い

ちなみに、今作っているゲームのタイトルは「XNA TANK」と名づけることにしました。
何のヒネリも無いのですが、見逃してください><

XNA:アニメーションテクスチャ その2

2007年11月21日
やっとこさ、アニメーションテクスチャをビルボードに貼ることができました。
とりあえず求めていた感じの物が出来上がったという感じです。
XNA_20071121.jpg

微妙にビルボードが正面を向いてくれていない感じがしたので、何故にと思って見直していたのですが、どうもビルボードのワールドマトリクス作成時に問題があるっぽいです。

最近、仕様上問題アリな部分がちらほら見えてきました。
半ば強引に作業を進めているので、「まっすぐ立っていないビル」っぽい感じになってきて、いつ倒壊するかと思うと結構恐怖です。

XNA Game Studio Japan 2008 Spring Contest

2007年11月12日
「XNA Game Studio Japan 2008 Spring Contest」という国内向けのコンテストが行われるそうです。
応募期間は11月15日~2月15日の3ヶ月間。
一般部門と学生部門があり、グループでの参加も可だそうです。

こないだ秋葉原でイベントがあったそうですが、告知から開催まで一週間しか無かった強行イベントでしたが、今回はイベント開催まで3ヶ月です。
この間に宣伝などでXNAが世に認知されるとええな~と思います。

今作ってるアレが間に合えば出品したいとは思うのですが、何のヒネリも無い戦車ゲームなので、少し気が引けます。
どの道「シェーダー全開で凄いキレイです」的なテクニカルデモを作る気は無いので、完成した「ゲーム」として出品できるように仕上げていきたいと思います。
てか、BasicEffectでテクスチャの抜き色指定ってどうやるのよ(><)

XNA:アニメーションテクスチャ

2007年11月09日
アニメーションテクスチャの実装を先送りにしていて、先日やっと作業が一歩進みました。
とは言っても、ビルボードにする1枚板モデルのテクスチャを張り替える処理が出来ただけですが(汁

今問題になっているのは、テクスチャの抜き色です。
スプライトだとColor(255,0,255)が抜き色になっていてすぐに出来たのですが、テクスチャだとそうは行かないようです。
ビルボードのサンプルソースでは、ピクセルシェーダーを使ってやっているような感じなのですが、今はBasicEffectのみでやって行きたいので、何か手段が無いかと情報を散策中です。

抜き色の問題がクリアできたら、ビルボード用のクラス(爆発エフェクトのクラス)を作って、速攻でタスクのノードに追加できるのですが、下調べにもう少し時間がかかりそうです。
ぬぅ~ん、、、歯がゆい。

XNA:操作デバイスの割り当て

2007年11月07日
画面分割が出来たので、すぐさま2P側にコントローラーを割り当てて操作できるように修正しました。
とは言っても私はXBOX360パッドを一個しか持っていないので、2P側はキーボードを割り当てています。
プレイヤー(タンク)のタスクを発生させる時に、そのタンクを操作するデバイスを引数で設定するように修正しました。
今後は4つのパッドとキーボード(と将来的にCPUも)を設定可能になり、少しだけ汎用性が高くなった気がします。

後残っている作業は、、、、、
・移動速度や弾のダメージ計算などのゲームバランス部分
・アニメーションテクスチャ付きビルボードの実装
と、もう少しで一段落です。地味にジワジワと仕上げて行こうと思います。

XNA:分割画面描画

2007年11月03日
一ヶ月ぶりの更新です(汁
当初、プレイヤー対CPUの単純な対戦を考えていたのですが、私の知識不足でCPUアルゴリズムを実装させるナイスでグゥレイトな手段が思い浮かばず、一向に完成形にたどり着けませんでした。
で、一時的な解決策として、プレイヤー対プレイヤーの方を先に実装する事にしました。
ゲームの性質上、画面分割対戦になります。早速XNAのヘルプドキュメントを漁って分割画面描画を実装しました。
XNA:画面分割

と、上の画像のような感じで左右に分割しています。
思ったより簡単に出来たので、もう一工夫すれば4分割画面も出来そうな気がします。

今はプレイヤー1(左側画面)だけ操作できるのですが、プレイヤー2用の入力処理も書けば「一応」対戦は出来ます。(嗚呼、、もう一個コントローラー買う金が、、、、)
まだ、ゲームバランス等は皆無なのですが、完成に一歩近づいた感のある進捗でした。

 | HOME | 

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。