Yo.'s Game Development Diary
ゲーム開発日誌を公開します。ご意見、ご感想などはこちらのBBSもしくはyo@namikaze.orgまで。
開発以外の日々の雑記帳はこちらへ。切り分けが難しいんですが。
|diary index |<-2000年10月分 |2000年12月分->
忘れがちな設定でも、しっかりやっておかないと、ビデオカードによっては確実に動作が違うので注意です。
例えば、テクスチャのカラーキーによる抜きですが、SetTextureStageState で拡大、縮小時の動作の設定をD3DTFG_POINTに しないと、ビデオカードによってはアンチエイリアシングがかかって抜けなくなります。ちょっと試しただけでも、
TNT2 Ultra + detonator 3 driver →アンチエイリアシングがかかるので抜きが不完全
GeForce2 MX →問題なし
ATI Rage Pro →問題なし
となり、Default の動作が異なることがわかります。αビットを含んだテクスチャを使えば良いのではという話もありますが、それはそれでまた別の話なので置いといて。
私が結局 D3DX を選択しなかったのは、ひとえにソースコードが無いということだ、と以前書きました。D3DX は、恐らく、私の書くコードよりはバグが少ないとは思われますが :-) RM と同様にいつ切り捨てられてもおかしくないです。それを言ったら Direct3D もこの先どうなるかわかりませんけれどね。MFC ですら絶望的なソースコードが提供されているので仕事に使えますが、D3DX はソースコードが無いので先行きが不安です。D3DX の母体となったと思われるライブラリはソースが公開されていたようですが…詳細不明。
ソースコードが無いものは使わないという選択をし、さらに私が選択したのは、Direct3D に依存した型などを使わずに、全て自分で書くという方法です。例えば、D3DxxVERTEX という型がある日突然なくなっても困るわけです。結局は、現在のDirect3Dの仕様に合うように書いたり、同じことを書くことになってしまうのですが、変更に対しては柔軟です。ブラックボックスの例の代表格の RM に完全に依存して作っていて、結局のところソースを捨てざるを得ない作りになってしまったことに対する教訓でしょうか。
しかし、そういう書き方をしたところで、結局現在のコードを何年も使いまわせるのか?といったことには若干の疑問があります。結局は趣味の問題なのでしょう。例えば、D3DX で作ってみて、ソースが無くて不安なら D3DX が提供する関数仕様にあわせたものを自前で書くとかね。使えるものは使ったほうが結果が早くだせるとは思います。この、結果を早くだすというのが実はかなり重要な要素だったりするので難しい問題だと思いますが。それから工数もね。
いまだに低レベルなところでとどまっていますが、現状、 LightWave[6]のオブジェクトを読んで、Weight Map で設定された特定頂点を動かすようなことをしてます。 この記述を見たら何をやろうとしているかがわかってしまいますね。
先は長いです。プログラムにハマったらシナリオに手をつけるようにしました。 いつまでもあがらないのは流石にマズいんで。
日誌というか月報のような感じになっていますが、気をとりなおして。
SDK のフルセット版がリンク切れてたりしていましたが、特に混乱もなく FlashGet でダウンロード完了。
DirectX7 向けに書いたソースは、DirectX8 の SDK でコンパイルするときにいつもの呪文が必要なので注意ですね。
問題となるのは DirectInput で、CreateDirectInputEx を使っている人は、 dinput.h を include する前に #define DIRECTINPUT_VERSION 0x700 してください。って、dinput.h に書いてありますが。ハードウェアのサポートがないと、ことごとくDirect3Dのサンプルが動かないですね。
深く静かに、ゆっくりと進行中です。結局今年は何も出せませんでしたが、まあ来年には何かお見せできるでしょう。それまで覚えていてくれると嬉しいです。 んで、あちこちで言ってる気もしますが、シューティングゲームではありません。D3DXを使うとかなんとか言っていましたが、ソース公開してないライブラリは使えんってことで自前でやってます。
1 年 に1 作とか、半年に 1 作が如何に難しいかを痛切に感じてます。その壁はなかなか破れないですねぇ。時間かかりすぎ。ちなみにイディナロークは去年のプロダクトです。(^^;来月になったら考えます。