備忘録とか実験とか -3ページ目

モデリングに挑戦

土曜日の朝から今までモデリングに挑戦してました。

もうね、いままで「センスがねぇwww」とか軽口を叩いてきた数々のゲームの開発に携わったモデラーの皆様に深くお詫びいたします。


モデリングとかテクスチャ描きとか、正直なところこれほどまでに忍耐力を必要とするものだとは思いませんでした。不動の構えを見せる頂点。暗殺者の如く身を潜める重なり面。一振りすればたちまち回りを巻き込んで崩壊の序曲を奏でる究極のナイフ。極座標の彼方で悲鳴を上げるテクスチャUV。ぬぅぅぅぅぅぅぅぅぅぅlだぅありゃぁあぁぁぁぁっぁぁぁあぁあっぁぁ!!!!!!!本当に気が狂うかと思いました。


まぁ、そんなこんなでも何とか形にしたのですが・・・・

なんつーか。自分で言うのもなんだけど。センス無いねwww

それなりにゲームやってきたはずだし、色々なものを見てきたはず。

まったく何の糧にもなっておりません。ただ時間を浪費して安易な評論で小さな小さな水溜りの優越に浸っていただけですな。もうね、死んでしまえばいいや。モデラーって人はすげーって思ったよ。心底。







後

使用ツール:メタセコイア(本来モデリングする人ではないので、シェア版を機能制限付きの未課金状態で使用)

ポリゴン数:△2266

弾丸と地形の衝突判定計算回数

今朝方、ふと弾丸と地形との衝突判定の計算回数を大幅に減らせるお手軽な方法を思いついたので、ランチタイムをつかって実装してみました。

結果は上々で、10分程度で実装出来る簡単なプログラムでしたが、かなり計算を省略することが出来たようです。以下実装内容。


■弾丸の発生周りの改修

1.弾丸の発生座標から弾丸が減衰を始める(または消失する)座標までの線分を求める。

2.1で得た線分を使って衝突判定を行う。

3.衝突があった場合、1フレームあたりの弾丸の移動ベクトルをもとに、衝突する座標までのフレーム数を求める。また、フレーム数を1だけ減算し、それを衝突カウントとする。(衝突が無い場合は弾丸の終点など使う)

4.3で得た衝突カウントを弾丸クラスのメンバで保持できるようにする。


■弾丸の移動周り

5.衝突カウントを0になるまで毎フレームデクリメントする。

6.今まで衝突判定を行っていた部分に「衝突カウントが0である場合」のみ衝突判定を行うように変更する。


念のため簡単に説明しておきますと、この方法は「発生した時点で消滅が予測できるものは、その消滅の直前まで衝突判定を行わない。」という感じのものです。


従来の方法だと、発生から消滅までを常に監視し続けるため、10フレームで消滅する弾丸は10回の衝突判定を必要としました。ですが、今回実装した方法であれば、最初と最後の2回の衝突判定ですみます。また、この方法は移動フレームが10フレームであろうが100フレームであろうがその衝突判定の回数は変わりません。もし、重力などによる減衰が無い弾丸であれば、数字をしっかり検証してみたら最後の衝突判定を省いて1回ですむかもしれません。


さてさて、えらそうに講釈たれてみましたが、もしかしたら「そんなん当たり前のことじゃんwwwww誰でもやってることだしwwwww」ってなことかもしれません。自分は今朝の通勤電車内でこれを閃き、思わず「おぉっ?!」っとヘンな声だしてすがすがしいほど冷たい視線を集めてみました。

XNAをいじってみた

ここ一週間仕事を放ってXNAを色々触ってみました。

 

とりあえず開発環境が無いとどうにもならんので、いわれるがままにVC#やらXNAやらをインスコ。

開発環境が無料でそろうってのは凄いことだね。

 

さてさて、環境も整ったので、いざプログラミング。

で、その成果物↓


戦闘部分の動作画像  戦闘部分の動作画面

いやー、ものすごく省略した感は否めないのですが、実のところ、あまりXNAらしいことしてないので書くこともサッパリ無いのですよ。XNAらしいことって何?って聞かれても困ってしまいますがw

 

とにかく、いじってればそのうち何か見えるものもあるだろうと思ったので、このままネットワークゲームに発展させてみようと思います。

 

当面の課題は、XNAやC#そのものより、弾丸やキャラクターの移動で使う衝突判定をもう少し高速化かなぁ。今は「壁専用」「地面専用」「弾丸とカメラ専用」という3つのXファイルから判定をそれぞれでとって計算回数を減らしてみてるんだけど、いかんせん実用に耐えると思えない・・・。単純にPCのスペックが低いってのもあんのだけんどもねwまぁ、プログラムなんてかじった程度にしかやったことないし、そのうち何か閃くくともあるでしょう。多分。

 

ちなみに、当たり判定に使っているのは↓みたいな感じのXファイル。

みんなどうやってのか気になるなぁ。

 

■レンダリング用のXファイル(1716△ポリゴン)

レンダリング用

■地面用のXファイル(104△ポリゴン)
地面用


■壁用のXファイル(638△ポリゴン)

壁用


■弾丸とカメラ用Xファイル(1716△ポリゴン)

弾丸とカメラ用

めんどかったので描画用のやつそのまま使ってたりする。

だもんで、弾丸を20発程度とばすとかっくんかっくんですますハイw

いいかげんちゃんと作っておこう。