FPSを作ってみる@wiki
08)
最終更新:
slice
-
view
もう8月です(2008/08/01)
夏といえばなんでしょうか。プール?それとも宿題?
いやいやいやゲームでしょう。夏休みの学生はゲームしなさい。
男の子はもうすぐGod Of War2のベスト版が出るからそれやりなさい。
女の子には極魔界村をどうぞ。
いやいやいやゲームでしょう。夏休みの学生はゲームしなさい。
男の子はもうすぐGod Of War2のベスト版が出るからそれやりなさい。
女の子には極魔界村をどうぞ。
はい、若干テンションがおかしいです。
今日の作業はバグ直し中心。自家製スレッドクラス周辺。
WINAPIのスレッドと違うのはノンプリエンプティブ(覚えたて用語)なところ。
WINAPIはプリエンプティブで御座います。
プリエンプティブマルチタスクはOSがCPUリソースをスレッドに割り振る方式で、
ノンプリエンプティブマルチタスクはスレッドが自発的にCPUを明け渡す。
今日の作業はバグ直し中心。自家製スレッドクラス周辺。
WINAPIのスレッドと違うのはノンプリエンプティブ(覚えたて用語)なところ。
WINAPIはプリエンプティブで御座います。
プリエンプティブマルチタスクはOSがCPUリソースをスレッドに割り振る方式で、
ノンプリエンプティブマルチタスクはスレッドが自発的にCPUを明け渡す。
で、何を思ったかそのとき「こっちの方が絶対に良い!」と
クラスのメンバ関数中でLinuxみたいにfork()関数と同じような動きする物を作ってしまった為に
実装が複雑になってしまい結果、幾つかのランタイムチェックルーチンを無効にしないとエラーになって
しまう仕様に。
クラスのメンバ関数中でLinuxみたいにfork()関数と同じような動きする物を作ってしまった為に
実装が複雑になってしまい結果、幾つかのランタイムチェックルーチンを無効にしないとエラーになって
しまう仕様に。
バッファーオーバーランなんちゃらってエラーが出るという事が昨日発覚して直し終わりました。
っていってもやった事はコンパイルオプションのバッファセキュリティチェックを無効にしただけですけど!
慣れないアセンブリコード追いかけてようやく原因を突き止めたので時間掛かった。
無効にしちゃって大丈夫かという意見については「まあ、大丈夫でしょう・・多分」
あれって関数に入った時と出るときのスタックポインタを比較してるだけみたいなので。。
自分が逆アセンブリコード見た限りでは。
っていってもやった事はコンパイルオプションのバッファセキュリティチェックを無効にしただけですけど!
慣れないアセンブリコード追いかけてようやく原因を突き止めたので時間掛かった。
無効にしちゃって大丈夫かという意見については「まあ、大丈夫でしょう・・多分」
あれって関数に入った時と出るときのスタックポインタを比較してるだけみたいなので。。
自分が逆アセンブリコード見た限りでは。
RogueSuspect(2008/08/05)
ウィルス対策にはAVGを使っているんだけども、今日何気なくフルスキャンしたら
アドウェアが検出された。
なんじゃい?と思ってみてみるとどうやら検出されたレジストリキーに
DirectInputなんとかっていうのと自作のゲームのプログラム名が入っている・・・
自分のソフトがRogueSuspectっていうアドウェアだと。
アドウェアの検出基準って何だろう?
アドウェアが検出された。
なんじゃい?と思ってみてみるとどうやら検出されたレジストリキーに
DirectInputなんとかっていうのと自作のゲームのプログラム名が入っている・・・
自分のソフトがRogueSuspectっていうアドウェアだと。
アドウェアの検出基準って何だろう?
一時休止(2008/08/06)
デスクトップ晒すの一時中止します。見てる人いなそうだしいいかと思ってる。
理由は次の動画の素材とか色々作るから。
行き当たりばったりな動画だけど、一応ネタバレとかはしたくないかなと。
理由は次の動画の素材とか色々作るから。
行き当たりばったりな動画だけど、一応ネタバレとかはしたくないかなと。
生きてますよ(2008/08/11)
ちょっと更新しないとすぐ日が過ぎてしまうな。そう感じたので特に何も書くこと無いが更新してみる。
あれです、生存報告です。一応頓挫してない報告でもいいかも。
とりあえず何か作ってますよと。
で、作業が思ったより大幅に遅れている。というかいつも思ったより遅れている気がする。
あれです、生存報告です。一応頓挫してない報告でもいいかも。
とりあえず何か作ってますよと。
で、作業が思ったより大幅に遅れている。というかいつも思ったより遅れている気がする。
- 見積もりが甘すぎるッ
五輪?なんですかそれ(2008/08/12)
五輪って言ったらハイパーオリンピックに決まってるじゃないか!常識ですよね!
えっと。
今は夜中の2時半だけど今日は色々考え事です。
基本的にマップはランダムだけど時にはモデラで作成しておいた固定マップを使いたい場合もある。
nethackとか不思議のダンジョンとか、あと何だ色々。
そういった場合にどうしたら良いかな・・って感じで悩んでます。
壁とか床がコレは木製でコレは金属で撃ったらそれぞれ違う音がする様にする為に材質関係は
すべて別ファイルで記述してそれをファイル名で指定する仕様になってるんだけども
今は夜中の2時半だけど今日は色々考え事です。
基本的にマップはランダムだけど時にはモデラで作成しておいた固定マップを使いたい場合もある。
nethackとか不思議のダンジョンとか、あと何だ色々。
そういった場合にどうしたら良いかな・・って感じで悩んでます。
壁とか床がコレは木製でコレは金属で撃ったらそれぞれ違う音がする様にする為に材質関係は
すべて別ファイルで記述してそれをファイル名で指定する仕様になってるんだけども
主人公が乗ったら下に滑り落ちる坂も作りたいと思ったときに
乗れるかどうかのフラグをわざわざ材質ファイルに記述して別にしてたらファイル数が爆発しそうだな。
どうしたもんか。
乗れるかどうかのフラグをわざわざ材質ファイルに記述して別にしてたらファイル数が爆発しそうだな。
どうしたもんか。
3ds maxでメッシュの面毎に違う物を割り当てられる情報っていったら、マテリアルIDぐらいなもんか。
少なくとも自分の知ってる範囲では。
マテリアルIDしか無いと、テクスチャは同じだけど乗れる面とそうでないのを作ろうとしたら
同じ材質なのにわざわざ2つ作らなきゃいけないわけか。
材質数*2個のマテリアルを記述する事に。それで収まれば良いがこれから主人公が乗ったら滑るとか
乗ったらダメージ受けるとかのフラグを追加してくと大変な感じだ。
じゃあ3ds maxのマテリアルIDリストの名前欄に材質ファイルの名前記述して、
各マテリアルのローカル名(?)の欄に数字でフラグを記述してしまうか。これならいけるかも。
スマートじゃないけど仕方が無い。
よし試してみよう。明日。
少なくとも自分の知ってる範囲では。
マテリアルIDしか無いと、テクスチャは同じだけど乗れる面とそうでないのを作ろうとしたら
同じ材質なのにわざわざ2つ作らなきゃいけないわけか。
材質数*2個のマテリアルを記述する事に。それで収まれば良いがこれから主人公が乗ったら滑るとか
乗ったらダメージ受けるとかのフラグを追加してくと大変な感じだ。
じゃあ3ds maxのマテリアルIDリストの名前欄に材質ファイルの名前記述して、
各マテリアルのローカル名(?)の欄に数字でフラグを記述してしまうか。これならいけるかも。
スマートじゃないけど仕方が無い。
よし試してみよう。明日。
すいません独り言ですッ
寝言(2008/08/12)
昨日の夜は半分寝てたせいか、なんか訳わからんこと書いてました。
特に下から5行分程は全く見当違い。まあ独り言なので。
特に下から5行分程は全く見当違い。まあ独り言なので。
続く(2008/08/14)
昨日は材質ファイルのフォーマットを変えたのでそれ周辺の手直しでした。
でもまだ完成してないから今日もこの作業だな。
最近暑いせいか作業効率が悪い・・
でもまだ完成してないから今日もこの作業だな。
最近暑いせいか作業効率が悪い・・
個人的メモ(2008/08/15)
TremulousっていうフリーのよさげなFPSがあったのを思い出したのでメモ。
あとNexuiz。これは結構有名だと思う。やったことはありませんが。
あとNexuiz。これは結構有名だと思う。やったことはありませんが。
瀕死(2008/08/17)
ついさっきの事なんですがハードディスクにアクセスするのが異様に遅くなったんで多分
こわれる寸前なんだと思われまして。
最初はウィルスかと思ったけどなんかwindows起動するのも明らかに遅いし(時間が3倍かかる)
500MBのファイルをコピーしたら30分もかかるしで。
消えては困るプログラム関連はバックアップを急いでとった。
トップにもちょこっと書いたけど2,3日作業中断。代わりのハードディスクが無いんですね。
昔のはあるけど、8GBしかないし。
速攻で新しいの買って色々インストールするのにそれくらいの時間がかかるのではないかと。
こわれる寸前なんだと思われまして。
最初はウィルスかと思ったけどなんかwindows起動するのも明らかに遅いし(時間が3倍かかる)
500MBのファイルをコピーしたら30分もかかるしで。
消えては困るプログラム関連はバックアップを急いでとった。
トップにもちょこっと書いたけど2,3日作業中断。代わりのハードディスクが無いんですね。
昔のはあるけど、8GBしかないし。
速攻で新しいの買って色々インストールするのにそれくらいの時間がかかるのではないかと。
じゃあこの文章は何で書いてるの?っていったら、アドエスだったりする。
つうわけで(2008/08/21)
復活!いや正確には昨日には復活してたけど、まあいいじゃないか。
新しいハードディスクは正直言って速い。熱も前のmaxtorのdiamond max plusなんとか80GBの微増ぐらい。
SATAはケーブルがコンパクトでええやね。
電源もSATA仕様なので変換ケーブルをひとっ走り買いに行くハメになったけど。
電源が最近のじゃないからSATA型のコネクタが2個しかなかった。
新しいハードディスクは正直言って速い。熱も前のmaxtorのdiamond max plusなんとか80GBの微増ぐらい。
SATAはケーブルがコンパクトでええやね。
電源もSATA仕様なので変換ケーブルをひとっ走り買いに行くハメになったけど。
電源が最近のじゃないからSATA型のコネクタが2個しかなかった。
欠点は前のと比べて振動が大きい事か。ケースが振動して低い音で唸りをあげている。
だが対策するのが面倒なので暫く放置。
さあ作業再開だ。
だが対策するのが面倒なので暫く放置。
さあ作業再開だ。
薬莢(2008/08/22)
作業再開したので手始めに薬莢が飛び出るようにしてみようか。
薬莢は終わった(2008/08/23)
次は銃口から微量の煙が出るように・・・・
シェーダーのコンパイル(2008/08/25)
どうもD3DXCreateEffectFromFileという関数を使って
ループ命令を使った頂点シェーダ(HLSL)をコンパイルする時にD3DXSHADER_PREFER_FLOW_CONTROLって
フラグを入れないと正しく動作しない事があるようだ。
・・・というのを突き止めるのに2時間も使ってしまった!残念。
少し古いSDKでは何も問題はなかったのに・・
ループ命令を使った頂点シェーダ(HLSL)をコンパイルする時にD3DXSHADER_PREFER_FLOW_CONTROLって
フラグを入れないと正しく動作しない事があるようだ。
・・・というのを突き止めるのに2時間も使ってしまった!残念。
少し古いSDKでは何も問題はなかったのに・・
ちなみに上記のフラグを入れないとループ命令を展開するっぽい。
これはこれで問題ないはずなのだが、正しく展開できてないのではと思っている。
アセンブリ命令読むのメンドクサイんだもの。←プログラマ失格ですか
これはこれで問題ないはずなのだが、正しく展開できてないのではと思っている。
アセンブリ命令読むのメンドクサイんだもの。←プログラマ失格ですか
ARM7TDMI(GBAのCPU)のなら読み書き出来たが(今は知らない)、x86系はやっぱメンドクサイ。
VC++の(C++ソースとアセンブリ命令)混合表示モードならなんとかいけるかなってレベル。
VC++の(C++ソースとアセンブリ命令)混合表示モードならなんとかいけるかなってレベル。
マップにモデルファイルを組み込み(2008/08/26)
まあやってる事自体は単純で何ら難しい事はないんですが。
モデルファイルを読み込んで然るべき位置、姿勢でマップのポリゴンとして加えるってだけで。
今日はそのへんの機能を実装してました。
モデルファイルを読み込んで然るべき位置、姿勢でマップのポリゴンとして加えるってだけで。
今日はそのへんの機能を実装してました。
今はデバックの為に一時的にモデラで事前作成した固定マップを読み込むようにしていて
この機能は現時点では何の役にも立たないんですが
近い将来、ランダムマップを作成する時に使います。
早い話がRPGでタンスとかテーブルを置くときとか。
この機能は現時点では何の役にも立たないんですが
近い将来、ランダムマップを作成する時に使います。
早い話がRPGでタンスとかテーブルを置くときとか。
PVSとか(2008/08/28)
PVSってのはquakeとかFPSでお馴染みの可視カリング構造。
ランダムマップやるって事はこれも自作です。
で、特定の地形の場合にエラーが出る。
なんかバグがあるっぽいな・・・
ランダムマップやるって事はこれも自作です。
で、特定の地形の場合にエラーが出る。
なんかバグがあるっぽいな・・・
ポリゴンと遊んでみた(2008/08/29)
うそです格闘してました。
ポリゴンを平面で分割する時のアルゴリズムがアフォになってました。
どうりで不正ポリゴンが出るわけだ。
あ、PVSなんちゃらの続きの話ね。
ポリゴンを平面で分割する時のアルゴリズムがアフォになってました。
どうりで不正ポリゴンが出るわけだ。
あ、PVSなんちゃらの続きの話ね。