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

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

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

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」と明示してください
 そうでない場合はカスタム版タスクであることを明示してください

・人を憎んで言語を憎まず
0002名前は開発中のものです。2009/02/19(木) 02:21:16ID:k4ODtuXP
古典タスクシステム(このスレでは「>>2」と呼ぶ)

White Paper - Programming
http://homepage3.nifty.com/moha/programming.html

タスクシステム
http://www5f.biglobe.ne.jp/~kenmo/program/task/task.html

CodeZine:本格的なシューティングゲームを実現するタスクシステム(タスクシステム,シューティング,ゲーム)
http://codezine.jp/a/article.aspx?aid=297

Logician Lord … 【コンピュータゲームのからくり】
※ウェブアーカイブのキャッシュ
http://web.archive.org/web/20041009222313/www.hh.iij4u.or.jp/~peto/Games/games_top.html
0003名前は開発中のものです。2009/02/19(木) 02:39:56ID:f7wngrJT
>>1000

全力で却下する
0004名前は開発中のものです。2009/02/19(木) 02:46:44ID:SBcP9gsz
高専のHSPerのクルクルパーが吠えてると聞いて
0005名前は開発中のものです。2009/02/19(木) 03:58:56ID:Qg2fxa2U
HSPerが寝たころを見計らって。前スレの問いに一応答えておくか。
またネタにマジレスとか言われるかもしれないが。

>あとさ、シーングラフの中から、条件にあったオブジェクトを高速に列挙する
>それをお前はDBだとかあんた言ってるんだろ?
>そんな機能、シーングラフを扱うライブラリなら大抵入ってるじゃん
>or用意に組み込めるようなトラバーサのインターフェースを提供してるじゃん

いや、可読性の問題だから。HSPが嫌われる原因も主に可読性だしな。
0006名前は開発中のものです。2009/02/19(木) 07:23:11ID:ju+RHZ1R
ProcessだったりActorだったりObjectだったりTaskだったりJobだったり。
0007名前は開発中のものです。2009/02/19(木) 07:34:29ID:xOakX6Dy
結局、前スレの奴、なんでDBにしたのかさっぱりわからないな(笑)
0008名前は開発中のものです。2009/02/19(木) 07:45:56ID:ju+RHZ1R
エスパーじゃないから判らないのは当然だ。
しかしその理由を推測できないのは、>7のプログラマとしてのセンスが足りないと言わざるを得ない。

目の前のコードを解析してその設計思想を推測するのは、プログラム上達への近道。

ワカランワカランと何時までもほざいているのは、ただのバカ。
0009名前は開発中のものです。2009/02/19(木) 08:13:38ID:Tu1TE6hA
普通に分かるように話せよ。
前スレでMPIが出てきたときは吹いた。
苦し紛れにアレコレ言い逃れしようとすんな。
0010名前は開発中のものです。2009/02/19(木) 08:26:29ID:Tu1TE6hA
>>8
>>518のプログラムは分かるだろ。普通に巨大なクソだった。
で、なんでそんなに巨大なクソをありがたく拝んでいるのかが分からんと言ってるんだが。
メリットはなんだといろんな奴が何度も聞いてるのに、出てくる答えは全部HOW。

これはプログラム見たって分からないし、
クソの思想設計を推測したってプログラムは上達しない。
自動並列化にしたって>>510のコードには何もない。
だから話がかみ合わないんだろ。疑問が生まれるんだろ。

つーかさ、マジでこんなの推測できるわけないだろ。
「参照構造」とかトンデモ思想が飛び出して唖然としたわ。
こんなナナメ上理解できるかよ。
0011名前は開発中のものです。2009/02/19(木) 08:32:06ID:Tu1TE6hA
>>10
>>518じゃなくて前スレの>>510な。

開発規模が個人と複数とではまるで話が違ってくるんで、
個人向けなら個人向けと最初から言って欲しい。
前スレ>>510の「オブジェクトがどこからでも参照できるのがメリット」
とかいうのは複数人開発では全く使えないな。

なんでもできるようにするのがエンジニアリングだと思うなよ。
0012名前は開発中のものです。2009/02/19(木) 09:04:42ID:Tu1TE6hA
>>5
専用のインターフェースを使ったほうが可読性上がるだろ普通。
あと、目的が分からないまま言語だけ叩いてもしょうがないと思うが。

どんなゲームをHSPで作ろうとしているのか。
そのゲームを作るのにHSPに過不足があるのか。

この辺見えてないまま単にHSPだけ叩くのは不可能だろ。
目的によって最適な手段は違うから、目的が分からないままでは手段の不当性は訴えられない。
タスカーは目的無視で一般的銀の弾丸を漠然と論じたがる傾向があるから難しいかもしれんが、
それじゃ議論にならないから目的をハッキリさせるのは重要だと理解してくれよな。

ちなみに、タスクシステムは目的0というか、>>510に至っては掲げている目的が見当違いだったり、
実は実装されていなかったりだからナニコレ?と言ってるわけだ。
0013名前は開発中のものです。2009/02/19(木) 14:01:18ID:Vb5vV7p+
みんなHSPに反応しすぎだよ。HSP使いのことはほっといてタスクの話しようぜ。
このままだと、このスレッドはHSPスレです。タスクの議論は他でお願いします。
とかそのうち出てきそうじゃん。
0014名前は開発中のものです。2009/02/19(木) 18:29:00ID:xOakX6Dy
タスク信者どもこのスレで完全に息の根をとめてやるぜ
具体的にはもうタスクシステムでゲームなんて作れんようにしてやる
0015名前は開発中のものです。2009/02/19(木) 21:42:17ID:qf5LflEh
別に使い続けてもいいんだよ
洗脳するなってだけ
0016名前は開発中のものです。2009/02/19(木) 22:18:54ID:RtX9gwgD
>>14
発想が小学生だな
0017名前は開発中のものです。2009/02/19(木) 22:26:47ID:pAIc4sjR
小学生に失礼
0018名前は開発中のものです。2009/02/20(金) 00:46:37ID:YgfxUXIw
給料泥棒のHSPがアンチタスカーのふりをして暴れてると聞いて
0019名前は開発中のものです。2009/02/20(金) 01:31:20ID:tm76Yhhm
ドンタスクったらドンタスク
0020ID:EEKBitmg2009/02/20(金) 05:38:32ID:ExFXwXhz
>>5
>いや、可読性の問題だから

何言ってんのお前。頭蓋の中が空っぽだから適当ぶっこいてHSP叩いて逃げてるだろ
HSPの問題じゃねーのよ。わかる?フロントエンドに何の言語使ってようが
てめぇが言ってるタスクシステム=DBとかいう珍説はチンプンカンプンなんだよ
0021ID:EEKBitmg2009/02/20(金) 05:41:55ID:ExFXwXhz
>>13
本当だよな。俺はHSP使いってだけなのに
底辺ワナビー・ダメ中年に限ってHSP使ってるって部分に脊髄反射してやたらネチネチと絡んでくる
おまけにポインタが使えないだとか、見当違いのこと言ってくる(前>>821-)。馬鹿かと
固定長メモリプール使ってれば>>2のポインタの使い方なんて配列の添え字(番号)でも記述できる
ハンドル使ってるなら、ID+配列の添え字 あるいは ID+プールタイプ+配列の添え字 とか

あと前>>510のソースの背後にある思想は>>2と違うと書いたが、どうやら外れだったらしい
書いた本人(>>510)の思想はタスク信者そのものだった。何がしたいのかサッパリ見えないし無知だ
ageうんこ詩人の当初の予想は的中していたようだ。心からお詫びする

ゲームプログラムの中の処理単位を扱う何らかのシステムだというタスクシステム
>>2ではゲームオブジェクトがタスクらしい。
それが今度はDBです。とか。何言ってるんだ?

タスク信者って窮すると話をかっ飛ばしてウヤムヤにしようとするよな
0022名前は開発中のものです。2009/02/20(金) 07:08:32ID:i3xGUwbj
まあ、>>510の最終目標の1つは、シーングラフを構築する上でタスクを使って並列処理を行うって意味なんでしょ。
タスク単位で他タスクの保有するオブジェクトの参照や依存関係を明確にして、
並列処理できる分については、自動でスレッドにタスクを投げ込んでやろうとしてるのかな。

参照構造はその第1歩って事なんだと思う。DBって言葉使うと紛らわしいよね。一般的なDBMとは単語の意味合いがちょっと違うかな。
タスクからのオブジェクトの所有/解放と他オブジェクト参照の可否を組込む辺りから先ずは始めるのがいいと思う。
でも、並列タスクが相互干渉する状態での同期処理となると頭抱えちゃうかな。
最後にこのようなタスクが残るとクリティカルパスに影響するだろうから、
同期/非同期なのかは、個別に指示する必要がありそうな感ではある。全部動的にするのは難しいね。

タスクの粒度を細かくすると、参照構造がばらけて、並列化しやすくなるだろうけど、タスクプールが肥大になってかえってオーバヘッド生みそうだし、、
逆に粒度を荒くすると、並列化が困難になりそうだよね。その辺のバランス調整も難しそうだ。

他にもアイディアとしては、前フレームでの1タスクの実行時間を保持しておき、
それを次フレームでのタスク予想時間として利用して、効率的に分配するとかかな。

俺はタスクは使わない派だが、>>510は応援するよ。ネタとしては楽しいと思う。
始めソースを見ても目的が意味不明だったが、言ってることは分かった。
>>2とは、目標としているところは全然違うっしょ。
あと、参照構造についての意見はまたそのうちまとめて書くよ。
0023名前は開発中のものです。2009/02/20(金) 07:27:31ID:SutyetVr
そんなわけねーじゃん
だってどっからでも参照できるのがメリットとかウンコ臭かったじゃんよ
0024名前は開発中のものです。2009/02/20(金) 07:55:22ID:0dC3Oyo7
手段のせいで目的を制限するようなことはしたくないなぁ。

時には泥臭いことをやってでも解決しなきゃいけないことはあるんだ。
動けばいいんだよ。

HSPクンだって引数クンだってアンチタスク厨だって、作ったものが仕様どおりに動けばいいんだ。

仕様ってのは「どこからでも参照できる」でその手段が「DBのようなものを採用」だっただけ。
じゃ、なんで「どこからでも参照できる」なのかといえば、それは>510が決めたからとしか言いようが無い。
別に他人のタメにプログラム組んでるわけじゃないのだから。
0025名前は開発中のものです。2009/02/20(金) 08:36:41ID:SutyetVr
設計のせの字もわかってないから引数否定して
グローバルインスタンスホルダーなんて作ってしまうわけですね

まず、なんでグローバル変数や関数が駄目なのか?とかそっから理解してないよね
0026名前は開発中のものです。2009/02/20(金) 09:27:17ID:4mVxI9lJ
>>24
>別に他人のタメにプログラム組んでるわけじゃないのだから。

自分のためのライブラリならそう明示すりゃいい。
目的・用途が不明瞭なまま手段だけ出して「これどうよ」と言われれば、
それは一般向けのものとして応えるしかないだろ。
0027名前は開発中のものです。2009/02/20(金) 10:18:16ID:EZsAEUg+
HSPクンは、

「俺はHSP使いってだけなのに
底辺ワナビー・ダメ中年に限ってHSP使ってるって部分に脊髄反射してやたらネチネチと絡んでくる」

とHSPを使ってることを叩かれると激しく怒る。

しかしHSPクン自身も、タスク使いってだけのやつにネチネチと絡んでいる。

これを同属嫌悪という。
0028名前は開発中のものです。2009/02/20(金) 10:44:19ID:mhW5mlx0
>>27
で?
0029名前は開発中のものです。2009/02/20(金) 13:23:17ID:YgfxUXIw
HSP使いの基地外が暴れてると聞いて
0030名前は開発中のものです。2009/02/20(金) 14:25:02ID:Rn2v73WX
>>22
前スレ510はアンチの立場から>2の考え方を参考にしつつ
明らかに違うものをタスクと再定義してみるネタじゃね。
(読み違えてなければ)従来のタスクで特徴的だとされる
ごった煮リストじゃなくて型毎にリスト持ってるし。
OpenMPやMap-Reduceの影響の方が強いように感じた。
0031名前は開発中のものです。2009/02/20(金) 18:33:19ID:SutyetVr
でもDBがどうのこうの言ってたじゃん
馬鹿のすることに無理やり意味なんて探すことないよ
0032名前は開発中のものです。2009/02/20(金) 18:35:20ID:SutyetVr
どうせ匿名掲示板なんだから有利な状態で仕切り直し直せよ
それでも潰すけどね
0033名前は開発中のものです。2009/02/20(金) 18:51:36ID:SutyetVr
それと新ワード連発して煙にまく手法は相手にされなきゃそれまでな上に
逆に具体性を求められるとタスクシステムに関係してないとどうしても弱くなるし
その上タスクシステムとの関連まで説明させられるしで正直手としては弱い気がすんだよね
0034名前は開発中のものです。2009/02/20(金) 21:52:03ID:UeW6c0TB
>25
引数クンは、前スレでContext&の受け渡しも否定していたヤツだぞ。

 引数を通して渡すのは必要なものだけ、それ以外を渡したらダメ。
 グローバルは当然使っちゃダメ。グローバルに順ずるものも使っちゃダメ。

という極端すぎる人のことだが、ID:SutyetVrはもしかして引数クン本人なのか?
0035名前は開発中のものです。2009/02/20(金) 22:38:42ID:YgfxUXIw
引数君は給料泥棒のド素人プログラマなんだから、いい加減トリップつけて、
みんなからNG指定してもらったほうがこのスレのためだと思うが。

基地外みたいなアンチタスカーは引数君か前のスレ主なんだろうな。
0036名前は開発中のものです。2009/02/20(金) 22:53:18ID:4mVxI9lJ
ID:YgfxUXIw
ここまで煽りのみか。
お前がトリップつけろよ。
煽りしかできない奴は邪魔。
0037名前は開発中のものです。2009/02/20(金) 22:54:50ID:U7J/cf6e
DBって何?
ドラゴンボールの略かえ?
タスクシステムってwikiにすら載ってないから謎が多いよね
オブジェクト指向データベースですらwikiに載ってるというのに
タスクシステムごときをシーングラフと同列に並べるなよ
全角英数使うなよ
DSLぐらい理解しろよ
飯食ったか
風呂入ったか
歯ー磨けよ
0038名前は開発中のものです。2009/02/21(土) 04:05:46ID:J8fI+ges
そのwikiってのは、もしかしてWikipediaのことか?
0039名前は開発中のものです。2009/02/21(土) 09:45:44ID:P36r7rTD
個人で作る規模のゲームなら、変に凝らなくてもタスクシステム程度でちょうどいいんでないかな。
タスクも必要ないテトリスとかオセロぐらい単純なゲームならwhile/switch/caseだけでもいいし。

仕事で作るゲームならその現場のルールや伝統の方法でやりゃいい。

結局アンチタスクって
ポインタも構造体も無いHSPでタスク使いたくても使えないから
すっぱい葡萄になってるレアケースでしょ。
0040名前は開発中のものです。2009/02/21(土) 10:18:19ID:3HETWV4t
「変に凝ってる」のがタスクシステムだと気付け。
0041名前は開発中のものです。2009/02/21(土) 10:22:39ID:3HETWV4t
いい加減ド素人タスカーの「お前ら技術力ないだろ、○○を勉強しろ」的なレスは飽きた。
0042名前は開発中のものです。2009/02/21(土) 10:27:28ID:P36r7rTD
>>40
あの糞単純なタスクシステムのどこが凝って見えるのかを知りたい。
0043名前は開発中のものです。2009/02/21(土) 10:32:12ID:3HETWV4t
どのタスクシステムについて言ってるんだ?
>>2か?

>>2なら現代でやる意味がないという意味で変に凝っている。
その他のカスタムタスクを指しているなら、目的が迷走している点で変に凝っている。
0044名前は開発中のものです。2009/02/21(土) 10:35:42ID:3HETWV4t
#define ONE 1
#define PLUS +

int x = ONE PLUS ONE;

こんな馬鹿げたことをやってるのがタスクシステム。
単純なこと変なやり方でやって喜んでるだけだろ。
0045名前は開発中のものです。2009/02/21(土) 10:40:06ID:P36r7rTD
>>44
よくわからんが

君の頭の中では
タスクシステム=マクロ
なのか?

もしかしてタスクシステムを理解してない?
0046名前は開発中のものです。2009/02/21(土) 10:41:23ID:3HETWV4t
……。

「単純なこと変なやり方でやって喜んでる」という例えを示しただけなんだけど。
0047名前は開発中のものです。2009/02/21(土) 10:49:00ID:P36r7rTD
タスクシステム自体はすごく単純な作りだけど
あれでも理解できない人がいるということか

まぁ関数ポインタとか、C言語初心者には「変なやり方」で難しいかもしれんが。
0048名前は開発中のものです。2009/02/21(土) 10:52:57ID:3HETWV4t
まあ、「理解してない?」みたいな突っかかり方が十八番だからしゃあないか。
つーか、理解するとかしないとか、どんだけ低レベルなの。

>>47
>>41
0049名前は開発中のものです。2009/02/21(土) 10:56:23ID:P36r7rTD
>>48
それはつまり
みんな君が理解してないことを突っ込んでたけど
君は勉強しても理解できないからアンチになった、ということになるが…
0050名前は開発中のものです。2009/02/21(土) 11:00:45ID:3HETWV4t
とりあえず、タスクシステムのメリットを説明してみ?
誰もまともにできてないんだが。

お前がどう理解しているのかちゃんと示してくれ。
0051名前は開発中のものです。2009/02/21(土) 11:02:15ID:3HETWV4t
メリット説明できずに黙るだろうな。
これまでの奴は全部そうだった。

ID:P36r7rTDの健闘を祈る。
0052名前は開発中のものです。2009/02/21(土) 11:04:27ID:P36r7rTD
ギャラガとか今なら個人で作る規模のアクションゲームなら
複数オブジェの並列動作を単純に記述できていいね、ぐらいのものじゃない?

そんな難しく考えるほどのもの?
0053名前は開発中のものです。2009/02/21(土) 11:08:42ID:3HETWV4t
forループで済む話をわざわざ変なやり方で面倒にしている理由を話せと言っている。
単純というが、普通に書いたらどう複雑で、それをどう単純にしたのか示してみろ。
タスクシステムのほうが複雑だから「単純に記述」という部分が嘘になってるんだよ。
0054名前は開発中のものです。2009/02/21(土) 11:18:09ID:P36r7rTD
ギャラガを例にとると
自分・敵の弾、敵の死亡、敵の生成、などのオブジェが可変のケースだと
オブジェの増減をリスト管理してとか、結局タスクシステムと同じような仕組み作る必要があるんでない?

さらに、敵が編隊組んで移動、とかボーナスシーンとか、隊長機がやられたら編隊解散、とか
タスクなら関数切り替えで単純に状態推移を記述可能だけど
switch/caseで状態をオブジェ単位で記録して切り分け、となると
タスクシステムのほうがシンプルに記述できるだろ。

まぁ関数ポインタ理解できない人が見たら難しいソースになるかもしらんが。
0055名前は開発中のものです。2009/02/21(土) 11:21:56ID:4jF5VqD/
>>54
なにいってるのかまったくわからない
0056名前は開発中のものです。2009/02/21(土) 11:25:13ID:P36r7rTD
まぁ理解できないなら使わないでいいと思うぞ。
趣味のプログラマがどんな方法でプログラムしようとも
誰も文句いわんだろ。
0057名前は開発中のものです。2009/02/21(土) 11:30:15ID:3HETWV4t
状態遷移を関数ポインタで表現するのは良いと思うし、
それはタスクシステムに限ったことじゃないよな。

>>1を読んで、どのタスクシステムについて語ってるのかハッキリさせてほしいんだが。

タスクシステムだとオブジェクト間の関連が処理順依存になって面倒になると思うが。
そこはどうすんの?
1フレームの誤差だから許容すんの?
0058名前は開発中のものです。2009/02/21(土) 11:38:27ID:P36r7rTD
>>57
>>1を読んで、どのタスクシステムについて語ってるのかハッキリさせてほしいんだが。
ゲームの種類にあわせればいいんでない?
ほんとに単純なゲームなら>>2でもいいけど、ゲームによって問題が出たり
普通にC++使える環境ならクラスで作り直したり改良もあり.。基本的な考え方は変わらんでしょ。

>>タスクシステムだとオブジェクト間の関連が処理順依存になって面倒になると思うが。
オブジェクト間の処理順が問題になるケースなら
いわゆる「プライオリティつき」タスクを使うか、シグナルのような仕組みを付け加えればよいのでは?

そもそもあんまりタスク使って複雑になるようなゲームならタスクじゃない管理方法使うべきだし。
■ このスレッドは過去ログ倉庫に格納されています