同人ゲーム制作日誌
同人ゲームの制作過程を記録していきます。
ゲーム制作日誌 2009.11.25:エロゲへのいざない2
昨日、お断りしたエロゲの件だが、先方がソフ倫の審査受ける予定なので心配ないとのこと。そこまで言うならやろうかなという気になってきた。ので、一応おkのメールを出した。いくつか気になるところもついでに質問してみた。回答はまだ無いけど。あと、今回のプロジェクト用にメルアドを用意した。今、メインで使ってるアドレスはスパムまみれで使いようがないので。Yahooにしたけど、Gmailの方が良かったかな。どっちでも変わんねーけど。使い慣れたYahooでいいか。さて、これからどうなるか楽しみだな。就職決まれば少しペースが落ちるからなあ。心配の種ではあるけど。決まるのか!?
ゲーム制作のほうは、ちょっと用事があって出かけていたので進捗なし。というかこの話が終わるまで凍結かな。
モンハンは今日から入魂祭。なるべく頑張ろう。前みたいに1日中はできないから、1000魂目指して頑張るぞ。とにかくレウス回し。ライトガンになって、最速6ラスタで討伐できるから、かなり効率UPした。クシャが10分討伐できればそっちやるんだけどな。ソロじゃ無理だなあ。
ゲーム制作のほうは、ちょっと用事があって出かけていたので進捗なし。というかこの話が終わるまで凍結かな。
モンハンは今日から入魂祭。なるべく頑張ろう。前みたいに1日中はできないから、1000魂目指して頑張るぞ。とにかくレウス回し。ライトガンになって、最速6ラスタで討伐できるから、かなり効率UPした。クシャが10分討伐できればそっちやるんだけどな。ソロじゃ無理だなあ。
ゲーム制作日誌 2009.11.24:エロゲへのいざない
昨日の続きで法線関係。接線と従法線の生成できた〜。Xファイルを読み込んだときに、それらの記述がないと、構造体にバッファが作られないのができない原因だったらしい。CloneMeshするときに、それらの情報を与えてやると、バッファが確保されるようだ。で、接線と従法線のCrossをとったらうまくいった〜。逆ベクトルにしないといけなかったけど、ちゃんと垂直な法線を作ることができた。あとは太らせるための法線をつくるだけ。で、その辺の実験してたらいきなりフリーズ後ブルースクリーン、強制再起動。どうもMesh構造体にNormalを2つ作ってGPUに値を渡したのが原因のよう。一気にやる気↓。今日はこの辺にしとくか。
あと、てつさんに向けて、某エロゲサークルから制作協力の依頼があったとのこと。どうも3DダンジョンRPGのシステム部分を担当して欲しいということらしい。てつさんは2D専門だから、わしにお鉢が回ってきた。しかーし、わしは児ポ法改正案の可決を危ぶんでいて、あまりエロゲには関わりたくないのです。持ってるだけでタイーホなのに、作ったりしたら(((((((( ;゚Д゚))))))))ガクガクブルブルな訳。Winny作者の吊るし上げ見てもわかるけど、違法性がどうたらとか関係ない。体制側が気に入らなきゃなんとしてでも叩くというのが今の日本の惨状。末期症状ですな。ということでお断りの文面をしたため、てつさん経由でメールすることに相成りました。
あと、てつさんに向けて、某エロゲサークルから制作協力の依頼があったとのこと。どうも3DダンジョンRPGのシステム部分を担当して欲しいということらしい。てつさんは2D専門だから、わしにお鉢が回ってきた。しかーし、わしは児ポ法改正案の可決を危ぶんでいて、あまりエロゲには関わりたくないのです。持ってるだけでタイーホなのに、作ったりしたら(((((((( ;゚Д゚))))))))ガクガクブルブルな訳。Winny作者の吊るし上げ見てもわかるけど、違法性がどうたらとか関係ない。体制側が気に入らなきゃなんとしてでも叩くというのが今の日本の惨状。末期症状ですな。ということでお断りの文面をしたため、てつさん経由でメールすることに相成りました。
ゲーム制作日誌 2009.11.23:浮動小数点数演算の処理速度
今日はモデルを太らせる方法について調査。シェーダーみたら、法線方向に頂点を移動するやり方みたい。そうなると、面の隠蔽と膨張の2つの法線が必要になる。なんてこった。で、色々調べたけど、いまだ結論出ず。まだ調査が必要なようだD3DXComputeTangentがうまく動かない。どうなっとんのじゃ。
さて、C++を勉強中のてつさんから色々と質問が。わしもよく知らんので都度調べたり、実験コード書いたりして答えたりした。で、てつさんがdoubleの方が計算速度速いとか言い始めた。んなわけないだろと思ったが、あるホームページで単精度は倍精度にコンパイラが内部的に変換するという記述が。実際ベンチマークも取ったと書いてあるので、わしもベンチして見ることに。足し算とfloatへの代入を10億回行うもの。最初、デバッグモードでやっててほぼ同じタイムだが微妙にfloatの方が速いと言う結果(どちらも3秒ちょっと)。してやったりと思ったものの、よく考えたら300MFLOPSって遅くね!?と疑問に思った。デバッグでベンチなどとは愚かなことだと気が付いた。リリースモードで実験したら、出力されない変数の計算は最適化の過程で振り落とされるという事実にぶち当たる。結果0ms。じゃあ、printfで一緒に計算値も出してやろうと思い、実行したところ、なな、なんと、doubleで計算したほうがfloatの3倍速い。ほぼ1秒。1GFLOPSも出る。パソコンの実測値でこれは速い方ではなかろうか。floatの方はほぼ3秒と、デバッグと変わらない。
結論としては、てつさんの紹介してくれたホームページの記述が正しいことが分かった。なんでじゃろ?やっぱコンパイラが内部的には倍精度しか扱ってないのかな?
あと、10億回と言う計算を行うと(0.00001をひたすら足した)、doubleの場合、正しい計算結果が出るけど(1000.0)、floatの場合、情報落ち(浮動小数点数は計算する際、小数点の位置合わせを行うため、絶対値の大きく異なる数値同士の加減算を行うと小さいほうの数字が無視される現象)が起きるみたいで、計算結果が256.0という結果になった。
ゲーム制作においてはGPUが単精度で浮動小数点演算を行うため、描画関数にはfloatでデータを渡す必要があるけど、CPU上で処理する分にはfloatへのキャストを考えてもdoubleで処理する方が圧倒的に速いみたい。
簡単なスペック
CPU:C2D E8400@3GHz
MEM:PC6400(DDR2) 2GB
OS:WinXP SP3 32bit
さて、C++を勉強中のてつさんから色々と質問が。わしもよく知らんので都度調べたり、実験コード書いたりして答えたりした。で、てつさんがdoubleの方が計算速度速いとか言い始めた。んなわけないだろと思ったが、あるホームページで単精度は倍精度にコンパイラが内部的に変換するという記述が。実際ベンチマークも取ったと書いてあるので、わしもベンチして見ることに。足し算とfloatへの代入を10億回行うもの。最初、デバッグモードでやっててほぼ同じタイムだが微妙にfloatの方が速いと言う結果(どちらも3秒ちょっと)。してやったりと思ったものの、よく考えたら300MFLOPSって遅くね!?と疑問に思った。デバッグでベンチなどとは愚かなことだと気が付いた。リリースモードで実験したら、出力されない変数の計算は最適化の過程で振り落とされるという事実にぶち当たる。結果0ms。じゃあ、printfで一緒に計算値も出してやろうと思い、実行したところ、なな、なんと、doubleで計算したほうがfloatの3倍速い。ほぼ1秒。1GFLOPSも出る。パソコンの実測値でこれは速い方ではなかろうか。floatの方はほぼ3秒と、デバッグと変わらない。
結論としては、てつさんの紹介してくれたホームページの記述が正しいことが分かった。なんでじゃろ?やっぱコンパイラが内部的には倍精度しか扱ってないのかな?
あと、10億回と言う計算を行うと(0.00001をひたすら足した)、doubleの場合、正しい計算結果が出るけど(1000.0)、floatの場合、情報落ち(浮動小数点数は計算する際、小数点の位置合わせを行うため、絶対値の大きく異なる数値同士の加減算を行うと小さいほうの数字が無視される現象)が起きるみたいで、計算結果が256.0という結果になった。
ゲーム制作においてはGPUが単精度で浮動小数点演算を行うため、描画関数にはfloatでデータを渡す必要があるけど、CPU上で処理する分にはfloatへのキャストを考えてもdoubleで処理する方が圧倒的に速いみたい。
簡単なスペック
CPU:C2D E8400@3GHz
MEM:PC6400(DDR2) 2GB
OS:WinXP SP3 32bit
ゲーム制作日誌 2009.11.22:輪郭線
今日は以前諦めた輪郭線の描画について再挑戦してみた。どんな手法かと言えば、モデルを太らせて色づけしたものと、原型のモデルを同時に描画して、太らせた方の表側の面だけ非表示にすれば、輪郭が描けるというもの。具体的には、視線ベクトルに対して、モデルの面の法線の内積を取る。表側の面というのは必ずカメラの方を向いている法線を持っている。対抗するベクトルの内積をとると必ずマイナスになるのだ。0を閾値にして、頂点のアルファを0か見えるレベルにすればよい。同じ点から伸びる2つのベクトルが鈍角か鋭角か直角かを内積の符号によって知ることができる、とも言い換えられる。と、ここまでたどり着くのに結構、時間掛かっちゃった。参考書よく見たら書いてあったんだけどね、自分でやってみないと意味が分からんものです。まだモデルを太らせるアルゴリズムが不完全なので面がばらけちゃってるけど、狙った面だけ表示されているようなので問題なさそう。あとはSDKのサンプルにあるモデルを太らせるアルゴリズムを実装すればよし。因みに、法線が何なのか、この実験するまでよく理解してなかったりする。2年近くゲーム作ってて法線を今頃理解するとは・・・トホホorz。
さて、モンハンやるか。
さて、モンハンやるか。
ゲーム制作日誌 2009.11.21:やる気復活してきた
モンハンやり倒したお陰かどうか分からんが、やる気が復活してきた。てつさんのホームページの更新の手伝いでちょろっとHTMLいじったら、やっぱ物作りって楽しいなと改めて思った。それがいい出来とか、どの位の人が手に取るかと言うこととは関係なしに、単純に面白いと思える。ゲームは決まった勝ちパターンを見つける作業だけど、物作りはひとつとして同じ形のものは無い。作るたびに工夫が必要で、その変化がひとつの個性になるのではないかと思ったりして。明日は久しぶりにプログラミングでもしてみるかな〜。
モンハンは逆ガノやってたけど、ギアノスゲネポス、てめーはおれを怒らせた、といったところ。うまいけどね^q^
モンハンは逆ガノやってたけど、





