タスクシステム総合スレ part5at GAMEDEV
タスクシステム総合スレ part5 - 暇つぶし2ch683:並列さん ◆dPfetnROQg
09/03/07 13:17:17 cewi3IDn
>>680
うむ、それは正しい。

>>682
ああ、そうか。そういう意味では、660はおかしいし、書き方が悪いな。
これについては反省。すまんかった。> ID:ZZNOCL1s

684:名前は開発中のものです。
09/03/07 13:19:11 ZZNOCL1s
用語の定義をめぐって、wikipediaと格闘するような人とは議論したくない。

685:名前は開発中のものです。
09/03/07 13:20:00 ZZNOCL1s
お互い疲れたと見える

686:並列さん ◆dPfetnROQg
09/03/07 13:24:11 cewi3IDn
>>682
> 並行(concurrent)は、複数のコンテクストが論理的に同時に存在できることを表す。
> 並列(parallel)は、複数の計算を物理的に同時に実行できることを表す。

この定義に基づいて古典的なタスクシステムのタスクについて語ると

・古典的なタスクシステムのタスクは、「並行」。
・実行順序に厳しい制約があるとみなすなら、「並列」化はできない。

ところが実際のゲームでは、タスク間に依存関係がない部分が結構あるので
部分的に「並列」化できる。

この「並列」化によって、コア数N×0.7ぐらいのパフォーマンスは出る。

で、この「並列」化を古典的タスクシステムを進化(?)させて書けるようにすれば
いいということだな。

687:並列さん ◆dPfetnROQg
09/03/07 13:24:58 cewi3IDn
>>684
俺のことは、NGリストに入れておいてくれ。

最初に682のように書いてもらえれば、俺はすぐに理解できたのだが。

688:名前は開発中のものです。
09/03/07 14:32:04 NOayWFQU
これにて一件落着

689:名前は開発中のものです。
09/03/07 14:39:01 ZZNOCL1s
おれは、>>682と同じ意見ではない。

>並行(concurrent)は、複数のコンテクストが論理的に同時に存在できることを表す。

これに付け加えて、並行の条件には、複数のコンテクストが論理的に同時に実行可能であることも、
必要だと考えている。

並行性
URLリンク(ja.wikipedia.org)

だから、

1.並行でなければ並列化できない。
2.タクスの処理順位を考慮するようなタスクシステムは、すべてのタスクが互いに並行というわけではない。
3.ゆえに、タスクシステムを並列化するならば、並行なタスク同士を抽出する必要がある。

と考え、

さらに、タクスの処理順位を考慮するようなタスクシステムは「並行でない」と考える。

690:名前は開発中のものです。
09/03/07 15:29:42 8u/3vapK
>並行(concurrent)は、複数のコンテクストが論理的に同時に存在できることを表す。

俺もこう思ってた。
んでそうハッキリ書いてある資料を探してるんだけど、見つからない。

>並行の条件には、複数のコンテクストが論理的に同時に実行可能であることも、必要

次からこっちの定義で話すわ。

691:名前は開発中のものです。
09/03/07 15:37:28 92TsYx3X
>>689
>さらに、タクスの処理順位を考慮するようなタスクシステムは「並行でない」と考える。
MTフレームワークは処理順の依存の有無でタスク分けてマルチコアで同時に複数タスク動かしてるけど
これは処理順位を考慮するシステムだから「並行でない」のかな?

692:名前は開発中のものです。
09/03/07 15:42:35 ZZNOCL1s
だいたいちょっと考えれば分かることだが、並行の定義が、
>並行(concurrent)は、複数のコンテクストが論理的に同時に存在できることを表す。
だと、いわゆるオブジェクトと呼ばれるものは全部並行ってことになっちまうだろ。
コンテキストが同時に存在できないオブジェクトなんて、まあ無いからな。
言葉としての意味が無くなる。

693:名前は開発中のものです。
09/03/07 15:56:08 ZZNOCL1s
>>691
もしはじめから並行なら、MTフレームワーク自体いらないでしょ。

694:名前は開発中のものです。
09/03/07 16:00:29 92TsYx3X
>>693
>もしはじめから並行なら
どこにそんな前提が?

695:名前は開発中のものです。
09/03/07 16:36:27 E0xOAlNR
>>689
>これに付け加えて、並行の条件には、複数のコンテクストが論理的に同時に実行可能であることも、
ある計算の、ある時点における実行状態を表現したものを、コンテクストと呼ぶんじゃないの?
>並行(concurrent)は、複数のコンテクストが論理的に同時に存在できることを表す。
と同じ事を言ってるだけのような。

>1.並行でなければ並列化できない。
は違うと思う。
並行でない命令列も、依存関係が無ければ並列化できる。
現にCPUの中でシリアルセマンティクスを満たしつつ並列実行が普通におこなわれている。
そういう命令列は本質的に並行だった?違うでしょ?スーパースカラで並列に実行される命令は、
異なるコンテクストを持ってるわけじゃないんだから。


あと細かいことだけど、順位と順序は全然意味違うんだから、
ちゃんと使い分けてくれないと読み辛いよ。


696:名前は開発中のものです。
09/03/07 18:22:05 UcXZ5wF9
でも依存関係があるかないかなんて並列で実行してんのにどうやってわかんだろね
くる値によって依存関係があるかもわからんしないかもわからん
ごった煮だとそういうソースになってしまうな

697:名前は開発中のものです。
09/03/07 18:30:21 rbzzI5lu
ID:UcXZ5wF9
↑(・∀・)↑
ウンコちゃんインしたお

698:名前は開発中のものです。
09/03/08 18:34:25 ryll+mdy
>>695
> >これに付け加えて、並行の条件には、複数のコンテクストが論理的に同時に実行可能であることも、
> ある計算の、ある時点における実行状態を表現したものを、コンテクストと呼ぶんじゃないの?
> >並行(concurrent)は、複数のコンテクストが論理的に同時に存在できることを表す。
> と同じ事を言ってるだけのような。

例えば、コンテクストが共有されている場合などでは、
コンテクストは同時に存在できるが、同時に実行はできない。
具体的には、オブジェクトAがオブジェクトBの参照を内部に保持している場合など。
オブジェクトAはオブジェクトBとコンテキストを共有しているということになり、
オブジェクトAとオブジェクトBは同時に存在できるが、同時に実行は出来ない。


>並行でない命令列も、依存関係が無ければ並列化できる。

並行でない命令列の中でも、依存関係が無い並行な部分だけは並列化できる。
並列化とは、並行に処理することだから、並行な処理しか並列化できない。

自動並列化
URLリンク(ja.wikipedia.org)
>プロセッサで「並行」に実行されるようにする。

スーパースカラ
URLリンク(ja.wikipedia.org)
>プロセッサ内の冗長な実行ユニットを使って「並行」して処理される。

699:名前は開発中のものです。
09/03/08 18:39:37 ryll+mdy
>>694
ヒント:背理法

700:698
09/03/08 19:26:02 ryll+mdy
訂正するけど、
コンテクストが共有されていても、read-onlyな場合は並列化可能だね。
書き込みするとアウトだけど。

701:名前は開発中のものです。
09/03/08 19:27:58 0j+yjPij
>>698
なんか色々と変だよ。


>例えば、コンテクストが共有されている場合などでは、
>コンテクストは同時に存在できるが、同時に実行はできない。
共有されているのに同時に存在するってどういう意味?
コンテクストはいくつあるの?

>具体的には、オブジェクトAが(以下この段落略)
オブジェクトとコンテクストがごっちゃになってる。
オブジェクトAがオブジェクトBへの参照を内部に保持していても、
コンテクストがいくつあるのかという問題とは関係無いよ。
オブジェクトAとBを同時に実行はできない?オブジェクトを実行するってどういう意味?

この辺は、>>692の勘違いと同じ匂いがする。
てか>>692さんなのかな。


702:名前は開発中のものです。
09/03/08 19:30:14 0j+yjPij
んが。改行多過ぎ言われた。
701の続き。


>並行でない命令列の中でも、依存関係が無い並行な部分だけは並列化できる。
「依存関係が無い部分」を「並行な部分」とは呼ばないよ。
いや呼ぶのは自由だけど、少なくとも聞いたことないよ。
いや聞いたことないだけかもしれないけど。

>並列化とは、並行に処理すること(以下略)
×。

もうちょっと詳しく言うと・・・
 「並列化とは、並行に処理すること」
という言葉それだけを見るなら、○。
でも、そこに出てくる「並行」という言葉は、並列という言葉を説明するための
「(同時)並行」という意味であって、このスレでここまで長々と議論してきた
並行(concurrent)とは意味が違うよ。
(「並列」を説明するのに「並列」と言っても仕方が無いからね)

二つ挙げてくれたwikipediaの説明に出てくる「並行」も、同じように「並列」を
説明するための「並行」であって、ここに引っ張り出してきても意味が無いよ。


703:名前は開発中のものです。
09/03/09 12:41:05 2btSBxrR
大変だ!タスク信者が息してないぞ!

704:名前は開発中のものです。
09/03/09 13:31:41 +h98nuCN
つまらん煽りイラネ

705:名前は開発中のものです。
09/03/09 14:16:42 EugqMYhT
本人は面白いと思って書いてんだろ

706:ID:EEKBitmg ◆HSP4mee/SU
09/03/10 01:19:32 W7jNDZ1N
厨は『並行処理』という言葉を使ったけど、ノートを読み返したら『並行動作』となっていた。
=『擬似並列動作』のことを云いたかったの!微妙に書き間違えてた?と書こうと思ったら
>>637-以降で怖いおじちゃん達が深夜の泥沼バトルが展開されてあれよあれよと言う間に
みんな深淵の彼方へ飛んでいってしまった。ニーチェの警告に耳を傾けない者はみんな
闇に飲まれちゃうんだ。恐ろしいことだ

707:ID:EEKBitmg ◆HSP4mee/SU
09/03/10 01:20:59 W7jNDZ1N
俺は元々>>2の話をしてて、これはどこをどうひっくり返しても逐次処理・直列処理してる。
ところが>>632のタスクシステムは直列処理ではなくどっちかっつーと『並列』らしい。

たぶん>>632の云うタスクシステムは>>2とは別物か、あるいは並列ではなくて
『擬似並列動作』とか『並行動作』のことをいってるのかなーとESPした。それが>>635

>>2の『システム(笑)』部分が提供するものは
 ・粗末な侵入式の連結リスト
 ・それを周期的にナメナメしてディスパッチするショボイ仕掛け
だけ。>>2はこの『システム』部分をユーザー定義の逐次処理・直列処理に使ってるけど
ユーザー定義の並行動作に使うこともできるっちゃできる
例えば組み込みシステムでは、異なる割り込みハンドラからの指示でスリープ状態から
復帰するタスクとかあるからね






708:ID:EEKBitmg ◆HSP4mee/SU
09/03/10 01:36:39 W7jNDZ1N
あるいは、敵をやっつけた時の爆発エフェクト。これの破片・パーティクルの一個一個を
タスクとして登録してるとする。(そんな無駄なことしたくないけど、する奴もいるだろう)
破片・パーティクルのタスクは他のタスクとの作用なんてないとする。ならばこれらは
確実に並行動作してる

逐次処理・直列処理で並列動作してる。だが並列動作じゃない

709:ID:EEKBitmg ◆HSP4mee/SU
09/03/10 01:37:17 W7jNDZ1N
>>708
×逐次処理・直列処理で並列動作してる。だが並列動作じゃない
○逐次処理・直列処理で並行動作してる。だが並列動作じゃない

710:ID:EEKBitmg ◆HSP4mee/SU
09/03/10 02:18:01 W7jNDZ1N
>>2のシステム(笑)はなんで並列動作できないの?

一本の連結リストにみんなチャンポンにしてぶち込んでる時点で
別スレッドで同時並行的に弄繰り回されるということを考えてないだろ
タスク間通信に必要な同期のメカニズムを提供していないのもそう
シングルスレッドで逐次処理するという前提だからバッサリ省いてる

次に、>>2のTCB(笑)とかいう構造体のプライオリティというパラメータは
priority-rankingではなくpriority-sequenceとして使われており、異様。
これは処理順序を表しており、この順序でソートして順次処理される
そういう前提でタスク(ジョブ)の内容を記述してる。順序が狂ったら動かない


711:名前は開発中のものです。
09/03/10 12:53:53 GPL7IZe+
>>707

>ユーザー定義の並行動作に使うこともできるっちゃできる
できるっちゃできる、じゃなくて、ゲームオブジェクトの並行動作を記述することが
そもそもタスクシステムの目的なんじゃないの?
オブジェクトごとのデータとコンテクストをひとまとめにして自律的な行動を
自然(←人によって感じ方は違うだろうけど)な形で書ける(気分になれるw)ことと、
オブジェクトの生成破壊が多くてフラグメントを起こしがちなゲームにおいてデフラグを扱えること、
の2点を、素朴な形で実装したのがタスクシステムの良い点だったと思うんだけど。


>>710

>>2のシステム(笑)はなんで並列動作できないの?
特定プライオリティがついているオブジェクト群は他との相互作用が無いと決めておいて、
それらを並列動作させることはできるんじゃないの?
(そういう番号をプライオリティと呼ぶことの是非は別として)
別に誰も、全てのタスクを並列動作させることなんか最初から期待してないと思うけど。

かなり上の方に出てた自動的に並列動作させる云々の話も、そういうプライオリティの
タスクに限って、プロセッサ数に合わせて並列でディスパッチするような拡張も考えられる
のではないか、という話だったと理解してたんだけど。


712:名前は開発中のものです。
09/03/10 14:14:14 arIRXx6m
URLリンク(pc.watch.impress.co.jp)
> ゲームプログラム本体のコードは、OSのコードと同じように、
> 整数演算中心で小さな範囲での並列しかできず、
> 基本的には逐次実行しなければならないコードがほとんどだ。

これが古臭いタスクのことを指しているとは考えられないし
並列ネタはタスク関係無くね?

713:名前は開発中のものです。
09/03/10 17:38:59 DtkxsGym
マルチプロセッサでマルチスレッドしたいならそう拡張すればいいんとちゃう?
シングルプロセッサが前提の時代に書かれた物に難癖つけるのも大人げないと思う
ていうか俺は現在でもマルチスレッドなんてやりたくない

714:名前は開発中のものです。
09/03/10 18:22:37 9N7ATqdV
別にマルチスレッドなんて必要ならやりゃいいじゃん
裏でローディングしながらゲーム動かすなんて別に難しくもなんともねーし
ただ、ゲームオブジェクトにやる意味は無さそうだけどね

715:名前は開発中のものです。
09/03/10 18:42:31 +MsrlA3X
そういやフルにディスクアクセスしてても重たくなったりカクついたりしないのかね?

716:名前は開発中のものです。
09/03/10 19:16:57 9N7ATqdV
>>715
やってみりゃいいじゃん

717:名前は開発中のものです。
09/03/10 19:47:23 +MsrlA3X
>>716
やってみた

ガックガクになった

718:名前は開発中のものです。
09/03/10 20:01:50 9N7ATqdV
そうか市販のゲームは普通にできてるのに不思議だな

719:名前は開発中のものです。
09/03/10 21:27:13 LXtgug0h
裏でローディングなんてDMA時代からとっくにやってます。

720:名前は開発中のものです。
09/03/10 22:07:24 OHC3eltB
>715
普通非同期アクセスするだろ。
JK

721:名前は開発中のものです。
09/03/10 22:48:52 GPL7IZe+
>>711
>特定プライオリティがついているオブジェクト群は他との相互作用が無いと決めておいて、
は、オブジェクト群じゃなくてタスク群と書くべきだったね。
なんか混ざっちゃった。


>>715
自分も昔から気になってた。
ゲーム機で、ディスク(に限らず)からのデータ転送を非同期にやったりすると、
消費されるメモリ(あるいはバス)バンド幅の変化が計算しづらくなったりしないのかな。
それともDMAとかで消費されるバンド幅は、割と安定して予測できるもんなんだろうか。
その辺を実際にいじった経験が無いし、Web上でも情報を見た覚えが無いから分からないんだ・・・。


722:名前は開発中のものです。
09/03/10 23:19:25 DFTfic3i
>>721
> ゲーム機で、ディスク(に限らず)からのデータ転送を非同期にやったりすると、
> 消費されるメモリ(あるいはバス)バンド幅の変化が計算しづらくなったりしないのかな。
もちろん、なる。

だから RPG のように「どうしても間に合わなかったらフレーム描画をスキップしてもおk」な
ゲームでは使うが、対戦格闘とかだと避ける。


723:名前は開発中のものです。
09/03/10 23:58:04 OHC3eltB
フルにディスクアクセス行ったところで、光学ドライブからの転送量なんてたかが知れてるからな。

724:ID:EEKBitmg ◆HSP4mee/SU
09/03/11 00:28:43 xmrBPpjK
>>711
厨はそもそものタスクシステムなんて知らないから、そもそもの目的も知らない
厨が目にすることができる資料から分かること。それは

ジョブ1を分割したものをタスクT11,T12,T13,…,T1jとし、ジョブ1を逐次処理したい
ジョブ2を分割したものをタスクT21,T22,T23,…,T2jとし、ジョブ2を逐次処理したい
ジョブ3を分割したものをタスクT31,T32,T33,…,T3jとし、ジョブ3を逐次処理したい
・・・
ジョブi を分割したものをタスクTi1 ,Ti2 ,Ti3 ,…, Tijとし、ジョブi を逐次処理したい

                  ─順次処理─→
WAIT_VBLANK then execute[T11,T21,T31,…,Ti1]   │逐
WAIT_VBLANK then execute[T12,T22,T32,…,Ti2]   │次
WAIT_VBLANK then execute[T13,T23,T33,…,Ti3]   │処
…                                    │理
WAIT_VBLANK then execute[T1j ,T2j ,T3j ,…,Tij]  ↓


以上が>>2の『システム』部分がやってくれること

725:ID:EEKBitmg ◆HSP4mee/SU
09/03/11 00:38:10 xmrBPpjK
>>724
これだけ見ると協調的に並行動作させることが「できる」仕組みと分かる
でも、>>2で紹介されるこれの使い方のお手本、つまりタスクの中身を見ると
何か怪しげなことしてる。走査回数とメモリ消費をケチるためにプライオリティ
というものを使ってる。以前に出てた話だけど、something(t+Δt)を求めるために
参照する外部情報が狂ってる。上図の横方向の前後関係に依存させてしまってる
本来なら並行であるはずの関係を直列の関係にしてるというか、なんていうの?

並列化してリプレイ情報を食わせたら結果が変わってしまうでしょ
並行動作というかフェイク並行動作してるんだよね

726:ID:EEKBitmg ◆HSP4mee/SU
09/03/11 00:58:38 xmrBPpjK
>>711
>オブジェクトの生成破壊が多くてフラグメントを起こしがちなゲームにおいてデフラグを扱えること

これって何?GCしてるの?どういうタイミングで?
それってメモリアロケータの都合じゃないの?関係ねー気がする

727:ID:EEKBitmg ◆HSP4mee/SU
09/03/11 01:12:12 xmrBPpjK
まぁ、なんだ。厨的に思うのは

>                  ─順次処理─→
>WAIT_VBLANK then execute[T11,T21,T31,…,Ti1]   │逐
>WAIT_VBLANK then execute[T12,T22,T32,…,Ti2]   │次
>WAIT_VBLANK then execute[T13,T23,T33,…,Ti3]   │処
>…                                    │理
>WAIT_VBLANK then execute[T1j ,T2j ,T3j ,…,Tij]  ↓

タスクシステムとか仰々しい名前の割りに、それが提供する機能を分析すると
↑みたいな、限りなくどうでもいいことしかしてないということがわかる

これがやりたいなら初めからそう書けばいい。>>2みたいなチンポコリンな実装を
21世紀にもなってタラタラ書くなバーカって思う。寝る

728:ID:EEKBitmg ◆HSP4mee/SU
09/03/11 02:02:53 xmrBPpjK
起きた。なんか間違えた。まぁいいや。逐次処理って違うや。もういい

729:名前は開発中のものです。
09/03/11 02:51:56 QLymkmBo
>>724
>厨はそもそものタスクシステムなんて知らないから、そもそもの目的も知らない
えっとまず始めに確認したいんだけど、「厨」ってのはID:EEKBitmgさんのことでいいのかな?(違ってたらゴメン)
で、「そもそものタスクシステム」の話なんてしてないよ。知ってても知らなくてもどうでもいいよ。
でも「そもそもの目的」は>>2を見れば理解できるでしょ。どれもすごく丁寧で分かりやすい記事だし。

以降、改行箇所は適宜勝手に変更する。ごめん。

>>725
>走査回数とメモリ消費をケチるためにプライオリティというものを使ってる。
いや、走査回数とメモリ消費をケチるためにプライオリティを使ってるわけじゃないと思うんだけど・・・。

>以前に出てた話だけど、something(t+Δt)を求めるために
>参照する外部情報が狂ってる。上図の横方向の前後関係に依存させてしまってる
これはつまり、タスクAの処理結果を見てタスクBの処理をしないといけない場合、タスクシステムだと
AとBのどちらが先(>>724の図で言えば左)にくるのか分からないので困る、って意味かな?(違うかな?)
でもタスクシステムには、Aを必ずBより先に実行させる方法があるよね。それは分かってるよね?
で、タスクBがタスクAに依存してるのだとしたら、それはタスクBの問題(あるいは性質)であって、
タスクシステムの問題とは全く別の話だよ。

>並列化してリプレイ情報を食わせたら結果が変わってしまうでしょ
なんで突然、並列化の話が出てくるの? タスクシステムの目的は並行動作だよね。
これは>>710のおかしい点でもあるんだけど、>>2では最初から並列動作なんか考えてないんだから、
同期処理とかが組み込まれてないのは当たり前だよね。

>並行動作というかフェイク並行動作してるんだよね
並行とフェイク並行の違いって何なんだろう。なんか並行と並列の違いを理解してない匂いがする。


730:名前は開発中のものです。
09/03/11 02:53:04 QLymkmBo
続き。

>>726
>これって何?GCしてるの?どういうタイミングで?
え、ちょっと待って、>>2の話をしてるんだよね? 本当に>>2読んだ??
ID:EEKBitmgさんの言う>>2って、>>2のうちのどれのこと?

>>2を読んだのかどうかって話で思い出した。>>464の、この部分。
>『型システムを否定している。コンパイラによる最適化を阻害してる。自作ジャンプテーブルで条件分岐は
> 高速化されるという先人のチョイテク・豆知識を天下り式に真似ているのではないか。それは太古の簡素な
> CPUアーキテクチャに依存した公式に過ぎない。定理ではない』
断言してもいいけど、ID:EEKBitmgさんとこの助教授さんは>>2をちゃんと読んでないか、あるいは
頭のネジが足りてないよ。それとも助教授ってこんなもんなのか。知り合いにいないから知らんけど。
ところで課題レポートはちゃんと提出した?


>>727
>タスクシステムとか仰々しい名前の割りに、それが提供する機能を分析すると
ちっとも分析できてないよ・・・。

>↑みたいな、限りなくどうでもいいことしかしてないということがわかる
全く分かってないよ・・・。


731:名前は開発中のものです。
09/03/11 04:20:03 yoM2Y43z
HSPくんは厨房のくせになかなかどうして要点を押さえてるのう
若干正確さに欠ける点に目をつむって処理を端しょってたことに勘付いたか

732:名前は開発中のものです。
09/03/11 07:22:34 nhOwJy5w
まぁ、学生さんが理想を追い求めるのは悪いことじゃない。
ただ、現実はそれに立ちはだかると言うことは知っておいた方がいい。


733:名前は開発中のものです。
09/03/11 07:26:19 NK6nIuY5
タスクシステム完全に終わったな

734:名前は開発中のものです。
09/03/11 08:32:00 74bG+9We
タスクシステムのプレゼン動画
URLリンク(www.nicovideo.jp)

735:名前は開発中のものです。
09/03/11 13:15:27 wSuVQdvJ
ていうか細切れに順番に処理してくれるシステムなら何でもいいんじゃね?

適当にクラス作ってリストにして順番に実行
内部では各自カウンタとステート持って勝手にやる、死んだり生きたりはおかしなことにならないようにシステムでええ感じに処理してねー

とまぁ簡単なものならこんなのでいいじゃろ
複雑なのはしらん

736:名前は開発中のものです。
09/03/12 07:22:55 7byKm2pB
誰もそんな話してないし

737:名前は開発中のものです。
09/03/12 11:49:54 Rx7RnDpA
しろよ

738:ID:EEKBitmg ◆HSP4mee/SU
09/03/12 23:06:36 SEPBaONy
>>729-730
>なんで突然、並列化の話が出てくるの?

それは『ボクのタスクシステムはどっちかっつーと並列!』と言っていた
>>632のおじちゃんに言ってよね。CodeZineなんて初っ端で並列処理と言い切ってる。
あと生協で逆引きゲームプログラミングとかいう本をパラパラーっと立ち読みしたら
『並列動作システム』とか書いてあったし。『並列処理動作』してるんだって。ゲラゲラゲラー
もうさ、ハッタリかましすぎだよね。説明してる内容と、それを一言で表現するときに
どこかから引っ張ってきた用語が全く一致してないんだよね。厨房を騙くらかそうと必死でしょ
今さっき覚えてきた単語をとりあえずあててみました。みたいな。ちょっとね、おかしいとおもう

その点Logician Lord、White Paper、けんもほろろのページは並列なんて一言も言ってない
上に比べたらまだマシな部類なのかなーと思える。タスクシステム解説つっても千差万別だね

739:ID:EEKBitmg ◆HSP4mee/SU
09/03/12 23:11:52 SEPBaONy
ただ、まともっつってもなんか変なんだよね。組み込みシステムか何かから引っ張ってきた
知識を広めた人がいたんだろう、というのは厨の俺でもなんとなくわかる。それがギョーカイ
とかいうよく分かんない謎の秘密結社みたいな世界で伝播する過程でおかしなことになって
ミュータントみたいになっちゃってるんじゃない?この人たちが言ってるTCBとかタスクとか
ちょっと変わってるよね
TCBって、ゲーム機よりショボい組み込み機器でもプログラムカウンタとかスタック
アドレスが入ってる。リエントラントな仕組みを提供すんだよね。だから周期タスクは
periodictask()
{
 while(1){
  dosomething();
  rot_rdq();
 }
}
みたいな感じで書く。タスクは並行動作できるんだ。でも>>2の『タスク』はできない。
サブルーチンの処理を全て完了しないと処理を返せない。タスク同士は完全に
逐次処理なんだ。擬似並列動作ができない

740:ID:EEKBitmg ◆HSP4mee/SU
09/03/12 23:24:44 SEPBaONy
でも>>2の言うタスクってのは、ジョブを時間領域で分割したものだから
タスクの作り方によっては、複数のジョブ同士の並行動作はできるかもね

>タスクシステムの目的は並行動作だよね。

>>2の話?んなこと俺が知るかっつーカンジ
俺は>>632のどっちかっつーと並列とかいう謎のタスクシステムが
並行動作してるのかなーとESPしてみただけだしー。推測でしかないしー

>>2はふたを開けてみればゲームオブジェクトのUpdateメソッドのディスパッチャー
単なるレディキューだからどうとでも使えるわけだしー
このメソッドの分け方次第で並行動作もできるんだろうね。でも
ゲームオブジェクト一個につきタスク一個とか言ってるページもあるから
ちょっと怪しいね。Update()一個じゃあ、>>725で書いた矛盾にぶつかると思う

741:ID:EEKBitmg ◆HSP4mee/SU
09/03/12 23:39:16 SEPBaONy
>385 名前:名前は開発中のものです。 投稿日:2009/02/10(火) 01:05:40 D1ATM4io
>>384
>厳密にやるならワークをそれぞれ2つ持って、フレームごとにフリップだろ。
>面倒だったら一つ一つ更新して、n+1がnを参照してもn+1を参照しても対して問題が無い様にするさ。
>どこまで誤差を容認できるか知らんけど。

なんか臭いなぁ、と思ってたのがここ。CodeZineはこの誤差を容認するほうを選んでるよね。
具体的にはEnemyとMyShotの関係。これタスクリストとかいうものの中でごちゃ混ぜになってるでしょ
当たり判定のときに、自機弾って移動速度速いからさ、敵と当たったり当たらなかったりすると思うよ
ぜったい気持ち悪い現象が起きる理不尽ゲーになると思う

742:ID:EEKBitmg ◆HSP4mee/SU
09/03/12 23:53:29 SEPBaONy
>>741
× 当たり判定のときに、自機弾って移動速度速いからさ
○ 自機弾って移動速度速いからさ

この不快な現象を発生させたくないなら
EnemyとMyShotの実行順序をごちゃ混ぜにしちゃ駄目でしょ
ごちゃ混ぜのままならせめて当たり判定タスクと移動タスクを分けないと
あとさ、必要は無いけど、外部参照されるパラメータは前フレームの状態を
保持したほうがいいよ

例えばロックオンして置き撃ちするときに、targetposition(t)を得るか
targetposition(t+Δt)を得るかがpriorityとかいうものによって変わるって
おかしいでしょ




743:ID:EEKBitmg ◆HSP4mee/SU
09/03/13 00:03:15 w7sHy3uX
>>742
× priorityとかいうものによって変わる
○ タスクリストの前後関係とかpriorityとかいうものによって変わる

>>730
>>これって何?GCしてるの?どういうタイミングで?
>え、ちょっと待って、>>2の話をしてるんだよね? 本当に>>2読んだ??
>ID:EEKBitmgさんの言う>>2って、>>2のうちのどれのこと?

俺と同い年の人が書いたと思しき記事だからボコりたくなかったけど
流れでそうなっちゃったから堰を切ったように書いてるけどさ
CodeZineの記事は他と比べて相当違うんだよね
メモリ割り当てなんて関係ないのにさ、糞みたいなGCかましてるし
STGであんな処理をかますフレームが不定期に存在するって変でしょ
糞みたいな自前のメモリ割り当てやってるからあんなGCが必要に
なるんでしょ。何のための自前アロケータなんだか分からない
厨的には、あんな糞実装は氏んじゃえって思う

744:名前は開発中のものです。
09/03/13 00:16:52 kkRWD5W+
タスクシステム擁護派じゃないけどさ・・・

雰囲気つかむだけのサンプルにアホとか言っちゃうのはどうよ?
こういうものは思想だけ頂いて自分の好きなように組んでくれって物じゃないのかね・・・

GCがどうのっていうのも処理落ちしたときにはじめて考えればいい所だし、
ただたんに自分の流儀に合わないから貶すと見えますよ。

745:ID:EEKBitmg ◆HSP4mee/SU
09/03/13 00:24:04 w7sHy3uX
>>729
>>2では最初から並列動作なんか考えてないんだから、
>同期処理とかが組み込まれてないのは当たり前だよね。

性格悪いレスになるけど書いちゃえ!
ぶっぶー。並列動作じゃないから同期処理が要らないってのは間違い

>>730
CodeZineの記事のコードってさ、生存中のゲームオブジェクトのアドレスが不定期に変わっちゃうんだよね
あのサンプルってさ、あるゲームオブジェクトのレーダーシステムが特定の目標をロックオンして追跡するとき
どうすんの?

例えばあのサンプルの敵弾ってさ、毎回Playerをタスクリストから探してるんだよね。バカだからさ
priority=1.0のPlayerはタスクリストの一番最後に入ってるのに、先頭からナメて探すの。バカだよね

こんな調子で、ロックオンターゲットも、毎フレーム、タスクリストから探し出すわけ?
多目標同時対処能力を保有する機体が入り乱れたら愉快な処理量になりそうだね

こんなアホなことになるのはさ、糞アロケータの都合で不定期に糞GCかますからでしょ?
あんた>>711で『デフラグができること』を取り上げて
これを素朴な形で実装したのがタスクシステムだとか言ってるけど、素朴って何よ?
明らかに必要ねーことしてるし。バカじゃねーのくたばれバーカバーカって言いたかったけど
ずっと我慢して黙ってたんだ。でももう書いちゃった。



746:ID:EEKBitmg ◆HSP4mee/SU
09/03/13 00:30:00 w7sHy3uX
>>744
だからずっと黙ってたんじゃん。心情的にはCodeZineの記事は
放置したかったんだけど、擁護派がデフラグデフラグとかいうから
書かざるを得なくなった。HSP使いとしては同じ厨を攻撃するのは遺憾
遺憾の意です。本意じゃありません。ごめんなさい><

747:名前は開発中のものです。
09/03/13 00:40:01 idYT2cwA
>746
> だからずっと黙ってたんじゃん。

バカには現実を突きつけてやるしかないんだよ。

748:名前は開発中のものです。
09/03/13 00:45:14 9zwO86zu
>>747
突きつけても、見えない or 見ようとしないけどな。大抵。

749:名前は開発中のものです。
09/03/13 01:00:19 bP/yrlKM
ID:EEKBitmgはCodeZineの記事の作者と同じにほいがする。
ID:EEKBitmgの方が筋は良さそうだが。

>>744
CodeZineの記事は昔論争になったことがあって擁護派らしき人からの批判も多かった。
批判の方が多かったような。
とにかく駄目なものを技術的な説明を沿えて駄目と言うのは良いでしょう。

750:名前は開発中のものです。
09/03/13 07:26:08 2Nwh1Ok5
とりあえず並列化の話はやめろよ
この仕組みじゃどう味付けしたって並列化なんてできやしねぇから

751:名前は開発中のものです。
09/03/13 10:49:20 t4cURNWA
なんでもタスクで一元管理
まとまってていいね!
ぐらいの感覚なんじゃないの?
腕である人ならいい感じにまとめられるでしょうに
ギャーギャー噛み付くほどのものかねぇ
もしかして、今時のゲームにも導入されたりして被害被ってるの?

752:名前は開発中のものです。
09/03/13 12:37:20 2Nwh1Ok5
腕のある人はこんなもん使わないから(笑)

753:並列さん ◆dPfetnROQg
09/03/13 16:18:33 nlP2vU3h
>>745
> priority=1.0のPlayerはタスクリストの一番最後に入ってるのに、先頭からナメて探すの。バカだよね

それは別にhash使えばO(1)で検索できるんだし、本質的な欠陥じゃないと思うが。

> これを素朴な形で実装したのがタスクシステムだとか言ってるけど、素朴って何よ?
> 明らかに必要ねーことしてるし。

まあターゲット環境とゲームの規模によるけど、何らかの形でデフラグはあったほうがいいと思うよ。

working setを縮小したほうがプロセッサのcache効率が上がるのが普通だし、
タスクシステムはプライオリティ順にタスクに対してアクセスしていくのだから
プライオリティ順にメモリ上に配置されて、アクセスするメモリが連続しているほうが
(memory cacheの観点から見て)断然速い。

タスクシステムどうのという話はおいとくとして、ひょっとして、みんなmemoryのcompactionとか処理を書いてないの?
これを無用の長物みたいに言われると、もう議論の前提が違うとしか言いようがないんだけど。


754:名前は開発中のものです。
09/03/13 21:00:36 kAszbGcI
>>738
タスクシステムの構造を見れば、これは並行動作を目的としたものだと分かるよね?(分からない?)
その文脈で「並列」という言葉が出てきても、それは並行のことを意味しているとは思わないのかな?
それを書いた人が勘違いしてるのかもしれないし、意識してないのかもしれないし、並行と並行の違いを
知らないのかもしれないし、あるいは文脈上区別の必要が無いと判断したのかもしれない。
いずれにせよ、「並列って言ってるけど並列じゃないじゃん」という批判は、「並列」という言葉を
持ち出した人に対しては当たるかもしれないけど、タスクシステムへの批判としては的外れだよね。
それともID:EEKBitmgさんは、誰かがタスクシステムのことを並列だと書いただけで、タスクシステムの
目的が並列動作だと考えたのかな?
それってタスクシステムのことを理解したうえで批判していると言えるのかな?

あと、用語の使い方が適切でないという点に関しては、ID:EEKBitmgさんも全く人のこと言えないよ。
私自身のスタンスとしては、他人が多少変な言葉を使ったとしてもできるだけその意を汲もうとするし、
逆に自分の言葉はできるだけ分かりやすく正確になるようにしていつもり(あくまでつもりw)だけど、
ID:EEKBitmgさんは全く逆のスタンスなのだろうか? 言葉が不正確なのに、他人の言葉尻は捕らえるよね。


>>739
マルチタスクOS等におけるタスクと、タスクシステムのタスクは設計も目的も意味も違うのに、
それを混同してしまっている、のか混同させようとしているのか分からないけど、このレスはまるまる無意味。
擬似並列動作とかいう怪しげな言葉の意味も分からない。

755:名前は開発中のものです。
09/03/13 21:03:23 kAszbGcI
>>740
>>タスクシステムの目的は並行動作だよね。
>>2の話?んなこと俺が知るかっつーカンジ
>俺は>>632のどっちかっつーと並列とかいう謎のタスクシステムが(以下略)
つまり>>2を読んでも、タスクシステムの目的が理解できなかったってこと?
というか、この話の流れを>>729,>>725,>>724,>>711と遡っていけばID:EEKBitmgさんが>>2の話を
しているのは明らかなのに、いきなり>>632を引っ張り出してきて言い訳するのは見苦しいと思う。
それとも単に文脈を追えてないの?何の話をしているのか分かってないの?

>>725で書いた矛盾にぶつかると思う
矛盾ってどれのことだろう。最後の二行のこと?
だとしたらやっぱりタスクシステムの動作を理解できてないよね・・・。

756:名前は開発中のものです。
09/03/13 21:04:17 kAszbGcI
>>741 >>742
全体的に言えることだけど、ID:EEKBitmgさんは>>2のサンプルコード個別の事例を批判したいんだろうか。
それともタスクシステムのことを批判したいんだろうか。サンプルコードは、単なるサンプルなんだから
色々な不具合や足りない部分があって当たり前だよね。実際に使いたい人が、実際に使えるように
直せばいいだけで。それができないような構造的な欠陥であれば、タスクシステム自体が駄目だという話に
なるのだろうけど。(そういう話が聞きたいんだけどなぁ・・・。)
で、>>729に答えてもらえなかったから改めて聞くけど、EnemyとMyShotの実行順序をごちゃ混ぜに
したくないなら、ちゃんと順序つけてごちゃ混ぜにしないようにタスクシステムを使うことはできるよね。
その仕組みがちゃんとタスクシステムにはあるよね。それは分かってる?分かってないの?どっち?

757:名前は開発中のものです。
09/03/13 21:10:36 2Nwh1Ok5
なんでタスクシステムなんて使わなきゃいけないの?
メリットを説明してよ

758:756の続き
09/03/13 21:35:33 gk02bKgy
>>745
>性格悪いレスになるけど書いちゃえ!
>ぶっぶー。並列動作じゃないから同期処理が要らないってのは間違い
詭弁。
「並列動作じゃないから同期処理が要らないってのは間違い」という言葉だけは一般論として正しいけど、
「並列動作じゃないから同期処理が要らない」なんて話は誰もしてないよ。並列動作を前提としていないから
並列動作のための同期処理は書かれていない。一般論としては、並列でなくとも同期処理が必要な場合も
あり得るけど、>>2においてはそういう同期処理も必要無いから書かれていない。それだけの話。

詭弁と分かって書いているのなら、確かに性格が悪いね。
これで反論の体をなしているとでも思っているのなら、悪いのは性格ではなくて頭の方。

759:名前は開発中のものです。
09/03/13 21:38:57 gk02bKgy
>こんなアホなことになるのはさ、糞アロケータの都合で不定期に糞GCかますからでしょ?
>あんた>>711で『デフラグができること』を取り上げて
>これを素朴な形で実装したのがタスクシステムだとか言ってるけど、素朴って何よ?
うーん確かに、CodeZineの実装は>>749さんの言うとおり、賛否両論起こるだろうことは分かる。
一応、>>2を前提にスレが進んでると思ったから、デフラグもタスクシステムの利点に入れちゃったけど、
得失もあることだし、単純にタスクシステムの利点として挙げるのは無理があったかな。
というかずっと昔に初めてタスクシステムを知ったときには、デフラグの仕組みは無かったなそういえば。
てなわけで>>711での「タスクシステムの良い点」の記述からは、デフラグの件は除くよう訂正させてください。
素朴って何よ?と言われると困るなぁ・・・。特に高度な管理や複雑な手法を使わず、メモリを直接
いじくりまわすあたりを素朴だと感じたんだけど。人によっては全然素朴だとは感じないかもね。
あと余談というか一つ忠告だけど、GCとコンパクションはきちんと区別した方がいいよ。
ここでならいいだろうけど、真面目な議論の場で混同してたらバカと言われちゃうよ。

>明らかに必要ねーことしてるし。バカじゃねーのくたばれバーカバーカって言いたかったけど
得失の「得」の部分も考えずに、明らかに必要無いとしてしまうのは、考えが足りてないからだよ。

760:名前は開発中のものです。
09/03/13 21:43:42 gk02bKgy
うーわーもうダメだ。つっこみどころが多過ぎて収拾がつかない。
これ以降はちょっと自重します。みなさん長々と書いてごめんなさい。

あと今読み返して気付いたけど、>>754の「並行と並行の違い」は「並行と並列の違い」の書き間違いです。
恥ずかしw

761:名前は開発中のものです。
09/03/13 21:54:09 2Nwh1Ok5
タスクシステムのメリットを説明してよ

762:名前は開発中のものです。
09/03/13 21:59:22 idYT2cwA
本人がメリットだと思わなければ、他人が何を説明したところで無駄な話だ。

763:名前は開発中のものです。
09/03/13 22:59:53 IbELy54y
>>757,761
>427

764:ID:EEKBitmg ◆HSP4mee/SU
09/03/14 01:05:18 lcPBznJ3
>>753
ごめんなさい><
厨房はガベージコレクションとコンパクションを混同してた。ご指摘どうもありがとう

>それは別にhash使えばO(1)で検索できるんだし、

そうだろ?メモリコンパクションの重要な目的のひとつがリニアアクセスによる高速化ならば
その利得を殺すようなGetTask()の実装じゃお話にならないよね。初心者用ったってありゃないよ
無い方がマシな盲腸みたいな機能付けといて初心者向けサンプルもへったくれもない
サンプルってのは反面教師じゃない。サンプルってのはゴミじゃない

あのサンプルはPC用。OSはページング方式で仮想アドレスに実アドレスを割り当ててる
ページサイズは4KB単位?で、CPUのキャッシュはキャッシュラインサイズってのがあって
これがL3だのL2だのL1だのでいろいろあるんだよね?実際、仮想アドレス上でバランバランでも
うろたえるほどの速度低下はない。むしろゴマ粒みたいな小さな処理をごちゃ混ぜ連結リストに
投げ込んで、リストを走査しながら関数アドレスで処理を呼び出すっていう仕組みを捨てる
ほうが高速化する

765:ID:EEKBitmg ◆HSP4mee/SU
09/03/14 01:13:57 lcPBznJ3
>>764
×むしろゴマ粒みたいな
○高速化したいなら、むしろゴマ粒みたいな

766:ID:EEKBitmg ◆HSP4mee/SU
09/03/14 01:25:14 lcPBznJ3
だいたいさ、あーいう小粒なSTG作るときに、どうしても自作アロケータ用意したいなら
固定長メモリプールでいいじゃん。boost::poolとかさ

767:ID:EEKBitmg ◆HSP4mee/SU
09/03/14 01:46:18 lcPBznJ3
>>758
つーかお前、前>>510だろ。当たってる?当たってたらなんご褒美ちょうだい
チョー陰険だし、やたらどうでもいいことで噛み付いてくるし、顔真っ赤になると
言ってること滅茶苦茶になるから多分当たってるだろ。な。陰険アマチュア野郎。タスクシステム=DB君。

俺が性格悪い?まぁアンタほどじゃないよ
>>730みたいな内容ゼロのハッタリゴミクズチンカスレスして悦に浸る中年には適わないね
俺が頭悪い?それ既出ジャン?>>355で既に認めてっからよく嫁カス。何今更言ってんだ

>>2では最初から並列動作なんか考えてないんだから

ま、この点でアンタとの争点ないのは分かってるから。せいぜい無視したら?
あんたさ、それが分かってるのに何でそこんとこで噛み付くの?俺が気に入らないだけだろ

768:ID:EEKBitmg ◆HSP4mee/SU
09/03/14 02:33:21 lcPBznJ3
>>766続き
連結リストのメモリ配置を整えましたー。速くなりましたーっていうけどさ
そんなことするならいっそのこと配列にしてダブルバッファリングしたほうがいい

769:名前は開発中のものです。
09/03/14 02:33:35 nYYNsR/2
処理の順番追うだけでもうやる気なくなるわー。擬似タスクとか死ねばいいのに。

770:名前は開発中のものです。
09/03/14 02:44:33 JpSKv17w
構造が単純なのでゲーム毎の仕様にあったカスタマイズがしやすい、ってのもタスクのメリットの一つかなぁ
でもこの辺のメリットは”知る”ものじゃなくて”理解”するものだから、実際にゲーム作った経験の無い人には
分からないかもしれん。

なんかアンチタスクって独身スレにいる「結婚のメリット教えてくれ!」ってのと同じ感じ。
「絶対に幸せになる保証が無い限り結婚しない!」ってのがいたけど、あれととても似ている…

タスクはゲーム作るときに使うもので、ゲーム作らないならタスクにこだわる必要ないし
実際にタスク以外の方法でゲームつくってるならそれはそれでタスクなんて気にしなくてよい。
アンチはなんでタスクシステムに粘着してるんだろう?

771:名前は開発中のものです。
09/03/14 03:17:55 wqRDNWfr
>>770
プロ気取りがしたり顔で出鱈目いっちゃ駄目よん

772:並列さん ◆dPfetnROQg
09/03/14 03:19:14 Nif8vd+k
>>764
> 実際、仮想アドレス上でバランバランでもうろたえるほどの速度低下はない。

その部分に限って言えば、バランバランにメモリをアクセスするのと、
リニアにアクセスするのとでは数倍以上変わると思うけど。

全体に占める割合は…ゲームによるけど、何万パーティクルも表示するつもりなら致命的だと思うけど。

なんか同人規模のシューティングとかしか作ったことのない人が何か言っても説得力ないよ。

773:名前は開発中のものです。
09/03/14 03:29:59 wqRDNWfr
厨房のHSP大好き君は発言内容が粗削りだが目の付け所はまずまずだ
ゲームをよく作ってる感じがするのねん

774:名前は開発中のものです。
09/03/14 06:17:22 QgvbbJg3
>>773
なんでおまえはそんな偉そうなんだよw

このスレで一番あてにならないのは具体的なことは言わないくせに
妙に偉そうにしてるやつだとおも
擁護アンチ問わず

775:名前は開発中のものです。
09/03/14 13:16:45 nGWrBYC8
>>770
タスクシステムを使って書かれたプログラムを引き継ぐ羽目になって(バグが収束せずに
メインプログラマ交代)、散々苦労した。

776:名前は開発中のものです。
09/03/14 16:42:18 TdAuyVy6
>>767
>つーかお前、前>>510だろ。当たってる?当たってたらなんご褒美ちょうだい

 ぶっぶー。チョー陰険だから前510だろってのは間違い!

初出は>>682で、以下ID:E0xOAlNR、ID:0j+yjPij、ID:GPL7IZe+、ID:QLymkmBo、
ID:kAszbGcI、ID:gk02bKgy、かな。抜けてるかもしんないけど多分こんだけ。

てか、あらためてスレを斜め読みしてみたら、ID:EEKBitmgさんて高専の人だったのね。
道理で、知識だけはあっても、考え方も物言いも子供っぽいわけだ・・・。
なんかもうすでにガキの喧嘩の捨て台詞みたいなレスになっちゃってるから、>>767
いちいち突っ込むのはやめるけど・・・「俺が気に入らないだけだろ」みたいに、
下らない衝動を私に投影するのはやめてね。
上のリスト見れば分かると思うけど、おかしなことを書いてると思った人に対して
それはおかしいんじゃない?って書き込みしてるだけだよ。


777:名前は開発中のものです。
09/03/14 18:34:28 rFb0Dzvp
ごちゃごちゃいいわけはいいからタスクシステムのメリットぐらい説明しろよ

778:名前は開発中のものです。
09/03/14 19:02:02 DOdjkrEe
メリットはリンスインシャンプーがあることだろ常考・・・

779:名前は開発中のものです。
09/03/14 19:07:02 C4Fq/WX8
>>777
>763

780:名前は開発中のものです。
09/03/14 20:18:24 JpSKv17w
>>775
”タスクシステム”を”C言語”とか”ポインタ”に置き換えても成立するな。
バグが収束せずにメインプログラマ交代って時点で既に…

781:名前は開発中のものです。
09/03/14 21:24:01 QgvbbJg3
CG板だと、タスクシステムを Shade とか sai に置き換えても違和感無いんだぜ?

782:名前は開発中のものです。
09/03/14 22:13:43 DOdjkrEe
>バグが収束せず
ただ単にコーディングレベルの問題ではないか?w

783:名前は開発中のものです。
09/03/15 00:16:39 fq8JV7Q3
>>779
は?何もかいてないけど?
馬鹿がわかりもしないでレスつけないでくれない?

784:510
09/03/15 02:45:36 4et5xcyh
タスクシステムが並列化に向く向かないで盛り上がっているようだが。
書いてみればすぐ分かること。

タスクシステム並列化版
URLリンク(kansai2channeler.hp.infoseek.co.jp)

各スレッドでタスク群の添え字をInterlockedIncrementしつつループまわすだけ。

なお、並列化に関係ない部分は手抜き実装。

785:510
09/03/15 02:57:48 4et5xcyh
処理順序だとかプライオリティーだとか色々議論しているが、
並列化に処理順序の話を持ち込むのはナンセンスだと考えるが。
並列化しないからといって、処理順序がどうでも良いというわけではない。

786:名前は開発中のものです。
09/03/15 06:19:12 fq8JV7Q3
これ並列動作しねぇって
VTuneでも使って一度みてみろマジで

787:名前は開発中のものです。
09/03/15 08:59:48 Osu85aea
おいおい お口チャックマンだぜ?

788:510
09/03/15 09:15:14 4et5xcyh
いや、並列で動くことは動くんだが、他のところがバグってるね。

789:名前は開発中のものです。
09/03/15 11:45:56 a+EQhixt
完璧に余談ですが

#include <boost/lambda/lambda.hpp>
#include <boost/lambda/bind.hpp>
#include <cassert>
#include <vector>
#include <pstade/oven/parallel_for_each.hpp>
#include <pstade/oven/forall.hpp>
struct test_task{
int m_counter;
test_task() : m_counter(0) {}
};
int main(int argc, char *argv[]){
namespace ov = pstade::oven;
namespace ll = boost::lambda;
const size_t N = 10000;
const size_t THREADS_SIZE = 4;
std::vector<test_task> v(N);
ov::parallel_for_each(THREADS_SIZE, v, ll::bind(&test_task::m_counter, ll::_1) += 1);
assert( ov::forall(v, ll::bind(&test_task::m_counter, ll::_1) == 1) );
ov::parallel_for_each(THREADS_SIZE, v, ll::bind(&test_task::m_counter, ll::_1) += 2);
assert( ov::forall(v, ll::bind(&test_task::m_counter, ll::_1) == 3) );
return 0;
}
>>784のmainの動作を真似するだけなら、boostやovenを使ってこう書けたりする。
んで、並行動作するオブジェクト間の依存を上手く消してTBB等のparallel algorithmで一発というのが、
一番簡単な並行プログラミングだろうなと思った。
boost threadはただのマルチスレッドだけどTBBのだと強烈な並列化もしてくれるみたいだしね。
しかし、こういうのは参照透明性の保証が容易な関数型言語の十八番のように思うわ。


790:名前は開発中のものです。
09/03/16 00:25:10 zPsQiR9l
そもそも、なんでタスクとやらを並列化したがるかな。

ゲームに限らんが、並列化しやすい部分としにくい部分がある。描画周りとかパーティクルなどの
エフェクト系、モーション計算とかを並列化したほうが、依存関係が複雑で仕様変更が多発する
プレイヤーやら何やらを並列化するよりよほど現実的だと思うんだが。

791:名前は開発中のものです。
09/03/16 00:41:01 4SuKIn/y
並列化は別で話してほしい。
優先順位とグローバル変数(シングルトン含めて)問題の冴えたやりかたを検討しようぜ


792:ID:EEKBitmg ◆HSP4mee/SU
09/03/16 02:18:40 9YyKMei6
>>784
ちょっとちょっとちょっとー。ハッタリ自動並列メタボDBオヤジは本当に大丈夫なの?

  『ボクが作ったこのコードにもタスクシステムって名前付けたからこれもタスクシステムですし
   ついでに言うとこれDBですし自動並列処理もできますしお前らはボクのコードが並列化に
   向いてないって言いたいんだろうけどそれは全くの誤りだしどうしてそれが分からないの?』

こういうことなの?頭の中がお花畑なの?公序良俗に反するポピーの花が自生してるの?
お前がひりだしたウンコがどう陳列され得るかなんていう前衛美術の話なんて誰もしてないから
安心していいよ

それとオッサン、あんたは何で配列にぶち込んだ1万個の鼻糞みたいなちっさな処理を一個一個
処理する度にsleepしたりクリティカルセクションかまして次に処理する要素番号をゲットすんの?
スレッドの数で配列を等分して粗粒度並列化でもしときなさいよ
sleepなんか噛ましたらインストラクションレベルの自動最適化の妨げになっちゃうじゃないの

あんたのコード使うくらいなら直列番長の>>2のほうがまだ速いよ

793:ID:EEKBitmg ◆HSP4mee/SU
09/03/16 02:40:43 9YyKMei6
あとさ、同一フレーム内で終わらせないといけない処理なのに
イベント(シグナル)で同期とったりするのは何の冗談なの?
ベンチ取った?アホ?

もしかしてワーカースレッドが目覚める前にメインスレッドが全部処理
しちゃったりしてない?あとさ、最初のTASK1(hage)が終わって
次のTASK1(hoge)が始まる頃には何ms経過してるの?

なんかもう自動並列とか以前に足元がグラグラのヘボヘボな気がする
おやすみ

794:ID:EEKBitmg ◆HSP4mee/SU
09/03/16 02:44:52 9YyKMei6
あと、TASK1(hogehoge)の度にスレッド作るのはサンプルだから?
ウソだろ?サンプルだからってこれはないと思う。聳え立つウンコだ

795:ID:EEKBitmg ◆HSP4mee/SU
09/03/16 08:13:22 McZ+hNsy
>>794
よく見たらtasksystemはグローバル変数だからスレッドは使い回してるから
そびえ立つウンコてのは言い過ぎか

796:名前は開発中のものです。
09/03/16 13:07:05 ah3HB55u
おっさん言う奴は自分は若いと思ってる20代後半から30代前半の独身男性だな

797:名前は開発中のものです。
09/03/16 21:21:55 JRonhFLP
タスクシステムってあれだろ
雑魚とドラム缶を合わせて4つまでしか画面に表示しないように制限するシステム

798:名前は開発中のものです。
09/03/16 22:00:19 /VT9KBYC
大体お前の頭の中身と同じだな。

799:ID:EEKBitmg ◆HSP4mee/SU
09/03/16 22:53:40 McZ+hNsy
>>796
俺そんなに大人びて見えるか?もしかして俺褒められてる?
このマス掻き童貞夜更かししてないでエロゲでシコって糞して寝てろ、とか
罵倒されるんじゃないかとビクビクしてたんだけど杞憂だったのかな

800:名前は開発中のものです。
09/03/17 00:41:33 0PbiXi36
「新装版 大規模C++ソフトウェアデザイン」って本を昨日から読み始めたんだけど、
1章を読んだだけでタスクシステムのだめな点が指摘されているような気がした。

「継承」対「階層化」では階層化の勝ちで、
理由は階層化の方がはるかに一般的=依存性が少ないからって話みたい。
タスクシステム(なんちゃってC++版)のタスクは継承使ってるよね。

タスクの次にどこに進めばいいか分からないとか、
抽象的な話に飽きた、デザパタとか眉唾ーって人は
これ読むとおもしろいかもよ。おれはおもしろい。当たり前のことが書いてある。

801:名前は開発中のものです。
09/03/17 01:59:53 kxFrGMdG
包含と継承のことだな。

まあ多態性を使わない場面ならすべて包含でいける。
包含だと結合が緩やかだから見通しが良いって話だなそれは。

何段も深くなければよいんじゃないかね?

802:名前は開発中のものです。
09/03/17 07:25:27 VzljBEPw
なんでもかんでも機能を突っ込もうとするからだ。

delegateのリストでも使っとけ。

803:名前は開発中のものです。
09/03/17 11:28:02 b6S1HRLy
タスクシステムいいじゃん。
範囲指定で自殺してくれるの最高。

804:名前は開発中のものです。
09/03/17 13:49:55 hOnodYrQ
>>803
その範囲は何を意味してるの?
何かの値なんだろうけど。

805:名前は開発中のものです。
09/03/17 14:04:47 eriEEpX/
親殺せば子も死ぬってことじゃね?

806:名前は開発中のものです。
09/03/17 17:56:34 zLwES14L
タスクシステム関係無いじゃん

807:名前は開発中のものです。
09/03/17 21:56:42 kxFrGMdG
>>802
タスクシステムのExecやRunやProcなんかは
まさにそういう用途の窓口じゃないのかね?

808:名前は開発中のものです。
09/03/18 00:44:43 lM4akpln
>>807
その窓口を誰が用意するかという話。
本人なのか、本人と取り引きする別の人なのか。

どっちがいいかはよくわからん。
もっと条件を絞れば考えやすくはなるが、俺の思考が正しいとは限らん。

809:ID:EEKBitmg ◆HSP4mee/SU
09/03/20 00:38:03 0dULYU21
(・∀・)ヘラヘラ
クソガキの俺がそろそろ総括しちゃおっかなーっと
結局21世紀にもなってタスクシステムだタスクシステムだなんて叫んでるおじちゃん達って
相当に不勉強なロートルちゃんが混じってるんだよねー。不勉強なまま頭がコチコチに
固まっちゃったガンコなお年寄りに限って声がデカイもんだから迷惑してる人もいるだろうね

 ・タスクバカは、たかが実行待ちキューに得意げにお名前を付けてることにいつまでも気付かない
 ・タスクバカは、タスクシステムが何なのか一般化して説明するだけの知能がない。だから、ハハン、
  想像力の問題だね、とかハハン、自分で考えな、みたいに居丈高に振舞って誤魔化すしかない。
 ・タスクバカは、>>2で使われてる用語のTASKやらTCBやらが実はOSやらMONITORから拝借されて
  きた用語であることを知らない。知らないフリをし続ける。指摘されても『アーアー聞こえない聞こえない』
  の知能障害で逃げまくる。で、『>>2はOSとは設計も目的も意味も違うから混同するのはおかしい』
  だとか、『OSとの比較は無意味』、だとか臆面も無く言ってのける。もはや介護が必要な知的水準だ

 ・タスクバカは、>>2がOSやMONITORの仕組みを劣化猿真似しただけの代物であることを
  どうしても認めたくない。プライドの高い彼らにとって>>2とは、タスクシステムとは

    ボクらのギョーカイが編み出したプライスレスでオンリーワンなミラクルテクノロジー

  でなければならないらしいのだろう。タスクシステム誇らしいですねホルホルホル

810:名前は開発中のものです。
09/03/20 00:47:14 NOe63qNy
老害プログラマーに現在進行形でムカついてんならともかく
ただの学生なのにここまで熱心に煽れるエネルギーってなんなんだろうw

811:名前は開発中のものです。
09/03/20 00:55:34 S9RgoUXb
ここ以外では話聞いてもらえないんじゃねぇの
人によって場合によって色々前提違うのに、自分の世界の話ばかりだし
リアルならお近付きになりたくないタイプ
ウザすぎる

812:名前は開発中のものです。
09/03/20 01:11:51 gGNkZ3FN
>>809
おっさんのタスクバカだが>>2がOSやMONITORの仕組みを
劣化猿真似しただけの代物と思ってるぜ。良い意味で。

学問的には屑だがシンプルでちゃんと動くぜというか
微妙なたとえかもしれないが大学に対する高専みたいな。

813:名前は開発中のものです。
09/03/20 01:37:27 7TQPewAA
タスクシステムは1実行単位で必ず1回実行したい処理などを、
実装する窓口を作るのが本来の仕事だと思います。

タスク間メッセージのやり取りなどで汎用化とか考えがちだけど、
結局は時間的コストがばかにならないのでたいてい失敗に終わる。

メッセージのやり取りなら上位の管理役オブジェクトに
取得するメソッドを経由するほうが効率的だと思います。

で、タスクシステムが何を作るのに有用かと言うと、
上で書いたとおり1実行単位で必ず1回実行したい処理です。

たとえばGameの進行を管理するためのGameMaster、
入力機器などのステータスのアップデート、ゲーム内ステータスの表示(UI)、
プレイヤーが操作するキPC、NPCなどのAIなどが一般的。

当たり判定などはこれらを実行しつつあたり判定用の
データベース(ハッユや4分木)に登録する。

一通りシステムタスクやキャラクタタスクの実行が終わった後、
当たり判定を行いゲーム内物理に応じた反応を計算。

このあとジオメトリ計算やレンダリングが行われるわけです。


814:名前は開発中のものです。
09/03/20 01:40:55 7TQPewAA

実装してみれば分かると思いますが、ゲームシステムにおいて
1実行単位で必ず1回実行したい処理ってのは割りとあります。

いろんな所で使うためおもわず「システム」といいたくなるのでしょう。

ツリー構造や処理依存関係を考慮したタスクの
生存管理を行うとよりシステムらしくなるでしょうね。

まあ、すべてタスクで行うの愚かでしょう、
しかしタスクを全く使わないのも非効率ですね。

パーティクルなどはタスクで実装すると、
非効率なのでべつの処理系を僕は作っています。

弾幕ゲーム程度の弾数ですとタスクで処理しちゃいますけどね。

815:510
09/03/20 18:07:47 BbcMOz7M
>>792
普通に仕事してるので、一週間に一回程度しかスレを確認できないから亀レスすまん。


>配列にぶち込んだ1万個の鼻糞みたいなちっさな処理を一個一個
>処理する度にsleepしたりクリティカルセクションかまして次に処理する要素番号をゲットすんの?

Sleepを入れているのは、明示的にスレッドの切り替えを発生させ、並列動作をテストするため。
だから、本来は入らない。
それから、クリティカルセクションは使ってない。

816:並列さん ◆dPfetnROQg
09/03/20 20:09:54 CF/qt1oO
>>815
いまさらかも知れないが
名前の「510」は、「前スレ510」とか「タスクシステム改良君」とかにしたほうがいいような気がした。

ところで、>>792だが、俺もちょっと的外れな気がする。
ID:EEKBitmg は、サンプルプログラムを読み解く力に乏しいのか、ケチの付け方が毎度しょーもない。

817:名前は開発中のものです。
09/03/20 20:40:49 a30Oap5a
嫌タスク厨にレスする度に、魂がよごれていく気がするんだよな、ハハン

818:名前は開発中のものです。
09/03/20 23:37:12 nTzU835n
>816
> ケチの付け方が毎度しょーもない。

仕方ないよ。知識も経験も乏しいセンセイに教わってる学生サンなんだから。

819:ID:EEKBitmg ◆HSP4mee/SU
09/03/21 00:37:19 q+0mNzyT
>>815
クリティカルセクションじゃなくてインターロックだった。なんか書き間違えた

>>816
うぜぇよハゲ
ちいさな処理をひとつこなしたら排他制御かけて次に処理する要素を決定、とか
こんなチマチマとロックをかけるくらいなら

thread1 execute task[0~10000/4-1]
thread2 execute task[10000/4~10000*2/4-1]
thread3 execute task[10000*2/4~10000*3/4-1]
thread4 execute task[10000*3/4~10000-1]

のほうがはえーんだけど

820:名前は開発中のものです。
09/03/21 00:47:27 Lt5z4CxY
当然だけど、すべてがタスクシステムのリストに繋がってると思ってないよね。
大量のパーティクルとかは、1つのタスクに配列を持たせて管理するでしょ。

821:ID:EEKBitmg ◆HSP4mee/SU
09/03/21 01:01:55 q+0mNzyT
>>820
てめぇ、質問するときは言葉を選べよボンクラ
俺にタスクシステムの実装を聞いてどうすんだよ

>お前らタスクバカはさ、いい加減『ナニを作るのか』具体的に書けよ
>何でもツクール目指すから『ナニを作るのか』書けません、だとか
>ミラクルドリーマーみたいな事をほざくなよ

何度も何度もいってんだろ。バカが
毎度毎度てめぇのに都合に合わせて俺様実装を引っ張り出して
『当然だけど』、とかほざくなっつってんだよ


822:ID:EEKBitmg ◆HSP4mee/SU
09/03/21 01:08:12 q+0mNzyT
というのは不毛なので
>>820
>>2のタスク一個一個でパーティクル一粒一粒を作るようなことをせず
配列でやるというのはとても清々しい実装だと思うね。タスカーっつっても色々だね
ところでそれはタスクシステム派としては多数派の意見なの?
全てをタスクにしないと気がすまない人がいたような気がするんだけど

823:名前は開発中のものです。
09/03/21 02:41:56 NSoih+ib
相手によって発言内容変えてくるクズだろ?
まともに相手にしてんなよ

824:名前は開発中のものです。
09/03/21 10:47:01 pH6WTk/t
>ところでそれはタスクシステム派としては多数派の意見なの?
>全てをタスクにしないと気がすまない人がいたような気がするんだけど
お前の頭の中に仮想敵作って必死にどっかの誰かと戦ってますね

825:名前は開発中のものです。
09/03/21 10:52:49 NSoih+ib
でもすべてごった煮にしてないとせっかくまとめたのにアクセスできないオブジェクトができるよね?
タスクシステムなんて使ってるアフォからしてみたらそれはすごく面倒なことなんじゃないの?
引数作ってもってくるみたいなことしてるとも思えないし

826:名前は開発中のものです。
09/03/21 12:14:38 hWHfUpnE
>>821
>毎度毎度てめぇのに都合に合わせて俺様実装を引っ張り出して
>『当然だけど』、とかほざくなっつってんだよ

てめぇの都合に合わせて俺様実装するのが当たり前だろうが
そういうのが当然だっつってんだよ

お前本当に高専か? 老害連中より頭固いじゃねぇか
教科書読むしか能の無いサルは社会に出てくんなよ迷惑だから

827:名前は開発中のものです。
09/03/21 13:37:52 Lt5z4CxY
>>822
他の人がどうしてるか知らないけど、普通に考えて、
数千、数万のリストを作る人はいないと思う。

>>825
1つのタスクの中に、複数のオブジェクトのデータがあるだけだよ。
アクセスは引数使ってもできるし、引数なしでもできる。

828:名前は開発中のものです。
09/03/21 16:58:12 aPX2P6NL
パーティクルの一粒一粒が他のタスクに何らかの影響を与えて相互に作用する必要がないなら全部まとめて1タスク内で処理するよな
処理の単位がタスクなだけであって、すべての要素がタスクな訳じゃないだろ

829:名前は開発中のものです。
09/03/21 17:09:54 NSoih+ib
>>827
でもわざわざ引数なんて使いたくないんでしょ?

830:名前は開発中のものです。
09/03/21 21:25:16 xOJ60zOt
引数ってなんの話だっけ
俺的にはメソッドに常に self を渡すのは当然

831:名前は開発中のものです。
09/03/22 05:18:44 TvrDIaqh
>>829
何かアンチタスクは思い込みの激しいタイプみたいだな…

832:名前は開発中のものです。
09/03/22 05:30:54 0jTqsTen
>>831
引数使う人間がごった煮をメリットだと思うかね・・・馬鹿かね君は

833:名前は開発中のものです。
09/03/22 05:32:36 5NogUcs2
ごった煮ってこのスレでよく見かける言葉だけど、
どんな状態なんだろうか

834:名前は開発中のものです。
09/03/22 05:37:34 TvrDIaqh
引数つかわない、ごった煮…
やはり何かに取り付かれてるな

見えない何かと戦うのは疲れないかい?

835:名前は開発中のものです。
09/03/22 10:27:25 2tpyojUU
インターフェースを使った抽象化をごった煮とはこれいかにw

836:名前は開発中のものです。
09/03/22 11:10:41 0jTqsTen
>>833
それは>>2を読んでないな
とりあえずこのスレのタスクシステムは>>2なんだから会話に参加するなら
まず>>2を読むべき

837:名前は開発中のものです。
09/03/22 13:18:05 5NogUcs2
面倒だからググったらやねうらおの記事で使われてる言葉だったのか

838:名前は開発中のものです。
09/03/22 13:21:33 0jTqsTen
日付と過去ログを合わせればここで使ってたほうが早いぞ
奴は議論の過渡期にわざわざ見当違いな記事書いて意味不明なフェードアウトしただけ

839:名前は開発中のものです。
09/03/22 13:34:52 2tpyojUU
タスクシステムなんて記憶をたどると15年位前から使われてる。

840:名前は開発中のものです。
09/03/22 13:41:41 NwxqzLgy
>>836
タスクシステムは>>2にあるものがすべてって考えはどうかしてる。
ゲームに合わせて実装は変えるのが普通。
教えられた通りのことしかできないプログラマはゴミ。

841:名前は開発中のものです。
09/03/22 13:49:52 IncocYZR
というか、実行巡回リストのみしか存在しない、それ以外のコレクションが存在しないとか考えてて、
なんでもかんでもごった煮リスト(wに頼らないとやっていけないとか考えてるお子様が未だに存在する
というのがちょっとした脅威。

842:名前は開発中のものです。
09/03/22 13:51:32 DNLKor45
アンチ君はプログラマではなくてただの学生みたいだから
そこまで想像できないんだろう。

843:名前は開発中のものです。
09/03/22 14:18:45 0jTqsTen
>>840
だったらまずは>>2のメリットデメリットを説明した上で
自分の改良版の>>2との相違点を説明するべき

それがこのスレに参加する条件だろ

844:名前は開発中のものです。
09/03/22 14:44:30 B5iuRYmF
別に相違点だけでいいんじゃね?

845:名前は開発中のものです。
09/03/22 14:50:58 IncocYZR
>843
人に教えてもらったところで、それを理解できなければ意味が無いだろwww

846:名前は開発中のものです。
09/03/22 14:51:40 DNLKor45
タスクってゲーム毎に手を入れて使うのが普通だし、プラットフォームとかジャンルとか前提条件によって使い方も異なるから
具体的な前提条件が無いとメリットデメリットの説明は抽象的なものにしかならんだろうなぁ…

まぁ、抽象的なものでも経験のあるゲームプログラマならだいたい暗黙知で分かるんだけど
タスクの仕組みを聞いただけではその辺がまったく想像すらつかないってレベルなら、
理解できるだけのプログラム能力や経験が不足してるか、そもそもプログラマとしての適正がないんでないかな。かわいそうだけど。

847:名前は開発中のものです。
09/03/22 16:32:43 0jTqsTen
>>846
一番PGとして適正のない人間ってちゃんと比較検討ができない人間だと思うぜ
数字出してちゃんとメリットとデメリットを掲示できない、
ちゃんと検討もしたことないのに勘でいいものだと信じる
あたりを見回して楽に手の届くところにあるもんをテキトーにつまんで
勉強した気になってるような奴は詐欺師に騙されてしまう

ソフトウェア工学はクズが多すぎたよ
海外の人間からいってウンコみたいな奴等ばっかりだし
グローバル変数・関数が平気で使ってあるもんが褒め称えられてる異常事態
ちゃんと自分で判断できる人間が周囲にいるかどうかも正直微妙だしね
環境によっては糞を受け付けられてしまってもしょうがない

848:名前は開発中のものです。
09/03/22 16:42:26 qn7xQRxP
PGには独善的な連中も多いようだな
他人にキャンキャン噛み付いてるのを見てると結構面白い

849:名前は開発中のものです。
09/03/22 16:45:24 eDzO8au2
>>846
抽象的な説明に、ひとつの具体例でもついてれば十分だよ。
デザインパターンの説明なんて、みんなそんなもんだ。

抽象的な説明にしかならないからって、説明しない理由にはならないよね。

850:名前は開発中のものです。
09/03/22 17:09:32 iwp01Fau
俺自身は、タスクシステムが良いとか悪いとか言うつもりは無いんだが・・・
このスレ見てると、いつもアンチ側がタスカー側に対して、
説明しろだの具体例を挙げろだのと一方的に要求してるよな。
アンチ側は、自分の方からタスクシステムより良い具体的な実装例を挙げて、
これこれこうだからタスクシステムは駄目なんだ、っていう比較をしようとは思わないのか?
なんか見てて不思議なんだが。

851:名前は開発中のものです。
09/03/22 17:13:17 2tpyojUU
>>850
すべて個別に実行用のメソッドをもったオブジェクトを、
用途に合わせたコンテナに突っ込んでまわすとかいってた希ガス。

852:名前は開発中のものです。
09/03/22 17:31:36 OM4BCGYz
メリットやデメリットは何かと比較したときに初めて出てくるもので
比較対象の無い文脈でメリットやデメリットを問うのは論理的におかしい。
>846ば偉そうにしてる割にそんなこともわからんのか。

>>849
デザインパターンの説明は目的と構造だけだろ。
例えばVisitorパターンのメリット、デメリットは?と問われて答えられる?

853:名前は開発中のものです。
09/03/22 18:26:41 eDzO8au2
そうか比較対象が明らかじゃないのか。すまんかった。

じゃぁとりあえず個人的な興味で、話の流れに合ってるかどうかは知らないけど、
↓の比較で前者の方針にメリットがあるのかどうか、教えてもらえるとうれしい。

- 「タスクシステム」的方針
まず、毎フレーム実行される処理のコンテナ(リストなど)が在ることが前提。
毎フレーム実行される処理はまず「タスク」と考え、上記のコンテナに登録する。
大量のパーティクルなど、不都合が現れた場合は「タスク」としない。

- そうでない方針(個人的にはこっちが「ふつう」)
とりあえず必要な処理は関数呼び出しで並べる。
動的な寿命や複数インスタンスの一括処理などが必要になったら
リストなどのコンテナを必要な場所に用意して使う。

ここで「アンチタスク」として書き込みしている人は、たぶん前者の方針が
我慢できないんだと思うんだ。

854:名前は開発中のものです。
09/03/22 18:46:43 mHB0TcPP
>>853
それってどっちにしても毎フレーム実行コンテナは使ってんだな。
つまり
・常に毎フレーム実行コンテナ
・必要になったときに毎フレーム実行コンテナ
この2派がここまで醜い争いしてんの?w

855:名前は開発中のものです。
09/03/22 19:20:29 eDzO8au2
>>854
個人的にはそういうことだと思って見てる。たぶんシューティングゲームや
アクションゲームを作れば結果として同じような構造が(必要に迫られて)現れるだろう
と思う。

タスクシステムが「どんなゲームでも基本になる」とか「(メリットが)暗黙知」とか言う人は、
きっとシューティングゲームやアクションゲームなどを作った割合が多いんだろうな、とか。

ただ、後者であればコンテナは複数種使うのがあたりまえだし、ましてグローバルでは
ありえない。

これに対して前者では単一のコンテナ(これが「タスクシステム」と呼ばれたり)だったり、
それがさらにグローバルになったりしやすい。


856:名前は開発中のものです。
09/03/22 19:30:04 mHB0TcPP
おまいら全員毎フレーム実行コンテナを使わないことにすれば
論争は解決するんじゃね

857:名前は開発中のものです。
09/03/22 22:42:54 DN2untcT
>>853
>動的な寿命や複数インスタンスの一括処理などが必要になったら
同じような構造がプログラム中に複数表れる場合は
共通化できる部分を抽象化して共通のシステムにできないか、と考えるのが普通だと思うが

アンチは必要な箇所全てにコピペなりで同じような実装を個別に持つのがいい、という理屈か?

まぁ共通化できそうな箇所が2箇所ぐらいならいいけど、アクション系ゲームとかではかなり出てくるだろうし
そーなると共通化したほうがマシでない?

858:名前は開発中のものです。
09/03/22 22:49:10 IncocYZR
確か継承も否定してたぞ>アンチタスク厨


859:名前は開発中のものです。
09/03/22 23:14:54 eDzO8au2
>>857
同じ構造のコードを共通化することに異論は無いよ。

共通化できるはずということ(なのかどうか知らないけど)で最初から根っこにひとつ
「タスクシステム」が存在してるのが >853 でいう「タスクシステム」的方針。

共通化できる部分を見つけてから実装を括りだすのが >853 でいう「ふつう」の方針。


前者だと何か構造的な変更を考えたときに、根っこをいじることになって影響が
広がりやすいというデメリットが考えられる。別の言い方をすると、たくさんの
プログラムから共用されているということは変更が難しくなる、という至極当然の話。
これに対して、大きなメリットは思い当たらない。

860:名前は開発中のものです。
09/03/22 23:22:45 IncocYZR
>859
> 前者だと何か構造的な変更を考えたときに、根っこをいじることになって影響が
> 広がりやすいというデメリットが考えられる。

いわゆる『タスクシステム』も含めて、それらはただの実行巡回コレクションなのだから、それ以上の
機能を持たせようとするのが間違い。なんでもかんでも一つの構造に押し込めるのがおかしい。

実装をくくりだす後者の場合でも、当然共用されているところに変更が入ったらその機能の調停に
手間がかかるのは同じだ。

機能を絞り込めないなら、前者でも後者でも変更が難しくなるのは変わらないよ。

861:名前は開発中のものです。
09/03/22 23:24:30 eDzO8au2
局所的な要求に対して個別のコンテナを置く(作る)のが難しかった(面倒だった)
C++ 初期以前の時代なら、すべての要求に対する単一のコンテナをあらかじめ
持っておくという方法に大きなメリットが感じられたのかもしれないけど、今となっては
基本的なコンテナは標準テンプレートから即座に作れてしまうわけで、大きな違いには
ならない。

C++ 標準コンテナの利用という点にメリット・デメリットの感じ方の分岐点があるのだと
考えれば、 C++ 標準コンテナのゲームプログラマ内での普及率とあわせて、
タスクシステムの恩恵を感じる人が多いことも納得できる。

862:名前は開発中のものです。
09/03/22 23:24:32 DN2untcT
>>859
>共通化できるはずということ(なのかどうか知らないけど)で最初から根っこにひとつ
>「タスクシステム」が存在してるのが >853 でいう「タスクシステム」的方針。
タスクシステムの定義に根っこ一つなんてあったかな?

前々スレあたりに出てた
メイン遷移状態・メニュー階層・ゲームオブジェ・エフェクト…
って粒度単位で分かれてる階層タスクシステムってのもあるみたいだけど。

>共通化できる部分を見つけてから実装を括りだすのが >853 でいう「ふつう」の方針。
そこで括りだされた共通実装って一般にタスクシステムと言われるものでは?

863:名前は開発中のものです。
09/03/22 23:27:38 2tpyojUU
>>859
>たくさんのプログラムから共用されている

継承が浅ければたいした問題じゃないよ。

その理論からいったら.NETが提供する「Object」なんて、
すべてのオブジェクトから継承されるので論外って話になるんじゃないかね?

864:名前は開発中のものです。
09/03/22 23:34:22 eDzO8au2
>>860
> いわゆる『タスクシステム』も含めて、それらはただの実行巡回コレクションなのだから、それ以上の
> 機能を持たせようとするのが間違い。なんでもかんでも一つの構造に押し込めるのがおかしい。

そういう立場で言うと、「タスクシステム」と呼ぶほどの構造はどこにも現れないはず。
つまり「タスクシステム」が存在していること自体が、なにか不適切な機能の押し込みの
存在を示している(或いは感じさせる)ということになる。

> 実装をくくりだす後者の場合でも、当然共用されているところに変更が入ったらその機能の調停に
> 手間がかかるのは同じだ。

後者の方針では、共用されていることで変更が面倒になるようなら共用しないという選択が
簡単にできる。だって元々共用することが前提じゃなかったんだから、元に戻すだけの話。
括りだした実装を、結局ひとつの場面でしか使わないことになったとしても何も問題は無い。


865:名前は開発中のものです。
09/03/22 23:41:47 eDzO8au2
>>862
根っこにひとつという定義は無いと思う。逆に、根っこにひとつとか、共用が前提とかいう
方針でなければ「タスクシステム」と名前がついていても、あまり否定するポイントは無いよ。

名前を改めることを強くお勧めする程度。

866:名前は開発中のものです。
09/03/22 23:42:38 IncocYZR
>864
オマエの頭の中には、機能の階層構造が『タスク』と『タスクを継承した何か』しか無いのか?

そもそも『タスクシステム』なんて仰々しい名称が付いてるが、あんなのはただのイディオムでしか
ないぞ。教条的に従うものでもなんでもない。

> そういう立場で言うと、「タスクシステム」と呼ぶほどの構造はどこにも現れないはず。

『タスクシステムとよほどのもの』は無いかもしれないが、そういう『構造』は確かに存在するし、
>859の後者の方針だって、例えば敵なら敵でまとめてコレクションを作って実行巡回する
んだろ? それは敵という機能をベースにした「タスク」のコレクション以外の何だというんだ?


867:名前は開発中のものです。
09/03/22 23:43:24 IncocYZR
×『タスクシステムとよほどのもの』
○『タスクシステムと呼ぶほどのもの』

868:名前は開発中のものです。
09/03/22 23:44:55 2tpyojUU
>>864
実行巡回リストに、実行の依存関係の解決や、
ライフタイムの管理などを加えてやるとシステムといって良い物になるともうけどな~。

上記のような実装があると便利な処理にはこれを継承させるといいよ。
割と継承する機会が多いから「システム」と呼んでいるんだと思うのだが・・・。

869:名前は開発中のものです。
09/03/22 23:48:03 eDzO8au2
>>863
比較して欲しいのは、共用が前提になっている方針とそうでない方針のメリット・デメリットね。
共用を前提にしたうえで「たいした問題じゃない」と言われても「はぁそうですか」としか言えない。

.NET が提供する Object は、明確な目的があって共用されるべく作られたのであって、
これがなければいろいろ困るというのはすぐわかる。これがあるから「タスクシステム」も
同じことだ、なんてまるで思えない。

870:名前は開発中のものです。
09/03/22 23:56:38 eDzO8au2
>>866
> 『タスクシステムとよほどのもの』は無いかもしれないが、そういう『構造』は確かに存在するし、
> >859の後者の方針だって、例えば敵なら敵でまとめてコレクションを作って実行巡回する
> んだろ? それは敵という機能をベースにした「タスク」のコレクション以外の何だというんだ?

???
「敵のコレクション」に決まってる。

どこから「タスク」が出てくるの?自分で言ってておかしいと思わないの?

871:名前は開発中のものです。
09/03/23 00:09:13 LvfAcAqg
>870
> ???
> 「敵のコレクション」に決まってる。
> どこから「タスク」が出てくるの?自分で言ってておかしいと思わないの?

頭の悪いレス返すなよw

『敵のコレクション』のなかに、『タスクのコレクション』と同質な構造を読み取れないなら
プログラマとしての才能無いよ。

872:名前は開発中のものです。
09/03/23 00:10:00 V2ED/dbE
>>868
うん。そこまでいくと「~システム」と名を付けてもいいかもしれないと思う。

で、そこまで手の込んだものを全体で共用するという方針を採ってしまうと、
>859 で挙げたデメリットが出てくる。ってことで >853,859 の話に戻ってね。

873:名前は開発中のものです。
09/03/23 00:10:18 LvfAcAqg
結局、『敵』という機能単位で実行巡回コレクションを持ってるなら、それは同じことだ。

名前に惑わされてるだけ。

874:名前は開発中のものです。
09/03/23 00:20:29 EDktN1ia
古参のゲームプログラマが「敵のコレクション」とやらを見れば
「あぁ、敵タスクの集まりね」って言うだろうし。
結局タスクなりコレクションなりの方言の違いだけで内容はたいして違わないような…

でも「敵」とか「アイテム」とかの単位で括ってしまうのは仕様変更したとき地獄を見そうだから嫌だな
おえらいゲームデザイナー様の頭の中にしか無い仕様次第で、「この敵はイベント起こるとアイテム扱いで取得できるようになるから」
とか仕様ころころ追加されるし。

移植みたいに仕様が完全に動かないものなら初めから分類して設計できるけど、一般的にゲームはマスター寸前でも
つまらないと基礎構造からちゃぶ台返しがあって入れ替わりがあるから、そんなガチガチに固定した構造で作るのはかえって危険。

875:名前は開発中のものです。
09/03/23 00:27:49 V2ED/dbE
>>874
仕様追加されてから変更すればいいじゃん。

誰も予知能力なんか期待してないってのに、そのために不要な依存関係やバグを
増やすのは嫌だよ。

URLリンク(www.google.co.jp)

876:名前は開発中のものです。
09/03/23 00:31:25 LvfAcAqg
>874
> 一般的にゲームはマスター寸前でも
> つまらないと基礎構造からちゃぶ台返しがあって入れ替わりがあるから、

今まで面白いと勘違いしてきたクソ仕様を、そんな土壇場でひっくり返した糞プランナーに
唯々諾々と従うのはただのバカだ。

仕事なら、キチンとその糞プランナーに責任取らせろ。趣味で作ってるなら、バカにはきちんとバカと
逝ってやれ。

> そんなガチガチに固定した構造で作るのはかえって危険。

敵である『敵』と、アイテムである『敵』は、別に別タスクでも問題ないだろ。内部で参照しあって
リンクしてるとか、双方を子に持つ親が居るとか、色々管理方法はあるだろ。

しかしそんな『敵』であり同時に『アイテム』でもあるような敵が居るなら、そんなクソ仕様で本当に
面白いのかどうかプランナーを小一時間問い詰めたいところだな。


877:名前は開発中のものです。
09/03/23 00:35:14 bJ5OKMfv
>『敵』であり同時に『アイテム』でもあるような敵

ありがとう、なんか閃いた!
このスレ見てて初めて新しい何かに触れた

878:名前は開発中のものです。
09/03/23 00:38:56 LvfAcAqg
>877
礼を言われるようなことは何も書いてはいないが、その閃きが何か形として昇華されることを望むよ。

879:名前は開発中のものです。
09/03/23 00:42:42 lCjH8IyB
>『敵』であり同時に『アイテム』でもあるような敵
そしてマップでも背景でも障害物でもあるんだな
そしてごった煮ができたと

880:名前は開発中のものです。
09/03/23 01:00:17 EDktN1ia
>>876
君はゲーム会社でのプログラマの地位をわかっていないな…
普通よほど小さい会社でもない限りプログラマがゲーム仕様に口出しなんて出来んよ。

ごった煮が見苦しいことは作ってるプログラマが一番よくしってるんだけど
仕様が固まらないまま「とりあえず今あるだけの仕様を作って、細かいことはそれで遊んで決めるから。あ、でもつまんなかったらチーム解散ね。」
とか言われると、基礎システムは変えずに何でもできちゃう「ごった煮」以外の選択肢が無かったりするんだよね…

大作作ってる大手とか、外注に仕事投げる元受系はきっちり仕様書切るみたいだけど、
ゲームデザイン用のプロトタイプとかを本編と別に作れるほど人員も期間も無かったりする中小の中途半端なゲーム開発ではそういうこともあるってことで。

881:名前は開発中のものです。
09/03/23 01:04:52 UXdp0kDT
>>880
おれの会社は小さいからプログラマーの地位が一番いいよ。

882:名前は開発中のものです。
09/03/23 01:22:45 LvfAcAqg
>880
そんなクソな会社辞めちまえ。

ウチは500人以上社員が居るが、糞プランナの言うことをホイホイ聞くようなプログラマも
デザイナもサウンドもディレクターも居ないぞ。

883:名前は開発中のものです。
09/03/23 03:23:53 pfOFwfs9
プランナが仕様を切ってそれをプログラマが実装する、というのは、
単なる役割であって、地位が高いとか低いとかって話じゃないよね。
>>880の会社は単にプランナが仕事してないだけって気がする。

というか、例が下手なせいで話がずれてるが、プログラマの地位(というか
発言力?)の高さと、「仕様変更」が発生するかどうかは関係ないと思うが。
元仕様の不備だろうが、実際に動かしてみて生じた新しいアイディアだろうが、
ゲーム製作において(まともな)仕様変更は普通にあり得るし、それを
「そういう作りじゃないので変更は出来ません」と突っぱねるわけには行かないわけで。

で、その仕様変更に対してタスクシステムが有用かどうかということだけど……。
俺の経験上、同じような変更であっても、多少、修正する箇所が少なくて済むような気が
するけど、「仕様変更に備えるためにタスクシステムを使う」というほどの差はないと思う。
どんな方法だろうと、大抵の記述はオブジェクトやシーン単位で完結してるし。

>>875
この場合YAGNIは的外れじゃないか?
タスクシステム(>>2だろうがそれの発展系だろうが)を使って組んでいるなら、
既にタスク周りのコードは組みあがっているわけで、依存関係やバグが増えることはないよ。
タスク処理そのものを新しく作るとしても、初期仕様からそれを利用するわけだし。

884:名前は開発中のものです。
09/03/23 08:30:26 5GNmNI21
>>862
> 前々スレあたりに出てた
> メイン遷移状態・メニュー階層・ゲームオブジェ・エフェクト…
> って粒度単位で分かれてる階層タスクシステムってのもあるみたいだけど。
何でもかんでもタスクシステムと呼ばないで欲しい。タスクシステムとか
名前付けるほどのものではなくて、普通に書いたらああなるという例だから。

アレにたいそうな名前付けたら、それこそ for ループに○○システムとか
呼び始めることになるぞw

885:名前は開発中のものです。
09/03/24 01:03:10 Rj9TsTRs
>>884
タスクシステムを改良した物で作った本人が階層タスクシステムと命名したなら
別にタスクシステムって名前がついててもいいんでない?

886:名前は開発中のものです。
09/03/24 05:58:46 U0cCvZZ8
>>885
だったら、>>2との相違点を説明するべきだよね?
少なくともこのスレでいきなり出すのはNGだと思うね

887:名前は開発中のものです。
09/03/24 06:34:43 okF9YnFL
>>883
> この場合YAGNIは的外れじゃないか?
> タスクシステム(>>2だろうがそれの発展系だろうが)を使って組んでいるなら、
> 既にタスク周りのコードは組みあがっているわけで、依存関係やバグが増えることはないよ。

それは既存の「タスク周りのコード」への依存を増やしているということ。
そういった共用コードが >840,846 が言うようにゲーム合わせて変更を
加えられていくと考えると、やっぱり >859 みたいなデメリットにつながる
ことが考えられる。

>874 で、そのデメリットをあえて受け入れる理由が「ちゃぶ台返し」への
予防策だというのだからまさに YAGNI の出番だ(そんな予防策は要らない)、と。

888:名前は開発中のものです。
09/03/24 06:36:03 okF9YnFL
結局 >853 で挙げた2つの方針について、前者の「タスクシステム」的方針に
メリットを挙げる人は居ないみたいだ。

個人的には後者が「ふつう」だと思ってたんで驚くべき結果じゃないんだけど、
過去に見てきた「タスクシステム」の実例のせいで、「タスクシステム」と聞くと
やたらごてごてといろんなゲームや画面の都合が押し込められた
自作コンテナクラスや、さらにそいつがグローバル変数になってる状態を
想像して嫌な予感しかしないのが正直なところ。

現存する「タスクシステム」は名前がおかしいだけで、構造としては
挙げたような問題を持たないようなものだけが生き残ってる、ってことだと
理解しておくよ。

889:名前は開発中のものです。
09/03/24 07:08:53 bIbLUBOz
>888
全部ID:okF9YnFLの個人的感想と推測でしかないな。

890:884
09/03/24 07:18:50 0pAn0US9
>>885
その本人ですが…


891:名前は開発中のものです。
09/03/24 07:21:57 bIbLUBOz
実際の話、>2のような『タスクシステム』も含めて、何らかの共通の構造をコレクションした
実行巡回リストを作って統一的に運用している会社が殆ど。

今まで20社以上の下請けにソースコード納品させてて、それで確認しているから、すくなくとも
その範囲内では間違いない。

毎回毎回基礎部分からワンオフで作ってる時間も予算も、下請けにはないからな。判ってる
人たちだけで使うなら、基礎部分を固めてその上で工夫する方がよほど効率がいいという
ことだ。

892:名前は開発中のものです。
09/03/24 07:34:12 lE32YVAM
話のまとめがタスクシステム云々と関係無いじゃん
日記帳に書いてろよ

893:名前は開発中のものです。
09/03/24 07:37:26 bIbLUBOz
その中では、普通に>884が言うような『階層的タスクシステム』というような構造も存在するよ。

いわゆる『シーンタスク』には継続機能を持ったものを使って、できるだけシーケンシャルに記述
できるように、ゲーム内オブジェクトはFMSを使用、といった具合に使い分けてる。


894:名前は開発中のものです。
09/03/24 07:57:17 bIbLUBOz
>884じゃねぇな、>862だ。

ソース公開されてる海外のゲーム見ても、普通にこういう構造は使われてるぞ。
EntityとかActorとかいった構造を内包するか継承するかしてコレクションしてる。


895:名前は開発中のものです。
09/03/25 03:06:34 L7D8ecXi
YAGNIの考え方からいけばむしろごった煮のほうがYAGNI的じゃないか?
敵とかアイテムとか地形とかの仕様上の扱いは最後まで決まらないんだから
敵でも何でもタスクてごった煮実装して、最後に仕様が固まって分類わけできる
ような仕様に落ち着いたなら、その段階で初めて分ける作業をすればいいわけで。

896:名前は開発中のものです。
09/03/25 04:07:28 Lr2HI9E7
>>895
> 敵とかアイテムとか地形とかの仕様上の扱いは最後まで決まらないんだから

ここが間違い。
本当に決まっていないのであれば、そもそもコードを書くべきじゃない。

897:名前は開発中のものです。
09/03/25 07:51:20 4mzxhtmM
全くだな
手を動かしてる方が進んでる感あるから決まってない仕様には触れずに色々やり出すんだろうけど
明らかにこれが間違いの元
現実には全く進んでないし余計なコードを入れただけ
本当にやらなくてはならないことは、決まっていないから早く決めて欲しい仕様リストの作成と
それに対する仕様の提案や仮に決まらなかったときの強行策の練り上げ等であって
プログラムを組むことではない
すべてをやりつくしたら昼寝でもして待つか仕様が決まっている箇所のバグ潰しが仕事
プログラムを組むことではない
プログラムを組む仕事に逃げるなと言いたい

898:名前は開発中のものです。
09/03/25 11:24:38 CbSm4PZy
ここの偉そうに語ってる連中のどれだけがプロなんだか

899:名前は開発中のものです。
09/03/25 12:49:30 4mzxhtmM
じゃ、はっきりいうけど
現場で一番使えない奴はプログラミングしかしてない奴
出世もしないし心当たりない奴は働いたことないだろ

900:名前は開発中のものです。
09/03/25 23:53:40 pW6Hh/Rg
で?
タスクシステムと何か関係あんの?

901:名前は開発中のものです。
09/03/26 00:04:17 koP5FPqt
スレタイも読めない子供なんだろ

902:ID:EEKBitmg ◆HSP4mee/SU
09/03/26 01:24:52 B4kinADx
>>900-901
くっくっく

903:名前は開発中のものです。
09/03/26 01:30:56 JMiA0s09
予想通りに釣られるやつだな

904:名前は開発中のものです。
09/03/26 19:29:08 5m/Hn+Tm
>>899
一番使われてるじゃんw

905:名前は開発中のものです。
09/03/26 20:42:18 t4iRSZvE
でもほぼ無駄
ある程度は数字で行動が決定できない人間じゃないと邪魔にしかならない

906:名前は開発中のものです。
09/03/26 21:24:16 5m/Hn+Tm
数字で?行動?
言いたいことは分かるが、その表現は適切なんでしょうかww

907:名前は開発中のものです。
09/03/26 21:27:34 sNdn6b+Y
>>906
わかったならいいじゃん
お前なんか何が言いたいかわからないし
タスクシステム流行らせたいの?

908:名前は開発中のものです。
09/03/27 15:45:50 iW3jYp68
今日も見えない敵と戦うヒトがひとり

909:名前は開発中のものです。
09/03/27 19:28:50 82f41tp0
弾幕 最強のシューティングゲームを作る!
URLリンク(www.sbcr.jp)

また出るよ

910:名前は開発中のものです。
09/03/27 22:56:31 RoIWJt/F
BulletML紹介して終わりじゃね?

911:名前は開発中のものです。
09/03/28 07:13:43 3WHtXnJb
「変更の必要ない完璧な仕様が出来るまでコードはかかない」
そんなふうに考えていた時期が俺にもありました

912:名前は開発中のものです。
09/03/28 10:04:32 GGppowTV
>>911
>>896以下ループ

書くべきじゃないと思うよ
っていうか書いても意味がない
PG経験10年だけど俺も未熟な頃は色々できることないか考えてたけど
ソースに関してはまるで意味がない
絶対に書いてはダメ
それより「決まってないから決めてくれ仕様リスト」の作成に力を入れろ

913:名前は開発中のものです。
09/03/28 10:09:25 8c8Vy+u+
仕様が決まってないうちは自分のライブラリ整備に時間を入れる時期じゃね?
俺はこういう空白時間はそう使ってる。

914:名前は開発中のものです。
09/03/28 12:19:58 iRlTudQl
仕様が決まる前に退社しろよ

915:名前は開発中のものです。
09/03/28 13:29:16 Sx0Nlejd
決定したはずの仕様が覆るのはよくあること

916:名前は開発中のものです。
09/03/28 14:08:59 3WHtXnJb
>>913
>仕様が決まってないうちは自分のライブラリ整備に時間を入れる時期じゃね?
仕事中に”自分”のライブラリ整備なんてしてたら普通に職務上横領だっての。
学生気分が抜けない新人か?

917:名前は開発中のものです。
09/03/28 14:14:01 8c8Vy+u+
担当箇所のライブラリという意味だ
趣味のライブラリというわけじゃないぞ

918:名前は開発中のものです。
09/03/28 14:50:06 NO4+g0CQ
>913
社内の機材を使って社内で作成したモノは全て会社の所有物なワケだが、
自分用のライブラリを会社で作るって常識ナシのやることだぞ。

919:名前は開発中のものです。
09/03/28 14:54:47 NO4+g0CQ
おっと、レス更新しておけばよかったよ。

ちなみにうちの会社はタスク使ってるよ。C++の場合はベースクラスの名前がITaskで、Cの場合は
タスクの先頭に必ずTCBというものを置くようにルール付けされてる。

まぁ、それでもミリオン逝くソフトは作れるってこと。

920:名前は開発中のものです。
09/03/28 15:22:24 LQ4LeJzd
最近はミリオンいくソフトなんてあまり聞かないな
売上がミリオン$ってこと?

921:510
09/03/28 16:20:14 J75Q9/vX
もう、
タスクシステム
 = 特定の型のインスタンスを高速に列挙する仕組み
  + 列挙したインスタンスに対する処理を並列化するためのマクロ群
ってことでいいでしょ。


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