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

FPSを作ってみる@wiki

09)

最終更新:2012年09月28日 00:44

slice

- view
管理者のみ編集可

(2012/09/28)

進まないな

またしてもスタック.ライト軌道とアンビエント定数ライトはOK.
残りは透明物のソート・・・で終わりの筈が
マップに配置した透明物が縦に長い円柱形状 ->
中心座標でソートしてたんじゃ角度によっちゃ変になる ->
モデル頂点を内包する境界ボリュームの求め方って? ->
なるほど.主成分解析・・ ->
多項式や行列式や固有値の計算ルーチンを組む ->
連立一次方程式を解くルーチンも要るか・・ ->
解が一意に定まらない時の戻り値?どうするか << イマココ

とりあえず主成分解析の用途じゃ必ず解がα(任意の数)倍になるようだから
それだけカバーする方向で行くが.

主成分の軸からOABBや球や円柱を求める部分は既に書いた.
まぁ,境界ボリューム計算はどの道必要だから良しとしようかねぇ.

Qt関連

ついでにQtフレームワーク上でOpenGL表示などもやっていたり.ゲームのちょっとしたツールを作れたら楽しいかなと.
あとQt5の話は無しになった.暫く4.8.1で行く.というのも
LUbuntu上でQt5をビルドして実際動かしてみたんだけど自分が使ってる範囲じゃ4と変わらないのが1つ.
それとこっちのが理由として大きいのだけど「Qt5にするとQtCreatorのコマンド補完が効かない」って事.
という訳で今すぐQt5に移行する利点が見あたらない.
開発元は4から5の以降はなるべく楽になるようにすると言ってるし.

(2012/09/22)

もう少し

幾つかの「やる事」を済ませたらデモが出せる状態まで来た.
次回の目玉はモーション(軌道)によるカメラ制御と
今までライトが円運動しかしてないのは寂しかったので同じく軌道によるライト移動,
透明物体のソート強化,である.
内部的にはクォータニオンと回転行列の相互変換とか計算間違いしてるのを直したり
モーション再生ルーチンを書き直したりだの色々やっているものの
見た目で分かるのは,上に挙げたものだけ・・・

前回からの進捗

まず前回の軌道や姿勢の問題は殆ど解決した.
具体的にはモーションの補間は何も手を加えてないので上軸がずれる問題は相変わらずだが
フリールックモードへ移った時の上軸補正をちゃんとしてるから演出の一部と捉えれば変でもない(ちょい無理があるか)
対数クォータニオンで補間する案はまた次回という事で.

で,前述した「やる事」というのは
  • 定数アンビエントライト
   カメラ・ライト軌道の導入にあたりもう少し広いマップが必要で,その時に
   暗闇が本当に真っ黒ではちょっと不都合なんで昔ながらの定数ライトを入れる
  • ライト軌道
   ライトを軌道に沿って動かすだけ・・なのだが.どうせなら軌道の断片を複数用意して
   接続点でどのルートに進むかランダムで決められたら面白いよね,と.
  • 透明物のソート
   まだ未完成

定数アンビエントライトはすぐ終わるとして残りの2つはバグ取り含めるとどの位かかるかな?という感じ

その先の事

現状マップと言いつつモデルファイルを描画してるだけなんで
いい加減PVS含めたマップフォーマットを決めるべきだね.

(2012/09/20)

CPUを微妙にアップグレード

CPU(AthlonX2 5600+)を,PhanomII X4 955へ交換した.
とはいえCPU以外のマザボその他一式そのままという超妥協的アップグレードなので目に見えて
キビキビしてる印象は・・・どうだろう?
普段からデフラグや各種セッティングを気にするタイプなのもあってか少なくともWindowsXP上じゃ体感的な差はほぼない.
強いて言えばタスクマネージャで4コア表示されて優越感に浸れるくらい.
後はたまにするエンコでH264を選びやすくなったとか.

そもそも何で4コアかといえば
配信しながら裏で作業用BGMの動画を流しつつコンパイルすると重い(縮小とエンコで1コア位)というのと
先日触れたcygwinやlinux環境であれやこれやビルドする時の時間短縮,
それと一部のオープンワールド系ゲームが4コアに最適化されてる・・という理由だったんで満足感はぼちぼちである.

デモの予定が物凄い遅れてる件

急ぐつもりだが,1,2箇所詰まっている.
具体的にはカメラを軌道に沿って動かす場合に現在位置から軌道の一番近い所を調べて
そこからモーションを再生しつつ,カメラをその姿勢に近づけるようにクォータニオンの球面線形補間したら
例えば右へ90度回転すれば良い所を何故か逆から270度回転してしまう.
クォータニオンの軸が変になっている?

それと軌道に沿って動いてるカメラを通常のフリールック動作に戻す場合,Upベクトルがずれている
(いわゆるYaw Pitch RollのRollが入ってる)事があって,
補正するルーチンがまだイマイチな出来.
今は角度を考慮しながらRoll入った座標系をZ軸周りに何度回転させるかを求めるアプローチをとっているけど
最初にUpベクトルを(0,1,0)と決めて残りは外積で求める手もあるか.

ただ本末転倒だが「元からそんな変な軌道作らない」選択肢も,あるにはある.
#追記
というか元々Upベクトルが上の軌道を作った筈なのに再生したらUpベクトル傾いてるの何故~?と思っていたら
モーションを3次補間する際に平然とクォータニオンも成分毎補間しちゃってる事に気付いた.
クォータニオンの球面線形補間は有名だけど3次補間するにはどうすれば・・
対数クォータニオンか?(精度はともかく)


(2012/09/14)

モチベーションが危機に瀕していて何も作業する気がしない.
が,本当に何もしないのもアレなので
ライトプリパスレンダリング(Deferred Lightingとも言うらしい)を調べたり
OpenGL(GLSL)やWebGLを勉強していたりした.
DirectXよりOpenGLの方が簡単と言われるけどどっちも同じくらいな気が・・
片方やってるともう片方が楽なのは同意.
あと3つ以上の回転をブレンドするのに便利な対数クォータニオンとか.

更に関係ない所ではCygwin環境を構築して最新バージョンのGCCをビルドしてみようと頑張ってたり
将来的にMicrosoft依存を脱したいのもあってMinGWでwindowsアプリケーションをビルドしてみたり.
別途インストールしてあるLUbuntu12.04環境では難なくGCC4.7.1をビルド出来たのだが
Cygwinだとconfigure通らなかったりmake中になんかエラー出たりで未遂.
一回一回のビルド時間が結構かかるんでこれについては一旦辞めて続きはもうちょっと速いCPUを買った時にするつもり.

ところでモーションを繋げる処理をあれこれ考えていたら既存のソースは殆ど使い回せない事に気付いた.
というか前代のエンジンにモーションを読み込む処理がごっそり抜けてたとか.そういえばそこまで行ってなかった・・!駄目ですな.
(2代前のエンジンには有るという事)

追記

数年前に動画取ったときの実装ではアニメーションのキーフレームを大量に出力し,非常に細かい区間の線形補間としていたが
流石に今世代もそれではファイルの容量とメモリ使用量が大きくなりすぎるし何よりダサいと思った.
(でもLithtechエンジンのAlien vs Predator2はこの方式だったと記憶している.メモリは食うが処理速度は稼げるという事か?)
なのでキーリダクションについても調査中.

(2012/09/10)

v0055を試した人には殆どインパクトが無いが一応デモを更新してみた.
裏側の改良が主なので見た目で分かるのはガラスの歪みサンプリングをいくつか直した部分だけ.

予定

さてさて.次どうしようか?
モーションか,シャドウでもやるか,それとも水面か・・
その前に当たり判定マネージャとかその辺がまだ決まってないから近い内にちゃんと決めないと.

このまま定期的にデモをリリースしているのはもう,それだけで前と明らかに違って良い感じなのだが
もう2,3回デモを出したら次の段階へ進みたいとも思う.
ずっと表示だけやってても面白くないだろうと.こちらとしても,試す側も.
特にFPS的な移動を実装したい.

ま,兎にも角にも目先の事を決めなきゃ進めない訳で・・
  • モーション読み込み・再生
   これ自体はいいがサンプルが難儀
  • ガラスのBSPを改良
   実は現在の実装ではガラスを含む平面が交差したときに上手く表示順位を決定できなかったりする
   ガラスを中心座標じゃなく凸ポリゴンとして扱うことでこれに対処する
  • 座標の3次補間によるカメラ制御
   アクションゲームなんかで部屋をぐるっと見回したり演出に使う物といえば分かり易いか
こんな感じで.期限は3日程度を予定しているがどうなる事やら.

余談

光源から更に小さいサブ光源を一定間隔でばらまいてリアルタイムラジオシティもどきをしても面白そうかなと思った.
1つの光源につき平均15個,一度に6~7個視界に入るとすれば総数は100個程度.
メイン光源はシャドウマップあり,サブは無しでやれば負荷的には行けそうだが・・
(サブ光源の光が壁の向こう側に漏れるけど気にしない)

(2012/09/09)

デモについて

本当は2,3日前のリリース予定だったが、やはりというか何と言うか。原因は主にマップだ。
寸法など全く気にせずマップを弄るのはことのほか楽しく、つい時間が過ぎるのを忘れてしまう。
シェーダーパラメータを変化させてその都度結果を見るのも同じ。

さて、今回の目玉は磨ガラスエフェクトと複数マテリアルなのだが
マテリアルに関してはデモで見た目の変化がさほど出せていないのが残念な所で、
パッと見でわかるのはパイプの光沢とその他のコンクリートな質感くらいか。
一応、壁のコンクリートにはOren-Nayarモデルを、ドアや通路の金属にはCook Torrance、そしてパイプにはPhoneを適用しているが
パラメータの調整がなってないらしく正直言って微妙な出来だ。
いくらスクリプトや外部ファイルに記述してあって再コンパイルが不要とはいえ数値を変える度に起動し直すのは面倒過ぎる。
いずれはリアルタイムで調整する機構が必要だろう。

もう一方の磨ガラスエフェクト(というか歪みガラス)はそこそこ納得な出来栄え。
まぁ欲を言えば深度値を比較して手前にある筈のテクセルが漏れ出さないようにしたいが・・キリがないので。
半透明オブジェクトにつきものの描画ソートは単純に中心座標でやってると面積の広い板と複数の半透明スプライトを混ぜた時に
不具合を起こすので板の平面でBSPツリーもどきを形成し、そこにスプライトを中心座標で振り分ける形をとった。
こうすれば古くは初代Doomのようにピクセル単位の深度比較がなくてもきちんとした順序で視線の奥側から描画できるし
ガラスが重なっていてもOKだ。
ただそこまで馬鹿正直にやる必要があるかと言われると疑問ではある。

そういえばDeferredRenderingにおいて半透明物体へのライティングはどうするのだろうか?
って、DeferredRedneringのフェーズが終わった後の話だし当然ForwardRenderingで何とかするしかないか。
とすると従来通り影響するライトを選別してってなるのか・・ううむ

予定

絶賛モチベーション減退中なので
さしあたっては次の項目
  • ビュー座標系でのピクセル座標や光源の位置管理がどこか間違ってる?
   現状では視線の向きを変えると光源との位置関係が変わらなくてもハイライトの形がガラッと変わってしまう
   ゲーム中では気にならないかもしれないがやはり直したい
  • G-Bufferにピクセル位置を格納しない
   メモリ削減の為.理論上は深度とView&Projection行列から逆算できるハズ
  • Jsonクラスを例外をちゃんと使ってエラー処理する
   先日とある機会で例外を勉強した為・・
   nullを返すダサい仕様なので直す
  • LuaからC++の関数を呼ぶ部分でtry catchして警告やらなんやら出す
   これも上と同じ逐一エラー値チェック脱却の一環
これだけやろうと思う.どれも目立たない改良なのでデモは無し.
期限は・・1~2日といった所かねぇ.

余談

複数マテリアルに対応したらPixelShader 2_0では命令スロット数が足りないと言われ
PixelShader 2_aと VertexShader 2_bが必須になってしまった.
これはトップページにも書いた通りRadeonならRadeon X800,Geforceなら6600以上のカードを意味する.
開発当初は「オンボで動くようなゲームを」とやっていたけど既にその意志は無いことをお詫びする.
(もしそれを期待してた人が居ればだが)
折角作るのだからやりたかったエフェクトなどバンバン使いたいのだ.

(2012/09/02)

昨日はアップロードしてそのまま力尽きた。
プログラムの方は順当にバージョンアップを続けている。
このままゲームとして動く状態まで現在のペース(週に1〜2回)を維持するのが当面の目標。

その為にまず予定をここに書いて、それに従って作業を進める方針である。
決められた期間でどの位の作業ならこなせそうか見当をつける力?も鍛えられれば幸いだ。

予定

次の一手はモーションをやろうかそれともマテリアル別の描画をしようか迷った挙句、後者にした。
最終的には両方やるからどっちでもいいと言われればそうなのだが・・

マテリアル別の描画というのは1つのシーンに材質の異なる物体が複数あった場合の対処で
これはゲームを動かす際にほぼ必須と思われる。
具体的には金属のシャープな反射とつや消し加工のプラスチックのような質感、それに加え発光といった所か。
前々から言ってた磨りガラスも入れたい。

そしてこれらを踏まえテスト用マップの拡張。

ちなみに今回の期限は3日程度で、余力があれば陽炎なんかの歪みエフェクトもやりたいが
無理そうならきっぱり諦める <= ここが前と違う点

余談

光源の影はマップの構造や描画カリングに大きく影響してくるので当分後回し。
光源自体は視界に入らないけど影だけは入ってくるケースとか面倒だ。

Qtを使ったTwitterクライアントは
  • 普通には使えるが、これといった特徴が無い
  • 詳細を忘れたのと色々無駄なコードがある
などの点で公開のモチベーションが湧かず単なるオレオレクライアントと化している。これが現実・・・
どうせまたやるんなら大したコード量でもなしQt5で書き直したい。

「09)」をウィキ内検索
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.