FPSを作ってみる@wiki
11)
最終更新:
slice
-
view
(2015/11/27)
うわあプログラムの進捗だああ
という感じで。やってる事は単なる典型的なシャドウマップですがね。何回目だろう。
一応ゲームとしてまともに動きそうなフレームワーク上に構築しました…というのが自分の中では新しいんだけど
やっぱ見た目じゃわからん。残念すぎる。
リアルタイムでシェーダーを変更できるんだけど動画じゃないとちょっとねぇ。
一応ゲームとしてまともに動きそうなフレームワーク上に構築しました…というのが自分の中では新しいんだけど
やっぱ見た目じゃわからん。残念すぎる。
リアルタイムでシェーダーを変更できるんだけど動画じゃないとちょっとねぇ。
とりあえずこれを足がかりにシェーダーの復習でもやっていければと。
次はキューブマップによる全方位シャドウかな?という感じで。
HDR表現(ライトブルーム、トーンマッピング)や被写界深度といった、前やってた類も出来たらいいね。
次はキューブマップによる全方位シャドウかな?という感じで。
HDR表現(ライトブルーム、トーンマッピング)や被写界深度といった、前やってた類も出来たらいいね。
絵
先週から引き続き鉛筆&消しゴムツールで書いては消し、書いては消し。
アタリをつければと言うけれど斜め顔むずすぎやしませんか。
目安があっても描いてる内に正面向いてきちゃうし。
アタリをつければと言うけれど斜め顔むずすぎやしませんか。
目安があっても描いてる内に正面向いてきちゃうし。
(2015/11/19)
絵
2つ同時進行で、1つは版権物、もう1つはいわゆる「よその子」なんだけど
いろんな構図のラフをあれこれ描いては消し、描いては消し。という感じで目立った進展なし。
なんかね、動きに臨場感がなくてカメラの前でポーズとったようになってしまう。
スピード線つければ…というレベルではないなあ。まあ素人なんでマイペースで行くけど。
いろんな構図のラフをあれこれ描いては消し、描いては消し。という感じで目立った進展なし。
なんかね、動きに臨場感がなくてカメラの前でポーズとったようになってしまう。
スピード線つければ…というレベルではないなあ。まあ素人なんでマイペースで行くけど。
プログラム
予定通り苦戦しつつリアルタイムのエフェクト編集機能を入れた。
これでじゃんじゃんシェーダーが書けるはずである…
動かしながらのエフェクトの差し替えを考慮しない設計だったのでリソース管理を整理したのと
適当にアサート文を入れていたせいでエフェクト記述にミスがあると文字通りプログラムが止まってしまっていたので、その修正が主な作業だった。
シェーダーで使われないuniform変数はコンパイルすると省かれてしまって、プログラムから設定しようとすると「そんな変数は無い」と言われたりするんで
そういう時は致命的なエラーではなく単に警告を出すだけにしたりとか。
これでじゃんじゃんシェーダーが書けるはずである…
動かしながらのエフェクトの差し替えを考慮しない設計だったのでリソース管理を整理したのと
適当にアサート文を入れていたせいでエフェクト記述にミスがあると文字通りプログラムが止まってしまっていたので、その修正が主な作業だった。
シェーダーで使われないuniform変数はコンパイルすると省かれてしまって、プログラムから設定しようとすると「そんな変数は無い」と言われたりするんで
そういう時は致命的なエラーではなく単に警告を出すだけにしたりとか。
SDLのConditionalValueをラップしたクラスが何故かデフォルトのデストラクタでSEGVるので
色々調べていたらなぜか空のデストラクタを定義すると大丈夫な事がわかってなんだそりゃ??って思ってたら
案の定コンパイラのバグで、clangを最新版にしたら直ったりもした。
たまにはコンパイラも疑わなきゃいかんね。
色々調べていたらなぜか空のデストラクタを定義すると大丈夫な事がわかってなんだそりゃ??って思ってたら
案の定コンパイラのバグで、clangを最新版にしたら直ったりもした。
たまにはコンパイラも疑わなきゃいかんね。
あ、あとウィンドウが非アクティブになった際にゲーム進行を止めるかどうかをスクリプトで制御できるようにした。
エフェクトをリアルタイム編集するのにいちいち描画止まってたら駄目だもんね。
エフェクトをリアルタイム編集するのにいちいち描画止まってたら駄目だもんね。
次の予定としてはいつも通り遅れに遅れている2.5Dサンプルゲーをいい加減動くとこまで作ろうぜという事なんだけど、期待しないでおこうか。
(2015/11/12)
違うんだ。
みんながポッキーポッキー浮かれてるから私は喝をいれようと思ったんだ。
みんながポッキーポッキー浮かれてるから私は喝をいれようと思ったんだ。
うん。まぁ速度優先の割にはまずまずという感じで。
いつもこのくらい力を抜いて描けたらいいんだけどねぇ…
いつもこのくらい力を抜いて描けたらいいんだけどねぇ…
プログラムの方
ファイルの変更監視クラスのテストコードをずっとDISABLEDにしたままだったんで書き直した。
勿論これを使って何かやろうという魂胆で、スクリプトやシェーダーファイルが変更されたら自動で再読み込みをかけたり出来る。
スクリプトは手間かかりまくるから置いといて、シェーダー位はリアルタイムで編集したいよね。
という事で次はシェーダーの自動再読み込みルーチンを書く予定。
勿論これを使って何かやろうという魂胆で、スクリプトやシェーダーファイルが変更されたら自動で再読み込みをかけたり出来る。
スクリプトは手間かかりまくるから置いといて、シェーダー位はリアルタイムで編集したいよね。
という事で次はシェーダーの自動再読み込みルーチンを書く予定。
(2015/11/08)
プログラムが思うように進んでない点については、もはや言い訳する気も無いという…
実質10月なんて何も書いてないに等しいから酷いもんだ。
実質10月なんて何も書いてないに等しいから酷いもんだ。
などと言っても仕方ないのでとりあえず絵の進捗から。
絵
ハロウィーンだったので何か描きたいな、というより描かなきゃいけないかなという謎の義務感から。
本当はオリキャラでやりたかったが時既に遅し、そんな訳でサブキャラでしのいだ(?)
オリキャラのペットで絵では本の上に乗ってるけど魔力かなんかでフヨフヨ浮く設定。
名前はまだ決まってない。
これはまぁシンプルだし割合サクッと描けた気がする。が、
本当はオリキャラでやりたかったが時既に遅し、そんな訳でサブキャラでしのいだ(?)
オリキャラのペットで絵では本の上に乗ってるけど魔力かなんかでフヨフヨ浮く設定。
名前はまだ決まってない。
これはまぁシンプルだし割合サクッと描けた気がする。が、
コイツはえらい苦戦した。
元はといえば咬筋が網目状になってるクリーチャーを描きたかったのだが、
いつもの行き当りばったりパターンでゴテゴテと。
元はといえば咬筋が網目状になってるクリーチャーを描きたかったのだが、
いつもの行き当りばったりパターンでゴテゴテと。
時間がかかったのは主に背景のせいで、黄昏っぽい風景を描きたくて試行錯誤。
手前のディスプレイもよせばいいのに別枠で画面用意して、そこから自由変形ではめ込んだりとか。
自分は良くも悪くも思い立ったら己の技量をわきまえず突き進むタイプで
結果として見られるようには仕上がったものの、本当途中で止めようかと何度も思ったことか。
(実際、どうにもしっくり来なくてお蔵入りになった絵も結構ある)
手前のディスプレイもよせばいいのに別枠で画面用意して、そこから自由変形ではめ込んだりとか。
自分は良くも悪くも思い立ったら己の技量をわきまえず突き進むタイプで
結果として見られるようには仕上がったものの、本当途中で止めようかと何度も思ったことか。
(実際、どうにもしっくり来なくてお蔵入りになった絵も結構ある)
流石にこれは時間かかりすぎだろという事で
ディスプレイに表示された文字は全部ランダム文字列になっており、
拡大するとガッカリするかもしれない。
ディスプレイに表示された文字は全部ランダム文字列になっており、
拡大するとガッカリするかもしれない。
プログラム
9/22の記事から全然進捗を記してなかったので何時もどおりgitの履歴を見ながら振り返る。
とか書いてアレだが
とか書いてアレだが
- C++とLua間のリソースハンドル受け渡しが上手く行ってなくて参照カウンタが変な値になる
だの
- 最後Luaの終了処理をした段階では既にリソースマネージャが削除されているので2重解放になる
だの
- Luaの値をC++のクラスでラップした際の処理が不味くてスタック位置がズレる
この自作エンジンはC++の状態マシンにLuaの状態マシンを関連付けられて、それぞれ別に動くという変態仕様な為
- Lua側で先に参照が無くなりGCに回収されるとLuaの状態マシンだけが無くなって不味いことになる
とかいう
ええと要はバグ修正に終始していたようで、書いて面白いようなことは何もなかった!残念!
あとはスレッドが例外が補足されないまま終了した際にそれ用のエラーメッセージを出すとかのデバッグ関係だし。
ええと要はバグ修正に終始していたようで、書いて面白いようなことは何もなかった!残念!
あとはスレッドが例外が補足されないまま終了した際にそれ用のエラーメッセージを出すとかのデバッグ関係だし。
強いて言えば自前フォーマットのエフェクトファイル(シェーダーや描画設定を記述するファイル)にImport構文を足したくらいかね。
C++の#includeですね。
元々想定されてないデータ構造だったので地味に大変だった。
ついでにboost::spiritの新しいバージョンx3というのが出ていたのでそちらに乗り換えた。
最近のC++の言語仕様に合わせて作られた物で以前と互換性は無いけど大分シンプルなコードになったし
何よりコンパイル時間が半分くらいになって素晴らしいと思う。
C++14が必須らしく、そこはちょっとネックかも知れないけどこれなら普段使い出来そう…
C++の#includeですね。
元々想定されてないデータ構造だったので地味に大変だった。
ついでにboost::spiritの新しいバージョンx3というのが出ていたのでそちらに乗り換えた。
最近のC++の言語仕様に合わせて作られた物で以前と互換性は無いけど大分シンプルなコードになったし
何よりコンパイル時間が半分くらいになって素晴らしいと思う。
C++14が必須らしく、そこはちょっとネックかも知れないけどこれなら普段使い出来そう…
添付ファイル