トップページ > プログラム > 2015年10月05日 > IBdfcwn9

書き込み順位&時間帯一覧

2 位/133 ID中時間01234567891011121314151617181920212223Total
書き込み数2400000000000000001000007



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
ゲームプログラムなら俺に聞け32©2ch.net
C#, C♯, C#相談室 Part89 [転載禁止]©2ch.net

書き込みレス一覧

ゲームプログラムなら俺に聞け32©2ch.net
227 :デフォルトの名無しさん[sage]:2015/10/05(月) 00:39:23.49 ID:IBdfcwn9
>ゲームの状況によって必要な処理って変化すると思うけど、
if文で分岐するか、もしくは共通な処理をまとめて
state1_before();
common();
state1_after();
こんな感じではダメなんですかね?
って構造化プログラミングの基本ですわね
for( auto ptr: effects ){ ptr->task(); }
タスクシステムを使わない場合でもこういうコードで明示的に呼び出すと思うのですが
このときeffectsが空なら何も実行されないんで
自然と状況に応じてタスクの切り替えができると思うのですが

>あとどの順で実行されてるか、どれくらいの時間かかってるかデバッグ表示を作るといい
これってタスクシステム特有の問題?
処理時間はプロファイラを使えば分かるのでは
ゲームプログラムなら俺に聞け32©2ch.net
230 :デフォルトの名無しさん[sage]:2015/10/05(月) 00:58:10.50 ID:IBdfcwn9
ゲームには沢山のオブジェクトが出てくるし、同じクラスのオブジェクトが
複数インスタンス化されたりもするので、どう考えても配列かリストか
なんらかの形で管理しなければならないのは明白なので、これは分かるんです、当然です
こういうデータ構造としてのゲームプログラミング設計はまずあると思います
しかし、これに処理の実行順を管理するタスクシステムを組み込むとなると
どうしてよいかわかりません ゲームオブジェクト=タスクとすると後々問題が出てくることは
ちょっと考えれば直ぐに分かることなのでこの案は無しだと思います
データ構造と制御構造を一緒に考えているからうまくいかないと考えられるので
完全に切り分けて単純に、関数・ラムダ=タスクとすると、今度はタスクのリストを動的に生成して
プライオリティーで並べ替えて前から順番に逐次実行していくという
実に地味な展開になり、あまりメリットを感じません
なぜならリストの前から順番にタスクを逐次実行していく動作は
ソースコードの上から順番にプログラムを逐次実行しているのと本質的にそう変わりない気がするから
こういった二元論ではなく、もっと中途半端な観点で設計をしないと
タスクシステムは成り立たないように思え、とても難しいです
ゲームプログラムなら俺に聞け32©2ch.net
232 :デフォルトの名無しさん[sage]:2015/10/05(月) 01:05:38.48 ID:IBdfcwn9
>条件文の嵐になって読みにくくなりそうだが…

ある意味ではですよ、
クラスのインスタンスは大概は複数個生成されることがあり得るので
リストか配列かで管理されると思うわけです std::vector<effect*> effects とか
このときエフェクトの処理を実行するにはfor文を使うわけですよね
エフェクトが一つもなければfor文の中は実行されないし、
エフェクトが有れば適切な処理がなされるわけですよね
普通に書いてもそういうプログラムになるので分岐とかはそんなに意識する必要が
ないと思うのでした
ゲームプログラムなら俺に聞け32©2ch.net
233 :デフォルトの名無しさん[sage]:2015/10/05(月) 01:12:53.88 ID:IBdfcwn9
>>231
むちゃくちゃオブジェクト指向風にタスクシステムを考えると
いわゆるアクターとか言われているような
ゲームオブジェクト=タスク、といった古典的なものになりますが
これは上手く行きようが無いと思うんです
update呼び出し一回のワンパスですべての処理が終わるとも限りませんし
そうするとupdate2、update3・・・どこまで必要?
これに加えてプライオリティーによる処理順管理もあるので
処理順がマトリックスになって非常に煩雑なことになる
これは完全に破たんした方法なのでよくないと思うんです
こんな方法を考えた人はよほどアレだと思いますね
C#, C♯, C#相談室 Part89 [転載禁止]©2ch.net
83 :デフォルトの名無しさん[sage]:2015/10/05(月) 01:19:30.73 ID:IBdfcwn9
ニートとか?
ゲームプログラムなら俺に聞け32©2ch.net
235 :デフォルトの名無しさん[sage]:2015/10/05(月) 01:33:48.65 ID:IBdfcwn9
つまり、大規模になるとタスクシステムでなければ分りにくい、という事ですか?
ゲームプログラムなら俺に聞け32©2ch.net
243 :デフォルトの名無しさん[sage]:2015/10/05(月) 18:29:08.47 ID:IBdfcwn9
>>237
どうしてそう思うのですか?
ゲームオブジェクトが、ただのコンポジションにとどまらず、親子関係を持つのは、
座標なんかのジオメトリーに親子関係を持たせたいからですよね
それは分るのですが、今言っている依存関係はそういったものではなくて、処理順番の依存関係なんですが
だから所有関係がどうこうも関係ないと思うのですが

>タスクシステムの利点はオブジェクト指向の多態そのもの。
タスクシステムを使わなくても、ゲーム以外の一般のアプリも含めて
普通に多態を使っているようですが、そういった方法ではダメなんですか?


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。