atwiki-logo
  • 新規作成
    • 新規ページ作成
    • 新規ページ作成(その他)
      • このページをコピーして新規ページ作成
      • このウィキ内の別ページをコピーして新規ページ作成
      • このページの子ページを作成
    • 新規ウィキ作成
  • 編集
    • ページ編集
    • ページ編集(簡易版)
    • ページ名変更
    • メニュー非表示でページ編集
    • ページの閲覧/編集権限変更
    • ページの編集モード変更
    • このページにファイルをアップロード
    • メニューを編集
    • 右メニューを編集
  • バージョン管理
    • 最新版変更点(差分)
    • 編集履歴(バックアップ)
    • アップロードファイル履歴
    • ページ操作履歴
  • ページ一覧
    • ページ一覧
    • このウィキのタグ一覧
    • このウィキのタグ(更新順)
    • このページの全コメント一覧
    • このウィキの全コメント一覧
    • おまかせページ移動
  • RSS
    • このウィキの更新情報RSS
    • このウィキ新着ページRSS
  • ヘルプ
    • ご利用ガイド
    • Wiki初心者向けガイド(基本操作)
    • このウィキの管理者に連絡
    • 運営会社に連絡(不具合、障害など)
ページ検索 メニュー
FPSを作ってみる@wiki
  • ウィキ募集バナー
  • 目安箱バナー
  • 操作ガイド
  • 新規作成
  • 編集する
  • 全ページ一覧
  • 登録/ログイン
ページ一覧
FPSを作ってみる@wiki
  • ウィキ募集バナー
  • 目安箱バナー
  • 操作ガイド
  • 新規作成
  • 編集する
  • 全ページ一覧
  • 登録/ログイン
ページ一覧
FPSを作ってみる@wiki
ページ検索 メニュー
  • 新規作成
  • 編集する
  • 登録/ログイン
  • 管理メニュー
管理メニュー
  • 新規作成
    • 新規ページ作成
    • 新規ページ作成(その他)
      • このページをコピーして新規ページ作成
      • このウィキ内の別ページをコピーして新規ページ作成
      • このページの子ページを作成
    • 新規ウィキ作成
  • 編集
    • ページ編集
    • ページ編集(簡易版)
    • ページ名変更
    • メニュー非表示でページ編集
    • ページの閲覧/編集権限変更
    • ページの編集モード変更
    • このページにファイルをアップロード
    • メニューを編集
    • 右メニューを編集
  • バージョン管理
    • 最新版変更点(差分)
    • 編集履歴(バックアップ)
    • アップロードファイル履歴
    • ページ操作履歴
  • ページ一覧
    • このウィキの全ページ一覧
    • このウィキのタグ一覧
    • このウィキのタグ一覧(更新順)
    • このページの全コメント一覧
    • このウィキの全コメント一覧
    • おまかせページ移動
  • RSS
    • このwikiの更新情報RSS
    • このwikiの新着ページRSS
  • ヘルプ
    • ご利用ガイド
    • Wiki初心者向けガイド(基本操作)
    • このウィキの管理者に連絡
    • 運営会社に連絡する(不具合、障害など)
  • atwiki
  • FPSを作ってみる@wiki
  • 進捗状況(2009
  • 05)

FPSを作ってみる@wiki

05)

最終更新:2009年05月29日 19:11

slice

- view
管理者のみ編集可

(2009/05/29)

このままだと先が見えないのでひとまず
現状報告代わりにSTGとFPSの2つ動画作ってしまう方向で作業中。
まずはSTGから取り掛かる。

早速問題発生。

今の実装だとマップを描画するのにライトマップをポリゴン一枚に付き一枚確保してるので
ポリゴン一枚一枚テクスチャ切り替えるという凄い無駄な事をしないと描画できないのだ。
XboxだとそうでもないらしいがPCだとテクスチャの切り替えが結構負荷が高いらしく激遅。
(自分の場合は更にオンボードなので余計)
マップ以外何も表示しなくても30fpsとか何の冗談だ。

動画を保存する負荷とあわせて20fpsとかなったら格好悪いなあ・・
なのでBSPというかPVSをきちんと整備して余計なマップは極力描画しないようにした。

と、ここまで読んで「あれ?FPSの4つ目の動画で既にやってんじゃないの?」と思った人も居るだろう。
でもそれはFPSの話でしたー
STGではやってなかっただけです。ああそれだけです、すいません。
ついでといっては何ですが、前より空間分割の効率が良くなるよう細工したし
ランダムマップではないモデリングツールで作ったマップを使う場合に
ある程度ポータルが生成される場所を指定できるよう改良した。

FPSもランダムマップオンリーじゃないので後々役に立つかと。

(2009/05/27)

キー入力部分を適当に作ってたのでキー割り当てが出来ないしジョイパッドも対応してない等
そろそろガタがきていたので
キー入力マネージャ、と言う程大層な物ではないがそれ関係のソースコードを全部書き直し。
そしたら今までキー入力判定していた他のソースも変えなきゃいけなくなってさあ大変
.....という事をしてました。

努力の甲斐あってか少なくとも今のところは
ジョイパッドのアナログ入力、キーボード、マウスすべて正常に動いている。
でも振動はまだやってないなあ。

今回調べて初めて知ったんだけどDirectInputにはコントローラを振動させるという機能は無いんですね。
フォースフィードバックという機能があるのみ。
フォースフィードバックとはレースゲームでハンドルを回そうとしたら逆向きに抵抗ががかるというアレです。
アレですって言ってるけど実際に対応コントローラを触ったことないし、店で見かけた記憶も無いので
出回ってるんだろうか?という印象が拭えませんがどうなんでしょう?
リアルといえばリアルだけど操作性も悪くなるし無理に力を加える訳だから故障も多そうだしなあ・・

で、このフォースフィードバック機能で右向きの力、左向きの力、右向きの・・・と非常に短い周期で交互に力を加えてやれば
振動が再現できますねと。調べたらそういう事っぽいです。
市販のPCジョイパッドで振動に対応してる物はフォースフィードバックの信号を
独自に解釈して内部のモーターを回す等して振動させているらしい。右向き抵抗=右側のモーター回す とかそんな感じで。

自分はPS2のコントローラをコンバータ介してPCにつなげてるけど、コントローラの調整ウィンドウから察するに
この製品が対応してる振動って強弱の2種類だけかなあ。
あとUSBの電圧の限界なのかPS2に繋げたときより振動がちょっと弱い気がする。

#追記
色々やってみた結果
左右のモータに送る電流に対してある時間におけるON/OFFの割合を変化させることで
強さのバリエーションを持った振動を起こせるようだ。
例えばOFFの時間を多くすれば弱くなるし逆も然りだ。
(そういえばこれってマザボのファンの制御設定とかで見かけるPWMという制御方法ではないか)

PS2の場合は左右のモーターで振動の特性が違うから研究すれば面白いかもね~というかゲームメーカーは当然してるんだろうね。
まあでも様々な振動を起こす事が現段階では重要ではないので
とりあえずそれがわかったという時点で一旦辞めておきたい。

だって、PCだからなあ・・・
パッドが変わればまた振動の強さとか調整しなきゃいかんだろうし
そもそもパッド持ってない人も居ると思うし。

(2009/05/25)

パーリンノイズ自体は実装したものの(しかも殆どサンプルのコピペだが)、まだやってない。
それとは別に調整が必要な変数値をリアルタイムにいじる機能の強化をしていた。
スクリーンショットに度々出てるウィンドウの事です。
現状ではアプリケーションを閉じると調整した値は保存されるけど、何の変数をどこに開いていたかが
すべて初期化されてしまうんですね。
理想的には終了時テキストファイルにどの変数をどの辺に開いていたのかを記録しておいて
次回起動時に復元できればいいなと。
という様な機能を付け加えてました。

そしてテキストファイルをメモ帳で開いて書き加えられれば便利なので
ウィンドウ位置は座標ずばりではなくて四隅のどの角に近かったかだけ記録。
実際のウィンドウの座標は重ならないように自動的に調整して配置する仕組みを作った。
で、これが手こずりまして。

左上に配置するとしても、同じ左上に関連付けされたウィンドウだけでなく
対岸の角のウィンドウ(左下とか右下とか)と重なっていないかとか判定しなきゃいけない、
コリジョン判定の必要があるんですね。
どうせ四隅だけだろ~簡単簡単。ウィンドウの横サイズは全部同じで高さが違うだけだし
とか甘く見て取り掛かったので大変でした。そんな事がありましたとさ。

次はジョイパッドの本格的な対応をするつもり。
とりあえずの目標はデジタル入力だけだが
できればアナログ入力と振動機能も入れたいな。

(2009/05/22)

煙の移動制御について、温度と空気の粒子密度が高いほど上に移動するようにしてるのだが
眠いときに組んだ部分だからか
本来なら空気の粒子密度テクスチャをセットする筈の所でなんとテクスチャをセットしてなかった!
私が一番びっくりですよ。
例えるならカップ焼きそばのお湯を注いで捨てる前にソースをかけてしまった位の衝撃。

それはともかくテクスチャをセットしてないのに読もうとするとどうなるか?
経験から言って大抵は砂嵐になるか以前セットしたテクスチャの断片(しかも所々上書きされてたり)が読み込まれる。
それでトップページのように「煙に見えなくも無い煙」が生成されていたのだから、現実は奇なりというか。

で、ちゃんとテクスチャをセットして描画したら今度は驚くほどノッペリした煙(というかもう白い水飴だ)
になるから頭を抱えてしまう。

だが待って欲しい(自分が)。出鱈目テクスチャを使ったらうまくいったのだから・・・
てことはパーリンノイズ・・とかランダムなテクスチャを設定しておけば
先日の「少しはそれっぽい煙」になるのか・・・・・??

(2009/05/21)

引き続き煙と格闘中。
しかしなんだろう、ピクセルシェーダー2.0って分岐命令とループ命令が無いんだけど
if文を2重3重かませても上手いことcmp命令や飽和命令などを使ってコンパイルしてくれるHLSLコンパイラは凄いと思う。
流石にfor文は厳しいが・・

もちろんあまりにも複雑な分岐は処理しきれないんだろうけど
今まで文法エラー以外でコンパイル拒否された事は水面の処理を書いていた時の一回しかない。
(確かテクスチャ参照に使うUV座標の計算が複雑すぎるとか何とか怒られた)
条件付代入や飽和加算命令があれば使用命令スロット数は多くなろうが大抵のプログラムは記述できる・・・とか
誰か偉い人が論文を発表してそうだな

GPUのシェーダー言語は実行中に外部から変数を書き換えられる事を考慮しなくて良いのと
完全に内部で処理が完結(キー入力判定とか外部のメモリを読み書きしない)から出来る芸当なのかな?

(2009/05/20)

ずっと流体シミュやってる気がするが・・・今は煙をやろうかと試行錯誤。煙が終わったら次は炎を。
なんというか、煙に見えるようなパラメタの調整が難しいなあと。
ただまあシミュレータではなく純粋にゲームが作りたいので物理的に正しいかとかその辺は無視するつもり。

(2009/05/16)

なんか流体シミュがそれっぽく動くまで気になるから寝られないという、凄く下らん理由で徹夜してしまったので凄く眠い
でもまあ、一応動いたから良し。
ただ、本当にそれっぽく動いてるだけだ。
気体や液体をかき混ぜたら渦が出来ないと駄目だろう。現時点では出来てない。
それに染料を置いた部分から周囲に流れを発生させても染料が薄くならないのであたり一面真っ白になったりする。
これについては文献に解決策云々の記述が無いのだが・・・見落としたか?

あとはまあリアルタイムで使う訳じゃないのでそんなに気にしてない事だが
処理速度の問題。256x256のテクスチャで処理して30fpsなのだが思ったより動くと言うべきか、やっぱオンボード遅ぇと言うべきか・・・

(2009/05/12)

先日のGPU Gemsを更に読み進めて
2Dの流体シミュは大体実装は出来そうだ。
でも数式が一箇所だけ納得いかない(理解できてない)のでまだ実装には至ってない。
(HTML版は記号の誤記が数箇所と1つ画像が無い場所があるなあ・・)

3Dの流体シミュは素直に2Dから3Dに拡張するだけなので割とすぐ・・かな?
何が難しいかと言うと表示で、主にそれの為に文章の大半が費やされている。
現在のGPUでは3Dのテクスチャを立体的に表示する機能は無いので
現行のシェーダーを駆使し何とかして表示しましょうという話。

ところでゲームに使わないなら何故そんな事を勉強していると思われるだろうが
処理が重すぎて直接的には使わないが何らかの形でゲームに組み込む予定だ。

(2009/05/11)

進捗・・・はプログラムコード組んでないから一切無し!

だけど精神面のレベルアップはしたかもしれない
少なくとも英語の文献読んで速攻眠くなるという事はなくなってきた。
gpu gems以外の資料も読み始めている。
同じサイトの別のページのpdfとか。
もうちょっと時間掛かりそうだね。

話は変わってちょっと前にトーンマッピングの明るさ調節に遅延を持たせる実装をした。
要するに暗いところから明るいところをいきなり見たら目が慣れるまで時間が掛かるのを再現しましょうという話。
(ついでに複数フレームにわたって処理するから負荷軽減にも役に立って二度おいしいねと)
現状だと明るさが10フレーム遅れて線形に変化するからまだ機械的な感じがして違和感が。
場合によっては遅延ナシの方が良い。改良の余地あり。

(2009/05/09)

引き続き流体シミュのページを読むのに四苦八苦。
日本語で読んでも理解できるかな?って感じなのに英語だと、ねぇ。でも頑張るが。
ソースコードの部分読むとやってることはそんなに難しくは無かったりする。
関係ないけど「数式」って何であんな難しそうに見えるんだろう・・・

一つ問題が。今は煙のシミュレーションをやろうとしているのだけど
シミュレーション自体は出来るとして、煙の表示はページ読む限り
ビデオカード買わないと表示できません。
サンプルコードでは液体の表示にジオメトリシェーダなんぞ使ってるけど、煙の場合は・・最低でもShaderModel3.0じゃないと無理だと思った。

(2009/05/05)

後々GPUを駆使した流体シミュレーションなんぞをやりたいと思っているので
NVIDIAのサイトで勉強。
恐らく最新のGPUをもってしてもゲームに使うには重すぎるからFPSに使う予定は無いんだけど
ゲーム本体のプログラムが煮詰まってしまったので、気分転換のつもり。

思ったんだけど
英語がさして上手くない人が英語の文章を読むのは日本語の倍労力を使う。少なくとも自分はそうだ。
だけど将来の為という事で。
今日はそんな事を半日も頑張ってやっていたので(しかもあまり読めてない)まだ寝る時間でないのに眠くなって
妙な時間に寝てしまった。
そしてまた生活リズムが崩れるという。

(2009/05/04)

ソフトパーティクルやってみた。
やる事は単純で、描画する位置のZ値とスプライトのZ値が近いほど透明度を高くするだけ。そんだけ。

なのだが!

またしても初歩的なミスを犯してしまい時間食いまくった。
少しでも処理速度を稼ごうとしてマルチレンダリングターゲット(MRT)を活用しつつ組んだのが事の発端である。
MRTは複数の描画先(テクスチャ)に一度に描画する機能だ。
MRTには制限がある。
  • α合成に対応してないハードウェアがある
  • αテストはできない
  • MRTのテクスチャはすべて同じサイズじゃないといけない
  • 加えて同じビット深度(1ピクセルに使うビット数)でないといけない
  • ステンシルテストもできない
  • フォグは無し

とまあ、そんな感じなのは知っていた。でも今回のミスはそこではなくて。
ソフトパーティクルに使う比較用Z値を格納するテクスチャ形式としてD3DFMT_G16R16(Redに16bit,Greenに16bit)
というのを使って描画を試みても砂嵐になってしまうのだった。
なんでかねと思って色々変えて試したら、どうやらα合成を切るとうまく動く。
ちなみに自分が使ってるのはAMD690GというオンボードだけどMRTのα合成に対応しているのは確認済み。なんでやねん。

で、小2時間くらいまた試して悩んで結局はG16R16というテクスチャ形式自体がα合成に対応してないっていうしょ~もない原因だった。
多分使ってないチャンネルは1が入ってるものだという先入観だろうな~

結局メジャーな形式であるA8R8G8B8(Red,Green,Blue,Alpha各8bit)の各色成分に
本来24bitで記録されている深度値を分割して格納するというまあみんな知ってるよ的な方法で解決した。
最初からそうしろって?
分割して格納するのってちょっと重いじゃん、読み出すのもやっぱり重いじゃん。
ソフトパーティクルに使う深度値は16bitの精度あれば全然OKそうだからじゃあG16R16つかえばいいんじゃね?という甘い考え。

まあ最終的に動いたからいいか。

(2009/05/02)

おお、しまった。もう5月か。このゲームがいつ完成するんだか私にもわかりません。
まあそれはさておき。

影、水面をやったらHDRもやりたいなという事でトーンマッピングをしてみた。
トーンマッピングは暗いところや明るいところを見てると次第に目が慣れてきて地形や物の形状がわかるようになる、という処理。
明るさの調節とも言うかな。
次は極端に明るい箇所から光があふれ出ているように見せるブルームエフェクトをやる予定。
いや、その前に軽くソフトパーティクルやるかも。

「05)」をウィキ内検索
LINE
シェア
Tweet
FPSを作ってみる@wiki
記事メニュー
  • トップページ
  • 参考資料ブックマーク等
  • Tips

Media

  • 頂き物
Screen shot
  • FPS_page1
  • FPS_page2
  • FPS_page3
  • Other_page1
Drawing
  • Drawing(analog)
  • Drawing(digital)
  • Drawing(digital) 2
  • Drawing(digital) 3
  • Drawing(digital) 4
  • Drawing(digital) 5
  • Drawing(digital) 6
  • Drawing(digital) 7
  • Drawing(digital) 8
  • Drawing(digital) 9
  • Drawing(digital) 10
  • Drawing(digital) 11
  • Drawing(digital) 12
  • Drawing(digital) 13
Movie
  • movies-list

Old Contents

  • トップページ(old)
  • メモ書き
  • 力仕事UP場
  • ゲームシステムとか
  • バグ・動作報告
  • program(twilve)

Progress log

  • (2018/03)
  • (2017/04)
  • (2017/03)
  • (2016/10)
  • (2016/09)
  • (2016/08)
  • (2016/07)
  • (2016/06)
  • (2016/05)
  • (2016/04)
  • (2016/03)
  • (2016/02)
  • (2016/01)
  • (2015/12)
  • (2015/11)
  • (2015/10)
  • (2015/09)
  • (2015/08)
  • (2015/07)
  • (2015/06)
  • (2015/05)
  • (2015/04)
  • (2015/03)
  • (2015/02)
  • (2015/01)
  • (2014/12)
  • (2014/11)
  • (2014/10)
  • (2014/09)
  • (2014/08)
  • (2014/07)
  • (2014/06)
  • (2014/05)
  • (2014/04)
  • (2014/03)
  • (2014/02)
  • (2014/01)
  • (2013/12)
  • (2013/11)
  • (2013/10)
  • (2013/09)
  • (2013/08)
  • (2013/07)
  • (2013/06)
  • (2013/05)
  • (2013/04)
  • (2013/03)
  • (2013/02)
  • (2013/01)
  • (2012/12)
  • (2012/11)
  • (2012/10)
  • (2012/09)
  • (2012/08)
  • (2012/07)
  • (2012/06)
  • (2012/05)
  • (2012/04)
  • (2012/03)
  • (2012/02)
  • (2012/01)
  • (2011/12)
  • (2011/11)
  • (2011/10)
  • (2011/09)
  • (2011/08)
  • (2011/07)
  • (2011/06)
  • (2011/05)
  • (2011/04)
  • (2011/03)
  • (2011/02)
  • (2011/01)
  • (2010/12)
  • (2010/11)
  • (2010/10)
  • (2010/09)
  • (2010/08)
  • (2010/07)
  • (2010/06)
  • (2010/05)
  • (2010/04)
  • (2010/03)
  • (2010/02)
  • (2010/01)
  • (2009/12)
  • (2009/11)
  • (2009/10)
  • (2009/09)
  • (2009/08)
  • (2009/07)
  • (2009/06)
  • (2009/05)
  • (2009/04)
  • (2009/03)
  • (2009/02)
  • (2009/01)
  • (2008/12)
  • (2008/11)
  • (2008/10)
  • (2008/09)
  • (2008/08)
  • (2008/07)
  • (2008/06)
  • (2008/05)
  • (2008/04)



記事メニュー2

Update Log

取得中です。
人気記事ランキング
  1. Drawing_analog
もっと見る
最近更新されたページ
  • 2686日前

    menu_L
  • 2686日前

    進捗状況(2018/03)
  • 2686日前

    Drawing_digital_13
  • 2686日前

    Drawing_digital_12
  • 2686日前

    トップページ
  • 2892日前

    Drawing_digital_11
  • 2973日前

    Drawing_digital_10
  • 3005日前

    進捗状況(2017/04)
  • 3046日前

    進捗状況(2017/03)
  • 3097日前

    頂き物
もっと見る
人気記事ランキング
  1. Drawing_analog
もっと見る
最近更新されたページ
  • 2686日前

    menu_L
  • 2686日前

    進捗状況(2018/03)
  • 2686日前

    Drawing_digital_13
  • 2686日前

    Drawing_digital_12
  • 2686日前

    トップページ
  • 2892日前

    Drawing_digital_11
  • 2973日前

    Drawing_digital_10
  • 3005日前

    進捗状況(2017/04)
  • 3046日前

    進捗状況(2017/03)
  • 3097日前

    頂き物
もっと見る
ウィキ募集バナー
新規Wikiランキング

最近作成されたWikiのアクセスランキングです。見るだけでなく加筆してみよう!

  1. MadTown GTA (Beta) まとめウィキ
  2. AviUtl2のWiki
  3. R.E.P.O. 日本語解説Wiki
  4. 機動戦士ガンダム EXTREME VS.2 INFINITEBOOST wiki
  5. シュガードール情報まとめウィキ
  6. ソードランページ @ 非公式wiki
  7. ドラゴンボール Sparking! ZERO 攻略Wiki
  8. シミュグラ2Wiki(Simulation Of Grand2)GTARP
  9. 星飼いの詩@ ウィキ
  10. Dark War Survival攻略
もっと見る
人気Wikiランキング

atwikiでよく見られているWikiのランキングです。新しい情報を発見してみよう!

  1. アニヲタWiki(仮)
  2. ストグラ まとめ @ウィキ
  3. ゲームカタログ@Wiki ~名作からクソゲーまで~
  4. 初音ミク Wiki
  5. 検索してはいけない言葉 @ ウィキ
  6. 機動戦士ガンダム バトルオペレーション2攻略Wiki 3rd Season
  7. 発車メロディーwiki
  8. Grand Theft Auto V(グランドセフトオート5)GTA5 & GTAオンライン 情報・攻略wiki
  9. オレカバトル アプリ版 @ ウィキ
  10. SDガンダム ジージェネレーションジェネシス 攻略Wiki
もっと見る
全体ページランキング

最近アクセスの多かったページランキングです。話題のページを見に行こう!

  1. 過去の行動&発言まとめ - 鹿乃つの氏 周辺注意喚起@ウィキ
  2. マイティーストライクフリーダムガンダム - 機動戦士ガンダム EXTREME VS.2 INFINITEBOOST wiki
  3. 魚拓まとめ - 鹿乃つの氏 周辺注意喚起@ウィキ
  4. 参加者一覧 - ストグラ まとめ @ウィキ
  5. 1103環境(遊戯王) - アニヲタWiki(仮)
  6. 前作からの変更点 - 機動戦士ガンダム EXTREME VS.2 INFINITEBOOST wiki
  7. 魔獣トゲイラ - バトルロイヤルR+α ファンフィクション(二次創作など)総合wiki
  8. コレクター・ユイ - アニヲタWiki(仮)
  9. サーヴァント/一覧/クラス別 - Fate/Grand Order @wiki 【FGO】
  10. 画像倉庫 - 鹿乃つの氏 周辺注意喚起@ウィキ
もっと見る

  • このWikiのTOPへ
  • 全ページ一覧
  • アットウィキTOP
  • 利用規約
  • プライバシーポリシー

2019 AtWiki, Inc.