トップページgamedev
1001コメント469KB

タスクシステム総合スレ part9

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2009/12/13(日) 18:11:06ID:ESt66YNz
タスクシステムについての議論、相談、質問、雑談などのスレです

part8 http://pc11.2ch.net/test/read.cgi/gamedev/1250678891/
part7 http://pc11.2ch.net/test/read.cgi/gamedev/1241670786/
part6 http://pc11.2ch.net/test/read.cgi/gamedev/1238725539/
part5 http://pc11.2ch.net/test/read.cgi/gamedev/1234977661/
part4 http://pc11.2ch.net/test/read.cgi/gamedev/1233459490/
part3 http://pc11.2ch.net/test/read.cgi/gamedev/1226199100/
part2 http://pc11.2ch.net/test/read.cgi/gamedev/1196711513/
part1 http://pc11.2ch.net/test/read.cgi/gamedev/1173708588/


・タスクと呼ばれる実装は、非常に多岐に渡ります
 古典タスクシステムについての話題は「>>2」と明示してください
 そうでない場合はカスタム版であることを明示してください

・人を憎んで言語を憎まず
0736名前は開発中のものです。2010/02/14(日) 17:26:41ID:gpTdAh1n
>>734
1.はあまり必要性を感じたことがない
だけどこれがタスクシステムでの一般的なイメージだな。
でこれは必要なら実装したほうがいいんだけど必要ないところでやられると
バグを追跡するのが困難になるというデメリットが残るだけなので困る場合がある。

2.はMTフレームワークで言われてるようなことだろうけど実物見て見ないとなんともいえないな。
それに特化できる実装アイディアを見たことがない。
おれもそういうシステム模索中だけど実用レベルで実装できる人間てそうそういないだろと思う。
並行化のためのシステムや実行順序の最適化・管理はそれなりのアイディアが必要だし。
だからこのネタは議論のネタとして楽しみではある。
で、そこまでやったらおれはタスクシステムとは呼びたくないわ。
だって実装できたのは>>2で言われているようなタスクシステムのおかげじゃないもんw。

3.4.はよく見るけどまわりに迷惑かけるからやめてくれw
0737名前は開発中のものです。2010/02/14(日) 17:31:15ID:OC4y/061
>>732
>>733
>>735 (=>>732)

この流れw
糞まみれだな。
0738名前は開発中のものです。2010/02/14(日) 17:36:45ID:e+nQn9Mg
>>734
>1.実行順番を動的に変更できる
なにこれ?どこで使うの?
壁判定とキャラ判定が逆になったりするの?

>2、3、4
笑えるほど意味ない
0739名前は開発中のものです。2010/02/14(日) 17:37:10ID:gpTdAh1n
>>735
おれは>>2のような「タスクシステム」なしに必要な機能をC++べた書きで「ゲームをつくってる」。
具体的には毎フレーム処理用関数のあるクラスをメインループからベタに呼び出している。
切換はswitch。(FSMっぽくなる。)
これによるメリットはベタに処理が書かれているのでデバッガで直感的にデバッグしやすい。
またベタにコードにかくとコードを見るだけでの理解がしやすい。
このシステムには実行順番の動的変更機能はないがそれにより困ったことはない。おれはね。
これが「金が稼げる」と同じくらいのメリットかどうかはその人次第。
0740名前は開発中のものです。2010/02/14(日) 17:44:37ID:Q6BMs8gS
ニート(仕事をしない人)に対して就職のメリットを解くのは
仕事をしないに対して仕事をするメリットを解けばよくて解りやすいんだが
タスクシステムのメリットはと聞かれても、何に対して話せばいいのかわからんからメリットがあるという説明がしづらいんだよな
タスクシステム自体も曖昧で、例えば実行順序を動的に変更できないものもタスクシステムと呼ばれていることがあるし
就職のメリットだって相手が何者かわからなければ、例えば相手が起業を主張してたり、パチプロだったりする可能性がある場合は
金が得られるじゃ通用しないわけだし
0741名前は開発中のものです。2010/02/14(日) 17:46:05ID:e+nQn9Mg
つまり、本当は意味ないんだけど
仕方なく使ってるってことだね?
0742名前は開発中のものです。2010/02/14(日) 17:48:40ID:eAxvOj2x
>>739
それこそ
「就職しなくても株やギャンブルで楽して金稼げるから就職のメリット無し」って
ニートが言いだしそうな理屈だな。
結局ID:ujwt9v5uの言うとおりなんだな。
0743名前は開発中のものです。2010/02/14(日) 17:52:42ID:gpTdAh1n
>>740
何のために使ってるかを聞きたいんだよね。
で「ゲームが作れる」ならおれは>>2的なものならデメリットも多いし実際使わずにつくれてるから
疑問視するわけ。
次に言われてる実行順番動的変更ってあまり魅力感じないんだけど
これが「ゲームが作れる」に汎用的なメリットあるなら聞いてみたい。
なにか新しい考えがわかるかもしれないし。
で並行化のためにというならもう少し技術的な実体について触れて欲しい。
もしそれで使えると思ったら敬意を持って「タスクシステム」支持者になりますよ。
だって「タスクシステム」として教えてもらったシステムが有用なんだから。
0744名前は開発中のものです。2010/02/14(日) 17:53:46ID:fCtHbjFq
各要素をそれぞれ独立したオブジェクトとして設計する。
それぞれがお互いに絶対依存しないようにする。
(ほかの要素の情報は必ず神様に頼んで取得する)
地形も弾も自機も 同一に見るインターフェースをひとつ用意する。

あとなんかあったっけ?
0745名前は開発中のものです。2010/02/14(日) 17:58:39ID:gpTdAh1n
>>742
だから言ってるでしょ。説得は相手の考え方がベースになるから必ず成功するものではない。
>>730
とにかく論拠とそれに対する反論ということに意味があるんだよ。
無駄ジャン。わかりきってるジャン。じゃ情報量ゼロ。
すくなくともおれは
「実行順番の動的変更機能の必要性は低い」「べた書きでゲームつくれるしメリットもある」
といってるわけだからこれら2つが「俺とはまったく違う」「必要性・メリットはこういうときにある」
のどちらか位は情報くれないと意味がない。
「俺とはまったく違う」以上出せないならああそうかここから違うんだなってあきらめるしかない。
0746名前は開発中のものです。2010/02/14(日) 17:59:14ID:e+nQn9Mg
>>744
ちょっとまって何をしゃべったの?
まさか、メリットの話をしてるわけじゃないよね?
0747名前は開発中のものです。2010/02/14(日) 18:00:08ID:eAxvOj2x
・ジャンルを問わず様々なゲームに適用できる
・並列処理をうまい具合に実現できる
・ゲームの流れを自然な形で表現できる
・大規模なゲームも開発できる
・タスクごとに独立しているため、複数人で開発できる
なんでレス元に初めから出てるメリットを出さずに実行順番動的変更なんて
誰が言い出したかわからんへんてこな話をしてるんだ?
0748名前は開発中のものです。2010/02/14(日) 18:02:54ID:e+nQn9Mg
>>747
全部根拠ないなw
0749名前は開発中のものです。2010/02/14(日) 18:05:35ID:eAxvOj2x
>>748
あんたのいう根拠の基準を説明してくれ。
0750名前は開発中のものです。2010/02/14(日) 18:05:51ID:gpTdAh1n
>>747
・ジャンルを問わず様々なゲームに適用できる

これはべた書きにもいえます。

・並列処理をうまい具合に実現できる

これはぜひ教えて欲しいので具体的なヒントください。

・ゲームの流れを自然な形で表現できる
・大規模なゲームも開発できる
・タスクごとに独立しているため、複数人で開発できる

これはそうは思いません。
少なくともべた書きよりデバッグは複雑になります。
これらはクラスベースオブジェクト指向でも同じことがいえるはずです。
(私の解釈ではタスクシステムはクラスの生成呼び出し部分のシステムのはずで
 そこがべた書きであってもこのメリットは消えないと思います。)
タスクシステム独自のどこが「クラスベースオブジェクト指向」以上のメリットがあるか
指摘する必要があります。
0751名前は開発中のものです。2010/02/14(日) 18:09:28ID:hWfbVx4t
べた書きで毎回毎回コード書き直してたら
生産性悪すぎる
0752名前は開発中のものです。2010/02/14(日) 18:13:22ID:gpTdAh1n
>>751
実際に書いたことある?
タスクシステム上でも生成・消滅は書くでしょう。
ここをベタに書いたのと生産性が違うと思いますか?
一段抽象化するということはデバッグするとき一段追跡するものが深くなる分面倒になります。

各タスク側自体はクラス記述に比べてなんら生産性の違いはないでしょう。
というかこちらは同じような形になるでしょう。
0753名前は開発中のものです。2010/02/14(日) 18:13:22ID:e+nQn9Mg
>>751
それも根拠ないな
例えば5つのケースをベタ書きするのと
一箇所にまとめて書くのとじゃ

ベタは5箇所単純に手を入れればいいけど
一箇所にまとめた場合はそれぞれの差分がif文で分岐してるだろ
実行してみないとどこ通るかわかんねーぞ

結果として生産性最悪になるかもわかんねーなw
ぶっちゃけ早く帰れるのはベタ書きだぜ

っていうかそもそもタスクシステムがベタ書きの反対の表現に使えるかどうかも微妙だけどねw
0754名前は開発中のものです。2010/02/14(日) 18:15:57ID:OC4y/061
>>751
まるでタスクシステムを介した機能モジュール群が
使いまわしに優れているかのような言い方だな。

ベタなコードだからこそ、どこども依存しないから、
切り離しが容易で、ライブラリ化しやすいんだろうが。
0755名前は開発中のものです。2010/02/14(日) 18:29:24ID:eAxvOj2x
>>750
つまり、君にとってはべた書きで十分に思えるし並列処理の話はリンク先の
説明読んでも理解できなかった、と言ってるのね・・・

>>753
>ベタは5箇所単純に手を入れればいいけど
>一箇所にまとめた場合はそれぞれの差分がif文で分岐してるだろ
>実行してみないとどこ通るかわかんねーぞ
んー・・・
この考えだとタスクシステム云々以前に、ライブラリや共通処理の関数化とか
構造化プログラムレベルのことを否定しているように見える・・・
なんか同じような処理を少しだけ変えたコピペを量産する典型的なダメプログラマ
の発言に見えて怖いのですが・・・
0756名前は開発中のものです。2010/02/14(日) 18:30:36ID:gpTdAh1n
>>755
すごいね並列化の話が>>2に載ってるんだ。
おれは理解できなかったよ。もしよければもう少しだけヒントくれないかな。
0757名前は開発中のものです。2010/02/14(日) 18:34:02ID:OC4y/061
まー>>747を素直にメリットだと感じるような奴がタスクシステム使ってるってこった。
俺は、タスクシステムのメリットっつったら、
まず筆頭が「実行順序の動的な変更」だと思うがなぁ。
じゃなきゃ、
わざわざプログラムを細切れにしてまでリストに突っ込んでる
意味が無いよ。
並べ替える気が無いのに、なんでわざわざプログラムを断片化して
リストに突っ込む必要があるんだ?何のためのリスト?
って話になる。
それこそ支離滅裂で、メリット以前に意味すら無い。
プログラムを使いまわしたいってだけなら、関数で十分だからな。
0758名前は開発中のものです。2010/02/14(日) 18:45:53ID:eAxvOj2x
>>756
普通に載ってると思うけど、何か別のページ見てるのかな・・・?
それとも並列処理の定義がこのページに載ってる使い方と君の想定が違ってるとか?
その場合はすまんが君の脳内定義がわからんのでこちらには答えようが無い。

>>757
ま、結局プログラマ個人の受け取りかた次第ということなんだろうけど。
そうなると >>679 のように、使ってる側の方が説得力があるな、個人的には。
0759名前は開発中のものです。2010/02/14(日) 18:52:00ID:gpTdAh1n
>>758
いやいやリンク貼ってくださいよ
0760名前は開発中のものです。2010/02/14(日) 18:52:23ID:fCtHbjFq
>>746
タスクシステムの設計がゲームによって異なるとしても
根っこになる揺るがない部分ってのは必ずあるはずで、
面倒でもそれって何かというのを書き出していった方が
建設的な議論になると思うんで、続きを書いてほしい。

知識の前提の共通化が先だよね。
0761名前は開発中のものです。2010/02/14(日) 18:56:08ID:gpTdAh1n
>>758
見直してみたら
http://codezine.jp/article/detail/297?p=1
>並列処理をうまい具合に実現できる
これのことか・・・
http://ja.wikipedia.org/wiki/%E4%B8%A6%E5%88%97%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0

>並列コンピューティング(へいれつ-、parallel computing、並列計算、並列処理)とは、コンピュータにおいて複数のプロセッサで1つのタスクを動作させること。

じゃないのね。
0762名前は開発中のものです。2010/02/14(日) 19:02:25ID:hWfbVx4t
> ・ジャンルを問わず様々なゲームに適用できる
>
> これはべた書きにもいえます。

これに対して

> べた書きで毎回毎回コード書き直してたら
> 生産性悪すぎる

と返しただけで別にタスクシステムに対してだけ答えたわけじゃないよ
フレームワーク等を利用したほうが生産性あがるでしょ?
コード書き直せばテストが増えてしまうし
0763名前は開発中のものです。2010/02/14(日) 19:06:24ID:gpTdAh1n
>>762
この文脈ではタスクシステムの部分を「べた書きに置き換えても」という意味で書いたから
他の人もそう思ったんじゃないかな。
そりゃなんでも書き散らせば生産性が悪いのは同意しますよ。
0764名前は開発中のものです。2010/02/14(日) 19:06:43ID:OC4y/061
掲示板で難しいこといってもどうせ伝わらないから、あえて簡単に書くけど、
タスクシステムのタスクの実行を並列化するってことは、
どのタスクをどの順番に実行してもかまわないってことで、
だったら、静的にタスクの実行順を決めてしまってもかまわないってことになる。
てことは、普通にtask1();task2();task3()...とベタでコードに書いてしまっても問題ないってことになる。

副作用に依存関係の無いタスク(並列化可能なタスク)
の実行に、
スケジューラ(タスクシステム)
は必要ないわな。

どの順で実行してもかまわないのにスケジューラ?はて、おかしいよな。
何のためのスケジュール?

実際にはどの順で実行して構わなくても、スケジューラは必要なんだけど、
それは>>2には書かれて無いし、話のレベルが違う。
0765名前は開発中のものです。2010/02/14(日) 19:40:42ID:eAxvOj2x
>>764
んー・・・
>俺は、タスクシステムのメリットっつったら、
>まず筆頭が「実行順序の動的な変更」だと思うがなぁ。
と誰もメリットとして上げていない実行順序の動的な変更とやらを自分で上げてから

>どのタスクをどの順番に実行してもかまわないってことで、
>だったら、静的にタスクの実行順を決めてしまってもかまわないってことになる。
>てことは、普通にtask1();task2();task3()...とベタでコードに書いてしまっても問題ないってことになる。
とそれを自分で否定してるのは矛盾してるというか錯乱してるというか・・・

君の言ってることって少なくとも>>2で出てるタスクシステムとは直接関係ない話じゃない?
スケジューラ=タスクシステムと限定してしまってるところとか、君の脳内だけにある
何か特定のシステム相手に一人相撲とってるように見える。
0766名前は開発中のものです。2010/02/14(日) 19:43:42ID:e+nQn9Mg
また>>2と俺タスクとの不一致ですね?
わかりますw
0767名前は開発中のものです。2010/02/14(日) 19:53:34ID:OC4y/061
>>765
だったらお前の言うタスクシステムって何なんだ?
もっと言えば、お前の言うタスクシステム内にあるであろう、「タスクのリスト」、
あれはいったい何の為のリストなんだ?
プログラムってのは元より処理のリストで構成されてるのに、
なぜそれを自前で用意するの?なぜ重複して持つの?
func(){ task1(); task2(); task3(); /*←タスクのリスト*/ }
では駄目で、これと同等の物を自前のタスクリストで構成する理由は何?
順番の動的な変更(スケジューラ)目的以外に何があるの?
教えて。
0768名前は開発中のものです。2010/02/14(日) 20:09:35ID:Q6BMs8gS
>>743
そもそも>>739ってそれだけの内容じゃわかんない部分もあるけどタスクシステムの範疇なんじゃないの?
実行順序の動的変更は不要だから省いて、関数ポインタは苦手だから使わないように変形したしたってだけで
ゲームオブジェクトって呼べるようなデータの配列なりリストなりはあるんでしょ?推測で悪いけど

実行順序の動的変更は描画に関することでスプライトとかと相性がいんだよ
並列化に関しては関わったことないから知らない
0769名前は開発中のものです。2010/02/14(日) 20:22:00ID:OC4y/061
配列使ったらタスクシステムですか。

そりゃ、配列の中に関数ポインタが入ってたらタスクシステム的だがな。

>実行順序の動的変更は描画に関することでスプライトとかと相性がいんだよ
描画エンジンの仕事。
0770名前は開発中のものです。2010/02/14(日) 20:25:36ID:Q6BMs8gS
>>769
それで理解はできたの?
0771名前は開発中のものです。2010/02/14(日) 20:27:17ID:gpTdAh1n
>>768
これをタスクシステムと呼ぶんならそういう立場なんだろうからそれでいいよ。
おれは不自然だと思うから呼ばないという立場だけどね。

まずcodezineの記事はまったく用なしになるね。
少なくともcodezineの記事はタスクリストの切換生成消滅管理技術実装の説明であって
最初に出てくる長所がなぜ生まれてきてるかの説明が一切ない。
この長所は技術的には、毎フレーム処理関数あるクラスによる分割によって生まれている。
これってC++とゲームループというアイディアから自然に生まれるものであって
「タスクシステム」と呼ぶのは不自然だと思う。
事実そのように説明されずタスクリストの管理に解説が割かれている記事になっている。

>関数ポインタは苦手だから使わないよう
この精神がおかしい。必要ないものをなぜわざわざ苦手と表現するのか。
関数ポインタは継承があれば(このレベルでは)必要なくなることくらいは理解してるでしょ?
あとスプライトがライブラリもしくはハードで対応してない状況にお目にかかったことがない。
0772名前は開発中のものです。2010/02/14(日) 20:33:41ID:eAxvOj2x
>>767
>だったらお前の言うタスクシステムって何なんだ?
>>2 でいいんじゃない?スレ元のリンクだからこのスレはこれを共通知識として話するんでしょ?
実際には今まで使ったことあるのはこんな単純なコードでは無かったけど、まぁ考え方は共通してるから問題無し。

>プログラムってのは元より処理のリストで構成されてるのに、
>なぜそれを自前で用意するの?なぜ重複して持つの?
その理屈だとJAVAとか.NETのVMとかもレイヤー的に重複してるから不要ってことになるな。
VMはたとえ話だけど、重複してても別に持ったほうがメリットのあるケースってのが存在することは理解できるかな?
重複=不要、では無くメリットがあれば重複も可、ということ。

それが理解できるなら、多人数開発とかゲームオブジェ単位の生成・消滅とか、
ゲーム作るのにあった粒度の単位で切り分けられたほうがいいケースもあるかもね、と想像できそうだけど。

>では駄目で、これと同等の物を自前のタスクリストで構成する理由は何?
駄目、とは言ってないんだけどね。
別にその方法じゃなくても、タスクリスト使ったほうがいいケースもあるんじゃない、といってるだけの話。
その例みたいにtaskが3つしかなくて生存期間も全て一緒、みたいなケースならべた書きの方がいいかもね。

あぁ、あとタスクシステムとか以前にべた書きが最高、と単純に言い切ってしまうようなのは別の意味で・・・

>順番の動的な変更(スケジューラ)目的以外に何があるの?
>>747

ちょっと不思議なんだけど、こちらは今まで順番の動的な変更とやらが必要になったケースってあんまり遭遇してないし
タスクシステムのメリットにそんなのが出てるのも見たこと無いし・・・
どうも >>2 とは別物に見えるんだけど、君の言ってるタスクシステムって具体的に何?
0773名前は開発中のものです。2010/02/14(日) 20:44:12ID:Q6BMs8gS
>>771
なんで不自然だと思うの?
っていいかたは悪いけど、俺もこのスレは>>2みたいな「古典的」タスクシステムのスレなのかなと思ってたけど
スレの流れとか見ていて、もっと広義にタスクシステムを捉えるスレだと判断した
そもそも>>2は古典であって現在じゃ通じない部分も多いから捉われない方がいいし
タスクシステムをゲームオブジェクトを扱う方法ぐらいで捉える方がいいんじゃないかと提案するって感じだろうか

codezineの記事は読み返してなんか書くことがあったら書くけど、おそらく大したこと書いてないだろう

>>739でswitchって書いてあったからswitch,case文で関数を呼ぶようなものだと思ったんだけどクラスでメンバ関数を呼び出したりもしてるのだろうか?
>>769は関数ポインタつかってたらタスクシステム的だって認めてるし
スプライトに関してはこれだけじゃ解らないかもと思ったから説明するけど
0774名前は開発中のものです。2010/02/14(日) 20:47:03ID:e+nQn9Mg
でも説明をしてくれる人に悪いんだけど
口を開くたびに>>2とは違う俺タスクを紹介してくれるよね?w
0775名前は開発中のものです。2010/02/14(日) 20:53:53ID:gpTdAh1n
>>773
>>739もタスクシステムと呼ぶのならば特に反論はない。
ただ>>2>>739ではタスクリストの管理実装の有無に差がある。
つまり>>2はあまり必要性のない技術について解説してるってことでいい?
実際この実装が邪魔になることが多いからね。

ただ並行処理に対応するためには>>2でいうタスクシステム的なものが必要になると思われるから
そういう技術はおれもチャレンジ中。
やっぱりひとつ抽象化するために実装・デバッグしづらくなるし
そもそも並行処理のスケジューリングは依存関係の管理など解決が必要な問題がある。
0776名前は開発中のものです。2010/02/14(日) 21:05:55ID:gpTdAh1n
三点リーダーやめろよ
07777732010/02/14(日) 21:16:00ID:Q6BMs8gS
スプライトはハードで実装されているんだけど、その性能が不十分というか
レイヤー数が4枚とかしかない場合があって、
それ以上の描画優先度(重なっている部分をどう表示するか)を決めたいときには、登録順序でどうにかする必要がある。
そうするとスプライトセットオブジェクトかなんか作って登録前にソートする方法もあるだろうけど、
ゲームオブジェクトを描画優先度順に並べられるようにしとけば処理の中でスプライト登録やっちゃえて簡単に終わる
0778名前は開発中のものです。2010/02/14(日) 21:29:40ID:OC4y/061
>>772
> 別にその方法じゃなくても、タスクリスト使ったほうがいいケースもあるんじゃない、といってるだけの話。
随分弱い言い方になったな。ではそのケースとやらを教えてくれ。
.netやJAVAのVMは明確な目的があって使うものだ。
タスクシステムの「タスクのリスト」がどういったケースで有用なのか、
何のために必要なのか。
動的な実行順序変更以外に教えてくれ。
0779名前は開発中のものです。2010/02/14(日) 21:35:51ID:oYbjKJUB
データ構造の連結リスト(双方向リスト)に関数アドレスやら優先順位やらをつけて
後に纏めて処理できるのがタスクシステムの基本的な部分でしょ。

と、これだけでもタスクシステムの構造的なメリットデメリットがわかる。
この構造的メリットが活きてくるケースは少なくないと思うけどなぁ。

タスクシステムに限らず、活かせないのなら使わないほうが良いですね。
ここでメリットを聞いてる人はそういう人でしょう。
0780名前は開発中のものです。2010/02/14(日) 21:36:12ID:eAxvOj2x
>>778
>動的な実行順序変更以外に教えてくれ。
>>747

これで3回目ぐらい?
「おじいちゃんごはんはさっき食べたでしょ」って感じ・・・
0781名前は開発中のものです。2010/02/14(日) 21:50:02ID:OC4y/061
いっとくが、タスクのリストってのは
仕事のリスト、処理のリスト、プログラムのリストってことで、
データのリスト、ゲームオブジェクトのリストではないぞ。
ゲームオブジェクトやデータを配列やリストで管理するなんてことは誰でもすることだ。

>>780
タスクシステムはいわばVMもどきなんだから、そりゃやろうと思えば何でも出来る。
だから>>747が出来るのは当たり前。でも使わなくても>>747は出来る。
あえて使うのは何故かと聞いているのだが。

>>779
データ構造に関数アドレスを付けるんですか、そうですか。
俺はデータ構造はデータ構造、制御構造は制御構造で別物で、
交ぜるのは泥沼化の入り口だと思うがなぁ。

>この構造的メリットが活きてくるケースは少なくないと思うけどなぁ。
具体的によろ。
0782名前は開発中のものです。2010/02/14(日) 21:58:56ID:eAxvOj2x
>>781
>仕事のリスト、処理のリスト、プログラムのリストってことで、
>データのリスト、ゲームオブジェクトのリストではないぞ。
その俺俺タスクシステムの定義は何・・・?
>>2のタスクシステムはデータ、ゲームオブジェクトのリストという機能も普通に含んでるけど。
元々のタスクシステムからそれら機能を勝手に引いた時点で、君の言う”タスクシステム”
の話は君の脳内でしか意味の無い話になってるんですが。
0783名前は開発中のものです。2010/02/14(日) 22:03:42ID:OC4y/061
具体性がなくなってきたから。

for(;;)/*メインループ*/
{
  obj1.update();
  for( size_t i=0; i<obj2_list.size(); ++i )
  {
    obj2_list[i]->update();
  }
  for( size_t i=0; i<obj3_list.size(); ++i )
  {
    obj3_list[i]->update( x, y );
  }
  for( size_t i=0; i<obj2_list.size(); ++i )
  {
    obj2_list[i]->update( u, v, w );
  }
}

これじゃ駄目な理由はいったいなんだ?
引数だって自由に使えるし、こっちのが良いだろ。
ただ、動的な実行順序の変更だけは出来ないけどな。
お前らの欲しいのって、タスクシステムじゃなくてゲームオブジェクトDBなんじゃねぇの?
0784名前は開発中のものです。2010/02/14(日) 22:08:26ID:hWfbVx4t
それ
"ゲームの流れを自然な形で表現"
することが出来ていると言えるの?
0785名前は開発中のものです。2010/02/14(日) 22:10:47ID:e+nQn9Mg
>>784
ゲームの流れ?はぁ?
0786名前は開発中のものです。2010/02/14(日) 22:11:30ID:eAxvOj2x
>>783
んー・・・
>>782の時点で、君の言うタスクシステムは
君以外の人間にとっては無関係というか・・・

君の脳内タスクシステムを使うよりは>>783の方がいいと君が判断するなら
君にとってはそれが一番いいんじゃない?
としか言えんなぁ・・・
0787名前は開発中のものです。2010/02/14(日) 22:12:23ID:OC4y/061
>>782
>>2のタスクシステムは便利と感じ、
俺の言う純粋な純粋なタスクシステムは要らないと感じるなら、
単純に引き算すればよい。
(>>2のタスクシステム)-(純粋なタスクシステム)=(ゲームオブジェクトDB)

for(;;)
{
  container = db::select(型名);
  for( itr=container.begin(); itr!=container.end(); ++itr )
  {
    itr->method();
  }
}

これが出来りゃ満足なんだろ。
0788名前は開発中のものです。2010/02/14(日) 22:19:54ID:eAxvOj2x
>>787
>これが出来りゃ満足なんだろ。
君はいったい何と戦ってるの?

「純粋な純粋なタスクシステム」とやらを勝手に脳内で妄想して
「(俺の考えた)タスクシステムは使えない!」って・・・誰に向かって叫んでるの?鏡?

まさに一人相撲。
0789名前は開発中のものです。2010/02/14(日) 22:29:41ID:OC4y/061
>>786
残念ながら、俺の言ってるタスクシステムの方が、
>>2よりも「まだ」まともなんだよ。
>>2は制御構造とデータ構造をごった煮にしてる時点で、
純粋なタスクシステムよりも寄りいっそうたちが悪いんだよ。
タスク(処理)とゲームオブジェクトが密接に結びついてるなんておかしいだろ。別のものなのに。
複数のオブジェクト間にまたがる処理は何処に書くんだって話になる。
ゲームオブジェクトとゲームオブジェクトの間をとりもつのが「処理(タスク)」の重要な機能でもあるのに、
それがゲームオブジェクトにくっついてるって変だよね。

>>788
ここまで提示されても、自分の陥ってる状況が分からないって重症だぞ。
純粋なタスクシステムってのは>>2にも含まれてる。
>>2からアロケーターやらtype値検索機能やらを取り除いて
名前どおり、タスクの処理をする部分のみを抽出したのが「純粋なタスクシステム」だ。
それが本当に必要なのかどうかって話だ。
必要ないなら、>>2からタスクの処理をする部分だけを取っ払えばよい。
すると残るものはゲームオブジェクトDBだ。
0790名前は開発中のものです。2010/02/14(日) 22:32:50ID:e+nQn9Mg
結局、タスクシステムなんていっても内容はグローバルアクセスできる
ごった煮ウンコリストだからなぁ・・・設計とか完全無視の本当のウンコなのに
よくこんなもん使おうとするもんだよ
の割りには設計云々語ろうとするアフォばっかりだな
0791名前は開発中のものです。2010/02/14(日) 22:33:18ID:gTtOteDI
チンカスアンチ共は情けないな。目の前に最高のエサがそこに転がってるのに…
珍しくタスクシステム信者が現れているんだから反転攻勢のチャンスよ?
火力をID:eAxvOj2xに集中したまえよ。いくらなんでもこの程度は倒せるだろ…
0792名前は開発中のものです。2010/02/14(日) 22:42:41ID:eAxvOj2x
>>789
>残念ながら、俺の言ってるタスクシステムの方が、
> >>2よりも「まだ」まともなんだよ。
すまんが、いきなり
「俺の妄想の方が一般に言われてるタスクシステムよりまともなんだ」
と言い出して

>ここまで提示されても、自分の陥ってる状況が分からないって重症だぞ。
とか言われても・・・
「そうか、重症なんだな。かわいそうに。」と思うだけというか。

君の脳内では何か「純粋なタスクリスト」について考えがあるみたいだけど
それこそ >>2 みたいに図解つきで説明してくれないかな。
いきなり君の妄想を暴露されても君以外の人間にはチンプンカンプン・・・
0793名前は開発中のものです。2010/02/14(日) 22:58:37ID:OC4y/061
お前以外は皆分かってんだよ。
ゲームオブジェクトとタスクの結びつきが無いタスクシステムが
純粋なタスクシステムだ。
各タスクはコンテキストを持つだろうけど、
そこはゲームオブジェクトを入れるための領域ではない。
局所的なFSMの状態変数やゲームオブジェクトへのポインタなどを入れるWork領域。
そこに何を間違ったかゲームオブジェクトそのものを突っ込んで腐った物が>>2
お前は>>2のtypeが好きらしいが、あれは最も下劣で目も当てられない代物。
ゲームオブジェクトの管理がしたいなら、DB的なものを作ればよいし(データ構造視点)、
実行順序の動的変更や、CellのSPEに仕事投げたいなら、純粋なタスクシステムを作ればよい(制御構造視点)。
>>2の出る幕は無い。
0794名前は開発中のものです。2010/02/14(日) 22:58:55ID:hWfbVx4t
>>790
ブログに書かれてることを引用しておきながら
人のことをアホ呼ばわりして
設計云々語るとは君はすごいな
0795名前は開発中のものです。2010/02/14(日) 23:05:41ID:eAxvOj2x
>>793
>お前以外は皆分かってんだよ。
そーかぁ・・・
>>2のリンク先ページ書いた人はみんな分かってなかったみたいだけど
「僕の考えてることは皆も同じように考えてる」と疑いなく考えちゃう人なのかな・・・

>タスク(処理)とゲームオブジェクトが密接に結びついてるなんておかしいだろ。別のものなのに。
これ、純粋にOOPのデータと振る舞いの隠蔽によるカプセル化を否定してる考えみたいに見えるけど
クラスがメンバーとメソッド持つのもごった煮と考える人なのかしら?
0796名前は開発中のものです。2010/02/14(日) 23:23:24ID:gTtOteDI
>>792
>君以外の人間にはチンプンカンプン・・・

いや申し訳ないけどそらねーわ
タスク = OBJ、 1タスク = 1OBJ とか、こういう勝手な固定観念に縛られたCodezine状態の
自称システムが古典です古典タスクシステムなんですーとか言われてもピンと来ないなぁ

あーいうお粗末な自作連結リストにオブジェクト格納しましたーみたいなものを
タスクシステムでーすとか喧伝してる人は10年くらい前からちょくちょく見るように
なったのは確かだけどね

ま、ローカル用語、バズワードですから、何をどう呼ぼうが好き好きだし、知ったこっちゃないけど
古典タスクシステムというくらいだから古典があるんだろうね?どれ?Codezineの記事か?w
0797名前は開発中のものです。2010/02/14(日) 23:27:35ID:OC4y/061
>>795
> >>2のリンク先ページ書いた人はみんな分かってなかったみたいだけど
タスクシステムの擁護派でも、>>2を擁護できる奴は居ない。お前ぐらいだ。

> >タスク(処理)とゲームオブジェクトが密接に結びついてるなんておかしいだろ。別のものなのに。
> これ、純粋にOOPのデータと振る舞いの隠蔽によるカプセル化を否定してる考えみたいに見えるけど
これはちょっと表記がまずかったな。
「全てのタスク(処理)とゲームオブジェクトが密接に結びついてるなんておかしいだろ」
と変えとく。
0798名前は開発中のものです。2010/02/14(日) 23:36:22ID:e+nQn9Mg
>>794
引用?どこどこ?
0799名前は開発中のものです。2010/02/14(日) 23:37:10ID:gTtOteDI
>>795
>>2のリンク先ページ書いた人はみんな分かってなかったみたいだけど

んなこたーない。>>2の中ではlogician lordを書いた人間はタスクとOBJの区別を
つけている。松○さんとかいう素人の方は理解できなかったみたいだけど
Cマガで特集記事書いたり禿出版で何冊もタスクシステム本を出したりして
アマチュアの学生相手に布教・普及させようと頑張ってたね。その残滓が君か?
0800名前は開発中のものです。2010/02/14(日) 23:40:06ID:eAxvOj2x
>>797
>タスクシステムの擁護派でも、>>2を擁護できる奴は居ない。お前ぐらいだ。
やっぱり「僕の考えてることは皆も同じように考えてる」と疑いなく考えちゃう人っぽいなぁ。

>「全てのタスク(処理)とゲームオブジェクトが密接に結びついてるなんておかしいだろ」
とりあえず>>2のタスクシステムのどこにも
「全てのタスク(処理)とゲームオブジェクトが密接に結びつく」
という前提は見つからないのだが・・・
全てのタスク云々はどこから生まれた話なんだろう?これも俺俺タスクシステムの脳内定義?
0801名前は開発中のものです。2010/02/14(日) 23:43:27ID:e+nQn9Mg
で、結局メリットはどうなったの?w
0802名前は開発中のものです。2010/02/14(日) 23:45:16ID:hWfbVx4t
>>798
>505のリンク先
0803名前は開発中のものです。2010/02/14(日) 23:46:01ID:e+nQn9Mg
>>802
はぁ?どこ引用したか?って聞いてるんだよ
さっさと出せよボケ
0804名前は開発中のものです。2010/02/14(日) 23:48:42ID:hWfbVx4t
引用がばれたら逆ギレかw
これは恥ずかしいww
0805名前は開発中のものです。2010/02/14(日) 23:53:48ID:OC4y/061
だれかー、俺の替わりにID:eAxvOj2xの相手してー。
特にタスクシステム擁護派に相手して欲しい。
お前らの残党だろ。引き取って面倒みろよ。

>とりあえず>>2のタスクシステムのどこにも
>「全てのタスク(処理)とゲームオブジェクトが密接に結びつく」
>という前提は見つからないのだが・・・

http://codezine.jp/a/article.aspx?aid=297
>シューティングゲームを作る場合は「自機」「敵」「敵出現制御」「得点管理」「タイトル画面」など、
>ゲームを構成する全ての要素をタスクとします。
0806名前は開発中のものです。2010/02/14(日) 23:57:26ID:e+nQn9Mg
>>804
引用場所を貼ったら終りだけど?
俺がいつ引用なんて貼った?
0807名前は開発中のものです。2010/02/14(日) 23:58:14ID:uBD0Sdr5
今日一日でずいぶんスレ伸びたな。

今日のアンチは押され気味というか自爆が多いなwww
陰湿なID:eAxvOj2xと煽られて顔真っ赤なID:OC4y/061の戦い
まぁまぁ楽しめたぞwww
0808名前は開発中のものです。2010/02/14(日) 23:59:15ID:gTtOteDI
>>801
タスクシステムという言葉のメリットか?これの響きは厨二魂を心地よく擽る。
ID:eAxvOj2x みたいな右も左も分からない子を幻惑して遊ぶことができる。

「よくわかんないけどタスクシステムはすごいに違いない!」
「タスクシステムありがたやナンミョホーレンゲー」

こういう信者状態に至るまで育てたらアンチの檻に放り込んで彼らとの相互作用
(化学反応・拒絶反応)を観察する。アンチとの触れ合いの末に信者が強烈な
アンチにジョブチェンジする場合がある。レアポケモンだ。ハード君ともいう

タスクシステムを信じて就活したら大手全部落ちたのではないだろうか。
アンチはゲームプログラマに対する逆恨みの仕方がとにかく半端ない。面白い
0809名前は開発中のものです。2010/02/14(日) 23:59:45ID:e+nQn9Mg
>>747
あと、こんな話にならない嘘を書いちゃってる人とかなんも感じないわけ?
結局、挙げてもメリットとして説明できないでしょ?
なんでテキトーに感覚だけで主張しちゃうの?
それで何度も会社で失敗とかしてない?
0810名前は開発中のものです。2010/02/15(月) 00:00:23ID:UBAP566f
引用しておいて白々しいw
0811名前は開発中のものです。2010/02/15(月) 00:05:34ID:N6p1zrDK
ぶっちゃけ>>747も同じメンタリティでしょ?
多分、これがメリットになるんじゃないかな?とか検証もしないで
テキトーに主張したんでしょ?
そんなことばっかりやってるよね?
嘘吐きだよね君たち
0812名前は開発中のものです。2010/02/15(月) 00:08:46ID:5sdrS/YH
定義のはっきりしないものを感覚以外の基準で判断しようとしても
みんなバラバラのこと言い出すだけで結論なんて出ないだろ。

結局、感覚で判断する >>679 とか >>747 程度の答えしか出ないよ。
0813ID:OC4y/061 日付変わったね2010/02/15(月) 00:10:13ID:JP9Tc4yb
>>808
そこまで妄想しないと自分を保てなくなってるんなら、
お前こそジョブチェンジの頃合かと。気に病むことは無い。
若気の至りみたいなのは誰にでもあるよ。
0814名前は開発中のものです。2010/02/15(月) 00:13:32ID:920Y2zqE
ID:OC4y/061 ってもしかしてハード君なの?
0815名前は開発中のものです。2010/02/15(月) 00:21:00ID:JP9Tc4yb
>>814
>>720
0816名前は開発中のものです。2010/02/15(月) 00:27:38ID:920Y2zqE
そうか、ハード君はタスクシステムに対する旺盛な好奇心が目を引くね。
君はタスクシステムの大ファンだよ。これからも幻惑され続けてほしい
0817名前は開発中のものです。2010/02/15(月) 00:41:11ID:xRwaTxwn
>>781
データ構造はデータ構造、制御構造は制御構造で別物って当たり前でしょ?
0818名前は開発中のものです。2010/02/15(月) 00:50:24ID:0XmofUdi
タスクシステムなんてTCBの実行と描画を同時に行っていた時代の遺物
もしも、オブジェクトの移動、当たり判定、描画etc.を別の処理単位に分けるなら
TCBで全てを済ませるタスクシステムとは相性が悪い

何で、タスクシステムは実行順番を動的に変更できる必要があったのかというと
TCBの実行時に描画も行うから、TCB自体を実行前にZソートしておく必要があったため
実行順とは別の順序で描画できるようなフレームワークなら必要ない

結局、タスクシステムを使ったのはコード量を節約したかったからじゃないだろうか
TCBの最大数が分かってるにもかかわらずtask1();task2();task3()...としなかったのは
双方向リストとイテレータの方がコード量が少なくてすんだのかもしれない
(俺はハード屋じゃないから実際のは分からないけれど)
0819名前は開発中のものです。2010/02/15(月) 01:28:57ID:JP9Tc4yb
>>816
まかせとけ。
俺の理想のタスクシステムはこれ。
まずもって、タスクは「処理」だから、書くべき場所は関数の中。まーこりゃ大前提だわな。
void function()
{
  task1
  {
    //処理1をここに書く
  }
  task2
  {
    //処理2をここに書く
  }
}
もちろん書いた順に実行されることも保障される。
ところで、taskのくだりは無くても支障ないから、取っ払う。
void function()
{
  //処理1をここに書く
  //処理2をここに書く
}
そうすると普通のプログラムとなり、同時に俺の追及する理想のタスクシステムも完成する。
だから俺は、タスクシステムのアンチであり、同時に信者でもある。
0820名前は開発中のものです。2010/02/15(月) 02:10:20ID:bh6op2hi
>>819
class TamaHoge : public Hoge{
 public void shori{
  // 弾の処理
 }
}
Class TekiHoge : public Hoge{
 public void shori{
  // 敵の処理
 }
}
とかやっといて、オブジェクトを適当に作って適当に順次shori()を呼び出す
のがタスクシステムの原型になるんじゃないの?
あと、書いた順に実行されることは必須じゃないんじゃない?
0821名前は開発中のものです。2010/02/15(月) 02:30:21ID:7o/YpQTX
>>820
それは仮想関数を使った多態をコンテナと組み合わせたものだね。

仮想関数は便利だ。派生クラスで好きにデータを追加しながらクラスごとに動作を
記述することができるからね。

コンテナは便利だ。オブジェクトが増えたり減ったりするのを実に素直に書き表す
ことができるからね。

で、これを原型として何を加えると「タスクシステム」になるの?
何か加える必要があるの?
0822名前は開発中のものです。2010/02/15(月) 02:42:38ID:bh6op2hi
>>821
何を足すかは知らん。これで全部かもしれん。

つか、うちはほとんどこれっぽいのでやってるので
これをタスクシステムというなら、確かに便利です。
0823名前は開発中のものです。2010/02/15(月) 02:44:17ID:bh6op2hi
つーか、これだとシステムってんじゃなくてスタイルだよな。様式?
0824名前は開発中のものです。2010/02/15(月) 03:18:22ID:ngtxgrVY
>>819>>820
これがタスクシステムというならああそうなのって思うが
そう説明してる「タスクシステム」って少なくとも>>2じゃないな。
0825名前は開発中のものです。2010/02/15(月) 03:41:44ID:xRwaTxwn
難しく考えなくていいんじゃ?

いろんな処理をタスクという単位にして
リストで繋いで処理する事にタスクシステムって名前が付いてるだけ。
>>2のWhite Paper - Programming に「処理関数へのポインタ付きワーク構造体の連結リスト」って書いてあるし、
細かく決まりがあるわけじゃないでしょ。

「処理関数へのポインタ付きワーク構造体の連結リスト」な機能があるなら、タスクシステムって言えちゃうんだろう。

OC4y/061とかe+nQn9Mgみたいな人って相手にすると疲れるよね。。。。
0826名前は開発中のものです。2010/02/15(月) 07:02:37ID:cbly0qco
引数っての何渡すんだろ
引数なしで統一した方が扱いやすいと思うのだが
それに一々毎回毎回引数渡すのやだな
0827名前は開発中のものです。2010/02/15(月) 08:33:19ID:ngtxgrVY
>「処理関数へのポインタ付きワーク構造体の連結リスト」
これがいらないっていわれてるんだが
0828名前は開発中のものです。2010/02/15(月) 09:14:04ID:FcwOh6Xd
>>827
C++なら不要だよね
Cでの話じゃない?
0829名前は開発中のものです。2010/02/15(月) 09:29:03ID:TmV+tuR/
C/C++関係なく<連結リスト>はなくても動的変更なければ必要ない。
<リスト>ならC/C++ともにないと困難。
配列や呼び出しコード列挙もリストといえばリスト。
0830名前は開発中のものです。2010/02/15(月) 13:54:09ID:vBkTf+IV
だからオールアセンブラ時代のテクだっつーの

タスクシステム使うとメモリ使用量も把握しやすいし、複数人で開発もできる
オールアセンブラでそれをやるのは大変

今あえてこのシステムを使う必要はないだろ
0831名前は開発中のものです。2010/02/15(月) 17:58:56ID:n4qXt3PM
シーン管理もタスクシステムも同じっしょ
0832名前は開発中のものです。2010/02/15(月) 18:03:04ID:TJaa1Km+
>>831
シーン管理?
0833名前は開発中のものです。2010/02/15(月) 22:34:52ID:920Y2zqE
>>818
> タスクシステムなんてTCBの実行と描画を同時に行っていた時代の遺物

どういう話なのか知らんけど
昔のBGとOBJを表示するハードのことなら、あれラインバッファだから
V-BLANK期間内は描画処理というのはやんないよ。パターンテーブル
(VRAM)の書き換えは毎フレームゴリゴリやるような話じゃないし

> もしも、オブジェクトの移動、当たり判定、描画etc.を別の処理単位に分けるなら
> TCBで全てを済ませるタスクシステムとは相性が悪い

んなこたない。ひとつのオブジェの1フレーム分の差分処理を1タスクで
ドベーっと一気にやる必要はない。むしろそうしないことのが多い
logician lordの記事でも移動と当たり判定のタスクは分けてるでしょ
0834名前は開発中のものです。2010/02/15(月) 22:45:23ID:l7qhUG1T
logician lordの記事ってなんですか
0835名前は開発中のものです。2010/02/15(月) 22:55:19ID:bh6op2hi
>>834
>>2の記事あん♥
■ このスレッドは過去ログ倉庫に格納されています