>>950 >タスクシステムはまともに定義されてもいないし
こんな隔離スレっぽいところですばやいレスがあるのに驚いたw
そういや定義云々でけっこうもめてた感もあるな。
印象論ですまんけど、俺のいまんところの認識では
・アプリケーション内部で擬似マルチタスクを実現する手法のひとつ
・プログラムのループを一部開放して、複数のサブルーチン(死語?)をつけはずしできるようにしたもの
・if〜else/switchのネストよりはましかもしれない。
ってところかなあ。まあ、俺が駄目PGなんで、自分が考えたものよりマシかもしれん、
ってだけなんだが。
>そういや定義云々でけっこうもめてた感もあるな。
定義すら出来ないタスク擁護派の虚を付く形で一方的に蹂躙されてたね
タスクシステムという単語を耳にしたら「俺俺システム」とか「俺の発明した至高のオナニーシステム」
とでも置換したほうが理解しやすい。定義できるはずもない。ざまぁ
>擬似マルチタスク
マルチタスクの要件を満たしてる例がひとつもなかったような
擬似ですらない。単なる似非だろう。天と地の開きがある
>・プログラムのループを一部開放して、複数のサブルーチン(死語?)をつけはずしできるようにしたもの
印象論というか日本語でおk
>・if〜else/switchのネストよりはましかもしれない。
過去に出てきた例を見る限り、どのオナニーシステムも
可読性の面ではどれも凶悪といっていい水準だったな
haskellやadgaでタスクシステムが実装できれば定義したも同然
>>952 隔離スレっぽいんじゃなくてID:Tr7oUC7Qみたいな子を隔離するスレ
>>954 権力的に偉い人が好んで使う「国益」という言葉も
具体的な内容については大きな揺らぎがある。
偉い人に喧嘩売る気がないのなら
定義できないことをあまり悪く言わない方がいいと思うんだ。
>>955 まずおまえが「マルチタスクの要件」とやらを定義してみてくれ
最低でも
・スケジューリング
・コンテキストスイッチ
・タスク間通信
擬似を名乗るならせめてこれぐらいは欲しいね
で、擬似タスクとかタスクシステムを自称してるコードで
コンテキストスイッチができてるものはほとんど見ない
FSMリストの走査・更新してタスクシステムばんじゃい!ばっかだろ
>>957 >国益〜
他人を諭すのに安易に分けの分からん例え話を始めるようなら
この老害本格的に焼きが回ってんなー思われるから言わない方がいいと思うんだ
じゃぁコンテキストの保存ができないマルチタスク、とでも呼ぼうか。
あんたの「擬似」の定義に従って、だけど。
擬似の意味が分からないなら辞書で調べてね
本来の代物がウリにしてる「基本的なサービス」すら提供できないにも関わらず
擬似と名乗るのは半島文化か何かかね?素直に似非と認めたほうがしっくりくるぜ?
ついでに似非も辞書で調べましょう。納得ですね?
>コンテキストの保存ができないマルチタスク
コンテキストスイッチできないマルチタスクシステムは果たしてマルチタスクシステムなのか?
まぁどっかの例え好きのオッサンなら「チンポ付いてない男。でも心は男ですから!男です!」
とでも反論するんだろうね
ああ、特定2ちゃんねらーでもあったか。人間のクズだな。相手して損した
はい、敗北遁走宣言来ました
マジキチ
タスク信者がんばれがんばれ何でそこで諦めちゃうんだよやれば出来る出来るがんばれがんばれ
世間はさぁ冷てぇよな。みんな君のタスクシステムへの思いを感じてくれねぇんだよ
どんなに頑張ってもさぁ、何で分かってくれねぇんだよって思うときあるのよね
でも大丈夫、分かってくれる人はいる。そう、松浦尊師に付いて来い!
ただいま尼オクで聖典「シューティングゲームアルゴリズムマニアックス」好評販売中!
買わなければ仏罰が下って地獄に落ちるよ。さぁ浄財を奉納して極楽浄土へいらっしゃい
次スレまだ〜?チンチン
>>961 > じゃぁコンテキストの保存ができないマルチタスク、とでも呼ぼうか。
そんな汁のない味噌汁みたいな名前つけられても…
よーしお兄さんが書き逃げしてあげるぞー。
【マルチタスク】
プリエンプティブなマルチタスクOSではスケジューラがプロセスをタイムスライス(短い時間)ごと分割して実行する。
処理がタイムスライス内で終わらない場合、タイマ割り込みによってコンテキストスイッチが発生する。
他にも割り込みはあるけどとりあえずここまで。
で、コンテキストスイッチとは現在のCPUのレジスタ等の状態を保存し、次に実行する処理のためにレジスタ等の状態を復元する処理のこと。
【タスクシステム】
全てがタスクリストに含まれているとするなら。
1フレーム内での行う全ての処理=タスクリスト
1フレーム内での行う全ての処理=タスクリスト+描画処理
1フレーム内での行う全ての処理=タスクリスト+当り判定等+描画処理
1フレーム内での行う全ての処理=タスクA+タスクB+…+タスクZ+当り判定+描画処理
1フレームの時間は大抵は1/60秒とか1/30秒とか、1フレーム内で終わらなかったときは描画がスキップされる。
だからコンテキストスイッチは不要では。
970 :
948:2008/11/07(金) 00:09:50 ID:t//oE7rA
あー、また怒ってるよw なんか恨みでもあるの?>> 959
どこかで時分割も擬似マルチタスクだっていうのを見たこともあるんで、そういわれりゃマルチタスク風くらいでいいかな?
俺的にはエターナルブリザードシステムが気に入ったけど。
マルチタスクの定義はまあ、確かにそうだけど、それ、アプリケーションが
自前で実装するようなものかな?あー、「システム」ってのが気に入らないのかな。
>・プログラムのループを一部開放して
ここでもでてきたけど、
while ( keep_going ) {
update_chara();
update_stage();
render_all()
}
みたいなループだと処理順も固定になるところを、個別の処理を配列/リスト化して
動的に切り替えられるようにしてあるわけでしょ?
少しは自由度は高いと思うけど、メリット・デメリットは微妙かなあとは思う。
>>959は最近どっかでマルチタスクを勉強してきて教えて回りたいんだろ。
ここはそういう話するところじゃないからね。
また別のところ行ってやってね。
972 :
948:2008/11/07(金) 00:43:39 ID:t//oE7rA
>だからコンテキストスイッチは不要では。
いや、マルチタスク処理、と考えれば、タスクが勝手にスイッチされてくれるほうが
各タスクで処理を戻すとか考えずに記述できるぶん見通しはよくなると思う。
でもそう思ってマルチスレッドで組むとスレッドの同期とか排他とか必要になって
あんまりシンプルにならない罠。
>>970 そういえば文章心理学っていう単位とったけど難しくてよく分からなかったよ
あとついでにエターナル「フォース」ブリザードシステムだったような気がするよ
>マルチタスクの定義はまあ、確かにそうだけど、それ、アプリケーションが
>自前で実装するようなものかな?
そういうこと。IA32でいうところの特権命令群に触れる立場に無い、たとえばWindowsの
ユーザーモードのプログラムコードで、わざわざマルチタスクシステム用意する価値ないよ
>>・プログラムのループを一部開放して
>ここでもでてきたけど、
>while ( keep_going ) {
>update_chara();
>update_stage();
>render_all()
>}
>みたいなループだと処理順も固定になるところを、個別の処理を配列/リスト化して
>動的に切り替えられるようにしてあるわけでしょ?
>少しは自由度は高いと思うけど、メリット・デメリットは微妙かなあとは思う。
↑の例で、ゲームの仕様で初めから処理優先順位が静的と確定しているならば
動的にするメリットはないだろうね。どう転んでも不要と分かりきってる自由度を
与える行為は有毒だしデメリットでしかないよね。
ところで「タスクシステム」というのはそういう不要な自由度を与える事を回避できない
代物なの?このスレを読む限り「タスクシステム」を熱愛して提唱している人の話は
単なるリスト巡回UPDATEでしかないという印象を受けるんだけど
>>971 つ
>>958
訂正
>そういうこと。IA32でいうところの特権命令群に触れる立場に無い、たとえばWindowsの
>ユーザーモードのプログラムコードで、わざわざマルチタスクシステム用意する価値ないよ
そういうこと。IA32でいうところの特権命令群に触れる立場に無い、たとえばWindowsの
ユーザーモードのプログラムコードで、わざわざマルチタスクシステム用意する価値は
ハードウェアリソースが貧弱だった頃は無かったよ
でも、ハードウェアの進歩でソフトウェア処理によるコンティストスイッチが実用的なケースが
増え続けているよ
975 :
948:2008/11/07(金) 01:44:47 ID:t//oE7rA
>わざわざマルチタスクシステム用意する価値ないよ
これはケースバイケースじゃないか?まあ、俺が駄目駄目なんで偉そうなことは
いえないけど、ゲーム上のオブジェクトって独立して動きつつ、互いの情報を
参照したりするでしょ?
システムの提供するサービスで全部実現するのは理想かもしれないけど、
マルチスレッドは追っかけるのも結構大変だし、マルチタスク風、実はシーケンシャル
な処理ってその点はわかりやすかったりするよ?
>ゲームの仕様で初めから処理優先順位が静的と確定しているならば
本職のゲーム屋じゃないんでなんともいいにくいけど、
その仮定は理想かもしれないけど、現実には程遠いような気がw
基本ロジックを作っておけば、いろいろなタイプのゲームに対応できる
(というのも売りらしい)んなら、まあ、便利なんじゃないの?
>不要な自由度を与える事
開発者が用意して開発者が利用する分にはあんまり問題じゃないような気がするけど。
976 :
948:2008/11/07(金) 01:51:27 ID:t//oE7rA
>>974 ?タスクシステムに肯定的なのか否定的なのかちょっとわかりにくい。
タスク=リスト巡回UPDATEでFAだろ
それ以上でもそれ以下でもない
俺はタスク擁護派だが、アンチは誰と戦ってんだよw
978 :
969:2008/11/07(金) 02:03:49 ID:0ZMEybut
979 :
948:2008/11/07(金) 02:10:14 ID:t//oE7rA
まあ、ただ 974 がいいたいのが、世間wでは GPGPUを使った物理演算だの、
マルチコアに最適化された並列処理だとか言ってる時代に、ちまちまと
古いコーディングテクニックとかやってると駄目だ、っていう話ならわからんでもない。
PS3あたりの大規模ゲームとかはそうなのかもなあ。
>>948 とりあえずここ人いるのは分かったし
質問があればみんなケンカしつつも答えるんじゃないかね
古いやり方も理解のために経験しとくのは俺はいいと思う
知らん方がいいって人もいるけどさ
981 :
948:2008/11/07(金) 02:27:16 ID:t//oE7rA
いんじゃないすかね
わざわざDX9からSDLに移植すんのも
全体を一通り触ることになるだろうから勉強になるとおも
ソースもざっと見、小さくて見通しがいい良いサンプルかと
つかやる気あるねー
>>948は。ひとりでもあっという間に上達しそう
>>975 メインループは C++ ネイティブコードで書いたシングルスレッド、ただし
その上で非プリエンプティブのスクリプト仮想マシンを複数動かす形に
するけどな。
非プリエンプティブなので、同期の心配とかはない。実行順序だけ気に
しとけば良い。
技術的には、C++ 側もコンテクストスイッチするようにできるけど、そこまで
やるメリットを感じないなぁ。むしろ、デバッグ辛くなりそうだし。
984 :
948:2008/11/08(土) 00:43:22 ID:YKZ7JNVs
985 :
948:2008/11/08(土) 00:44:27 ID:YKZ7JNVs
げ、DLキーは task です。
>スクリプト仮想マシンを複数動かす形
そうすれば不用意な自由度を与えなくてすむわけか。973がいいたいのもそのあたり?
プログラマとレベルデザイナとか役割分担するのには必要かもね。
スレ的にはソースが無いと意味が無いのでは。
まぁソースをうpしたら、それを肴にして荒れまくるのは目に見えてる。
だから俺は正座して待つぜ。
>>978 協調的マルチタスクシステムって大抵はコンテキストスイッチくらい面倒見てくれるけどな
世界で一番売れた協調的マルチタスクOSであるWindows3.1もそう
989 :
978:2008/11/08(土) 11:30:43 ID:jrTPhNiJ
>>988 コンテキストスイッチはタスクシステムでは不要というかもう実装されてるでしょ。
タスク自体がデータと振る舞いを持ってるわけだから、
タスクAの処理をしてるときはタスクAのデータ領域を参照するし、
タスクBに処理をしてるときはタスクBのデータ領域を参照するでしょ。
割り込みについてのことなら重い処理作ったら描画がスキップされるだけだから必要ないと思う。
ファイルIO等の重い処理は別スレッドに分けるとかで大抵解決する。
>>989 > コンテキストスイッチはタスクシステムでは不要というかもう実装されてるでしょ。
ない。
コンテクスト = スタック + レジスタ値だけど、所謂タスクシステムなるものは
メンバ変数やタスクコントロールブロックと名付けた独自領域にステートを
保存し、制御が移るたびに自前でそこから状態を復元する必要がある。
991 :
989:2008/11/08(土) 20:29:38 ID:jrTPhNiJ
>>990 OSでいったらコンテキストスイッチはスタック+レジスタ値だけど
タスクシステムでいったらタスクのデータ領域
タスクのデータ領域といっているのは、
>>990のいうメンバ変数やタスクコントロールブロックと名付けた独自領域と同じものです。
992 :
989:2008/11/08(土) 20:33:10 ID:jrTPhNiJ
途中で書き込んでしまった。
>>990 コンテキスト=状況だからOSでいったらスタック+レジスタ値なんだけど
タスクシステムならデータ領域=メンバ変数やタスクコントロールブロックと名付けた独自領域が処理しているタスクに応じて切り替わっているから
最初から実装されていることになるんじゃない。
>>991 > OSでいったらコンテキストスイッチはスタック+レジスタ値だけど
> タスクシステムでいったらタスクのデータ領域
そんなオレオレ定義されても、話が混乱するだけだが・・・
994 :
989:2008/11/08(土) 22:32:13 ID:jrTPhNiJ
>>993 そういうことをいいたいんじゃないのか、すまんかったよ。
コンテキストスイッチしたいってことはタスクシステムをマルチスレッド対応にしたいということでいいのか?
なかなか大変そうだけどやる価値はあるのかもしれない。
オレには無理そうだな。
995 :
948:2008/11/09(日) 00:29:19 ID:nWf5qLS5
>>995 ゲームプログラミングで難しいのは、実行優先順位の管理より、オブジェクト間の
相互参照。タイミングがらみのバグが出やすい。
これだと、実質的にグローバル変数 (static CGameObject::objectlist & CreateEnumeration) で
管理してるようなものだから、むしろ手間かかりそうな気がするが。
1000!
1001 :
1001:
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。