タスクシステム総合スレ part5
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2009/02/19(木) 02:21:01ID:k4ODtuXPpart4 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」と明示してください
そうでない場合はカスタム版タスクであることを明示してください
・人を憎んで言語を憎まず
0657並列さん ◆dPfetnROQg
2009/03/07(土) 10:57:38ID:cewi3IDn> というか、むしろ今まで並行の意で並列と言っていたのだが。
あんたは、全然話にもならない。
専門用語を勝手に本来と違う意味で使っておいて
相手に日本語が読めないだの何だの言うのは本当、勘弁して欲しい。
0658名前は開発中のものです。
2009/03/07(土) 11:06:08ID:ZZNOCL1s順序がある処理は並行化できないよ。
例えば、処理Aと処理Bがあって、
BはAの後でないと実行不可だとする。
この場合、AとBを並行に処理することは出来ない。
0659名前は開発中のものです。
2009/03/07(土) 11:06:20ID:cMprZFoi> ID:ZZNOCL1sは効率的でない並行/並列は役に立たないんだから、
そんな話じゃないでしょうに…
あと
>並列さん
>悟っている
なんか気持ち悪いです
0660並列さん ◆dPfetnROQg
2009/03/07(土) 11:13:36ID:cewi3IDn> 順序がある処理は並行化できないよ。
それぞれのタスクを逐次処理しようが、それは並行処理って言うんだが。
ある瞬間に一つしか実行していなければ並行。それがconcurrentの定義。
本当、専門用語を勝手に意味を作り替えんなと言いたい。
>>659
気持ち悪いのはお前。お前はいらない子だから死んでくれ。
0661名前は開発中のものです。
2009/03/07(土) 11:17:08ID:ZZNOCL1sお前も、並列処理は並行処理の部分集合だということをおさえられていなかっただろ。
>並行ということはconcurrentなのだから、スループットは1倍を絶対に超えない。
↑何に対する1倍かはしらないがな。
0662並列さん ◆dPfetnROQg
2009/03/07(土) 11:25:40ID:cewi3IDn>>並行ということはconcurrentなのだから、スループットは1倍を絶対に超えない。
>↑何に対する1倍かはしらないがな。
そこが読めてないのお前だけだろう。
「concurrentな処理は、Nコアであっても、単一コアで実行したときの1倍以上のスループットが出ない」の意味。
0663並列さん ◆dPfetnROQg
2009/03/07(土) 11:31:14ID:cewi3IDn> お前も、並列処理は並行処理の部分集合だということをおさえられていなかっただろ。
どこをどうやればそう読めるのか俺は知りたい。
並行処理と並列処理との差はある瞬間に、タスクを実行しているスレッド(プロセス)が
単一か複数かの差のみ。そんなことは誰でもわかっている。
その用語を勝手に違う意味に使ってたのはあんただろ。
俺には、頭がおかしいとしか思えない。
その頭のおかしいあんたを唯一擁護しているのは ID:cMprZFoi だけ。
こいつは、あんたが書き込みした直後にしか出てこない。どうせこれもあんただろ。
0664名前は開発中のものです。
2009/03/07(土) 11:36:14ID:92TsYx3Xフレームワークなら並列云々の話になると思うが…
あれもタスク進化系の一種なのか?ちょっとタスクって守備範囲広すぎ。
あれはコア数がパフォーマンスに直結する造りだね。
順序の依存性のある処理と無い処理をグループ分けして、並列で問題ないケースは複数コアで同時計算。
順序の依存性がある処理との同期スケジューリングをフレームワークが管理って感じで。
ゲーム中には依存性のある処理と無い処理があるから、まぁ複数コアを有効に使おうと思うと
こんな感じな設計に行き着くんだろうね。
0665並列さん ◆dPfetnROQg
2009/03/07(土) 11:40:55ID:cewi3IDnHSP使いのプログラミング経験の浅い世間知らずのクルクルパーだが、
そのわりには用語の使い方はまともだし、勉強もよくしていると思っていた。
俺は専門用語を勝手に俺解釈の用語とすり替えて話す奴とは
面倒くさいので話をしたくない。
このスレはどうせみんな常駐してるようなもんなんだから、みんなコテハン
にすればいい。それそれぞれが嫌な奴をNGリストに入れておけばいいと思うんだがな。
そんなわけで ID:ZZNOCL1sは俺をNGリストに入れておいてくれ。
お前と話をするのは疲れる。
0666名前は開発中のものです。
2009/03/07(土) 11:49:53ID:ZZNOCL1sいや、単純に考えて、処理に依存関係があると、並行処理できないだろ。
実際OSなんかは各スレッド間に依存関係が無いものと見なして並行処理しているわけで。
0667名前は開発中のものです。
2009/03/07(土) 11:52:30ID:8u/3vapKそれが実質直列だってことは分かるんだけど。
とりあえず、俺が何を考えているのかと言うと、
動き方が実質直列であっても、それぞれ別のスタック領域を持ってる点が違うだろ?
別々のコンテキストを持っている。
その辺を区別するのに「実行効率ゼロの並行」も俺は並行と呼んでただの直列と区別していた。
要するに俺はコアが何個でそのPCがどこ指してるのって部分だけで並行か並列かって言ってた。
んで、一般的定義はどうなのと思ってググった先を見てみると、
コンテキストがどうのというのは論点じゃ無いような気がしてきた。
もうちょい調べてみるわ。
0668並列さん ◆dPfetnROQg
2009/03/07(土) 12:05:02ID:cewi3IDn> いや、単純に考えて、処理に依存関係があると、並行処理できないだろ。
あんたの「並行処理」について持ってる勝手なイメージは知らんが、
優先順位がついていてそれぞれのタスクを逐次的に処理していく場合も
(そのタスクが終了後に消滅しないなら)「並行処理」と呼ぶ。
http://en.wikipedia.org/wiki/Concurrent_computing
> Concurrent programs can be executed sequentially on a single processor
> by interleaving the execution steps of each computational process
「並行プログラムは、それぞれの計算プロセスを実行箇所をインターリーブしながら
シングルプロセッサによって逐次的に実行される」
計算プロセス間の依存性とか、効率とかそんなことは並行処理の定義とは
何ら関係がない。
・実行箇所をインターリーブしながら(タスクからリターンしてもタスクは
通例存在していて)
・シングルプロセッサによって(ある瞬間を見たときにつねにひとつの
プロセッサしかタスクを実行していない)
この二つを満たしているなら、並行処理。
0669名前は開発中のものです。
2009/03/07(土) 12:09:24ID:ZZNOCL1sどこにそんな定義があるんだ?
0672名前は開発中のものです。
2009/03/07(土) 12:26:24ID:ZZNOCL1shttp://ja.wikipedia.org/wiki/%E4%B8%A6%E8%A1%8C%E8%A8%88%E7%AE%97
>タスク群は1つのプロセッサ上で動作する場合、複数プロセッサ上で動作する場合、
>ネットワークを介した分散システムで動作する場合が考えられる。
663 名前:並列さん ◆dPfetnROQg [sage] 投稿日:2009/03/07(土) 11:31:14 ID:cewi3IDn
並行処理と並列処理との差はある瞬間に、タスクを実行しているスレッド(プロセス)が
単一か複数かの差のみ。そんなことは誰でもわかっている。
Wikipediaの人は分かってないみたいですよ。
注意してきたらどうなんですかね。
0673名前は開発中のものです。
2009/03/07(土) 12:42:43ID:ZZNOCL1s>計算プロセス間の依存性とか、効率とかそんなことは並行処理の定義とは
>何ら関係がない。
だから、並行処理では処理の依存性は考えない=依存性は扱わない=依存性は扱えない。
扱わないのは扱えないから扱わないの。
実際のOSなんかでも、スレッド間の処理の依存性は扱わない。というか扱えない。
各スレッドを並行と見なして実行する。
処理に依存性がある場合はプログラマが自前で同期オブジェクトとかつかってシコシコやる。
一方、タスクシステムでは処理の依存を優先順位という形で明示的に扱うのが一般的。
各タスクを並行とみなしているわけではない。
0674名前は開発中のものです。
2009/03/07(土) 12:44:25ID:92TsYx3X並行・並列処理の単語の定義のスレになってるな。
自然言語の単語の定義なんてどこまでいっても曖昧なのに…
自分の言う「臭い」と他人の言う「臭い」が同じという保障なんて誰にも出来んよ
確かなのは人工言語で書かれたソースのみ。
0675並列さん ◆dPfetnROQg
2009/03/07(土) 12:44:25ID:cewi3IDnざっと見たけど日本語のwikipediaのほうは、ひどいな。
これとか
> 並行性のための構造を備えた最も一般的な言語はJavaとC#である。
なんでだよと突っ込みを入れたくなる。
これ書いてる奴は、thread生成が出来るからJavaとC#を入れてるんだろうけどひどいにもほどがある。
C#のyieldによるcontinuationは確かに並行スレッドなんだが、それならJavaを含めるのはおかしい。
日本語のwikipediaの「並行性」の項目もひどいな。なんだよこれ。
ちょっとwikipedia行って暴れてくるわ。
0676並列さん ◆dPfetnROQg
2009/03/07(土) 12:47:15ID:cewi3IDn> 自然言語の単語の定義なんてどこまでいっても曖昧なのに…
専門用語は、限りなくstrictに定義されてるべき。
そうじゃなきゃ論文とか意味のないものになってしまう。
0677名前は開発中のものです。
2009/03/07(土) 12:50:58ID:ZZNOCL1swikipediaを引用しているようだが、途中で切れているようだが。
>「並行プログラムは、それぞれの計算プロセスを実行箇所をインターリーブしながら
>シングルプロセッサによって逐次的に実行される」
の後ろには、実際には
or executed in parallel by assigning each computational process to one of a set of processors
that may be in close proximity or distributed across a network.
が続いている。
自分の都合の良いところだけを掻い摘んで引用する根性の悪さ。
結局、
>並行処理と並列処理との差はある瞬間に、タスクを実行しているスレッド(プロセス)が
>単一か複数かの差のみ。そんなことは誰でもわかっている。
は間違い。
0678並列さん ◆dPfetnROQg
2009/03/07(土) 12:52:11ID:cewi3IDn> 実際のOSなんかでも、スレッド間の処理の依存性は扱わない。というか扱えない。
それはダウト。
実際のOSにはプロセスのpriorityがあって、それに従ってスケジューリングされる。
割り込みなんか特にそう。あるプロセスの実行が他プロセスの実行より優先されることは多々ある。
キーボードイベントが発生したら、その処理が優先される。そこには明確な実行順序がある。
そんな機能すらない、もっとprimitiveなOSの話をしているなら、まあそれはそれでいいけど
「実際のOS」と書かれるとWindowsやらLinuxやらを想定しているのかと俺は思ってしまう。
0679名前は開発中のものです。
2009/03/07(土) 13:02:13ID:ZZNOCL1sお前がひどいという日本語版の、
「並行性のための構造を備えた最も一般的な言語はJavaとC#である。」
は英語版のページにある
「Today, the most commonly used programming languages that
have specific constructs for concurrency are Java and C#. 」
の訳なわけだが。
そしてその英語版のページを引用して、
「これが並行処理の定義だ!」と言っていたのがお前なのだが。
さらにその引用も自分の都合のいいところだけを引用するという正確の悪さ。
「〜又は〜」と書いてあるのに、「又は」以降をバッサリカット。
0680名前は開発中のものです。
2009/03/07(土) 13:05:44ID:ZZNOCL1sプロセスのプライオリティーは必ずしも守られるわけではない。
あれは、CPUリソースに対する優先順位であって、処理に対する依存関係を表すものではない。
現にマルチプロセス環境だと、プライオリティーの高いものと低いものが同時に実行される。
0681並列さん ◆dPfetnROQg
2009/03/07(土) 13:05:45ID:cewi3IDnそれなぁ、「executed in parallel」以下は敢えて省略した。
これを「根性の悪さ」と言われるのはわからないではないが、いま俺が問題としているのは、
「concurrent thread」 とか「parallel thread」というときのconcurrentとparallelの意味の違いだ。
「concurrent computing」という学問分野があって、その学問分野は広範で
いわゆる分散コンピューティングみたいなことまで研究対象としている。
本来、concurrentの定義にparallelとか出てくるのはおかしいのだが(それだとconcurrentとparallelとの
差が無くなってしまう)、「concurrent computing」の分野においては、「concurrent program」の意味は、
かなり拡大解釈されている。だから、その部分をはしょった。
「concurrent computing」のconcurrentを援用するのがあまり良くなかったと言われれば、まあ、それはそうなのだが。
0682名前は開発中のものです。
2009/03/07(土) 13:09:34ID:Fbn5zOAB並列(parallel)は、複数の計算を物理的に同時に実行できることを表す。
んじゃないの?
独立した概念(関連はあるけど)なんだから、>>660の
>ある瞬間に一つしか実行していなければ並行。それがconcurrentの定義。
はおかしいと思う。
concurrentに作っておけば、parallelに実行しやすいんだし。
0683並列さん ◆dPfetnROQg
2009/03/07(土) 13:17:17ID:cewi3IDnうむ、それは正しい。
>>682
ああ、そうか。そういう意味では、660はおかしいし、書き方が悪いな。
これについては反省。すまんかった。> ID:ZZNOCL1s
0684名前は開発中のものです。
2009/03/07(土) 13:19:11ID:ZZNOCL1s0685名前は開発中のものです。
2009/03/07(土) 13:20:00ID:ZZNOCL1s0686並列さん ◆dPfetnROQg
2009/03/07(土) 13:24:11ID:cewi3IDn> 並行(concurrent)は、複数のコンテクストが論理的に同時に存在できることを表す。
> 並列(parallel)は、複数の計算を物理的に同時に実行できることを表す。
この定義に基づいて古典的なタスクシステムのタスクについて語ると
・古典的なタスクシステムのタスクは、「並行」。
・実行順序に厳しい制約があるとみなすなら、「並列」化はできない。
ところが実際のゲームでは、タスク間に依存関係がない部分が結構あるので
部分的に「並列」化できる。
この「並列」化によって、コア数N×0.7ぐらいのパフォーマンスは出る。
で、この「並列」化を古典的タスクシステムを進化(?)させて書けるようにすれば
いいということだな。
0687並列さん ◆dPfetnROQg
2009/03/07(土) 13:24:58ID:cewi3IDn俺のことは、NGリストに入れておいてくれ。
最初に682のように書いてもらえれば、俺はすぐに理解できたのだが。
0688名前は開発中のものです。
2009/03/07(土) 14:32:04ID:NOayWFQU0689名前は開発中のものです。
2009/03/07(土) 14:39:01ID:ZZNOCL1s>並行(concurrent)は、複数のコンテクストが論理的に同時に存在できることを表す。
これに付け加えて、並行の条件には、複数のコンテクストが論理的に同時に実行可能であることも、
必要だと考えている。
並行性
http://ja.wikipedia.org/wiki/%E4%B8%A6%E8%A1%8C%E6%80%A7
だから、
1.並行でなければ並列化できない。
2.タクスの処理順位を考慮するようなタスクシステムは、すべてのタスクが互いに並行というわけではない。
3.ゆえに、タスクシステムを並列化するならば、並行なタスク同士を抽出する必要がある。
と考え、
さらに、タクスの処理順位を考慮するようなタスクシステムは「並行でない」と考える。
0690名前は開発中のものです。
2009/03/07(土) 15:29:42ID:8u/3vapK俺もこう思ってた。
んでそうハッキリ書いてある資料を探してるんだけど、見つからない。
>並行の条件には、複数のコンテクストが論理的に同時に実行可能であることも、必要
次からこっちの定義で話すわ。
0691名前は開発中のものです。
2009/03/07(土) 15:37:28ID:92TsYx3X>さらに、タクスの処理順位を考慮するようなタスクシステムは「並行でない」と考える。
MTフレームワークは処理順の依存の有無でタスク分けてマルチコアで同時に複数タスク動かしてるけど
これは処理順位を考慮するシステムだから「並行でない」のかな?
0692名前は開発中のものです。
2009/03/07(土) 15:42:35ID:ZZNOCL1s>並行(concurrent)は、複数のコンテクストが論理的に同時に存在できることを表す。
だと、いわゆるオブジェクトと呼ばれるものは全部並行ってことになっちまうだろ。
コンテキストが同時に存在できないオブジェクトなんて、まあ無いからな。
言葉としての意味が無くなる。
0693名前は開発中のものです。
2009/03/07(土) 15:56:08ID:ZZNOCL1sもしはじめから並行なら、MTフレームワーク自体いらないでしょ。
0694名前は開発中のものです。
2009/03/07(土) 16:00:29ID:92TsYx3X>もしはじめから並行なら
どこにそんな前提が?
0695名前は開発中のものです。
2009/03/07(土) 16:36:27ID:E0xOAlNR>これに付け加えて、並行の条件には、複数のコンテクストが論理的に同時に実行可能であることも、
ある計算の、ある時点における実行状態を表現したものを、コンテクストと呼ぶんじゃないの?
>並行(concurrent)は、複数のコンテクストが論理的に同時に存在できることを表す。
と同じ事を言ってるだけのような。
>1.並行でなければ並列化できない。
は違うと思う。
並行でない命令列も、依存関係が無ければ並列化できる。
現にCPUの中でシリアルセマンティクスを満たしつつ並列実行が普通におこなわれている。
そういう命令列は本質的に並行だった?違うでしょ?スーパースカラで並列に実行される命令は、
異なるコンテクストを持ってるわけじゃないんだから。
あと細かいことだけど、順位と順序は全然意味違うんだから、
ちゃんと使い分けてくれないと読み辛いよ。
0696名前は開発中のものです。
2009/03/07(土) 18:22:05ID:UcXZ5wF9くる値によって依存関係があるかもわからんしないかもわからん
ごった煮だとそういうソースになってしまうな
0697名前は開発中のものです。
2009/03/07(土) 18:30:21ID:rbzzI5lu↑(・∀・)↑
ウンコちゃんインしたお
0698名前は開発中のものです。
2009/03/08(日) 18:34:25ID:ryll+mdy> >これに付け加えて、並行の条件には、複数のコンテクストが論理的に同時に実行可能であることも、
> ある計算の、ある時点における実行状態を表現したものを、コンテクストと呼ぶんじゃないの?
> >並行(concurrent)は、複数のコンテクストが論理的に同時に存在できることを表す。
> と同じ事を言ってるだけのような。
例えば、コンテクストが共有されている場合などでは、
コンテクストは同時に存在できるが、同時に実行はできない。
具体的には、オブジェクトAがオブジェクトBの参照を内部に保持している場合など。
オブジェクトAはオブジェクトBとコンテキストを共有しているということになり、
オブジェクトAとオブジェクトBは同時に存在できるが、同時に実行は出来ない。
>並行でない命令列も、依存関係が無ければ並列化できる。
並行でない命令列の中でも、依存関係が無い並行な部分だけは並列化できる。
並列化とは、並行に処理することだから、並行な処理しか並列化できない。
自動並列化
http://ja.wikipedia.org/wiki/%E4%B8%A6%E5%88%97%E5%8C%96
>プロセッサで「並行」に実行されるようにする。
スーパースカラ
http://ja.wikipedia.org/wiki/%E3%82%B9%E3%83%BC%E3%83%91%E3%83%BC%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%A9
>プロセッサ内の冗長な実行ユニットを使って「並行」して処理される。
0699名前は開発中のものです。
2009/03/08(日) 18:39:37ID:ryll+mdyヒント:背理法
0700698
2009/03/08(日) 19:26:02ID:ryll+mdyコンテクストが共有されていても、read-onlyな場合は並列化可能だね。
書き込みするとアウトだけど。
0701名前は開発中のものです。
2009/03/08(日) 19:27:58ID:0j+yjPijなんか色々と変だよ。
>例えば、コンテクストが共有されている場合などでは、
>コンテクストは同時に存在できるが、同時に実行はできない。
共有されているのに同時に存在するってどういう意味?
コンテクストはいくつあるの?
>具体的には、オブジェクトAが(以下この段落略)
オブジェクトとコンテクストがごっちゃになってる。
オブジェクトAがオブジェクトBへの参照を内部に保持していても、
コンテクストがいくつあるのかという問題とは関係無いよ。
オブジェクトAとBを同時に実行はできない?オブジェクトを実行するってどういう意味?
この辺は、>>692の勘違いと同じ匂いがする。
てか>>692さんなのかな。
0702名前は開発中のものです。
2009/03/08(日) 19:30:14ID:0j+yjPij701の続き。
>並行でない命令列の中でも、依存関係が無い並行な部分だけは並列化できる。
「依存関係が無い部分」を「並行な部分」とは呼ばないよ。
いや呼ぶのは自由だけど、少なくとも聞いたことないよ。
いや聞いたことないだけかもしれないけど。
>並列化とは、並行に処理すること(以下略)
×。
もうちょっと詳しく言うと・・・
「並列化とは、並行に処理すること」
という言葉それだけを見るなら、○。
でも、そこに出てくる「並行」という言葉は、並列という言葉を説明するための
「(同時)並行」という意味であって、このスレでここまで長々と議論してきた
並行(concurrent)とは意味が違うよ。
(「並列」を説明するのに「並列」と言っても仕方が無いからね)
二つ挙げてくれたwikipediaの説明に出てくる「並行」も、同じように「並列」を
説明するための「並行」であって、ここに引っ張り出してきても意味が無いよ。
0703名前は開発中のものです。
2009/03/09(月) 12:41:05ID:2btSBxrR0704名前は開発中のものです。
2009/03/09(月) 13:31:41ID:+h98nuCN0705名前は開発中のものです。
2009/03/09(月) 14:16:42ID:EugqMYhT0706ID:EEKBitmg ◆HSP4mee/SU
2009/03/10(火) 01:19:32ID:W7jNDZ1N=『擬似並列動作』のことを云いたかったの!微妙に書き間違えてた?と書こうと思ったら
>>637-以降で怖いおじちゃん達が深夜の泥沼バトルが展開されてあれよあれよと言う間に
みんな深淵の彼方へ飛んでいってしまった。ニーチェの警告に耳を傾けない者はみんな
闇に飲まれちゃうんだ。恐ろしいことだ
0707ID:EEKBitmg ◆HSP4mee/SU
2009/03/10(火) 01:20:59ID:W7jNDZ1Nところが>>632のタスクシステムは直列処理ではなくどっちかっつーと『並列』らしい。
たぶん>>632の云うタスクシステムは>>2とは別物か、あるいは並列ではなくて
『擬似並列動作』とか『並行動作』のことをいってるのかなーとESPした。それが>>635
>>2の『システム(笑)』部分が提供するものは
・粗末な侵入式の連結リスト
・それを周期的にナメナメしてディスパッチするショボイ仕掛け
だけ。>>2はこの『システム』部分をユーザー定義の逐次処理・直列処理に使ってるけど
ユーザー定義の並行動作に使うこともできるっちゃできる
例えば組み込みシステムでは、異なる割り込みハンドラからの指示でスリープ状態から
復帰するタスクとかあるからね
0708ID:EEKBitmg ◆HSP4mee/SU
2009/03/10(火) 01:36:39ID:W7jNDZ1Nタスクとして登録してるとする。(そんな無駄なことしたくないけど、する奴もいるだろう)
破片・パーティクルのタスクは他のタスクとの作用なんてないとする。ならばこれらは
確実に並行動作してる
逐次処理・直列処理で並列動作してる。だが並列動作じゃない
0709ID:EEKBitmg ◆HSP4mee/SU
2009/03/10(火) 01:37:17ID:W7jNDZ1N×逐次処理・直列処理で並列動作してる。だが並列動作じゃない
○逐次処理・直列処理で並行動作してる。だが並列動作じゃない
0710ID:EEKBitmg ◆HSP4mee/SU
2009/03/10(火) 02:18:01ID:W7jNDZ1N一本の連結リストにみんなチャンポンにしてぶち込んでる時点で
別スレッドで同時並行的に弄繰り回されるということを考えてないだろ
タスク間通信に必要な同期のメカニズムを提供していないのもそう
シングルスレッドで逐次処理するという前提だからバッサリ省いてる
次に、>>2のTCB(笑)とかいう構造体のプライオリティというパラメータは
priority-rankingではなくpriority-sequenceとして使われており、異様。
これは処理順序を表しており、この順序でソートして順次処理される
そういう前提でタスク(ジョブ)の内容を記述してる。順序が狂ったら動かない
0711名前は開発中のものです。
2009/03/10(火) 12:53:53ID:GPL7IZe+>ユーザー定義の並行動作に使うこともできるっちゃできる
できるっちゃできる、じゃなくて、ゲームオブジェクトの並行動作を記述することが
そもそもタスクシステムの目的なんじゃないの?
オブジェクトごとのデータとコンテクストをひとまとめにして自律的な行動を
自然(←人によって感じ方は違うだろうけど)な形で書ける(気分になれるw)ことと、
オブジェクトの生成破壊が多くてフラグメントを起こしがちなゲームにおいてデフラグを扱えること、
の2点を、素朴な形で実装したのがタスクシステムの良い点だったと思うんだけど。
>>710
>>>2のシステム(笑)はなんで並列動作できないの?
特定プライオリティがついているオブジェクト群は他との相互作用が無いと決めておいて、
それらを並列動作させることはできるんじゃないの?
(そういう番号をプライオリティと呼ぶことの是非は別として)
別に誰も、全てのタスクを並列動作させることなんか最初から期待してないと思うけど。
かなり上の方に出てた自動的に並列動作させる云々の話も、そういうプライオリティの
タスクに限って、プロセッサ数に合わせて並列でディスパッチするような拡張も考えられる
のではないか、という話だったと理解してたんだけど。
0712名前は開発中のものです。
2009/03/10(火) 14:14:14ID:arIRXx6m> ゲームプログラム本体のコードは、OSのコードと同じように、
> 整数演算中心で小さな範囲での並列しかできず、
> 基本的には逐次実行しなければならないコードがほとんどだ。
これが古臭いタスクのことを指しているとは考えられないし
並列ネタはタスク関係無くね?
0713名前は開発中のものです。
2009/03/10(火) 17:38:59ID:DtkxsGymシングルプロセッサが前提の時代に書かれた物に難癖つけるのも大人げないと思う
ていうか俺は現在でもマルチスレッドなんてやりたくない
0714名前は開発中のものです。
2009/03/10(火) 18:22:37ID:9N7ATqdV裏でローディングしながらゲーム動かすなんて別に難しくもなんともねーし
ただ、ゲームオブジェクトにやる意味は無さそうだけどね
0715名前は開発中のものです。
2009/03/10(火) 18:42:31ID:+MsrlA3X0716名前は開発中のものです。
2009/03/10(火) 19:16:57ID:9N7ATqdVやってみりゃいいじゃん
0717名前は開発中のものです。
2009/03/10(火) 19:47:23ID:+MsrlA3Xやってみた
ガックガクになった
0718名前は開発中のものです。
2009/03/10(火) 20:01:50ID:9N7ATqdV0719名前は開発中のものです。
2009/03/10(火) 21:27:13ID:LXtgug0h0720名前は開発中のものです。
2009/03/10(火) 22:07:24ID:OHC3eltB普通非同期アクセスするだろ。
JK
0721名前は開発中のものです。
2009/03/10(火) 22:48:52ID:GPL7IZe+>特定プライオリティがついているオブジェクト群は他との相互作用が無いと決めておいて、
は、オブジェクト群じゃなくてタスク群と書くべきだったね。
なんか混ざっちゃった。
>>715
自分も昔から気になってた。
ゲーム機で、ディスク(に限らず)からのデータ転送を非同期にやったりすると、
消費されるメモリ(あるいはバス)バンド幅の変化が計算しづらくなったりしないのかな。
それともDMAとかで消費されるバンド幅は、割と安定して予測できるもんなんだろうか。
その辺を実際にいじった経験が無いし、Web上でも情報を見た覚えが無いから分からないんだ・・・。
0722名前は開発中のものです。
2009/03/10(火) 23:19:25ID:DFTfic3i> ゲーム機で、ディスク(に限らず)からのデータ転送を非同期にやったりすると、
> 消費されるメモリ(あるいはバス)バンド幅の変化が計算しづらくなったりしないのかな。
もちろん、なる。
だから RPG のように「どうしても間に合わなかったらフレーム描画をスキップしてもおk」な
ゲームでは使うが、対戦格闘とかだと避ける。
0723名前は開発中のものです。
2009/03/10(火) 23:58:04ID:OHC3eltB0724ID:EEKBitmg ◆HSP4mee/SU
2009/03/11(水) 00:28:43ID:xmrBPpjK厨はそもそものタスクシステムなんて知らないから、そもそもの目的も知らない
厨が目にすることができる資料から分かること。それは
ジョブ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の『システム』部分がやってくれること
0725ID:EEKBitmg ◆HSP4mee/SU
2009/03/11(水) 00:38:10ID:xmrBPpjKこれだけ見ると協調的に並行動作させることが「できる」仕組みと分かる
でも、>>2で紹介されるこれの使い方のお手本、つまりタスクの中身を見ると
何か怪しげなことしてる。走査回数とメモリ消費をケチるためにプライオリティ
というものを使ってる。以前に出てた話だけど、something(t+Δt)を求めるために
参照する外部情報が狂ってる。上図の横方向の前後関係に依存させてしまってる
本来なら並行であるはずの関係を直列の関係にしてるというか、なんていうの?
並列化してリプレイ情報を食わせたら結果が変わってしまうでしょ
並行動作というかフェイク並行動作してるんだよね
0726ID:EEKBitmg ◆HSP4mee/SU
2009/03/11(水) 00:58:38ID:xmrBPpjK>オブジェクトの生成破壊が多くてフラグメントを起こしがちなゲームにおいてデフラグを扱えること
これって何?GCしてるの?どういうタイミングで?
それってメモリアロケータの都合じゃないの?関係ねー気がする
0727ID:EEKBitmg ◆HSP4mee/SU
2009/03/11(水) 01:12:12ID: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世紀にもなってタラタラ書くなバーカって思う。寝る
0728ID:EEKBitmg ◆HSP4mee/SU
2009/03/11(水) 02:02:53ID:xmrBPpjK0729名前は開発中のものです。
2009/03/11(水) 02:51:56ID:QLymkmBo>厨はそもそものタスクシステムなんて知らないから、そもそもの目的も知らない
えっとまず始めに確認したいんだけど、「厨」ってのはID:EEKBitmgさんのことでいいのかな?(違ってたらゴメン)
で、「そもそものタスクシステム」の話なんてしてないよ。知ってても知らなくてもどうでもいいよ。
でも「そもそもの目的」は>>2を見れば理解できるでしょ。どれもすごく丁寧で分かりやすい記事だし。
以降、改行箇所は適宜勝手に変更する。ごめん。
>>725
>走査回数とメモリ消費をケチるためにプライオリティというものを使ってる。
いや、走査回数とメモリ消費をケチるためにプライオリティを使ってるわけじゃないと思うんだけど・・・。
>以前に出てた話だけど、something(t+Δt)を求めるために
>参照する外部情報が狂ってる。上図の横方向の前後関係に依存させてしまってる
これはつまり、タスクAの処理結果を見てタスクBの処理をしないといけない場合、タスクシステムだと
AとBのどちらが先(>>724の図で言えば左)にくるのか分からないので困る、って意味かな?(違うかな?)
でもタスクシステムには、Aを必ずBより先に実行させる方法があるよね。それは分かってるよね?
で、タスクBがタスクAに依存してるのだとしたら、それはタスクBの問題(あるいは性質)であって、
タスクシステムの問題とは全く別の話だよ。
>並列化してリプレイ情報を食わせたら結果が変わってしまうでしょ
なんで突然、並列化の話が出てくるの? タスクシステムの目的は並行動作だよね。
これは>>710のおかしい点でもあるんだけど、>>2では最初から並列動作なんか考えてないんだから、
同期処理とかが組み込まれてないのは当たり前だよね。
>並行動作というかフェイク並行動作してるんだよね
並行とフェイク並行の違いって何なんだろう。なんか並行と並列の違いを理解してない匂いがする。
0730名前は開発中のものです。
2009/03/11(水) 02:53:04ID:QLymkmBo>>726
>これって何?GCしてるの?どういうタイミングで?
え、ちょっと待って、>>2の話をしてるんだよね? 本当に>>2読んだ??
ID:EEKBitmgさんの言う>>2って、>>2のうちのどれのこと?
>>2を読んだのかどうかって話で思い出した。>>464の、この部分。
>『型システムを否定している。コンパイラによる最適化を阻害してる。自作ジャンプテーブルで条件分岐は
> 高速化されるという先人のチョイテク・豆知識を天下り式に真似ているのではないか。それは太古の簡素な
> CPUアーキテクチャに依存した公式に過ぎない。定理ではない』
断言してもいいけど、ID:EEKBitmgさんとこの助教授さんは>>2をちゃんと読んでないか、あるいは
頭のネジが足りてないよ。それとも助教授ってこんなもんなのか。知り合いにいないから知らんけど。
ところで課題レポートはちゃんと提出した?
>>727
>タスクシステムとか仰々しい名前の割りに、それが提供する機能を分析すると
ちっとも分析できてないよ・・・。
>↑みたいな、限りなくどうでもいいことしかしてないということがわかる
全く分かってないよ・・・。
0731名前は開発中のものです。
2009/03/11(水) 04:20:03ID:yoM2Y43z若干正確さに欠ける点に目をつむって処理を端しょってたことに勘付いたか
0732名前は開発中のものです。
2009/03/11(水) 07:22:34ID:nhOwJy5wただ、現実はそれに立ちはだかると言うことは知っておいた方がいい。
0733名前は開発中のものです。
2009/03/11(水) 07:26:19ID:NK6nIuY50734名前は開発中のものです。
2009/03/11(水) 08:32:00ID:74bG+9Wettp://www.nicovideo.jp/watch/sm2078250
0735名前は開発中のものです。
2009/03/11(水) 13:15:27ID:wSuVQdvJ適当にクラス作ってリストにして順番に実行
内部では各自カウンタとステート持って勝手にやる、死んだり生きたりはおかしなことにならないようにシステムでええ感じに処理してねー
とまぁ簡単なものならこんなのでいいじゃろ
複雑なのはしらん
0736名前は開発中のものです。
2009/03/12(木) 07:22:55ID:7byKm2pB0737名前は開発中のものです。
2009/03/12(木) 11:49:54ID:Rx7RnDpA0738ID:EEKBitmg ◆HSP4mee/SU
2009/03/12(木) 23:06:36ID:SEPBaONy>なんで突然、並列化の話が出てくるの?
それは『ボクのタスクシステムはどっちかっつーと並列!』と言っていた
>>632のおじちゃんに言ってよね。CodeZineなんて初っ端で並列処理と言い切ってる。
あと生協で逆引きゲームプログラミングとかいう本をパラパラーっと立ち読みしたら
『並列動作システム』とか書いてあったし。『並列処理動作』してるんだって。ゲラゲラゲラー
もうさ、ハッタリかましすぎだよね。説明してる内容と、それを一言で表現するときに
どこかから引っ張ってきた用語が全く一致してないんだよね。厨房を騙くらかそうと必死でしょ
今さっき覚えてきた単語をとりあえずあててみました。みたいな。ちょっとね、おかしいとおもう
その点Logician Lord、White Paper、けんもほろろのページは並列なんて一言も言ってない
上に比べたらまだマシな部類なのかなーと思える。タスクシステム解説つっても千差万別だね
0739ID:EEKBitmg ◆HSP4mee/SU
2009/03/12(木) 23:11:52ID:SEPBaONy知識を広めた人がいたんだろう、というのは厨の俺でもなんとなくわかる。それがギョーカイ
とかいうよく分かんない謎の秘密結社みたいな世界で伝播する過程でおかしなことになって
ミュータントみたいになっちゃってるんじゃない?この人たちが言ってるTCBとかタスクとか
ちょっと変わってるよね
TCBって、ゲーム機よりショボい組み込み機器でもプログラムカウンタとかスタック
アドレスが入ってる。リエントラントな仕組みを提供すんだよね。だから周期タスクは
periodictask()
{
while(1){
dosomething();
rot_rdq();
}
}
みたいな感じで書く。タスクは並行動作できるんだ。でも>>2の『タスク』はできない。
サブルーチンの処理を全て完了しないと処理を返せない。タスク同士は完全に
逐次処理なんだ。擬似並列動作ができない
0740ID:EEKBitmg ◆HSP4mee/SU
2009/03/12(木) 23:24:44ID:SEPBaONyタスクの作り方によっては、複数のジョブ同士の並行動作はできるかもね
>タスクシステムの目的は並行動作だよね。
>>2の話?んなこと俺が知るかっつーカンジ
俺は>>632のどっちかっつーと並列とかいう謎のタスクシステムが
並行動作してるのかなーとESPしてみただけだしー。推測でしかないしー
>>2はふたを開けてみればゲームオブジェクトのUpdateメソッドのディスパッチャー
単なるレディキューだからどうとでも使えるわけだしー
このメソッドの分け方次第で並行動作もできるんだろうね。でも
ゲームオブジェクト一個につきタスク一個とか言ってるページもあるから
ちょっと怪しいね。Update()一個じゃあ、>>725で書いた矛盾にぶつかると思う
0741ID:EEKBitmg ◆HSP4mee/SU
2009/03/12(木) 23:39:16ID:SEPBaONy>>384
>厳密にやるならワークをそれぞれ2つ持って、フレームごとにフリップだろ。
>面倒だったら一つ一つ更新して、n+1がnを参照してもn+1を参照しても対して問題が無い様にするさ。
>どこまで誤差を容認できるか知らんけど。
なんか臭いなぁ、と思ってたのがここ。CodeZineはこの誤差を容認するほうを選んでるよね。
具体的にはEnemyとMyShotの関係。これタスクリストとかいうものの中でごちゃ混ぜになってるでしょ
当たり判定のときに、自機弾って移動速度速いからさ、敵と当たったり当たらなかったりすると思うよ
ぜったい気持ち悪い現象が起きる理不尽ゲーになると思う
0742ID:EEKBitmg ◆HSP4mee/SU
2009/03/12(木) 23:53:29ID:SEPBaONy× 当たり判定のときに、自機弾って移動速度速いからさ
○ 自機弾って移動速度速いからさ
この不快な現象を発生させたくないなら
EnemyとMyShotの実行順序をごちゃ混ぜにしちゃ駄目でしょ
ごちゃ混ぜのままならせめて当たり判定タスクと移動タスクを分けないと
あとさ、必要は無いけど、外部参照されるパラメータは前フレームの状態を
保持したほうがいいよ
例えばロックオンして置き撃ちするときに、targetposition(t)を得るか
targetposition(t+Δt)を得るかがpriorityとかいうものによって変わるって
おかしいでしょ
0743ID:EEKBitmg ◆HSP4mee/SU
2009/03/13(金) 00:03:15ID:w7sHy3uX× priorityとかいうものによって変わる
○ タスクリストの前後関係とかpriorityとかいうものによって変わる
>>730
>>これって何?GCしてるの?どういうタイミングで?
>え、ちょっと待って、>>2の話をしてるんだよね? 本当に>>2読んだ??
>ID:EEKBitmgさんの言う>>2って、>>2のうちのどれのこと?
俺と同い年の人が書いたと思しき記事だからボコりたくなかったけど
流れでそうなっちゃったから堰を切ったように書いてるけどさ
CodeZineの記事は他と比べて相当違うんだよね
メモリ割り当てなんて関係ないのにさ、糞みたいなGCかましてるし
STGであんな処理をかますフレームが不定期に存在するって変でしょ
糞みたいな自前のメモリ割り当てやってるからあんなGCが必要に
なるんでしょ。何のための自前アロケータなんだか分からない
厨的には、あんな糞実装は氏んじゃえって思う
0744名前は開発中のものです。
2009/03/13(金) 00:16:52ID:kkRWD5W+雰囲気つかむだけのサンプルにアホとか言っちゃうのはどうよ?
こういうものは思想だけ頂いて自分の好きなように組んでくれって物じゃないのかね・・・
GCがどうのっていうのも処理落ちしたときにはじめて考えればいい所だし、
ただたんに自分の流儀に合わないから貶すと見えますよ。
0745ID:EEKBitmg ◆HSP4mee/SU
2009/03/13(金) 00:24:04ID:w7sHy3uX>>>2では最初から並列動作なんか考えてないんだから、
>同期処理とかが組み込まれてないのは当たり前だよね。
性格悪いレスになるけど書いちゃえ!
ぶっぶー。並列動作じゃないから同期処理が要らないってのは間違い
>>730
CodeZineの記事のコードってさ、生存中のゲームオブジェクトのアドレスが不定期に変わっちゃうんだよね
あのサンプルってさ、あるゲームオブジェクトのレーダーシステムが特定の目標をロックオンして追跡するとき
どうすんの?
例えばあのサンプルの敵弾ってさ、毎回Playerをタスクリストから探してるんだよね。バカだからさ
priority=1.0のPlayerはタスクリストの一番最後に入ってるのに、先頭からナメて探すの。バカだよね
こんな調子で、ロックオンターゲットも、毎フレーム、タスクリストから探し出すわけ?
多目標同時対処能力を保有する機体が入り乱れたら愉快な処理量になりそうだね
こんなアホなことになるのはさ、糞アロケータの都合で不定期に糞GCかますからでしょ?
あんた>>711で『デフラグができること』を取り上げて
これを素朴な形で実装したのがタスクシステムだとか言ってるけど、素朴って何よ?
明らかに必要ねーことしてるし。バカじゃねーのくたばれバーカバーカって言いたかったけど
ずっと我慢して黙ってたんだ。でももう書いちゃった。
0746ID:EEKBitmg ◆HSP4mee/SU
2009/03/13(金) 00:30:00ID:w7sHy3uXだからずっと黙ってたんじゃん。心情的にはCodeZineの記事は
放置したかったんだけど、擁護派がデフラグデフラグとかいうから
書かざるを得なくなった。HSP使いとしては同じ厨を攻撃するのは遺憾
遺憾の意です。本意じゃありません。ごめんなさい><
0747名前は開発中のものです。
2009/03/13(金) 00:40:01ID:idYT2cwA> だからずっと黙ってたんじゃん。
バカには現実を突きつけてやるしかないんだよ。
0748名前は開発中のものです。
2009/03/13(金) 00:45:14ID:9zwO86zu突きつけても、見えない or 見ようとしないけどな。大抵。
0749名前は開発中のものです。
2009/03/13(金) 01:00:19ID:bP/yrlKMID:EEKBitmgの方が筋は良さそうだが。
>>744
CodeZineの記事は昔論争になったことがあって擁護派らしき人からの批判も多かった。
批判の方が多かったような。
とにかく駄目なものを技術的な説明を沿えて駄目と言うのは良いでしょう。
0750名前は開発中のものです。
2009/03/13(金) 07:26:08ID:2Nwh1Ok5この仕組みじゃどう味付けしたって並列化なんてできやしねぇから
0751名前は開発中のものです。
2009/03/13(金) 10:49:20ID:t4cURNWAまとまってていいね!
ぐらいの感覚なんじゃないの?
腕である人ならいい感じにまとめられるでしょうに
ギャーギャー噛み付くほどのものかねぇ
もしかして、今時のゲームにも導入されたりして被害被ってるの?
0752名前は開発中のものです。
2009/03/13(金) 12:37:20ID:2Nwh1Ok50753並列さん ◆dPfetnROQg
2009/03/13(金) 16:18:33ID:nlP2vU3h> priority=1.0のPlayerはタスクリストの一番最後に入ってるのに、先頭からナメて探すの。バカだよね
それは別にhash使えばO(1)で検索できるんだし、本質的な欠陥じゃないと思うが。
> これを素朴な形で実装したのがタスクシステムだとか言ってるけど、素朴って何よ?
> 明らかに必要ねーことしてるし。
まあターゲット環境とゲームの規模によるけど、何らかの形でデフラグはあったほうがいいと思うよ。
working setを縮小したほうがプロセッサのcache効率が上がるのが普通だし、
タスクシステムはプライオリティ順にタスクに対してアクセスしていくのだから
プライオリティ順にメモリ上に配置されて、アクセスするメモリが連続しているほうが
(memory cacheの観点から見て)断然速い。
タスクシステムどうのという話はおいとくとして、ひょっとして、みんなmemoryのcompactionとか処理を書いてないの?
これを無用の長物みたいに言われると、もう議論の前提が違うとしか言いようがないんだけど。
0754名前は開発中のものです。
2009/03/13(金) 21:00:36ID:kAszbGcIタスクシステムの構造を見れば、これは並行動作を目的としたものだと分かるよね?(分からない?)
その文脈で「並列」という言葉が出てきても、それは並行のことを意味しているとは思わないのかな?
それを書いた人が勘違いしてるのかもしれないし、意識してないのかもしれないし、並行と並行の違いを
知らないのかもしれないし、あるいは文脈上区別の必要が無いと判断したのかもしれない。
いずれにせよ、「並列って言ってるけど並列じゃないじゃん」という批判は、「並列」という言葉を
持ち出した人に対しては当たるかもしれないけど、タスクシステムへの批判としては的外れだよね。
それともID:EEKBitmgさんは、誰かがタスクシステムのことを並列だと書いただけで、タスクシステムの
目的が並列動作だと考えたのかな?
それってタスクシステムのことを理解したうえで批判していると言えるのかな?
あと、用語の使い方が適切でないという点に関しては、ID:EEKBitmgさんも全く人のこと言えないよ。
私自身のスタンスとしては、他人が多少変な言葉を使ったとしてもできるだけその意を汲もうとするし、
逆に自分の言葉はできるだけ分かりやすく正確になるようにしていつもり(あくまでつもりw)だけど、
ID:EEKBitmgさんは全く逆のスタンスなのだろうか? 言葉が不正確なのに、他人の言葉尻は捕らえるよね。
>>739
マルチタスクOS等におけるタスクと、タスクシステムのタスクは設計も目的も意味も違うのに、
それを混同してしまっている、のか混同させようとしているのか分からないけど、このレスはまるまる無意味。
擬似並列動作とかいう怪しげな言葉の意味も分からない。
0755名前は開発中のものです。
2009/03/13(金) 21:03:23ID:kAszbGcI>>タスクシステムの目的は並行動作だよね。
>>>2の話?んなこと俺が知るかっつーカンジ
>俺は>>632のどっちかっつーと並列とかいう謎のタスクシステムが(以下略)
つまり>>2を読んでも、タスクシステムの目的が理解できなかったってこと?
というか、この話の流れを>>729,>>725,>>724,>>711と遡っていけばID:EEKBitmgさんが>>2の話を
しているのは明らかなのに、いきなり>>632を引っ張り出してきて言い訳するのは見苦しいと思う。
それとも単に文脈を追えてないの?何の話をしているのか分かってないの?
>>>725で書いた矛盾にぶつかると思う
矛盾ってどれのことだろう。最後の二行のこと?
だとしたらやっぱりタスクシステムの動作を理解できてないよね・・・。
0756名前は開発中のものです。
2009/03/13(金) 21:04:17ID:kAszbGcI全体的に言えることだけど、ID:EEKBitmgさんは>>2のサンプルコード個別の事例を批判したいんだろうか。
それともタスクシステムのことを批判したいんだろうか。サンプルコードは、単なるサンプルなんだから
色々な不具合や足りない部分があって当たり前だよね。実際に使いたい人が、実際に使えるように
直せばいいだけで。それができないような構造的な欠陥であれば、タスクシステム自体が駄目だという話に
なるのだろうけど。(そういう話が聞きたいんだけどなぁ・・・。)
で、>>729に答えてもらえなかったから改めて聞くけど、EnemyとMyShotの実行順序をごちゃ混ぜに
したくないなら、ちゃんと順序つけてごちゃ混ぜにしないようにタスクシステムを使うことはできるよね。
その仕組みがちゃんとタスクシステムにはあるよね。それは分かってる?分かってないの?どっち?
■ このスレッドは過去ログ倉庫に格納されています