[表示 : 全て 最新50 1-99 101- 201- 301- 2chのread.cgiへ]
Update time : 05/09 09:54 / Filesize : 120 KB / Number-of Response : 355
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

タスクシステム総合スレ



1 名前:名前は開発中のものです。 [2007/03/12(月) 23:09:48 ID:8bV5Boxt]
どうぞ

171 名前:名前は開発中のものです。 mailto:sage [2007/04/21(土) 09:40:41 ID:FI1lzfn8]
で、その本の中では何て定義してるの?

172 名前:名前は開発中のものです。 [2007/04/21(土) 10:35:11 ID:qfI0z2jN]
>>170
おいおい、やっとタスクシステムを定義しようと努力して、これから
マルチスレッドとか他の実装方法との比較を論じようとしているんだから、
「大混乱」とか結論ありきのワンセンテンスメッセージはやめようよ。

おれは、この本のタスクシステムをみたとき、ふつうにマルチスレッドでキャラを動かせばいいじゃない
(わざわざオブジェクトをNEWしてリストに組み込んでいかなくてもいいのに)
と思った。
開発効率とか品質(スピード)などからの面でどのくらいメリットがあるのか、疑問におもった。

その辺の意見をききたい。
自分ではこの本と同じものをマルチスレッドで書いたりする余裕もないからね。

173 名前:名前は開発中のものです。 mailto:sage [2007/04/21(土) 11:09:21 ID:laYGd4sA]
読み進めたけど話が進まないね
タスクシステムってなんなのか調べてみた

ttp://www5f.biglobe.ne.jp/~kenmo/program/task/task.html
ttp://www5f.biglobe.ne.jp/~kenmo/program/task/task2/task2.html
ttp://homepage3.nifty.com/moha/prog_task.html

わからなかった


                      糸冬 わ  り

174 名前:名前は開発中のものです。 mailto:sage [2007/04/21(土) 11:17:18 ID:Cncyo4d6]
>>172
そんなことしたら、シングルコアCPUなら普通に動くけど
マルチコアCPUにするとまともに動かない素敵なシステムになりますよ。

175 名前:名前は開発中のものです。 [2007/04/21(土) 12:15:44 ID:3GQIcX1J]
沖縄県の方へ(命に関わる注意事項です)

沖縄県での選挙ですが、どうか民主党だけは避けてください。県民の生命に関わる可能性があります。
民主党の最大の公約は一国二制度(※)ですが、一度「一国二制度 沖縄 三千万」等で検索をお願いします。
この際、民主党のHPで調べても良いです。以下の注釈↓と矛盾することは書いてないはずですから…

※一国二制度
 簡単に言えば沖縄を中国と日本の共有物にし、そこに3000万人の中国人を入植させます。
 (つまり沖縄人口の 96% を中国人にして、実質、沖縄を中国人の居住地とします。)
 さらに「自主」の名の下、沖縄で有事が起きても自衛隊は干渉できません。
 3000万人の中国人が、少数派となった130万人の日本人に何をしても、です。
 そして反日教育を受けた中国人の反日感情の強さは、ほとんどの日本人の理解を超えるものです。

今回の選挙で民主党が勝った場合、「自主」「発展」を連呼しつつ段階的に進めていくことになります。
自主と言っても、自主を認めるのが「住人の96%が中国人となった」後だということに気をつけてください。
発展と言っても、新沖縄の少数派となった「少数民族日本人」の発展ではないことに気をつけてください。

176 名前:名前は開発中のものです。 mailto:sage [2007/04/21(土) 13:08:27 ID:laYGd4sA]
>>175みたいなネトウヨきもいな
言われなくても分かってるだろ普通に・・・
今まで無知だった自分への恥隠しのつもりか何かか?

177 名前:名前は開発中のものです。 mailto:sage [2007/04/21(土) 13:13:02 ID:qfI0z2jN]
>>174
つまり、マルチスレッドだとマルチコアCPUの場合、まともに動かなくなる。
軽量スレッドであるタスクシステムだと、CPUのアーキテクチャに依存せずに動作する。
以上のようなメリットがタスクシステムにはある、ということだな。

178 名前:名前は開発中のものです。 mailto:sage [2007/04/21(土) 13:14:51 ID:Cncyo4d6]
ぜんぜん違いますよ。タスクをマルチスレッドで実装するのは
難易度が高い。

その辺を認識せずにスレッド使えばいいとか言ってるアホには
無理なんじゃねってこと。

179 名前:名前は開発中のものです。 mailto:sage [2007/04/21(土) 14:16:13 ID:sEVsPTrc]
古典ゲームタスクシステムはリストの任意位置にロギングタスクを仕込むなど
リソース最適化のためのロジックを入れやすい強みがあるからダメダメってわけでもない。



180 名前:名前は開発中のものです。 mailto:sage [2007/04/21(土) 15:28:49 ID:iSBz72w9]
>ID.qfI0z2jN
ねー、だから>>169の本の中でのタスクシステムは
どういう定義になってるんだい?

181 名前:名前は開発中のものです。 mailto:sage [2007/04/21(土) 19:46:23 ID:445SE7r4]
今求められているもの

・タスクシステムの定義(俺の見る限りではワーク領域を持ったリスト構造のことを指している事が多い木がする)
・なぜワーク領域のあるリスト構造をタスクシステムと呼んではいけないのかに対する回答
・結局どうやって実装するのがいいのか(一概には言えないっていう答えが妥当ならそれでスレ終了)

182 名前:名前は開発中のものです。 [2007/04/21(土) 22:03:55 ID:qfI0z2jN]
>>181

タスクシステムの定義は>>169のリンク先からサンプルコードをダウンロードしてList3-1と3-2だけみればわかると思う。
List3-1はタスクの構造体、List3-2はそれの実行ルーチンをあらわしている。余裕があったらC++の実装版もみてみるといい。

二番目の回答はどうでもいいような気がする。

で、3番目。
「一概には言えない」でもいけど、マルチスレッドとの比較というテーマなら具体的に比較できると思うぞ。
いまのところCPUをシングルコアという条件で限定すればタスクシステムは、マルチスレッドに対してメリットがあるという答えはでてきてない。

でもマルチスレッドはリソースを多く消費しそうなきがするんだよな。タスクシステムは軽量の自家製スレッドだから
スピードも早くメモリ消費も少ないというレポートがあってもいいように思うんだが。

183 名前:名前は開発中のものです。 mailto:sage [2007/04/21(土) 23:08:52 ID:6oOZ9JbV]
>>181
>・タスクシステムの定義(俺の見る限りではワーク領域を持ったリスト構造のことを指している事が多い木がする)
狭義
固定サイズのワーク領域を持った単方向リスト構造でサブルーチンの交換が可能なもの
ギャラクシアンの実装を原典とする

広義
ワーク領域を持ったリスト構造
ギャラクシアンの設計を原典とする

>・なぜワーク領域のあるリスト構造をタスクシステムと呼んではいけないのかに対する回答
ほかの用語(↓)と混同するから
プリエンプティブマルチタスクとは 【preemptive multitasking】 - 意味・解説 : IT用語辞典 e-Words
e-words.jp/w/E38397E383AAE382A8E383B3E38397E38386E382A3E38396E3839EE383ABE38381E382BFE382B9E382AF.html

>・結局どうやって実装するのがいいのか(一概には言えないっていう答えが妥当ならそれでスレ終了)
一概には言えない
……が「あのゲームを俺が実装するならこうするね」的な話は有意義だと思う
もし俺が2DSTGを実装するならリストよりツリー構造を使うよ
親子関係をもつキャラクタを適切な順番でまわすのに適しているし
キャラクタのグルーピングがしやすいので敵キャラだけ舐めたいときなどに無駄な処理が減る

184 名前:名前は開発中のものです。 mailto:sage [2007/04/21(土) 23:20:34 ID:Ii4A4TL3]
C++ で言えば、毎フレームの処理を実装したクラスインスタンスのリストだろ?
そんなの画面ごとに std::list<Task*> なりで持てばいい。よく使うなら適当に
ラップしたクラス用意すればいいだろう。

「タスクシステム」とか呼ぶ人は、何でもかんでもグローバルだったり、
プログラム全体にこの構造を当てはめる傾向があって嫌い。

185 名前:名前は開発中のものです。 mailto:sage [2007/04/21(土) 23:23:05 ID:96E91bg8]
>ほかの用語(↓)と混同するから
JAVAスクリプトみたいなもんか

186 名前:名前は開発中のものです。 mailto:sage [2007/04/21(土) 23:37:57 ID:sEVsPTrc]
「タスクシステム」
飽くまで全てをひとつのリストに押し込めようとする努力が多くて、
手段が目的となってる感のあるアプローチのこと。

187 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 00:00:51 ID:SVESfasi]
マルチスレッドで効率よく使えない技法なぞ過去の遺物じゃ

188 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 00:31:08 ID:useOh8AV]
>>182
おいおいサンプルのダウンロードなんかできないぞ。

189 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 00:53:25 ID:useOh8AV]
>>182
>マルチスレッドとの比較というテーマなら

どういう比較をするつもりなのか知らないが、まさかとは思うが
お前の定義するそのタスクシステムのタスクひとつひとつを
スレッドに置換するような形で比較するのではあるまいな。

>タスクシステムは、マルチスレッドに対してメリットが

お前の定義するそのタスクシステムとやらは
マルチスレッドとは排他的な存在のようだから
やはり上記の「まさか」は当たっているということか。


>タスクシステムは軽量の自家製スレッドだから




タスクシステムとマルチスレッドをなぜ排他的な存在


いまのところCPUをシングルコアという条件で限定すればタスクシステムは、マルチスレッドに対してメリットがあるという答えはでてきてない。

でもマルチスレッドはリソースを多く消費しそうなきがするんだよな。タスクシステムは軽量の自家製スレッドだから
スピードも早くメモリ消費も少ないというレポートがあってもいいように思うんだが。




190 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 00:55:49 ID:useOh8AV]
上は送信ミスだ。

>>182
>マルチスレッドとの比較というテーマなら

どういう比較をするつもりなのか知らないが、まさかとは思うが
お前の定義するそのタスクシステムのタスクひとつひとつを
スレッドに置換するような形で比較するのではあるまいな。

>タスクシステムは、マルチスレッドに対してメリットが

お前の定義するそのタスクシステムとやらは
マルチスレッドとは排他的な存在のようだから
やはり上記の「まさか」は当たっているということか。


>タスクシステムは軽量の自家製スレッドだから

それならファイバーやマイクロスレッドと呼べばいいんじゃないか。

191 名前:名前は開発中のものです。 [2007/04/22(日) 01:11:41 ID:QxI8Jcnw]
だいたいわかった。

>>184
のように、タスクシステムというのはふつうに使われている。
ただし、一部(多数?)の人は、わざわざタスクシステムなんていって仰々しく議論することに違和感がある。
ちなみにファイバーとかマイクロスレッドなどと呼べばまだましらしい。

192 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 03:36:04 ID:gWESM4cO]
>>191
それなんかちょっと違和感が.
前の方はあんま読んでないんだけど,自分の感覚では以下な感じ.
fiberは「非時分割で非プリエンプティブ(協調型)なスレッド」
タスクシステムは「エージェント集合でゲームを作るシステム」
現実には同期問題からエージェント=fiberの実装が多いけど,
スレッドでも同期エージェントを作れば,タスクシステムは成り立つと思う.

fiberの場合のみに限定したとしても,fiberは実装方法であって,
「エージェント集合」が肝であるタスクシステムとは別だと思うんだけど.

#名前付けるほどのことか,という話には納得する面もあるんだけど,名前なんて大体そんなもんだと思う.
#あとワーク領域がうんたらって話は化石過ぎるんじゃないかしら.

193 名前:名前は開発中のものです。 [2007/04/22(日) 04:51:35 ID:YZWy+Lh2]
>>172
> おれは、この本のタスクシステムをみたとき、ふつうにマルチスレッドでキャラを動かせばいいじゃない
無理無理w
キャラクター1000体表示したら、1000個マルチスレッド動かすのかy。

しかも、全部好き勝手、平行に走るんだぜ?
1000体分同期取るんだぜ?



194 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 08:07:47 ID:KD72KCOk]
素朴な疑問なんだけど、ゲームって条件判断つきのアニメだよな。
パラパラアニメに分岐があるだけだよな。分岐ってか、インタラクティブってか。
入力があって、計算して、描画、音再生して、その繰り返し。たかが、それだけなのに、
なんちゃらかんちゃらカタカナが飛び交うってのも、不思議だと思った。
きょうびのパソコンなら、if文が1万あっても、フレームレートへの影響って
微々たるものではないかと、察するのだが、推測なので、実際分からんけど、
感覚的には、そんな感じで。
だからさ、お前ら、アポだな、と思った。いや、アポなのは俺かも知れないけど、
正直な気持ちとして、そう思ったのだ。


195 名前:名前は開発中のものです。 [2007/04/22(日) 08:29:39 ID:YZWy+Lh2]
誤爆?

196 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 08:36:23 ID:U5lotNIv]
ヒトのやってる事にケチつけないと気がすまないのか?
マジメにやってる奴を馬鹿にするレスは不愉快なだけ。
だいたいここはゲームの技術について語る場所だ。
なんとなく思っただけの事ならチラシの裏にでも書いてろ。
俺の言いたいのは以上だ。
もう二度とつまらん書き込みするなよ。

197 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 09:25:02 ID:ridILpBz]
>>196
おまえもなー


198 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 09:38:30 ID:KD72KCOk]
ぶっちゃけ、俺はタスクシステムが分からない。>>123みたいな実装だな。
つーか、それで、何が問題なのか分からないんだ。具体例はないし、どこ
ぞの信者が、わけわからず布教してるだけなスレだな。いくら、あーたら、
こーたら、書き連ねても、何の生産性もないよね。123がもっと、詳しくそ
の説明ってか、具体的にどう、メガマウスなのか、コードを交えて、解説を
やって欲しいけど、名無し掲示板だと、どうにも議論的な発展がないな。い
ろいろな発言があるようで、大して、書いてる人はいないなら、HNがあるほ
うが、放置ってか逃亡が認識できて終わりが分かるのでいい気がするっす。


199 名前:名前は開発中のものです。 [2007/04/22(日) 10:24:01 ID:QxI8Jcnw]
>>193
サンキュー。やっと具体的な議論ができる発言がでてきたな。
つまりタスクシステムは、

 「同期を取る必要がある数1000にものぼるオブジェクトを対象とする並行処理(1つの処理は短時間)を、
 少ないリソースで実現させることができる。」

というメリットがあるわけだ。
それをマルチスレッドやったら重過ぎると。
たしかに「組込みマルチタスキングプログラミング」という本をよむとマルチタスキングの4つの基本要件として、
@コンテキストスイッチング、Aタスク間通信、B実行優先度、Cタイミング制御
があげられているがこれらを少ないリソースで実現でき、かつ構造化されている手法がタスクシステムということだな。



200 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 14:33:04 ID:lvPS3FuZ]
タスクシステムを構築するのに、内側でマルチスレッドを使っても問題はない。
よってリソースがどうこう言う利点は当てはまらない。
結局は実装方法によりけり。

201 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 14:52:48 ID:f5nllPrq]
>>194>>198は昔からいろんなスレで
阿呆なことばかり言っている奴なので気にしない方向で

202 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 15:05:20 ID:kFHvjrd1]
所謂タスクシステムとは団子の数が増減する串団子みたいな物だよな

●→先頭
◎→しんがり
○→プレイヤーオブジェクト

ゲーム開始時はこんな感じ
●○◎

敵キャラやらアイテムなどのオブジェクトが必要に応じて生成されると
●○△△△◇×△◎

原始的な手法と言うと語弊があるが、所謂配列型のシステムが
常に一定のメモリを使用するのに対して
所謂タスクシステムは必要な時に必要な分のメモリしか使わない
リソースを使いたい放題の富豪的なプログラミングが許される今となっては
積極的に使用する意味はない

203 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 15:07:29 ID:gWESM4cO]
>>200
自分もそう思うんだけど,
このスレ的にはfiberな古典実装のみを扱うのかな?

>>199
間違いでは無いと思うんだけど,視点がちょっとずれてる気がする.
それはスレッドとfiberの対比に近くて,利点としては副次的なものじゃないかな.
タスクシステムはエージェント(タスク)集合にすることで
エージェントごとのコードを1箇所に集められるとか,依存性から実装を取り除けるというみたいな,
所謂OO的な利点が主なんじゃないかしらん.

204 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 15:44:05 ID:KD72KCOk]
富豪的プロぐらっむって、他に、学術的な呼称はないの?


205 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 15:45:03 ID:CSfmZnZe]
>>203
タスクシステムというとなんとなくノンプリエンプティブな気がする。
現在のOSが持ってるスレッドはプリエンプティブだから、
OSの用意したスレッドでタスクシステムを実装するのは不便な気がする。

マルチコアCPUで高速化するために、複数のタスクシステムを
マルチスレッドで並列実行とかならありだと思うけど。


206 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 16:00:54 ID:29CA+INJ]
PCゲーの場合、CPUコア数なんてばらばらなんだから
スレッドプールでごにょごにょってのは
frame per scondの存在しないゲームくらいでしか有効じゃないと思う

207 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 16:06:58 ID:4Cp/kF21]
実際に実測して検証したわけじゃないけど

なんとなくポインタ使ったリスト形式のタスクシステム?(名前が悪い!w)
が速いような気がするから1フレーム(60FPSなら16ms位?)におさめるのに性能を重視する
ゲームで使われてるんだと思います

ていうか俺はイメージで使ってるw
なんか、new,deleteとか遅いイメージあるし。
ましてやstdなんてごにょごにょ・・・



208 名前:名前は開発中のものです。 [2007/04/22(日) 16:14:42 ID:YZWy+Lh2]
>>200
ちげーよw
拡大解釈すなw
本来のタスクシステムの話してんじゃねーよ

少なくとも、このスレのタスクシステムはゲームでの古典的な擬似タスク(もうこの単語も鼻水でるが)の話。
だから、基本マルチスレッドは使ってない。


209 名前:名前は開発中のものです。 [2007/04/22(日) 16:17:57 ID:YZWy+Lh2]
>>207
実際に動的生成で、速度駄目かどうかってのは、計った方がいいよ。
動的生成の方が楽できるんだし。

はっきりいって、ゲームによる。キャラクターが少ないなら、動的でいい。
パーティクルとかは、さすがに、動的生成でもプールするけど。


もちろん、高速なメモリマネージャを使うのを前提だけどな・・・




210 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 16:27:38 ID:4Cp/kF21]
>>209
動的に生成したほうが手軽だし、リソースの管理にしたってクラス作ったほうが楽なのはわかってるけど

なんかゲーム作成となると古典的なCの手法の方が速いような気がするんですよね(これもイメージだけど)w
ちなみにゲームじゃなけりゃ。俺もstd::vectorとかclassとか使いまくります。

まあ、やっぱり一番よいのは実測して問題ない方法を使うことなのかも・・・


211 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 16:36:46 ID:KD72KCOk]
これは具体的だね。

mkmqwerty.hp.infoseek.co.jp/programing/tips/tips_index.html
「なんだか煩雑なソースになってきました。 実際にはこれに加えて、タイトル画面、
エンディング、スタッフロール等の分岐があり、敵の種類ももっと多いでしょう。 上
記のようなソースでもゲームを、とりあえずつくることはできますが、ソースが読み
づらく管理が難しいです。 そこでタスク処理と呼ばれるものを導入します」

俺は、上記のようなソースでも、作れる。
だから、タスク処理いらない。
なんだ、タスクって、逃げかよ。





212 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 16:39:05 ID:O3yavdGP]
動的に領域を確保するやり方のなにがいけないの
ゲームによるけど動的に確保するのも悪くないだろ

(いまここ)
やっぱり一番良いのは速度計ったりして検討した方法だね

それならPCごとに差が出てもおかしくないだろ できるだけ汎用性のあるやり方をするべき
領域確保の失敗処理も最初の一回で済むし、逐次的な動的確保より
やっぱりタスクシステム(鼻水でる単語だけど)の方が良いね

(一番最初へもどる)

213 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 16:43:49 ID:O3yavdGP]
>>211
かるいミニゲームとかならそれで十分かもしれないが、
巨大なものを組むならお前の言ってるつくり方ではまず難しすぎる。
それに複雑な面を組むときは、1フレームごとに数百、数千のifを見なくちゃいけないのか?
いくらなんでもそれは馬鹿馬鹿しい。

というかその言い分はなに?タスク処理からの逃げかよ、と突っ込まざるを得ない。

214 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 16:54:16 ID:4Cp/kF21]
>>212
うは!不毛だ

コンシューマ機なら一定の性能だけど。。。
パソはね・・・・


215 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 16:55:46 ID:KD72KCOk]
>>213
CPUからして見れば、数千のif文なんて、目くそじゃんw
人間的には、当該コードだけ眺めればいいわけで、頭からけつまで見る必要
ないしw

「富豪VSタスク」戦争の勃発ですね。(むふー)


216 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 17:08:03 ID:tSd7SPRg]
ここでいわれているタスクシステムか、
もっと素直なやり方しか知らないってのが大きい気がする。

ってか、他の方法にはどんなのがあるの?

217 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 17:11:10 ID:O3yavdGP]
ゲームループ中で、膨大な数の弾や敵機の存在フラグをifで見るのは愚行というもの。
ある程度まともで、リアルタイムなレスポンスが要求されるゲームなら、動かすべきものは優に1000を超える。
そしてそういうものはfpsも60以上が相場なので、画面上に何も無かったとしても、
単なる内部処理で1secに60000という条件分岐を処理しなければならない。
条件分岐のコストというのは非常に高く、昔は、1secに60000まではないとしても多くの条件分岐を処理させたのでは
パフォーマンスに関わることが多かった。
そして今でも、高速性が求められるものでは条件分岐のコストを考慮せざるを得ないので、
タスクシステムの需要も無いわけではない。
処理の負担を考慮しない無計画な設計というのは、巨大なゲームを組む時は許されない。
コード全体が失敗した設計に依存してしまうことが多く、取り返しが付かなくなってしまうからだ。
というかそろそろID:KD72KCOkはあぼーんしておいたほうがいいな。馬鹿にもほどがある。どうせ釣りなんだろうが。

218 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 17:26:48 ID:KD72KCOk]
>>217
たかたが、スーパーマリオのコピーアンドソースも見当たらない、低レベルな
ゲ製作技術板で、そんなこと言われてもなぁ。


219 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 17:29:32 ID:5nxQbdiI]
タスクシステムで分岐の負荷が消えるかのような書き方は
感心できないね。関数ポインタで分岐してたら根本的には
解決してないだろ。

存在フラグなんてものを全対象分用意した場合にくらべて
処理しない場合の無駄な分岐は削除できるけど、
それは C++ での仮想関数で十分実現できるよね?



220 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 17:44:24 ID:BUzInjQ8]
多人数で開発する時にシステム化しておくと楽っしょ?
戦闘シーンやフィールド・メニューやショップの処理も、共通のルールで相手がどんな処理(シーン)か知らなくても自由に以降できる汎用性の高いシステムで、わりかし簡単なのがタスクシステムなんじゃないの?
ゲームのオブジェクトだけじゃなく、当たり判定からタイムカウントもシーンの管理も全部タスクに突っ込めるのは楽でいいよ。
いまならそれを発展させて、ツリーでもなんでも好きに作ればいい

221 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 17:45:43 ID:BUzInjQ8]
あと、処理の順番も優先度で明確に出来るし、フレームごとのきっちりしたエフェクトするのも向くかも
いまのフレームレートに依存しないタイプのゲームではどうなのかわからんけど

222 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 18:06:34 ID:v/ich/HT]
>>220
>共通のルールで相手がどんな処理(シーン)か知らなくても自由に以降(移行?)できる

タスクシステムじゃなくてタスクパターンとでも呼んだ方がわかりやすい気がする。
主観だがシステムというともう少し硬い機械よりなものをイメージするんだよね。

223 名前:擬似タスクw [2007/04/22(日) 18:17:11 ID:aF9z9yRP]
「リフレッシュレートに関する論争」
「タスクシステムに関する論争」

うはwwwwゲームにおけるデータ構造・クラス設計・パターンwwwwwww

224 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 18:30:35 ID:gWESM4cO]
>>ID:O3yavdGP,ID:KD72KCOk
動的/静的とか富豪/貧乏みたいなコスト面で見る事自体が本質を見誤ってる.
>>211の引用の通り,
べた書きは煩雑で管理が難しい->タスクで処理,依存性を分離すると楽
という話.

>>221
>あと、処理の順番も優先度で明確に出来るし、フレームごとのきっちりしたエフェクトするのも向くかも
優先度による同期の代わりに「キャラ全員の移動完了を待って当たり判定タスクを起動」するような同期タスクでもOKでしょ?

225 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 18:41:05 ID:3Cbey4i0]
>>217,220
多態の一言で済む話をタスクだなんだとゴチャゴチャ言ってるから
低レベルとか古臭いとか言われるんだよ

226 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 18:42:08 ID:ZoaDc3VU]
タスクシステムをフレームワークに置き換えて読めば
自分たちがどれほど恥ずかしいことを言ってるかすぐわかる。

フレームワークがなんなのか判らない奴には判らんかw

227 名前:名前は開発中のものです。 [2007/04/22(日) 18:50:14 ID:YZWy+Lh2]
>>224
べた書きで難しいなら、普通、今時なら、多態使うだろう。
ロートルじゃあるまいし。

見るべきは、コスト面じゃないのか?

228 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 19:30:55 ID:5nxQbdiI]
ロートルがタスクを宣伝しやがったおかげで多態とかの一般的な技術よりも
先に「タスクシステム」とやらに手をつける奴が多いのよ。

その流れで関数ポインタやらリスト構造やらメモリプールやらを
初めて知ることになると、「タスクシステム」が何か偉大な技術みたいに
錯覚しちゃうんじゃないかと思うんだ。

今で言えば関数ポインタは仮想関数で、リスト構造は std::list で済む。
メモリプールも最近の環境では不要なことのほうが多いだろう。

229 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 19:41:55 ID:GAzy/Bcl]
>>228
逆じゃね?
最近は、オブジェクト指向を一通り理解したやつしかタスクシステムに手を出していないと思うよ。



230 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 19:44:55 ID:QxI8Jcnw]
>>224のまとめ方は納得できるものだな。
素直に理解できる。

だが、「多様」というキーワードがでてきているのが気になる。
書き方はもっともらしい文体だが、内容はよく読むとなにもない。
無視していいような気がするがID:gWESM4cO他みなさんはどう思う?

231 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 19:50:39 ID:KD72KCOk]
もういい。わけわかカタカナが飛び交うオナニープログラムはいい。
変数はすべてグローバル、ユーザー定義関数は使わない。制御はループとイフと
フォーの3つのみ。制御用の変数はフラグ(多値)とカウンタのみ。使用言語はLGP。
俺は、これで、FF14でも、スーパーマリオ10でも、メタルギアソリッド7でも
モーターストーム3でも、ドラゴンクエスト14でも、なんでも、作っちゃうんだからね。(むふー(鼻息))
たかだか、パラパラアニメですから、楽勝ですよ。
むふー。
まぁ、いつか。な。


232 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 19:57:07 ID:gWESM4cO]
>>227
そうなんだけど,違うというか..
ワタシのIDのレス見てもらえば分かると思うんだけど,
多態に限らずストラウストラップ的OOの(エージェント/オブジェクト/タスク)集合により
ゲームを構築するシステムをタスクシステムと言うんであって,
リストが,fiberが,というような実装の話は実例であってそれ以上ではないと思う.

1実装例(データ構造)のコストを挙げて,タスクシステム(アルゴリズム,パターン)の良し悪しを言うのはお門違いというか.

233 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 20:04:34 ID:v/ich/HT]
>>232
> 多態に限らずストラウストラップ的OOの(エージェント/オブジェクト/タスク)集合により
> ゲームを構築するシステムをタスクシステムと言うんであって,

誰か翻訳してもらえませんか。

234 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 20:08:12 ID:4/EgVnhk]
"ストラウストラップ" の検索結果 約 773 件
"ストラウストラップ的" の検索結果 1 件

235 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 20:11:45 ID:4/EgVnhk]
※1 ストラウストラップ的OO

ビアルネ・ストラウストラップのオブジェクト指向。

データ型を定義するのに、「クラス」(もともとはオブジェクト指向とは関係のない SIMULA の言語機能)と
その特徴である「継承」を活用するプログラミング手法。

ストラウストラップが '80 年代半ばごろまでに C++ の設計を通じて整理したもので、
現在主流のオブジェクト指向の考え方。

236 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 20:29:47 ID:5nxQbdiI]
>>232
> 多態に限らずストラウストラップ的OOの集合によりゲームを構築する

これだけじゃ「C++ 使ってゲーム作ってます」ってだけだろ。
システムでもなんでもない。

237 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 20:30:50 ID:v/ich/HT]
>>235
マジレスされても困るんだが。(それにそこだけ書いても普通理解できない、コピペ元を貼るべき。)
ttp://d.hatena.ne.jp/sumim/20040525/p1

多態性にC++もSmalltalkもないし、タスクはデータよりも処理に注目する考え方、故に元コメントは
意味がわからん、と言う意味だったんだが。

238 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 20:50:33 ID:gWESM4cO]
>>236
それを言われちゃおしまいなんですが,名前なんて得てしてそんなもんだと思うんです.
あとC++はマルチパラダイムだからC++なOOで〜とかのが正確?(どうでもいいね)

>>237
そこをホントに読んだんでしょうか.
Smalltalk(は1のアランケイのと読み替えてもいいんですよね?)は
1.“メッセージングによる可能な限り動的な処理・実装・設計”(メッセージ指向とも)
を読んで多態性という言葉が出てくるのは驚きです.

239 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 20:52:24 ID:1cO9U5KH]
タスクシステム(サブルーチンがぶらさがってるリスト)とスレッドの相性は悪いんだろうか?

タスクを食っていくループでCPU資源にうまく割り振れば問題ないはずだ
2〜8個程度のスレッドを生成してサブルーチンを処理するたびに次のポインタを受け取る
タスクが銀行のようにフォーク並びをしているのを想像して欲しい
並んでいる人がタスクでATMがスレッドだ

ここで問題になるのは実行する順番が入れ替わったり同時であった場合の影響のことだ
STGであればキャラクタの種別(敵キャラ、弾など)ごとに処理すれば
並列実行の影響を考える必要はない
だから、タスクごとに種別IDを割り振っておけばよい
種別IDが切り替わる所で一度全部のスレッドが処理を終わらせるまで待つことで同期をとる
(もちろんゲームによってはそう簡単にはいかないが……)

いままでタスクシステムでゲームをつくってきた人はループにちょっとした仕掛けを作るだけで
マルチコアCPUに対応できる可能性がある
現状のPC事情を考えると果たして意味がある行為なのかは疑問だがおもしろいTipsじゃなかろうか?
(現状のPC事情・・・マルチコアCPU=ハイスペック。といってもローエンド機が置き換わるのも時間の問題だろうけども)



240 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 21:12:35 ID:v/ich/HT]
>>238
メッセージ指向だから多態(ポリモーフィズム)がないとでも言うのか?ますますわからん。
どちらにしろこのスレでOOと言えばおまいさんの言うストラウストラップ的なやつがデフォ
なのでわざわざ断わられると混乱するだけだよ。

241 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 23:10:29 ID:WXusdEx1]
>>239

タスクリストを複数持つのは面白いアイデアだけど、意味なし。
なぜなら、現在のゲームにおいてボトルネックはまず間違いなく、
描画だから。

しかも描画はハード的処理により、スレッド化などしなくても
並列処理にできる。

242 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 23:15:44 ID:P6iYulT4]
>現状のPC事情を考えると果たして意味がある行為なのかは疑問だがおもしろいTipsじゃなかろうか?
マルチコアといっても、大抵2CPUしか積まれていないので、
どんなに良くなっても2倍。ほとんど無意味ではあるかな。

コンシューマ機なら話は大きく変わる。
タスク処理を239のようにするのはデフォになる。
ただ、違うスレッドに居るタスク同士が情報をやり取りするとクラッシュするので、
タスクの基礎部分でだけなんとかするのはムリ。


>なぜなら、現在のゲームにおいてボトルネックはまず間違いなく、
>描画だから。
「現在の」じゃなくて、「一昔前の」ならそうかな。
今は物理計算があるから、そうともいえない。

243 名前:名前は開発中のものです。 mailto:sage [2007/04/23(月) 00:46:11 ID:D3wQozch]
>>239はこれだね
ttp://www.watch.impress.co.jp/game/docs/20070131/3dlp.htm


244 名前:名前は開発中のものです。 mailto:sage [2007/04/23(月) 12:56:56 ID:kPTKND6z]
>>241涙目wwwwww

245 名前:名前は開発中のものです。 mailto:sage [2007/04/23(月) 13:28:32 ID:ofnNc5u7]
タスクシステム信奉者の致命的な欠点は古い物にこだわりすぎて、
時代をしっかり把握できないことだな
>>241が代表例

246 名前:名前は開発中のものです。 mailto:sage [2007/04/23(月) 14:37:15 ID:sF8jML+T]
>>241がタスクシステム信奉者なんてどういう見解だよw

247 名前:名前は開発中のものです。 mailto:sage [2007/04/23(月) 23:02:50 ID:59B/D9d+]
>>243を見てると、タスクシステムがどうだとかいう議論がむなしくなるなw

248 名前:名前は開発中のものです。 [2007/04/24(火) 02:12:23 ID:rP75YEIH]
>>247
タスクシステムを気軽に楽しめばいいんだよ。
世の中には、いろいろなプログラムを作っている人がいて役立つ人もいる。

手のとどく範囲のプログラムにおいて、タスクシステム(タスクパターン)を使ったら設計が簡単でパフォーマンスも
あがった、なんてレスがあったらいいんじゃないかな。

おれが思ったのは、GUIのキャラクタの移動や、あとはパケットの取得/処理なんかのネットワークプログラミングに
気軽に応用できそうなきがする。いままでThreadたちあげてwhile(true)でまわしていた処理をすべて見直してるところだ。
だれかそういうTipsを集めたWikiつくってくれ。


249 名前:名前は開発中のものです。 mailto:sage [2007/04/24(火) 02:49:26 ID:icr09Pcb]
だからそれはマイクロスレッドとかファイバーだろ。



250 名前:名前は開発中のものです。 mailto:sage [2007/04/24(火) 03:10:26 ID:pD/5kZWi]
ゲーム制作における所謂「タスクシステム」がきちんと定義されてないから終わらんな。

曖昧なまま広がって時が流れすぎた。
みんな自分のタスクシステムこそ正義と信じて、終わり無き議論が続いていく。

まとめられるカリスマwも現れないだろうしな。
出来る奴はこんな瑣事に関わろうともしない。

251 名前:名前は開発中のものです。 mailto:sage [2007/04/24(火) 03:59:44 ID:Tdee1eAV]
どうせ2chだし、仕事みたいに方向性が別にはっきりとあるわけでもないからな。

252 名前:名前は開発中のものです。 mailto:sage [2007/04/24(火) 04:08:33 ID:nLYBhYy0]
まーた定義厨か。

実装はさておき「サブルーチンがぶらさがってるリスト」では
彼の気が済まないんだろうか。

253 名前:名前は開発中のものです。 mailto:sage [2007/04/24(火) 06:19:19 ID:0Y4cOVot]
今日からこのスレでは
タスクシステム=サブルーチンがぶらさがってるリスト
になりました

254 名前:名前は開発中のものです。 mailto:sage [2007/04/24(火) 06:21:41 ID:nLYBhYy0]
オーケー、これで議論のループはめでたく終了な。

255 名前:名前は開発中のものです。 mailto:sage [2007/04/24(火) 08:20:55 ID:rP75YEIH]
このスレ自体がタスクシステムで、最近のレスしか読めない人は定義から入ろうとするし
いろんなタスク(ファイバー)が走ってると思えばいいじゃない。
でも、ここからはタスクシステム書いてみるなりして実装方向の
話にうつらないと定義ファイバーしか走らないスレになるな。


256 名前:名前は開発中のものです。 mailto:sage [2007/04/24(火) 08:30:38 ID:Cn47ifyt]
>実装方向の話にうつらないと

また実装乞食か。好きなように作れよ。
サブルーチンがぶらさがってるリストなんだろ?


257 名前:名前は開発中のものです。 mailto:sage [2007/04/24(火) 09:17:07 ID:wt/UedOB]
なんで早朝からカリカリしてんの?

258 名前:名前は開発中のものです。 mailto:sage [2007/04/24(火) 11:33:46 ID:BSew7CHC]
所謂タスクシステムと、所謂ファイバーは全然違うモノなのに、
なんでここでは同じモノになっちゃってるの?

259 名前:名前は開発中のものです。 mailto:sage [2007/04/24(火) 11:57:00 ID:aJzi4MOG]
タスクシステムの公的な定義なんて存在しないし、
人それぞれにバラバラな解釈をしているんだから、まとまるはずがない。
定義できると思いこんでいるのは、自分の勝手な解釈を他人にもさせようとする、
脳味噌が足りない馬鹿だけ。



260 名前:名前は開発中のものです。 mailto:sage [2007/04/24(火) 12:37:27 ID:pYdxlQj1]
>>259
定義しなくても議論はできるさ。
例をあげて話し合えばいい。
問題は90レスほどするとせっかく提示した事例を無視して定義について云々いう奴が現れることだ。

261 名前:名前は開発中のものです。 mailto:sage [2007/04/24(火) 18:18:54 ID:DJmpRTH+]
ファイバーを「サブルーチンがぶらさがってるリスト」とか表現したら笑われるよ。

262 名前:名前は開発中のものです。 mailto:sage [2007/04/24(火) 19:00:32 ID:gy8tG6E1]
固定された時間分のCPUリソースを各タスクに均一に割り当てるパターンを研究してくれ。

263 名前:名前は開発中のものです。 mailto:sage [2007/04/24(火) 19:02:48 ID:nLYBhYy0]
ファイバの肝はユーザモードでのコンテキストスイッチだもんな。
つーか>>4-5

264 名前:名前は開発中のものです。 mailto:sage [2007/04/24(火) 19:08:20 ID:nLYBhYy0]
>>262
そこまでいくとRTOSを移植したほうが早いだろうな。
しかしゲームにおいてCPU時間リソースを均一に割り振るメリットは殆ど無いと思うのだが。
何か思いつく?

265 名前:名前は開発中のものです。 mailto:sage [2007/04/24(火) 19:32:32 ID:gy8tG6E1]
リアルタイム戦略SLGとか?

266 名前:名前は開発中のものです。 mailto:sage [2007/04/24(火) 21:55:18 ID:sh8YE+KJ]
>>259
>タスクシステムの公的な定義なんて存在しないし
 
フェードアウト組が大好きなタスクシステムについてはそのとおりだな。
「俺の自慢のタスクシステム」の素晴らしさについてグダグダ語る前に
せめてテメェの脳内定義上のタスクシステムについて説明してから
発言しろ、というごく基本的な話だな。


>定義できると思いこんでいるのは、自分の勝手な解釈を他人にもさせようとする、
>脳味噌が足りない馬鹿だけ。

上に同じ。(公的な)定義ができると思い込んでるのは狂信者であり
お前の言う通りの連中だ。

267 名前:名前は開発中のものです。 mailto:sage [2007/04/24(火) 22:48:36 ID:HwcF2GDq]
定義できないとかいっているやつは
他人と協調も議論もできない自分勝手なやつだけだろ

268 名前:名前は開発中のものです。 mailto:sage [2007/04/24(火) 23:01:09 ID:wt/UedOB]
というか通じるよね?定義とかしなくてもさ。
実装してクレとか言ってるわけじゃないんだし、人によって全く違う動作をするようなものじゃないんだから。

269 名前:名前は開発中のものです。 mailto:sage [2007/04/24(火) 23:31:17 ID:Meuc1va2]
面接官「特技はタスクシステムとありますが?」
学生 「はい。タスクシステムです。」
面接官「タスクシステムとは何のことですか?」
学生 「サブルーチンがぶらさがってるリストです。」
面接官「え、サブルーチンがぶらさがってるリスト?」
学生 「はい。サブルーチンがぶらさがってるリストです。」
面接官「…で、そのタスクシステムは当社において働くうえで何のメリットがあるとお考えですか?」
学生 「はい。オブジェクト指向とは全く違う自由度と再利用性の高い汎用的な管理ができるようになります。」
面接官「ほう。もうすこし詳しく聞かせてください。」
学生 「詳しくはCマガジン2006年1月号を参照ください。」
面接官「いえ、あなたの言葉でお願いします。サブルーチンがぶらさがってるリストは何故に
      オブジェクト指向とは全く違う自由度と再利用性の高い汎用的な管理ができるのですか?」
学生 「やねうらお先生のサイトも参照ください。URLは・・・」
面接官「いえ、あなたの見解を伺ってるのですが。」
学生 「あれあれ?怒らせていいんですか?使いまs」
面接官「帰れよ。」



270 名前:名前は開発中のものです。 mailto:sage [2007/04/24(火) 23:35:21 ID:nLYBhYy0]
自分で自分にレスして「上に同じ」もねぇよなぁ

271 名前:名前は開発中のものです。 mailto:sage [2007/04/24(火) 23:40:15 ID:sh8YE+KJ]
自作自演認定されちゃったよ






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<120KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef