タスクシステム総合ス ..
[2ch|▼Menu]
1:名前は開発中のものです。
09/02/19 02:21:01 k4ODtuXP
タスクシステムについての議論、相談、質問、雑談などのスレです

part4 スレリンク(gamedev板)
part3 スレリンク(gamedev板)
part2 スレリンク(gamedev板)
part1 スレリンク(gamedev板)


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

・人を憎んで言語を憎まず

2:名前は開発中のものです。
09/02/19 02:21:16 k4ODtuXP
古典タスクシステム(このスレでは「>>2」と呼ぶ)

White Paper - Programming
URLリンク(homepage3.nifty.com)

タスクシステム
URLリンク(www5f.biglobe.ne.jp)

CodeZine:本格的なシューティングゲームを実現するタスクシステム(タスクシステム,シューティング,ゲーム)
URLリンク(codezine.jp)

Logician Lord … 【コンピュータゲームのからくり】
※ウェブアーカイブのキャッシュ
URLリンク(web.archive.org)


3:名前は開発中のものです。
09/02/19 02:39:56 f7wngrJT
>>1000

全力で却下する

4:名前は開発中のものです。
09/02/19 02:46:44 SBcP9gsz
高専のHSPerのクルクルパーが吠えてると聞いて

5:名前は開発中のものです。
09/02/19 03:58:56 Qg2fxa2U
HSPerが寝たころを見計らって。前スレの問いに一応答えておくか。
またネタにマジレスとか言われるかもしれないが。

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

いや、可読性の問題だから。HSPが嫌われる原因も主に可読性だしな。

6:名前は開発中のものです。
09/02/19 07:23:11 ju+RHZ1R
ProcessだったりActorだったりObjectだったりTaskだったりJobだったり。

7:名前は開発中のものです。
09/02/19 07:34:29 xOakX6Dy
結局、前スレの奴、なんでDBにしたのかさっぱりわからないな(笑)

8:名前は開発中のものです。
09/02/19 07:45:56 ju+RHZ1R
エスパーじゃないから判らないのは当然だ。
しかしその理由を推測できないのは、>7のプログラマとしてのセンスが足りないと言わざるを得ない。

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

ワカランワカランと何時までもほざいているのは、ただのバカ。

9:名前は開発中のものです。
09/02/19 08:13:38 Tu1TE6hA
普通に分かるように話せよ。
前スレでMPIが出てきたときは吹いた。
苦し紛れにアレコレ言い逃れしようとすんな。

10:名前は開発中のものです。
09/02/19 08:26:29 Tu1TE6hA
>>8
>>518のプログラムは分かるだろ。普通に巨大なクソだった。
で、なんでそんなに巨大なクソをありがたく拝んでいるのかが分からんと言ってるんだが。
メリットはなんだといろんな奴が何度も聞いてるのに、出てくる答えは全部HOW。

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

つーかさ、マジでこんなの推測できるわけないだろ。
「参照構造」とかトンデモ思想が飛び出して唖然としたわ。
こんなナナメ上理解できるかよ。

11:名前は開発中のものです。
09/02/19 08:32:06 Tu1TE6hA
>>10
>>518じゃなくて前スレの>>510な。

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

なんでもできるようにするのがエンジニアリングだと思うなよ。

12:名前は開発中のものです。
09/02/19 09:04:42 Tu1TE6hA
>>5
専用のインターフェースを使ったほうが可読性上がるだろ普通。
あと、目的が分からないまま言語だけ叩いてもしょうがないと思うが。

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

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

ちなみに、タスクシステムは目的0というか、>>510に至っては掲げている目的が見当違いだったり、
実は実装されていなかったりだからナニコレ?と言ってるわけだ。

13:名前は開発中のものです。
09/02/19 14:01:18 Vb5vV7p+
みんなHSPに反応しすぎだよ。HSP使いのことはほっといてタスクの話しようぜ。
このままだと、このスレッドはHSPスレです。タスクの議論は他でお願いします。
とかそのうち出てきそうじゃん。

14:名前は開発中のものです。
09/02/19 18:29:00 xOakX6Dy
タスク信者どもこのスレで完全に息の根をとめてやるぜ
具体的にはもうタスクシステムでゲームなんて作れんようにしてやる

15:名前は開発中のものです。
09/02/19 21:42:17 qf5LflEh
別に使い続けてもいいんだよ
洗脳するなってだけ

16:名前は開発中のものです。
09/02/19 22:18:54 RtX9gwgD
>>14
発想が小学生だな

17:名前は開発中のものです。
09/02/19 22:26:47 pAIc4sjR
小学生に失礼

18:名前は開発中のものです。
09/02/20 00:46:37 YgfxUXIw
給料泥棒のHSPがアンチタスカーのふりをして暴れてると聞いて

19:名前は開発中のものです。
09/02/20 01:31:20 tm76Yhhm
ドンタスクったらドンタスク

20:ID:EEKBitmg
09/02/20 05:38:32 ExFXwXhz
>>5
>いや、可読性の問題だから

何言ってんのお前。頭蓋の中が空っぽだから適当ぶっこいてHSP叩いて逃げてるだろ
HSPの問題じゃねーのよ。わかる?フロントエンドに何の言語使ってようが
てめぇが言ってるタスクシステム=DBとかいう珍説はチンプンカンプンなんだよ

21:ID:EEKBitmg
09/02/20 05:41:55 ExFXwXhz
>>13
本当だよな。俺はHSP使いってだけなのに
底辺ワナビー・ダメ中年に限ってHSP使ってるって部分に脊髄反射してやたらネチネチと絡んでくる
おまけにポインタが使えないだとか、見当違いのこと言ってくる(前>>821-)。馬鹿かと
固定長メモリプール使ってれば>>2のポインタの使い方なんて配列の添え字(番号)でも記述できる
ハンドル使ってるなら、ID+配列の添え字 あるいは ID+プールタイプ+配列の添え字 とか

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

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

タスク信者って窮すると話をかっ飛ばしてウヤムヤにしようとするよな

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

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

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

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

俺はタスクは使わない派だが、>>510は応援するよ。ネタとしては楽しいと思う。
始めソースを見ても目的が意味不明だったが、言ってることは分かった。
>>2とは、目標としているところは全然違うっしょ。
あと、参照構造についての意見はまたそのうちまとめて書くよ。

23:名前は開発中のものです。
09/02/20 07:27:31 SutyetVr
そんなわけねーじゃん
だってどっからでも参照できるのがメリットとかウンコ臭かったじゃんよ

24:名前は開発中のものです。
09/02/20 07:55:22 0dC3Oyo7
手段のせいで目的を制限するようなことはしたくないなぁ。

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

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

仕様ってのは「どこからでも参照できる」でその手段が「DBのようなものを採用」だっただけ。
じゃ、なんで「どこからでも参照できる」なのかといえば、それは>510が決めたからとしか言いようが無い。
別に他人のタメにプログラム組んでるわけじゃないのだから。

25:名前は開発中のものです。
09/02/20 08:36:41 SutyetVr
設計のせの字もわかってないから引数否定して
グローバルインスタンスホルダーなんて作ってしまうわけですね

まず、なんでグローバル変数や関数が駄目なのか?とかそっから理解してないよね

26:名前は開発中のものです。
09/02/20 09:27:17 4mVxI9lJ
>>24
>別に他人のタメにプログラム組んでるわけじゃないのだから。

自分のためのライブラリならそう明示すりゃいい。
目的・用途が不明瞭なまま手段だけ出して「これどうよ」と言われれば、
それは一般向けのものとして応えるしかないだろ。

27:名前は開発中のものです。
09/02/20 10:18:16 EZsAEUg+
HSPクンは、

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

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

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

これを同属嫌悪という。

28:名前は開発中のものです。
09/02/20 10:44:19 mhW5mlx0
>>27
で?

29:名前は開発中のものです。
09/02/20 13:23:17 YgfxUXIw
HSP使いの基地外が暴れてると聞いて

30:名前は開発中のものです。
09/02/20 14:25:02 Rn2v73WX
>>22
前スレ510はアンチの立場から>2の考え方を参考にしつつ
明らかに違うものをタスクと再定義してみるネタじゃね。
(読み違えてなければ)従来のタスクで特徴的だとされる
ごった煮リストじゃなくて型毎にリスト持ってるし。
OpenMPやMap-Reduceの影響の方が強いように感じた。

31:名前は開発中のものです。
09/02/20 18:33:19 SutyetVr
でもDBがどうのこうの言ってたじゃん
馬鹿のすることに無理やり意味なんて探すことないよ

32:名前は開発中のものです。
09/02/20 18:35:20 SutyetVr
どうせ匿名掲示板なんだから有利な状態で仕切り直し直せよ
それでも潰すけどね

33:名前は開発中のものです。
09/02/20 18:51:36 SutyetVr
それと新ワード連発して煙にまく手法は相手にされなきゃそれまでな上に
逆に具体性を求められるとタスクシステムに関係してないとどうしても弱くなるし
その上タスクシステムとの関連まで説明させられるしで正直手としては弱い気がすんだよね

34:名前は開発中のものです。
09/02/20 21:52:03 UeW6c0TB
>25
引数クンは、前スレでContext&の受け渡しも否定していたヤツだぞ。

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

という極端すぎる人のことだが、ID:SutyetVrはもしかして引数クン本人なのか?

35:名前は開発中のものです。
09/02/20 22:38:42 YgfxUXIw
引数君は給料泥棒のド素人プログラマなんだから、いい加減トリップつけて、
みんなからNG指定してもらったほうがこのスレのためだと思うが。

基地外みたいなアンチタスカーは引数君か前のスレ主なんだろうな。

36:名前は開発中のものです。
09/02/20 22:53:18 4mVxI9lJ
ID:YgfxUXIw
ここまで煽りのみか。
お前がトリップつけろよ。
煽りしかできない奴は邪魔。

37:名前は開発中のものです。
09/02/20 22:54:50 U7J/cf6e
DBって何?
ドラゴンボールの略かえ?
タスクシステムってwikiにすら載ってないから謎が多いよね
オブジェクト指向データベースですらwikiに載ってるというのに
タスクシステムごときをシーングラフと同列に並べるなよ
全角英数使うなよ
DSLぐらい理解しろよ
飯食ったか
風呂入ったか
歯ー磨けよ

38:名前は開発中のものです。
09/02/21 04:05:46 J8fI+ges
そのwikiってのは、もしかしてWikipediaのことか?

39:名前は開発中のものです。
09/02/21 09:45:44 P36r7rTD
個人で作る規模のゲームなら、変に凝らなくてもタスクシステム程度でちょうどいいんでないかな。
タスクも必要ないテトリスとかオセロぐらい単純なゲームならwhile/switch/caseだけでもいいし。

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

結局アンチタスクって
ポインタも構造体も無いHSPでタスク使いたくても使えないから
すっぱい葡萄になってるレアケースでしょ。

40:名前は開発中のものです。
09/02/21 10:18:19 3HETWV4t
「変に凝ってる」のがタスクシステムだと気付け。

41:名前は開発中のものです。
09/02/21 10:22:39 3HETWV4t
いい加減ド素人タスカーの「お前ら技術力ないだろ、○○を勉強しろ」的なレスは飽きた。

42:名前は開発中のものです。
09/02/21 10:27:28 P36r7rTD
>>40
あの糞単純なタスクシステムのどこが凝って見えるのかを知りたい。


43:名前は開発中のものです。
09/02/21 10:32:12 3HETWV4t
どのタスクシステムについて言ってるんだ?
>>2か?

>>2なら現代でやる意味がないという意味で変に凝っている。
その他のカスタムタスクを指しているなら、目的が迷走している点で変に凝っている。

44:名前は開発中のものです。
09/02/21 10:35:42 3HETWV4t
#define ONE 1
#define PLUS +

int x = ONE PLUS ONE;

こんな馬鹿げたことをやってるのがタスクシステム。
単純なこと変なやり方でやって喜んでるだけだろ。

45:名前は開発中のものです。
09/02/21 10:40:06 P36r7rTD
>>44
よくわからんが

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

もしかしてタスクシステムを理解してない?

46:名前は開発中のものです。
09/02/21 10:41:23 3HETWV4t
……。

「単純なこと変なやり方でやって喜んでる」という例えを示しただけなんだけど。

47:名前は開発中のものです。
09/02/21 10:49:00 P36r7rTD
タスクシステム自体はすごく単純な作りだけど
あれでも理解できない人がいるということか

まぁ関数ポインタとか、C言語初心者には「変なやり方」で難しいかもしれんが。

48:名前は開発中のものです。
09/02/21 10:52:57 3HETWV4t
まあ、「理解してない?」みたいな突っかかり方が十八番だからしゃあないか。
つーか、理解するとかしないとか、どんだけ低レベルなの。

>>47
>>41

49:名前は開発中のものです。
09/02/21 10:56:23 P36r7rTD
>>48
それはつまり
みんな君が理解してないことを突っ込んでたけど
君は勉強しても理解できないからアンチになった、ということになるが…

50:名前は開発中のものです。
09/02/21 11:00:45 3HETWV4t
とりあえず、タスクシステムのメリットを説明してみ?
誰もまともにできてないんだが。

お前がどう理解しているのかちゃんと示してくれ。

51:名前は開発中のものです。
09/02/21 11:02:15 3HETWV4t
メリット説明できずに黙るだろうな。
これまでの奴は全部そうだった。

ID:P36r7rTDの健闘を祈る。

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

そんな難しく考えるほどのもの?

53:名前は開発中のものです。
09/02/21 11:08:42 3HETWV4t
forループで済む話をわざわざ変なやり方で面倒にしている理由を話せと言っている。
単純というが、普通に書いたらどう複雑で、それをどう単純にしたのか示してみろ。
タスクシステムのほうが複雑だから「単純に記述」という部分が嘘になってるんだよ。

54:名前は開発中のものです。
09/02/21 11:18:09 P36r7rTD
ギャラガを例にとると
自分・敵の弾、敵の死亡、敵の生成、などのオブジェが可変のケースだと
オブジェの増減をリスト管理してとか、結局タスクシステムと同じような仕組み作る必要があるんでない?

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

まぁ関数ポインタ理解できない人が見たら難しいソースになるかもしらんが。

55:名前は開発中のものです。
09/02/21 11:21:56 4jF5VqD/
>>54
なにいってるのかまったくわからない

56:名前は開発中のものです。
09/02/21 11:25:13 P36r7rTD
まぁ理解できないなら使わないでいいと思うぞ。
趣味のプログラマがどんな方法でプログラムしようとも
誰も文句いわんだろ。

57:名前は開発中のものです。
09/02/21 11:30:15 3HETWV4t
状態遷移を関数ポインタで表現するのは良いと思うし、
それはタスクシステムに限ったことじゃないよな。

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

タスクシステムだとオブジェクト間の関連が処理順依存になって面倒になると思うが。
そこはどうすんの?
1フレームの誤差だから許容すんの?

58:名前は開発中のものです。
09/02/21 11:38:27 P36r7rTD
>>57
>>1を読んで、どのタスクシステムについて語ってるのかハッキリさせてほしいんだが。
ゲームの種類にあわせればいいんでない?
ほんとに単純なゲームなら>>2でもいいけど、ゲームによって問題が出たり
普通にC++使える環境ならクラスで作り直したり改良もあり.。基本的な考え方は変わらんでしょ。

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

そもそもあんまりタスク使って複雑になるようなゲームならタスクじゃない管理方法使うべきだし。

59:名前は開発中のものです。
09/02/21 11:55:53 3HETWV4t
>>58
>基本的な考え方は変わらんでしょ。
TCB有る無しで違うと思うが。
タスクを1個のリストで管理するかどうかも重要だ。
ごった煮リストでむりくり制御しようとしている様を指して変だと言ってるんで。

>いわゆる「プライオリティつき」タスクを使うか、シグナルのような仕組みを付け加えればよいのでは?
ここまでやると「単純」の域を超えているだろ。
すでにコードの見通しが悪くなってる。
「タスクシステム」のプライオリティーはベーシックの行番号やGOTOに見えるわ。

>そもそもあんまりタスク使って複雑になるようなゲームならタスクじゃない管理方法使うべきだし。
そうだな。

60:名前は開発中のものです。
09/02/21 12:02:50 P36r7rTD
「箸なんて原始的です。だから誰かメリット教えてくれないと箸の使い方覚えません」
って言ってる子供と同じだな。
「魚食うときとか便利だろ?」と言っても
「スープ飲めないじゃん、肉切れないじゃん」と言い返される。
スープ飲むときゃスプーン使えばいい。肉きりたきゃナイフとフォーク。箸で食いやすいものは箸で食えば良い。それだけのこと。
でも箸ぐらい使えないと馬鹿にされるぞ、と。

61:名前は開発中のものです。
09/02/21 12:16:21 G7lsvTqK
単純-複雑、変-変じゃない、とか審美的主観の話をしたら
好みの違う人とは話が合わないのは当然。
技術的に欠陥や優位があるというのならコードや
測定結果の数字を使って具体的に定量的に主張しろよ。

62:名前は開発中のものです。
09/02/21 12:20:35 3HETWV4t
>>60
で、「箸で食いやすいもの」は結局なんなの?
タスクシステム使って良かったと思える場面てどこ?
やっぱりメリット言えないの?

タスクシステムが原始的だなんて言ってないだろ。
タスクシステムよりもずっと原始的なやり方のほうが遥かにマシだと言ってるんだが。

63:名前は開発中のものです。
09/02/21 12:21:06 4jF5VqD/
>>60
ちがうな
箸で食えばいいのにトンカチで食べようとしてる人がいるから
なんで?って聞いてるんだ

64:名前は開発中のものです。
09/02/21 12:22:39 4jF5VqD/
いや、トンカチですらないな
トンカチは役に立つもんなw

タスクシステムはなんだろ?
なんにも役に立たないやw

65:名前は開発中のものです。
09/02/21 12:23:43 3HETWV4t
定量的な主張なら前スレ>>510>>641でやったな。
>>510にはメリットが無いのにコード量は>>641の倍だった。

コード量の差と>>510が使っていたかなりの量のマクロを指して複雑だと言っている。
>>2はその時点ですでにタスク信者が見放していたからまだだけど、比較する必要あるか?

66:名前は開発中のものです。
09/02/21 12:25:36 Kwr5xaMF
>53
だからcontinuationの問題だろ?

67:名前は開発中のものです。
09/02/21 12:27:01 3HETWV4t
>>66
だから継続もタスクシステム抜きで実現できるだろ?

68:名前は開発中のものです。
09/02/21 12:27:28 Kwr5xaMF
>57
全てのn+1は、必ずnを参照すべし

とキミは主張しているのか?

69:名前は開発中のものです。
09/02/21 12:27:39 hYClRP74
そのうえ全部まるごと食えばいいじゃんとか言う奴もいるから話にならんな

70:名前は開発中のものです。
09/02/21 12:28:57 Kwr5xaMF
>67
dispatch部分をいちいち個別に書くのかよw

71:名前は開発中のものです。
09/02/21 12:29:20 3HETWV4t
>>68
何言ってるのかサッパリ分からん。

72:名前は開発中のものです。
09/02/21 12:34:33 Kwr5xaMF
>71
> タスクシステムだとオブジェクト間の関連が処理順依存になって面倒になると思うが。
> そこはどうすんの?
> 1フレームの誤差だから許容すんの?

タスクシステムだろうと、個別ループだろうと、処理依存するだろ?
1フレームの誤差はどちらでも出るぞ。

だから、『状態n+1に更新する場合は、全ての状態nを保存してから処理すべし』、と言いたいのか?

と尋ねたんだが、理解できなかったか?

73:名前は開発中のものです。
09/02/21 12:46:40 Kwr5xaMF
逆に言えば、

  priorityを上げ下げすることで処理順依存をある程度解消できるタスクシステムとやらの方が
  個別ループよりも柔軟性が高く優秀である

とID:3HETWV4tは言っているわけだが、今まで言ってきてることと矛盾してるだろ?
ホントに気づいてないのか?

74:名前は開発中のものです。
09/02/21 13:56:49 07PQbtcV
>>65
> >>510にはメリットが無いのにコード量は>>641の倍だった。

タスクシステムの部分を除けば641のほうがはるかにコード量は多かったよ。

それだけでもタスクシステムというシステムを導入するメリットがあると言えると思うが。

75:名前は開発中のものです。
09/02/21 14:20:08 3HETWV4t
>>72
>タスクシステムだろうと、個別ループだろうと、処理依存するだろ?
ああ、そりゃそうだな。

>>73
プライオリティーで表現すれば処理順を動的に変更できるし柔軟性も高まるが、そんな需要あるか?

 ・自機の弾に当たっている敵A
 ・自機に重なっている敵A

この場合どちらを先に処理するか、全部消滅させるかみたいなルールは動的に決めるものではないよな。
これをわざわざプライオリティーで表現してソートしたりするのが面倒なんだが。
さらにこの辺のプライオリティーがハードコーディングならやっぱり無駄にしか見えん。

でもってこれをタスクシステムで頑張ると「面倒→誤差許容しないとやってられない」、
というシナリオを描いて>>57の発言となった。

シグナルだのプライオリティーだの言っても所詮ルールが静的ならべた書きのほうが楽だろ。

76:名前は開発中のものです。
09/02/21 14:29:25 3HETWV4t
>>74

■TaskDemo
main.cpp 4684
Tasksystem.cpp 337
Tasksystem.h 4625

■NormalDemo
main.cpp 5087
Star.cpp 514
main.h 118
Star.h 235

(5087 + 514 + 118 + 235) - 4684 = 1270

その差50行程度だが、どこが遥かになんだ。

77:名前は開発中のものです。
09/02/21 14:30:42 Te+n/W8K
なんで静的であるという前提なんだ?
そういうゲームしか作ったこと無いとか?

78:名前は開発中のものです。
09/02/21 14:34:49 3HETWV4t
>>77
この手のルールが動的に変わる場合ってどんなのがあるの?
ギャラガは違うよな。

79:名前は開発中のものです。
09/02/21 14:40:53 P36r7rTD
素手で食いたいなら素手で食ってもいいんだが…
何を使えばいいかは料理しだい。世界中の料理を箸で食べろとは主張してないし、
ナイフもフォークもどんな道具も、万能な道具なんてないよ。

でも箸使えないからって箸を否定するのはみっともないよね、ということだね。

箸を使えないのが能力不足のせいか、HSPのせいかは知らんが。

80:名前は開発中のものです。
09/02/21 14:48:03 Te+n/W8K
>78
つまり、作ったことも無ければ想像したことも無いということか。
ダメジャンw

81:名前は開発中のものです。
09/02/21 14:50:59 3HETWV4t
万能な道具はないが、明らかに場違いな道具はあるって話。
俺はもともと目的に合った手段を選べという立場だ。
タスクシステムが手段として他のやり方よりもまともに機能する場面て何?と聞いているんだが。
その問いに対してズバリこれと言ってくれればそれで話は終わるんだがな。

>でも箸使えないからって箸を否定するのはみっともないよね

俺はオマル使えないし、オマル使ってるやつは否定したくなるな。
オマル使ってるやつはみっともないし、オマルを勧める奴は言語道断だ。

82:名前は開発中のものです。
09/02/21 14:53:10 3HETWV4t
まあ、オマルならな、渋滞にはまった時の非常手段として役立つかもしれない。
洩らすよりはマシだからな。
こういう「こんな時なら使える」って意見が欲しいんだよ。

83:名前は開発中のものです。
09/02/21 14:54:55 P36r7rTD
タスクシステムを使った実例は
ナムコの古典的アーケード以外にも
昔からのゲームメーカーのゲームを入れれば星の数ほど使われてる

それに対して何もゲーム作ったことも無い人間が「メリット理解できません」
といっても「そうだろうね」としか言えんわな。

今の最新ゲームの規模で古典的タスクみたいな単純な仕組みが使われることはもう無いけど、
個人製作レベルならまだその程度で十分じゃないのかな。

個人製作レベルで数億円かかるフレームワークとかエンジンとかの話してても夢物語だし…

84:名前は開発中のものです。
09/02/21 14:57:44 3HETWV4t
>>83
現代で使うメリットが無いと言ってるんだよ。
リソースきつきつだった時代に使うことまで否定してないだろ。

85:名前は開発中のものです。
09/02/21 15:03:45 P36r7rTD
>>84
関数ポインタ理解できる程度のプログラマなら
小規模なゲームで状態推移を簡単に管理できる実装の一例、程度でしょ

プログラマに実装の選択肢があるのは一般にメリットだと思うがね。
逆に君は「あらゆる状態でタスクより優れた方法がある」ということを
説明できるのかね?

86:名前は開発中のものです。
09/02/21 15:06:25 Te+n/W8K
>81
> 俺はオマル使えないし、オマル使ってるやつは否定したくなるな。
> オマル使ってるやつはみっともないし、オマルを勧める奴は言語道断だ。

オマエは要介護認定の人たちをバカにしているのか?

87:名前は開発中のものです。
09/02/21 15:08:18 hYClRP74
なんでお前らは結論の出てる議題で必死になってるんだ?

88:名前は開発中のものです。
09/02/21 15:18:06 3HETWV4t
>>85
>>84

89:名前は開発中のものです。
09/02/21 15:19:06 3HETWV4t
>>86
>>36

90:名前は開発中のものです。
09/02/21 15:21:43 P36r7rTD
そーいえば
非相対マルチコアの某最新コンシューマ機で
少ないサブコアのローカルメモリ内だけでメインCPU側から独立して
タスク管理するために、ほぼタスクシステムな仕組みでジョブ管理されてる実装を見たな。

これ、最新ゲームだったけど。
リソースがいくらでもある、って前提で富豪的考え方しか出来ん最近のゆとりプログラマには
結局最新技術も使いこなせないんだろうなぁ…

91:名前は開発中のものです。
09/02/21 15:25:48 bQf1hP7d
タスクシステムは個々のタスクがグローバルなもの(例えばスクリーンデバイス)にばらばらにアクセスする。
ばらばらにアクセス=グローバルなものの整理ができていない。

グローバルなものの整理ができていないと1万行を超えるプログラムを動作させるのは難しい。
URLリンク(www.kojima-cci.or.jp)

だから代わりに引数を使おう
URLリンク(www.kojima-cci.or.jp)

という話で終わるでしょ。
たとえ個人製作レベルでも1万行なんて普通に超えるよ。

もしタスクシステム使う人が
 「1万行越えたらそのコードはいったん捨てて、タスクシステム使わずに1から設計し直すよ」
という認識を持っているならアリかもしれないが、
例えば
 「1万行越え確実だけどタスクシステム使って設計するよ。
  もちろん1万行超えたらそのコードはいったん捨てて、またタスクシステム使って1から設計し直おすよ」
と言う話ならナシ。

92:名前は開発中のものです。
09/02/21 15:31:55 3HETWV4t
>>90
>>84

まあ、これは無駄に「現代」とくくったのがイカンかったね。
リソース使える場面でもタスクシステム使うといいよという例があったら頼むわ。

93:名前は開発中のものです。
09/02/21 15:33:38 Dmt7DoEE
みんな熱いな。タスクについての認識や結論はもう出てると思う。
「使いたいやつが使えばいいと思う」
ただそれだけだ。
タスクのメリット話せと言われても、おそらく使ってる人も表現し辛い箇所なんだよね。
フレーム間を跨ぐ処理を書く上で多用するわけで、その辺はゲームによってまちまちだ。
じゃあ逆にタスク代替案も示せと言われても、
switchに戻すだとかで、これといって画一的な処理は示されないのが現状。

銀の弾丸は存在しない。それだけだよね。

94:名前は開発中のものです。
09/02/21 15:33:51 IeOQ7r77
haskellとかでタスクシステムを実装するとしたらどんな感じになるか
ただしunsafeほげほげとかIORef禁止で

95:名前は開発中のものです。
09/02/21 15:45:18 7rFrs1eT
>>91
そのURLに書いてあるのって、アクセスの話じゃなくて宣言を整理するって話じゃないの?

96:名前は開発中のものです。
09/02/21 15:46:27 P36r7rTD
>>92
CPUリソースとメモリリソースを考慮に入れないなら
それこそどんなアルゴリズムでもいいんでない?遅かろうが無駄だろうが好きなの使えば。
作業効率とか考えるならプログラムも不要でツクールやMODでいいんじゃね?という感じ。

本職のプログラマなら、どんなチープな環境でも軽量・低コストで動作できる
アルゴリズムを知ってるのは十分メリットだと思うけど。
組み込みにしろ、携帯機にしろ、リソースの厳しい環境でやれって言われるのは
良くあることだから。

ま、個人製作ならそんなことどーでもいいんで、
そーなると実装方法を強制されない個人製作で何でアンチタスクになるのかが謎だが。
嫌いなら使わなきゃいいだけなのに。何でアンチ?

97:名前は開発中のものです。
09/02/21 15:47:46 4jF5VqD/
>>91
なつかしいな「Cプログラミング診断室」
でもグロバール変数一覧は俺はオススメできないけどな
そもそも作るなといいたいw>グローバル変数・関数

98:名前は開発中のものです。
09/02/21 15:48:18 Vn5x9Xxe
Haskellはスレッドが数バイトしか使わないほど
軽いから結構かわりそう

99:名前は開発中のものです。
09/02/21 16:01:57 3HETWV4t
>>96
いきなり極端になったな。
作業効率考えるなら〜の部分が唐突に投げやりなんだが、まあしゃあないか。

>>39
>>40
この流れをよく見てみよう。
結局、変に凝ってるのはどっちだよ。
アンチっていうか、こういう意味不明なこと言う奴に、
「リソースある場面でタスクシステム導入する奴は変に凝ってる」
と言いたいわけだ。

リソース無い場面で使うことに関して異論がないのはもう何べんも言ってるのでこれ以上繰り返さないようにな。
ちなみに>>39で想定している場面てリソースないような状況じゃないよな。

100:名前は開発中のものです。
09/02/21 16:04:15 bQf1hP7d
>>95
そうです。今見返すと話つながってないっすね。混乱させてごめん。
1つ目のURL書いた理由は、グローバルなもの(マクロも変数も)を無秩序に使ってると
10000行あたりで破綻するという話を紹介したかったからです。

2つ目のURLはOKだよね?

101:名前は開発中のものです。
09/02/21 16:04:28 Kwr5xaMF
>99
引数クンなのか、ごった煮リスト嫌いクンなのか、どっちなの?
それとも、それ以外?

複雑なものは理解できないクン?

102:名前は開発中のものです。
09/02/21 16:05:45 a9F+sDW/
>>92
リソースが余ってるならC++を使う必要性自体がないのでは・・・w
俺は>>84は、現代のプログラマでも「タスクも知っていた方が良い」ことを示すいい事例だと思った

リソース使える場面でC#やRubyよりC++使うといいよという例があれば前言は取り消す

103:名前は開発中のものです。
09/02/21 16:08:02 07PQbtcV
>>76
> (5087 + 514 + 118 + 235) - 4684 = 1270
> その差50行程度だが、どこが遥かになんだ。

タスクシステム使わないほうは、27%もソース増えてるじゃん。

開発時間はソースの量にだいたいは比例するから、
8時間の作業で済むところが、10時間強もかかる計算になるじゃん。

俺ならそんなの御免だね。
だから、俺は使えるところでは使ったほうがいいという結論だな。

使えないと思うところでは使わない。それだけのことじゃん。

104:名前は開発中のものです。
09/02/21 16:13:33 4jF5VqD/
>>103
処理が減ったわけでもないのに
そこがそんなにうれしいとこなのか?

105:名前は開発中のものです。
09/02/21 16:16:13 07PQbtcV
>>104
人間がバグを仕込んでしまう確率は、だいたいコードの分量に比例して増えるからね。

可読性を保っているなら、コードは少ないほうが望ましい。27%も違えば大きな違いだろう。

106:名前は開発中のものです。
09/02/21 16:18:18 7rFrs1eT
>>100
1つ目が繋がってないのに2つ目を持ってこられても困るというか
個人的な感想を言えば、たったの1万行で破綻するとはとても思えない

107:名前は開発中のものです。
09/02/21 16:19:40 4zHPU/si
とりあえず俺は実装についてはどうでもよくて、タスクシステムという名前へのアンチ
要はゲーム中で動く「モノ」のことでしょ?なんでわざわざタスクとか呼ぶん?

例えば「実例で学ぶゲームAIプログラミング」の2章が
もろにいわゆるタスクシステムやタスク間通信の近代的なC++実装だと思うんだが
タスクなんてひとっことも言わないし、こうやって作るんだとか誇りもしないのね。たいしたことじゃないから。
これがいまどきのありふれた感覚じゃねーの?

だいたい根本的に、「モノ」を管理するために低レベルなOSのアナロジーを使うこと自体が間違ってると思う。
そういうの実装を歪めると思わん?
「ゲームオブジェクト」「エンティティ」「アクター」なんでもいいけど、「タスク」だけはない。
具象的なネーミングとしても抽象的なネーミングとしても。
非ゲームプログラマがTaskという名前のクラスを見て、何なのかすぐ理解できるのかってことですよ。

お前らがやりたいのは、OSの稚拙な真似事じゃなくて、「モノ」を動かすことでしょ?

あーでもロスプラみたいにマルチコアに振り分けるならOS的要素強いかもね。わかんね。
結局、典型的な「自転車置場の議論」(URLリンク(0xcc.net))なんだよなこれ。
松浦本読んだ程度のドシロウトでも参加できるという。

そういうのを避けるためにも俺はタスクシステムという言葉は使わない。
使ってるやつ見かけたら陰からこっそり指さして笑う。

108:名前は開発中のものです。
09/02/21 16:21:47 3HETWV4t
行数でインパクトがないからってパーセント換算するのはヤメようぜ。

109:名前は開発中のものです。
09/02/21 16:25:03 3HETWV4t
タスクというとITRON思い出すから嫌なんだよな。
ITRONのタスクはすげーよ。なのに、タスクシステムのタスクは全然すごくねーよ。
このギャップにイラッとするのはある。

110:名前は開発中のものです。
09/02/21 16:25:40 4jF5VqD/
>>105
それは本質をまったくみてないなぁ
1行ごとに中身のない改行を入れて「;」を打つだけでも行数だけは増えるじゃない
しかも今回のプログラムだって工夫すれば改行崩れの処理省きでcontinue文は消せてしまうので
それをソースコードの行数の増加と考えるのは上げ足取りをしてるようにしか見えない

むしろ、マクロでfor文を見えなくした>>510のがわかりにくくて気持ち悪い
このマクロっぽいのの意味を初見でみた人が知るには付属のタスクシステムテンプレートを
全部読んで理解するしかないでしょ?
これは嫌だなぁ
仮にマニュアルもなにもなかったとしたらかなり読める人限定されそう

111:名前は開発中のものです。
09/02/21 16:26:24 07PQbtcV
>>108
このまま規模が大きくなっても、このパーセンテージは揺らがない。
タスクシステムを使わないほうのプログラムでは、どうしても27%ほどだけソースが大きくなる。

だから行数なんかには意味がない。このパーセンテージのほうがはるかに重要だ。

お前は、どうしてそれをごまかそうとするのか俺にはわからない。

112:名前は開発中のものです。
09/02/21 16:31:02 07PQbtcV
>>110
> それは本質をまったくみてないなぁ

そんなことはない。大雑把にはソースの分量で判定できる。

どちらのプログラムも平均的なプログラマが書いたと仮定して、
タスクシステムを使わないほうは27%もソース分量が増えたのには違いない。

> むしろ、マクロでfor文を見えなくした>>510のがわかりにくくて気持ち悪い

あの程度のソースがわかりにくいとは思わないが、マニュアルがないと
正しく使えない人がいるというのには同意。

ただ、本人が開発するなら話は別だろう。

113:名前は開発中のものです。
09/02/21 16:33:03 4jF5VqD/
>>111
酷いな
ループのカッコとnull判定のことでしかないのに
ここまでくると病気としかいいようがない

114:名前は開発中のものです。
09/02/21 16:35:43 4jF5VqD/
まあ、でも差分がループのカッコとnull判定だけなんだから
それがタスクシステムの本来の役目ということがはっきりしたともいえるね
正直、差分がそこしか見えなかったんだからそれでいいんだよな?

タスクシステム=ループのカッコとnull判定をはじけます

でおk?

115:名前は開発中のものです。
09/02/21 16:38:17 07PQbtcV
>>113
あんたはプログラミング経験が浅くてわかってないんだろうが、ループも、二重ループにするとき、
i,jの添え字を間違えたり、null判定を忘れたり、continueを書き忘れたりするのが人間ってものなの。

そういう定型化している部分を共通部分として書き出して、どこか別のところに追いやったほうが
バグは減るわけ。それは別にタスクシステムでなくてもいいのだが。

forがforeachになっただけでずいぶんバグが減る。
foreachの終了のときのハンドラを定義する構文があればさらに安全性は高まる。

そうやって抽象化と共通部分の括りだしを繰り返して書いていくのがプログラムだろう。

116:名前は開発中のものです。
09/02/21 16:40:14 3HETWV4t
>>111
>このまま規模が大きくなっても、このパーセンテージは揺らがない。
どこがそんなにラクになるのかなと見直したが、2重のforループがTASK2と書けるんだね。
ここでだいぶ文字数稼いでるみたいだ。
んで、それがそんなにうれしいことなのかと言われるとNOな訳で。


117:名前は開発中のものです。
09/02/21 16:40:41 4jF5VqD/
>>115
だから

タスクシステム=ループのカッコとnull判定をなくした最新鋭のシステムです

でいいんだろ?

118:名前は開発中のものです。
09/02/21 16:41:07 07PQbtcV
>>114
> 正直、差分がそこしか見えなかったんだからそれでいいんだよな?

全然違うね。

510のように抽象化することで、自動並列化のようなことが可能になってくる。

まあ、510のソースを自動並列化するのは正直無理だが、もう少し抽象化して、
各タスクの役割を明確に記述できれば自動並列化できる。

119:名前は開発中のものです。
09/02/21 16:41:26 P36r7rTD
>>107
「ウォークマン」みたいなものじゃない?
最初に有名になって、それ以降類似したものの総称として
便利だから名前だけ使ってるって。

>非ゲームプログラマがTaskという名前のクラスを見て、何なのかすぐ理解できるのかってことですよ。
タスクシステムを使うのはゲームプログラマでしょ。普通は。

いちいち現場で「これはオブジェクトを管理するシステムで更新と描画で登録関数が呼ばれて…」
とか説明するより「タスクシステム的なもの」の一言でゲームプログラマならだいたいって通じるし。

ま、デザインパターンみたいにちゃんと定義と命名されればいいんだろうけど
ゲーム業界固有の物だしねぇ

120:名前は開発中のものです。
09/02/21 16:41:35 07PQbtcV
>>116-117
>>118

121:名前は開発中のものです。
09/02/21 16:45:39 4jF5VqD/
>>118
それは>>510からはいえないな
実際、>>510>>641の間で自動化云々って話はないわけだし
自動化を証明したければ比較のソースを書いてからだな
それまではいっちゃいけねぇだろ
俺も否定しないし
少なくとも>>510>>641の間では自動化は見えなかった
今回はこれが結論

122:名前は開発中のものです。
09/02/21 16:52:23 3HETWV4t
まあ、2重のforループで文字数稼いでいるということは、
forループの中身が増えれば増えるほどその稼ぎは薄まる訳だ。
規模が巨大になればなるほどパーセント減るようにしか見えないぞ。
その辺どうなのよ。

123:名前は開発中のものです。
09/02/21 16:55:30 07PQbtcV
>>121
510と641を並列化するソースを書き比べればすぐにわかるよ。
そんな本格的なものでなくていいから。

2重ループでi×jのループ回してるところ、あれをi×j / N のループに
分けて実行して、すべてのスレッドの終了をセマフォで待つだけでいいよ。

124:名前は開発中のものです。
09/02/21 16:56:43 07PQbtcV
>>122
> forループの中身が増えれば増えるほどその稼ぎは薄まる訳だ。
> 規模が巨大になればなるほどパーセント減るようにしか見えないぞ。

それはもちろん正しい。そのへんはゲームの性質によるだろう。

125:名前は開発中のものです。
09/02/21 17:14:52 3HETWV4t
>>124
>>111

126:名前は開発中のものです。
09/02/21 17:27:14 iOCBxjYv
タスクシステムとやらのメリット
コードが一割減

タスクシステムのデメリット
可読性が低くなる


この調子でお願いします
メリットわかってるんだったらごまかさずに書けよ
そんな出し惜しみばかりするから無駄に荒れる

127:名前は開発中のものです。
09/02/21 17:35:18 07PQbtcV
>>126
コード削減、一割減はちょっと違うと思うな。
今回の例ではタスクシステムを使わないと27%増。

俺の感覚では、だいたいこの数字はどんなゲームでもそんなに変わらなくて
平均すれば20%前後だと思うな。これが10%程度ってことはないな。

並列化とかもっと大がかりな仕組みがタスクシステム側に用意されていれば
この差はもっと広がるしな。まあ、それをタスクシステムと呼んでいいのかは知らんが。

128:名前は開発中のものです。
09/02/21 17:46:01 iOCBxjYv
じゃあ二割減でもいいや

開発速度向上はない、可読性が低いものほど開発に時間がかかるから
タスクシステムとやらのデメリットとして
開発に時間がかかるというのも追加できる

この調子ならメリットデメリットを列挙できそうだな
選択肢になりうるかどうかはそれを見れば判断できるだろう
化けの皮を一枚ずつはいでいくのは楽しいの

129:名前は開発中のものです。
09/02/21 17:52:15 07PQbtcV
>>128
> 開発速度向上はない、可読性が低いものほど開発に時間がかかるから

ソース全部理解しなくても、510のタスクシステムは使えるだろ。

TASK2(クラス名A,クラス名B)
{
クラス名A1.XXX = YYY;
クラス名B2.ZZZ = WWW;
}

こう使うだけじゃん。説明に1分も要さないと思うが?

130:名前は開発中のものです。
09/02/21 17:52:47 Kwr5xaMF
>128
> 開発速度向上はない、可読性が低いものほど開発に時間がかかるから
> タスクシステムとやらのデメリットとして

まずタスクシステムのどこが可読性低いのかを示してもらわないと。

FSMになってるところ? 関数ポインタの部分? ごった煮リスト?


131:名前は開発中のものです。
09/02/21 18:15:26 D/oVP314
>>130
自分のタスク内で完結しない処理に関しては、全部グローバル変数経由

ゲーム中のあるシーンを想定した場合、そこで何のタスクがどういう順番で走るかが、
コードの一箇所を見てもわからない。



132:名前は開発中のものです。
09/02/21 18:15:57 4jF5VqD/
>>129
でも読みにくいなぁ、おいw
それが何を表してるのかさっぱりわからないぜw
ループ隠しただけなのになw

133:名前は開発中のものです。
09/02/21 18:24:15 hYClRP74
>>131
>自分のタスク内で完結しない処理に関しては、全部グローバル変数経由
そんな処理するのはタスクじゃないだろ。

134:名前は開発中のものです。
09/02/21 18:26:52 D/oVP314
>>118
> もう少し抽象化して、各タスクの役割を明確に記述できれば自動並列化できる。
そんな簡単じゃないよ。

並列処理は計算機科学の分野では長らく研究されていて、いろいろ知見が積み重なってるんだが、
少なくとも 510 からは、自動並列化につながる筋道がまったく見えない。

夢が大きいのはいいんだが、まったく現実性が無いのもどうかと思うぞ。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5337日前に更新/382 KB
担当:undef