タスクシステム総合スレat GAMEDEV
タスクシステム総合スレ - 暇つぶし2ch21:名前は開発中のものです。
07/03/15 22:54:30 yIBWThbm
>>20
別になんてことはない。

interface Task {
  public void update();
  public void draw();
};

class Enemy implements Task{
  private int x;
  private int y;
  public void update() {x++; y++};
  public void draw() {/*ごにょごにょ*/};
};

例えばこんな感じで超テキトーに作ったとすると、
xだのyだのの部分がワーク構造体部分で
updateだのdrawだのが処理関数部分。

あとはTaskを格納するコンテナに
new Enemyだのnew MyShipだのぶち込んで
順番にupdateだのdrawだの呼び出せばいい。

22:名前は開発中のものです。
07/03/15 22:58:37 XmQLFBDw
ワークメモリを分割して使うようなやり方は、高級アセンブラたるC言語ならではといっても良いと思う。
C++ですらそのやり方は馴染まない。ましてや、Javaともなると、メモリ管理を極力隠匿してGCで
自動化しているわけで、それをわざわざ迂回しようとしてるのが>18なんだが、わかってる?
慣れたやり方でやろうとしてしまうのはわかるけども、もう少しオブジェクト指向とか勉強して欲しいとちょっと思った。

23:名前は開発中のものです。
07/03/15 23:00:47 b1+VxKry
オブジェクト指向というか言語仕様というか

24:名前は開発中のものです。
07/03/15 23:09:07 ZqsnR0zJ
それが気持ち悪いからまっさきに避けたんだが、平行線っぽいから議論はやめとく。

25:名前は開発中のものです。
07/03/15 23:11:29 yIBWThbm
>>22
そもそもタスクシステム自体は
全然オブジェクト指向ではないし、
なぜその文脈でオブジェクト指向が出てくるのか。

26:名前は開発中のものです。
07/03/15 23:16:11 PMeVIICQ
>>21
あー、やっぱりそれか・・・。
interfaceないころから、俺は、それでやってた。Javaでないけど。

問題は、メンバが変わるような場合なんですよ。

タスクシステムってのは、実行時に、頻繁にメモリ確保しないのが前提だと思うのですが、
>>21のだと、動的にオブジェクト生成しないといけんよなあ。
まあ、いまどきなら、それでもいいんだけど・・・。
プール使うのは、パーティクルぐらいでも十分の最近の現実。

27:名前は開発中のものです。
07/03/15 23:26:21 yIBWThbm
>>26
>>21の場合でEnemyが頻繁に出入りするような場合は
new Enemyで生成するのではなく、
Enemyを管理するEnemyFactoryクラスを作って
そいつからEnemyを引っ張ってくるようにすればいいだけ。
あなたが>>8で言っているActorのリストみたいなものを
EnemyFactoryに持たせればいい。

28:名前は開発中のものです。
07/03/15 23:33:05 XmQLFBDw
>>24
御意。

>>25
>そもそもタスクシステム自体は全然オブジェクト指向ではないし、
>なぜその文脈でオブジェクト指向が出てくるのか。

プロセスやスレッドだってオブジェクト指向じゃないけど、クラスとして実装されている。
Javaというオブジェクト指向言語上でタスクと同じ役割をするもの(大抵クラスだろう)を
実装するなら、オブジェクト指向からやらないと、オブジェクト指向言語と処理系が
やっていることを理解できないんじゃないかな。

29:名前は開発中のものです。
07/03/15 23:40:22 EXzxsrWu
>>21
その書き方だとたしかにJAVAらしいなあ。
ただ、そうすると、最初にワークスペースを全てのタスクで用意して、というやり方と違って
タスクをアクティブにするときメモリを動的に確保しに行く、ってせざるを得ないのかな?

30:名前は開発中のものです。
07/03/16 00:00:01 wlk+IDOq
>>27
Factoryに、敵別にプールつくって、あらかじめ生成しておいて、
そっからひっぱってくる感じ?

出現する敵の最大数をあらかじめ指定しておいて、
最初に敵出る分全部、生成しておくんかな?ステージのはじめとかに。


敵Aと敵Bが最大10体づつ出る場合、
敵Aのプール10体分と、敵Bのプール10体分とをあらかじめ生成しておくんかいな?

31:名前は開発中のものです。
07/03/16 00:00:39 yIBWThbm
>>28
あなたが言っているのはカプセル化やクラス設計の話であって、
オブジェクト指向の話ではない気がする。
タスクシステムの構造自体がオブジェクト同士の通信などを
不自然なものにする要員になっていると思うんだよね…。まあこの話はいいや。

>>29
>>27読んでけれ

32:名前は開発中のものです。
07/03/16 00:15:46 4Zw2Xard
>>30
最大数分を耳を揃えてきっちり用意する必要は必ずしもない。
以下、例えばの流れ。

準備段階。EnemyFactoryのプール容量は5でまだ空。

敵を4体くれという指令が来る。プールが空なので、慌てて4体newして渡す。

敵の出番が終わる。EnemyFactoryが責任を持ってEnemyを回収。プールに4体入る。

敵を3体くれという指令が来る。プールから3体分引っ張り出して、
メンバ変数を適切に設定し直して渡す。

敵を3体くれという指令がまた来る。プールから残りの1体を取り出して渡す。
2体分足りないので仕方なくnewする。

敵6体の出番が終わる。5体回収し、1体はプールに入らないので捨てた。

こんな感じで合計10体が画面に現れる場合だと、
回収して使い回したのでnewしたのは6体分だけで済む。

33:名前は開発中のものです。
07/03/16 00:22:25 wlk+IDOq
>>32
なるほど・・・
完全に動的確保は拒否するわけではなく、
あくまで、メモリ確保を最小限にする方向なのね
キャッシュみたいなものか

34:名前は開発中のものです。
07/03/16 00:26:50 xvDGcZpT
メインループの中でLazy initializationさせるってありえないんだが・・・

35:名前は開発中のものです。
07/03/16 00:43:11 h9V7zR2G
そうか?
メモリ確保は重くないだろうし、オブジェクトの初期化処理が重いと感じるのか?

36:名前は開発中のものです。
07/03/16 00:47:28 4Zw2Xard
>34
>>32は一通りの動作(不足と超過)を示す例としてわざとこうしただけ。
実際はプールが不足しない程度に容量を増やすし、
メインループに入る前にプールは満たしておく。

プールから引っ張り出してメンバ変数を設定し直すことも含めて
Lazy initializationだと言っているのならば、さすがに気にしすぎだと思うが。
っていうか色々工夫したところで更新処理よりも描画処理の方が格段に重いから困る。

37:名前は開発中のものです。
07/03/16 01:18:43 wlk+IDOq
> っていうか色々工夫したところで更新処理よりも描画処理の方が格段に重いから困る。

まあ、そうなんだよなあ・・・。

超絶弾幕シューティングでもないかぎり、
重いのは3D処理だったり当たり判定だったり・・・

38:29
07/03/16 01:29:18 ZxwtzxVV
>>31
つーことは、同時に出現する敵の数は、そのEnemyFactoryの初期化時に生成する
Enemyのインスタンスの数までという制限があるという認識でおk?

古典的つーか、ワークスペースを確保してタスクごとにワークスペースの分割方法を変える場合は、
敵の最大数は、タスクの最大数に近くなるはずなんだけど、そこらへんに対してウィークポイントになるのかな?

いや、もちろん、>>21の場合、JAVAのオブジェクト指向に則った書き方なので、メモリ周りでバグが出にくいというのは理解している。

39:32
07/03/16 01:31:03 ZxwtzxVV
あ、>>30で割と答えが出てたね、失礼。


40:39
07/03/16 01:32:59 ZxwtzxVV
ごめん㌧でもない書き間違いしたorz

>>39 は、>>32じゃなくて>>29で、
答えがでたのが>>32だった。

一昨日妹が死んでまだ慌ててるのかなあ。

41:名前は開発中のものです。
07/03/16 01:55:58 xob5GmNS
インスタンス変数初めからプールしちゃうとライフサイクル伸びて

じじい世代発見!→フルGC承認!!→光になれー!!

って重量GCシナリオが見えるんだが・・・
俺どこか間違えてる?

42:名前は開発中のものです。
07/03/16 06:47:08 RmBov5WG
×じじい世代発見!→フルGC承認!!→光になれー!!
○じじい世代が世界に溢れる!→フルGC承認!!→光になれー!!

・初期化時に生成してプール→OLD領域に移動(使い回され領域は無駄にならない)

・短寿命のインスタンスを頻繁に生成→Eden領域がすぐに満杯になる→頻繁にGC発生
 →From・Toが短寿命のインスタンスで溢れる→長寿命でない物もOLD領域に押し込まれる
 →OLD領域が不足→フルGC承認!!→光になれー!!

(チューニングしてEden領域を大きくして(New領域を大きくして)、MaxTenuringThreshholdを増やせばFullGCは起きにくくなるか?

Javaには詳しくないから、嘘書いてたらエロイ人突っ込みヨロシク

43:名前は開発中のものです。
07/03/17 00:02:48 ZM3wMuqd
>>41
殿堂入りしたオブジェクトがゲーム終了まで参照を持つのに何故フルGCが起きる?
キャッシュさせたいインスタンスはさっさと殿堂入りさせる。
そしてキャッシュしないと決めたインスタンスは短いスパンで確実に使い捨てする。
フルGCを起こさせないための基本的なリソース管理だよ。

FPSを意識するゲームであるなら、ピーク時に的を絞ればいいだけだから簡単だよ。

44:名前は開発中のものです。
07/03/18 13:30:17 opYiOvzt
ゲームにおけるデータ構造・クラス設計・パターン
スレリンク(gamedev板)

話題的に上記のスレが適当だと思う。
っていうかタスクシステム単体で語るようなことが思い浮かばない。

45:名前は開発中のものです。
07/03/21 19:40:49 v8Vhdcv6
トラックバック:スレリンク(gamedev板)

46:名前は開発中のものです。
07/03/23 12:53:45 28C6AFOi
敵といってもたくさん種類いるし
敵以外にも色んなタスクがある場合、それぞれ個別にプールしとけってのか?

47:名前は開発中のものです。
07/03/23 13:23:37 vxAgs8Dc
>>46
そんなのは場合によるだろ。
ただ、たくさん種類がいるからめんどくせーって理由だけで
プーリングを放棄するのはただの怠け者。

48:名前は開発中のものです。
07/03/23 20:59:09 V2teaCuf
>>46
俺もそれ悩んだことがある。

で、悩んだ結果オブジェクトのプーリングはやめてnew/deleteを乗っ取って
自分でフリーリストを実装することにした。(キャッシュするものを一段低レベルな
ところに持っていくってことね。) C++の話でJavaでできるかは知らん。

ただ、敵が何体以上は出ないってゲームも割と当たり前なんで、プーリングの
数をハードコーディングしてしまっても別にいいとも思う。

49:名前は開発中のものです。
07/03/23 21:08:45 ZM8fpxF3
new/delete 置き換えてできることなんて、大抵はデフォルトの実装でも
同じことやってるんじゃないの?

明確なボトルネックを見つける前から独自のメモリ管理を追加するのは
面倒なバグの元になるだけで終わる可能性がある。
もうちょっとコンパイラ(ライブラリ)実装者を信用してもいいんじゃないかと思う。

50:名前は開発中のものです。
07/03/23 21:36:19 V2teaCuf
>>49
> new/delete 置き換えてできることなんて、大抵はデフォルトの実装でも
> 同じことやってるんじゃないの?

フリーリスト自体はCRT内にもあるものだし、汎用の用途ならdlmallocが最強(?)かも
しれないけど、例えば確保のサイズが大部分固定だったり、確保開放のパターンが
FIFO的だったりとか文脈に依存したパターンを見つけることで、もっと高速にする余地が
あるんだ。

> 明確なボトルネックを見つける前から独自のメモリ管理を追加するのは
> 面倒なバグの元になるだけで終わる可能性がある。
> もうちょっとコンパイラ(ライブラリ)実装者を信用してもいいんじゃないかと思う。

これは至極もっともだ。俺も自分でなんでも作りすぎるのはちょっと悪い癖だと思ってる。

51:名前は開発中のものです。
07/03/23 21:57:58 P2V386bO
ある程度組み終わった後でも使用するアロケータを楽に変更できるように
組むことなんて可能なのかいな?

52:名前は開発中のものです。
07/03/23 22:32:14 V2teaCuf
>>51
アロケータをオブジェクトにして種類別に派生させる。
生成部分を取り替えられるようにするって意味で、デザパタでいうところのアブストラクトファクトリに近いかな。

53:名前は開発中のものです。
07/03/23 22:53:52 vxAgs8Dc
メモリ確保方法によらず、常に同じ記述で
オブジェクトの生成・破棄が行えると楽だな。
オブジェクト毎にメモリ確保方法が異なっていて、
さらに生成・破棄手順が違うとかだと悲惨だ。

自前でメモリ確保機構を作りたいって人は、
通常のnew、boostのobject_pool、LokiのSmallObj、
Efficient C++のMemoryPoolのソースを全部見てからにした方がいい。
大抵はこいつらで事足りる。
個人的に、boostのobject_poolが最強だと思う。

54:名前は開発中のものです。
07/03/24 00:17:00 OuD128ry
自分で作ると最速のコードに出来ることがあっても
準標準級のライブラリに似たようなのがあれば作らないってのも勇気だわね

55:名前は開発中のものです。
07/03/24 00:46:35 SQuGfhfH
>>50
> しれないけど、例えば確保のサイズが大部分固定だったり、確保開放のパターンが
> FIFO的だったりとか文脈に依存したパターンを見つけることで、もっと高速にする余地が

operator new にはサイズしか渡されないし operator delete にはポインタひとつしか
渡されないので、そういう文脈に依存した処理を組み込むのは難しい。
「new/delete 置き換えてできること」と限定したのはそういう意味だったんだが。

56:名前は開発中のものです。
07/03/24 01:18:26 8HwaAyp8
>>55
> operator new にはサイズしか渡されないし operator delete にはポインタひとつしか
> 渡されないので、そういう文脈に依存した処理を組み込むのは難しい。
> 「new/delete 置き換えてできること」と限定したのはそういう意味だったんだが。

俺が>49で言ってた「乗っ取って」というのは字面通りの単純な置換って意味じゃなくて
生成機構を変更するって意味なので、まぁ、ほんとに置換しかやらないのなら、
そうですね、としか。
というか、オブジェクトプールがどうこうって流れだったんだからその辺は変更できるってのが
前提じゃないの?

57:名前は開発中のものです。
07/03/24 01:21:37 8HwaAyp8
アンカーミスった。>49じゃなくて>48っすね。

58:名前は開発中のものです。
07/03/24 02:30:22 oJPw3lLB
お前らはplacement newを知らないのか?

59:名前は開発中のものです。
07/03/24 05:25:57 SQuGfhfH
>>56
グローバル opeartor new/delete の置き換えと勘違いしてたみたい。ごめんよ。

60:名前は開発中のものです。
07/03/24 05:27:06 SQuGfhfH
>>58
知ってるけど、この流れでは当たり前というか関係ないというか、どうでもいい。

61:名前は開発中のものです。
07/03/26 22:37:04 sS1yrghH
タスカー様を復活させるのだ

62:名前は開発中のものです。
07/03/26 23:35:38 15IZtZoB
タスク・オム

63:名前は開発中のものです。
07/04/02 00:01:32 xHA5oFU3
タスケテシステムとスレタイ読み違えた

64:名前は開発中のものです。
07/04/02 22:36:55 rjkFdofu
いや、実は読み違えていない。スレ主が書き間違えてるんだ。

65:名前は開発中のものです。
07/04/02 22:55:04 QJ3NujtS
誰かボスケテシステムスレも建ててよ

66:名前は開発中のものです。
07/04/10 21:51:55 DVQJ95h4
Javaでタスクシステムをつくるとき、
各タスクに描画させるのか?(敵のタスクならその機体の描画とか。)

それともタスクは座標だけupdateして、別にTimerとかでPanelをrepaintさせるのか?

67:名前は開発中のものです。
07/04/11 08:50:01 0dv8Cb9u
>>66
ちらつく。
ダブルバファリングしても無理。

68:名前は開発中のものです。
07/04/11 09:13:43 J3mbPVHZ
LWJGL使えよ

69:名前は開発中のものです。
07/04/11 21:16:36 S5YhMrov
スプライトシステムか。

70:名前は開発中のものです。
07/04/11 23:21:45 S5YhMrov
YaneuraoGameSDK.NETのタスクシステムってどうよ。

URLリンク(yanesdkdotnet.sourceforge.jp)

こういうののJava版とかないかね?


71:名前は開発中のものです。
07/04/11 23:58:37 qhNv6z5v
至って普通。フレームワークにするまでもないというか、使い方覚えるほうが面倒くさくね?というか。
でも、やね氏の作るものは氏が飽きたらそれまでなので今ならXNAでも使っといたほうがいいんじゃないかな。

72:名前は開発中のものです。
07/04/12 09:21:05 gzUpXrks
「シューティングゲームマニアックス」にタスクシステム結構詳しく載ってて、構造体キャスト使ってたけど、結構きつい様な気もする
どうなんだろう


73:名前は開発中のものです。
07/04/12 20:30:27 mQKUb85m
Javaの場合だとひとつのGraphics2Dをコンテキストとするから
タスクが描くってよりも、フレームワークが取り込むって形になりそう

74:名前は開発中のものです。
07/04/14 17:35:53 F0D9RwXy
統合開発環境やデバッガとの連携を全く考慮していない
聳え立つ糞のようなタスクシステムをしこしこ作ってる
孤独なオナニープログラマ諸君。
 
デバッグの容易さとか、保守のしやすさを考えて作ってますか?

75:名前は開発中のものです。
07/04/14 17:53:16 3N17piRe
>>74
あたりまえじゃん

76:名前は開発中のものです。
07/04/14 18:33:42 tHggo9K5
>>74
君はそんなものしか作れなかったのかな?
それはタスクシステムが悪いんじゃなくて、
君のセンスがないだけだから心配することないよ!

77:名前は開発中のものです。
07/04/14 18:56:15 KurcdpHU
そういや、今は亡きCマガにトンデモなタスクシステム紹介記事があったが
あれが出た辺りからタスクシステムというキーワードがすっかり香ばしくなったな。
今では>>13のリンク先の通り、厨房技術用語としての地位は不動のものだな。

78:名前は開発中のものです。
07/04/14 20:10:39 KVgw3R/b
Cマガの記事を書いたライターはおそらく、つか間違いなくド素人。

当時ウェブ上に転がってた情報を拾い集めて書いただけの内容だった。
Logician何とかというサイトの記述漏れや記述ミス(というか独自解釈か)
をご丁寧に全て継承していた。

ウェブ上で都市伝説のように紹介されていたものをまんま丸写しして
「いまどきwのプロが使うゲーム開発の秘技」みたいに神格化して
紙媒体を使って流布したおかげで、言葉だけが一人歩きを始めた。

実装方法は千差万別のローカル用語なのにね。

79:名前は開発中のものです。
07/04/14 20:19:46 g5jEBpoC
フレームワークみたいなもんだろ。
使えるというのは自前の実装で言ってるから判るんだが
使えないというのは自前の実装がへぼいと宣伝してるのかね。

それともあまりにもひどい実装を見たのだろうか。

80:名前は開発中のものです。
07/04/15 02:36:38 0Q+hD2uu
タスクシステムに限らず、こういうフレームワーク的なものは
利点や欠点を見極めた上で採用不採用を決定するのが当然なわけだけど、
それを怠って何でもタスクシステムにすりゃいいと思っている
初心者が絶賛大量量産中だから困る。
そういう馬鹿どもが勝手に困る分には全く構わないが、
blogで上級者ぶって布教活動をしたり、
頓珍漢な質問をして場を混乱させたりするのは勘弁してくれ。

81:名前は開発中のものです。
07/04/15 02:43:26 KRgQ3nwE
使えるというのは自前の実装で言ってるから判るんだが
使えないというのは自前の実装がへぼいと宣伝してるのかね?

82:名前は開発中のものです。
07/04/15 03:12:12 vOubHFUU
>>81
まあ、そうなんだろう。
結局タスクシステムにしたってオブジェクト指向にしたって、理解できなかった奴が否定しているんだしね。

83:名前は開発中のものです。
07/04/15 03:38:07 ib4ZSVvj
タスクシステムやオブジェクト指向よりも
ちょっと前のレスをわざわざコピペした>>81の真意が理解できません><

84:名前は開発中のものです。
07/04/15 04:14:42 xBb5xlIW
ヒント:自作自演

85:名前は開発中のものです。
07/04/15 04:28:01 vOubHFUU
そういや、単発IDが連続してるなここ

86:名前は開発中のものです。
07/04/15 04:39:19 W1PnAJQl
同一ID:配列
単発ID:リスト→このスレで言うところのタスクシステム。

うむ、スレ違いじゃない。問題無い

87:名前は開発中のものです。
07/04/15 04:47:32 0Q+hD2uu
>>86の例えが理解できる人、解説プリーズ

88:名前は開発中のものです。
07/04/15 04:59:44 KRgQ3nwE
日付が変わってID変わっただけだアホ。

89:名前は開発中のものです。
07/04/15 05:00:52 W1PnAJQl
まぁまぁ、隔離スレで熱くなるなよ。

90:名前は開発中のものです。
07/04/15 05:45:42 5XtjNBFQ
82 : 「●●を正しく理解しない者が●●を否定するのだ。」

 

( ^??^?)…
●●を魔法か何かと勘違いして布教する厨房が否定されてるだけだろ。

タスクシステムの定義もOOと同様に抽象的なものでしかないわけだが
カビの生えた糞実装(しかも驚くほど似たものばかりが蔓延している)付きで
布教する厨房が頑張ってくれたおかげで、いつの間にかその糞実装込みで
タスクシステムという言葉が定義付けられてしまった感があるな。

91:名前は開発中のものです。
07/04/15 07:11:04 3dsdfwPB
同列に語るならデザインパターンとだろう。

92:名前は開発中のものです。
07/04/15 07:21:05 5XtjNBFQ
例えばだけどさ
複数の有限状態機械の相互作用・状態遷移を時間刻み⊿tの数値積分などで
逐次計算していく(時間発展させる)仕掛けになっていれば、皆タスクシステム
としての体を成してるんじゃないか?
 
>>13のリンク先の連中は、言っちゃ悪いが頭の引き出しが少ないんじゃないかな。
一般化して説明できるはずのものを遠まわしに分かりづらく説明してしまってるね。

結果、頭の引き出しが少ない視野偏狭な読者は、タスクシステムをゲーム業界固有の
ハイパーテクノロジーであるかのように錯覚する。>>13のリンク先を聖経のように
有難がってる趣味プログラマの人はもう少し見識を広めたほうがいいよ。

93:名前は開発中のものです。
07/04/15 11:33:45 vOubHFUU
>>90
だから、おまいさんがタスクシステムを理解しているというのなら、
何が糞実装なのか教えてくれよせっかくだからさ。

後学のために俺も知りたい。

94:名前は開発中のものです。
07/04/15 12:09:21 bzLlTmPF
>>93
それは俺もしりたい。

上では、糞実装っというより、方言があるものを統一の定番のものように見せているのを
怒っているようにも思うけど。

95:名前は開発中のものです。
07/04/15 12:59:53 vOubHFUU
>>94
そうかもねえ。
とにかく、具体的なことを、ID:5XtjNBFQが一切書かないおかげで、
なんか偉そうなことを長文で言っているように見えるけど、
実際に何を言いたいのか訳わからんし。

96:名前は開発中のものです。
07/04/15 15:01:20 +CRNM9AG
>>82みたいなレスをする奴が何を叫んでも
まともに相手にされないだけだと思うが

97:名前は開発中のものです。
07/04/15 15:07:19 vOubHFUU
はいはい

あいかわらず具体的な話が全く出てこなくなったなここは

98:名前は開発中のものです。
07/04/15 16:27:50 I+ZXuliP
他人を否定したい。
でも具体的な話をすると自分が否定されるから絶対出来ない。
人間とはそういうもの。

99:名前は開発中のものです。
07/04/15 16:35:35 5XtjNBFQ
   ∧,,∧
  (・∀ ・) < はいはい、あいかわらず具体的な話が
.  ノ(  )ヽ   全く出てこなくなったなここは。わろすわろすw
   <  >

スレリンク(gamedev板:82番)n
スレリンク(gamedev板:85番)n
スレリンク(gamedev板:93番)n
スレリンク(gamedev板:95番)n
スレリンク(gamedev板:97番)n

●理解できなかった奴が否定しているんだ
●偉そうなことを言っているように見える
●実際に何を言いたいのか訳わからん

      ズコー
   ヽ(・ω・)/ 
   \(.\ ノ

100:名前は開発中のものです。
07/04/15 16:45:56 vOubHFUU
ID:5XtjNBFQ は、相変わらず顔真っ赤にして必死だなあw
早くどういう実装が糞実装なのか教えてよwww

101:名前は開発中のものです。
07/04/15 19:44:58 n9DKuG7P
>>90>>92
暇だからググってみたけど、関数アドレス+汎用ワークのリンクリストという
環境(ゲーム)依存のひとつの手段に過ぎなかったものを、やたら例として
あげたがる所が多いみたいね。ちょっと意外だったわ。ネット文化なのかね。

これ、情報(都市伝説)の出所を辿れば同じところに行き着くんじゃないの。

102:名前は開発中のものです。
07/04/15 20:39:48 n9DKuG7P
タスクシステムはゲームを駆動させるコア部分=ゲームエンジンなんだから
Quake系あたりの有名どころのオープンソースなゲームエンジンの実装を
引き合いに出して解説すればいいのに、ネット上で「タスクシステム」と
名の付く解説文って何故かそういうことはしないんだよね。単に別物だと
勘違いしてるのか、アーケードゲーム創成期の懐古趣味者だからなのか
アンテナ張れてない脳味噌コチコチのフェードアウトおやじだからなのか
酸素欠乏症に陥ったテム・レイだからなのか。

103:名前は開発中のものです。
07/04/15 21:47:11 PxGC7SLd
オブジェクト指向やデザパタの説明するのに、
有名オープンソースアプリを引き合いにしないのと一緒ってことじゃない?

104:名前は開発中のものです。
07/04/15 21:51:00 /fPrY/bJ
確かに、タスクシステムと他のゲームエンジンを比較する記事は
全く目にしないな。タスクシステムを解説するサイトのほとんどが
ゲームエンジンという概念を持たない奴を対象としているみたいだから、
仕方の無いことだとは思う。
問題なのは、解説者自身が、解説の対象となる連中と
さほどレベルが変わらないということ。

105:名前は開発中のものです。
07/04/15 22:03:11 TiBHGm8x
>>102
おまえはコンパイラの仕組みを解説するのにいちいちgccのソースを持ち出すのか?

106:名前は開発中のものです。
07/04/15 22:05:22 /fPrY/bJ
>>103
お前はオープンソースって単語につられすぎ。
タスクシステムと他のゲームエンジンって組み合わせなんだから、
オブジェクト指向の対となるのは構造化プログラミングとか
アスペクト指向とかだろ。

107:名前は開発中のものです。
07/04/15 22:13:00 PxGC7SLd
>>106
???

誰かエスパーの人翻訳ぷりーず

108:名前は開発中のものです。
07/04/15 22:37:34 BFtC8cga
うちでもタスクシステムという用語自体は
今でもゲームエンジンとほぼ同義で使ってるな。

キャラクタのオブジェクトのことをタスクと呼んだり
ユニットと呼んだりエンティティと呼んだりするのと
同じで、他所では意味合いはすこし違うかもだが。

ま、所詮はローカル用語だな。
確固たる経典があるわけでもなく無理矢理普及
させようとしても都市伝説化するのが関の山だろ。

大人しくゲームエンジンとでも呼んどけってこった。

>>92
>複数の有限状態機械の相互作用・状態遷移を時間刻み⊿tの数値積分などで
>逐次計算していく(時間発展させる)仕掛け

共通の定義を模索していくとそんな感じになるかな。

仮想空間内に配置したエンティティを時間ステップ毎に
駆動させたり、エンティティ同士の情報のやりとりを仲介したり。
ゲームエンジンは自己駆動粒子系のシミュレータの一種だね。

109:名前は開発中のものです。
07/04/15 23:49:58 oEvaf3OR
ウェブ上で出回ってるタスクシステム講座はたしかに
どれも一様に古臭いな。統制が取れた古臭さとでもいうか。

一線を退いて久しいオサーンが昔を懐かしむ人向けの
読み物と断わった上で公開してるページもあるみたいだが
Code Zineの記事の中の子はガチで浦島太郎になってて
ちょっとカワイソス。
彼には最新のUnrealのMOD開発用ゲームソースでも
読ませてやりたい。

110:名前は開発中のものです。
07/04/16 01:16:12 W5lbbWwm
主張・文体・時間帯・改行の癖・その他諸々を考慮して、
IDを隠して眺めてみると面白いな。
昨日19時からのログわ。

111:名前は開発中のものです。
07/04/16 01:27:08 MDcwQB1m
のちのコナンである。

112:名前は開発中のものです。
07/04/16 01:59:47 B1Dtb12v
タイガアドベンチャーだね

113:名前は開発中のものです。
07/04/16 02:25:04 QiSCSZ7+
>>104
いや、ある意味、タスクシステム自体が、ゲームエンジンの一種なのでは?


114:名前は開発中のものです。
07/04/16 04:52:10 I2bg0tSF
19時からのログよりも>>79-100の方が面白い。
何故か同じことを繰り返して言った>>79>>81
2回目の方にレスをつける>>82(ID:vOubHFUU)。
>>93で再登場したID:g5jEBpoCに向けて
定期的に書き込まれる単発IDによる援護射撃。
そして、ID:g5jEBpoCがいない時間帯には
決して現われない上記のような面々。

115:名前は開発中のものです。
07/04/16 05:02:51 I2bg0tSF
ID:g5jEBpoCじゃなくてID:vOubHFUUだったわ。
ってどうでもいいか。周りのスルー力を見習お。

116:82
07/04/16 11:01:09 5cCE7ez3
え、全部俺の自作自演?
そいつはすごいやw

117:名前は開発中のものです。
07/04/16 23:49:42 vg95lefp
タスクとリフレッシュレートはゲ製の鬼門

118:名前は開発中のものです。
07/04/17 08:47:02 Aek8raYd
>>117
KWSK

119:名前は開発中のものです。
07/04/18 23:28:57 jsz7ODUC
 
 
     菊門と聞いて飛ん来ますた
 
 


120:名前は開発中のものです。
07/04/19 00:02:19 jsz7ODUC
…。
 
 
 
>>104
>>113
ゲームエンジンなんて御洒落な言葉を耳にするようになったのはPS1末期のあたりだな。
それ以前は△△ドライバだの△△君だのタスクシステムだの皆好き勝手に呼んでたぞ。

121:名前は開発中のものです。
07/04/19 01:15:58 7k3O26Dk
ようするにタスクシステムって、ゲーム内のいろんな要素をオブジェクトとして扱って、それをリストにして管理してフレーム毎に実行するだけ?
俺の場合、古めのゲームプログラマが連載形式で解説してるのをネットで見たのが最初だった。
そのちょっとあとぐらいに、やね氏がそのサイトを紹介してた気がする…。

それに感化されてやってみたんだけど、親子関係にあるオブジェクトの場合、平等な関係のタスクで扱うのが面倒くさかった。
素人なんで俺がへっぽこなだけだとおもうけど。
ゲームごとに、オブジェクトごとに最適な管理方法を考える方が楽な気がする。

122:名前は開発中のものです。
07/04/19 01:18:17 0zzWAwAX
タスクがタスクを扱えるようにすればいくらでも楽勝っす。

123:名前は開発中のものです。
07/04/19 02:06:27 Pm183gqV
タスクシステムを最初に見たときは、オブジェクト指向とは全く違う
自由度と再利用性の高い汎用的な管理の仕方だなと感心したよ。
それ以前の俺は、ゲームプログラミングなんて言ったら

CWaitCtrl WaitCtrl;
CRander Rander;
CPlayerCtrl player;
CEnemy enemy[NumofEnemy];
for(;;){
 player.func();//プレイヤーの移動処理など
 for(int i=0;i<NumofEnemy;i++)
  enemy.func(&player);//敵の移動処理など

 Rander.Draw(&player);//うっふん描画
 Rander.Draw(&enemy);//あっはん描画
 WaitCtrl.func();//フレームレート調整
}

みたいにやってたからな・・・。
タスクシステムと比べたらまるでイソギンチャクとメガマウスの差だよ。

124:名前は開発中のものです。
07/04/19 02:25:55 EeW/BzCK
>>120
それ以前というか、今でもそんな感じです。うちの場合。
 
PS2用RPGのチームに異動したときは内製エンジンをタスクシステムと呼んでた。
>>13で紹介されてるそれとはかけ離れた代物になってたけどね。
 
>>121
タスクシステムとゲームエンジンは等価。
ゲームエンジンという単語は元々は海外で使われてたの。
それが日本にも浸透したってだけ。
浸透する以前は内製のゲームエンジンはそれぞれ別の呼び方していた。
タスクシステムとか俺様ライブラリとか様々な方言があったと思うよ。
 
>リストにして管理して
 
竹やりで万歳突撃?

125:名前は開発中のものです。
07/04/19 02:26:33 vUHs3Nla
>>123
メガマウスの具体的な例をお願いします…。
ぱっと見だけど、かなり場数を踏んでる(プロの)方?


126:名前は開発中のものです。
07/04/19 02:35:14 Pm183gqV
>>125
メガマウスってでかいんだぜ。
ジンベエザメよりも、シロナガスクジラよりもでかいんだぜ。
でもイソギンチャクって小さいんだぜ。
あと俺みたいな奴がプロだったら
日本はもっとデフレ状態になっても誰も就職に困らないだろうな。

127:名前は開発中のものです。
07/04/19 02:36:33 Pm183gqV
あ、メガマウス小さかった。
なんだったけな、最大の海洋生物って。

128:名前は開発中のものです。
07/04/19 02:54:09 EeW/BzCK
>>123
タスクシステムは特定の実装方法を指すものではない。
 
「古代の究極奥義、ダイエットシステムでこんなに痩せた!」
 
とか言わないのと一緒。


129:名前は開発中のものです。
07/04/19 08:09:39 E/KhOlb0
>>123
コンテナクラスを内包したEnemyFactoryを作って
処理ループではメンバ関数一つ呼べば管理が楽にならん?
Class EnemyFactory {
Vector<CEnemy> EnemyArray;
(略)
public:
func(CPlayerCtrl& player)
}

enemyfactory.func(&player);を一回呼び出せば全てを処理してくれるように。
って、これがタスクシステムなのか?

130:名前は開発中のものです。
07/04/19 14:16:22 KkZ4qP8H
だからさー、お前の脳内定義でのタスクシステムに必須条件って何よ。
ダンボール紙の盾をイージスシステムと名付けるのはお前の自由だが
他人に同意を求めるような話じゃねーだろと。

たかがローカル用語に、具体的な実装も含めた意味付けをして
再定義して普及させようとする仕切り行為は全て徒労に終わる。
 
ゲームプログラマは基本的に天邪鬼だからな。

131:名前は開発中のものです。
07/04/19 21:20:45 I+5EKnEr
>>127
スレと関係ないけどメガロドンじゃね?大昔の巨大サメ。

>>130
>必須条件
これじゃ駄目なのか?

URLリンク(en.wikipedia.org)

>A task is "an execution path through address space".In other words, a set of program instructions that is loaded in memory.
>タスクは「アドレス空間を通る実行パス」です。言いかえれば、メモリにロードされるプログラム命令のセット。

風呂桶でも紙コップでもなくて「入れ物」に相当する用語がタスクなんだけど、
それを「俺んちの風呂桶」の意味で使う奴がいるのが問題なんじゃないかと思う。

132:名前は開発中のものです。
07/04/19 21:56:37 let+IdBl
そういうこったな。
taskはprocess並に汎用的な技術用語。
そのケツにsystemを付け加えるだけで

>タスクシステムを最初に見たときは、オブジェクト指向とは全く違う
>自由度と再利用性の高い汎用的な管理の仕方だなと感心したよ。

↑こんな胡散臭い話になる。マジでお勧め。
「去年まで金無し君だったけど」の改造コピペ文が作れるな

133:名前は開発中のものです。
07/04/19 22:42:06 EeW/BzCK
>>123
なんか釣りっぽいが、君の言うタスクシステムってのはこんなやつ?
URLリンク(codezine.jp)
 
これ、ゲームプログラミングの基礎教材としては優良だとは思うが
タスクシステムという単語の使われ方はキッパリ忘れたほうがいい。
 
これ読んで「タスクシステムすげー!」「マジ感動!」
と歓喜して許されるのはリア厨、リア工まで。

それ以上なら技術者(の卵)として最低限のリテラシーが
欠けてるかもしれないと疑ったほうがいい。

何でもいいからオペレーティングシステムの教科書でも
一冊買ってみて読んだほうが遥かに勉強になると思うよ。

134:名前は開発中のものです。
07/04/19 22:47:04 Pm183gqV
リア工なので許されるという

135:名前は開発中のものです。
07/04/19 22:48:45 EeW/BzCK
アンカーミス。>>132じゃなくて>>129

136:名前は開発中のものです。
07/04/19 22:49:58 EeW/BzCK
>>134
RTOSの本が面白いと思うよ。

137:名前は開発中のものです。
07/04/19 22:58:21 let+IdBl
>>135
俺かいw

つーのは冗談として。。。
組み込み系の書籍はたしかに参考になるな。

俺も井の中の蛙にならんように精進せんと。

138:名前は開発中のものです。
07/04/19 23:00:12 GlQD7rdS
タスクシステムってメモリに対して最適化した設計スタイルなんじゃねーの?
ギャラガとかの古の時代の産物なんだから、言葉自体を葬った方がいいんじゃないかと。

139:名前は開発中のものです。
07/04/19 23:02:37 let+IdBl
>>138
>タスクシステムってメモリに対して最適化した設計スタイルなんじゃねーの?
>タスクシステムという言葉自体を葬った方がいいんじゃないかと。

本来はタスクシステムのローカル定義

140:名前は開発中のものです。
07/04/19 23:04:29 let+IdBl
途中で送信しちまった。
 
>タスクシステムってメモリに対して最適化した設計スタイルなんじゃねーの?

そのタスクシステムのローカル定義を葬ったほうがいいのであって
タスクシステムという言葉自体に罪は無いぞ。立派な技術用語だ。

141:名前は開発中のものです。
07/04/19 23:37:23 EeW/BzCK
「ギャラクシアン」「タスクシステム」でぐぐると
ナムコ信者とかレトロゲーマニアの知ったかウンチク話として
「タスクシステム」が再定義され広まったのがよく分かる。

こういう出典不在&伝聞のみで造られたゲームファン用語を
真に受けた素人がCマガの記事を書いて更に広めたのは
致命的だったね。

142:名前は開発中のものです。
07/04/19 23:54:13 9JdMu3w7
どっかのスレで「古典タスク」とかいう謎の言葉を見かけたな。
あとは「タスクシステムはもう古い」とかいう珍発言もたまに見る。

ゲームファン用語というより知ったかワナビー用語だろ。

143:名前は開発中のものです。
07/04/20 00:01:20 cgQq0Bo+
ローカル定義だけ葬るのはもう無理か。
ゲームエンジンでいいよもう。

というわけで関数アドレス+汎用ワークメモリのリンクリストが~とか
どうでもいい仕掛けを車輪の再発明して延々その素晴らしさを語ってる
オナニストが作ってるのはセンズリシステムでいいよもう。

Irrlicht使おうぜ。

144:名前は開発中のものです。
07/04/20 00:16:48 65Qprn+K
俺はCrysis Engineを触りたい。

145:名前は開発中のものです。
07/04/20 02:10:06 cGzgTfv7
しかしデリゲートをベクターコンテナにぶち込んで使う

146:名前は開発中のものです。
07/04/20 03:42:12 RUahNebB
オレはIrrlichtに自前のタスクシステムを乗せるよ。

147:名前は開発中のものです。
07/04/20 07:42:04 ZqUifK9K
関数ポインタだとか汎用ワークメモリだとかは
初心者にとって勉強になるから再発明上等なんだが、
その程度のレベルの奴が悟った気になって
中途半端な理解で解説を書いて広めるからタチが悪い。

148:名前は開発中のものです。
07/04/20 11:42:46 EI0MmUU2
>>147
そこまでおっしゃるんなら
是非みんなの目が覚めるような解説サイトを作ってください
ID:ZqUifK9K先生!

149:名前は開発中のものです。
07/04/20 12:17:21 ohBEpQ/x
タスクシステムを紹介してる人を叩くスレはここですか

150:名前は開発中のものです。
07/04/20 13:19:25 J62A1B0A
また>>82が来たのか

151:名前は開発中のものです。
07/04/20 13:44:21 EI0MmUU2
また>>90が来たのか

152:名前は開発中のものです。
07/04/20 14:51:16 ignHfO5a
確かにタスクシステムは可用性の高いやり方ではあると思うけど、
実態は単なるリストのデータ構造なので(勿論それから拡張された高度なものも存在するけど)、
「タスク」やら「システム」やらの単語は不似合いに思えないことも無い。
そしてそういう単語で付け上がるような中二病野朗は非常にたちが悪い。
死んでくれとは言わないけど、考えを改め直して現実を見て欲しい。

153:名前は開発中のものです。
07/04/20 20:30:26 RUahNebB
というかC++でいうオブジェクトをリスト管理するのが
タスクシステムなんだよ。

アセンブラだけで開発してた頃に使ってたから割と
いい発明だったんだよね。

154:名前は開発中のものです。
07/04/20 20:38:17 EI0MmUU2
>>153
>というかC++でいうオブジェクトをリスト管理するのが
>タスクシステムなんだよ。

なんかちがわね?

155:名前は開発中のものです。
07/04/20 20:39:36 VkPjbBgj
もうタスクじゃない別の呼び名をつけてあげたら?

156:名前は開発中のものです。
07/04/20 20:44:06 KK8Da6ng
重要度思考設計とか?

157:名前は開発中のものです。
07/04/20 21:32:26 fGL33psr
タスクシステムを古いとか古典とかいう人は、
どうやって実装しているの?
XXというフレームワークとか開発キットをつかっている、という答えでもいいけど、それ自体はタスクシステムをつかっていないの?

あと、たとえばマルチスレッドを使うとタスクシステムはいらなくなる?





158:名前は開発中のものです。
07/04/20 23:05:53 UGzQxCti
>>157
その前におまえの脳内定義上のタスクシステム
について説明したまえよ。

>それ自体はタスクシステムをつかっていないの?

お前の言うそのタスクシステムとやらの定義によるな。

>あと、たとえばマルチスレッドを使うとタスクシステムはいらなくなる?

お前の言うそのタスクシステムとやらの定義によるな。
で、お前の定義したタスクシステムを前提にした場合の
上記質問事項についてのお前の経験に基づく見解を聞かせてくれよ。

159:名前は開発中のものです。
07/04/20 23:42:39 RUahNebB
便利なものはすべてタスクシステムだ!

160:名前は開発中のものです。
07/04/20 23:49:49 cGzgTfv7
マルチスレッドプログラミングもタスクシステムの一種?

161:名前は開発中のものです。
07/04/20 23:53:22 KC13gbVA
Q. タスクシステムって何?
A. 言語仕様の進歩により実体を失なうシステムのこと。

162:名前は開発中のものです。
07/04/20 23:55:47 0083p4+e
関数ポインタ+汎用ワークのリンクリストをタスクシステムと呼ぶのは個人の自由だし
木製骨格+羽布張り+マキシム機関銃の飛行機をステルス戦闘機と呼ぶのも自由だけど
声を大にして言うとキチガイと思われるから気を付けようね、というごく基本的な話。

163:90
07/04/20 23:58:56 0083p4+e
>>151
それは被害妄想だよ。

164:名前は開発中のものです。
07/04/21 00:01:14 ohBEpQ/x
ガンダムみたいなIDだな

165:名前は開発中のものです。
07/04/21 00:18:39 b9DOuvNS
>>118
遅レスでやんすが
熱い論争が巻き起こるものの、結局結論が出ないので不毛この上ない
という意味でござんす。

166:名前は開発中のものです。
07/04/21 00:26:45 ohzUMwwU
リフレッシュレートは、3倍して計算というナイスな結論が出てた様な気がするけど、
あの後まと話がこじれたのかいな?

167:名前は開発中のものです。
07/04/21 00:57:21 Cncyo4d6
だいたい液晶はリフレッシュしてないし。

168:名前は開発中のものです。
07/04/21 03:08:49 96E91bg8
現状を憂うのは大変結構な事だけど
意見をまとめたコラムをどっかに投稿したり、サイト作ったりしないの?
掲示板の書き込みを追っていくのは辛い

169:名前は開発中のものです。
07/04/21 08:33:00 qfI0z2jN
>>158
たとえば↓この本で書かれているタスクシステムを「タスクシステム」と定義してみるとどうだ?
URLリンク(cgi32.plala.or.jp)




170:名前は開発中のものです。
07/04/21 09:31:26 rc3MbHen
>>169
その本を書いた松浦健一郎が大混乱の元凶なわけだが

171:名前は開発中のものです。
07/04/21 09:40:41 FI1lzfn8
で、その本の中では何て定義してるの?

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

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

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

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

URLリンク(www5f.biglobe.ne.jp)
URLリンク(www5f.biglobe.ne.jp)
URLリンク(homepage3.nifty.com)

わからなかった


                      糸冬 わ  り

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

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

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

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

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

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

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

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

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

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

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

181:名前は開発中のものです。
07/04/21 19:46:23 445SE7r4
今求められているもの

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

182:名前は開発中のものです。
07/04/21 22:03:55 qfI0z2jN
>>181

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

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

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

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

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

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

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

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

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

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

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

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

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

188:名前は開発中のものです。
07/04/22 00:31:08 useOh8AV
>>182
おいおいサンプルのダウンロードなんかできないぞ。

189:名前は開発中のものです。
07/04/22 00:53:25 useOh8AV
>>182
>マルチスレッドとの比較というテーマなら

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

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

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


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




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


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

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


190:名前は開発中のものです。
07/04/22 00:55:49 useOh8AV
上は送信ミスだ。

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

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

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

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


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

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

191:名前は開発中のものです。
07/04/22 01:11:41 QxI8Jcnw
だいたいわかった。

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

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

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

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

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

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



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


195:名前は開発中のものです。
07/04/22 08:29:39 YZWy+Lh2
誤爆?

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

197:名前は開発中のものです。
07/04/22 09:25:02 ridILpBz
>>196
おまえもなー


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


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

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

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

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

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

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

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

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

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

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

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

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

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


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

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


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

207:名前は開発中のものです。
07/04/22 16:06:58 4Cp/kF21
実際に実測して検証したわけじゃないけど

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

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



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

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


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

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


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


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

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

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


211:名前は開発中のものです。
07/04/22 16:36:46 KD72KCOk
これは具体的だね。

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

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





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

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

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

(一番最初へもどる)

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

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

214:名前は開発中のものです。
07/04/22 16:54:16 4Cp/kF21
>>212
うは!不毛だ

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


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

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


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

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

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

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


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

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

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

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

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

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

223:擬似タスクw
07/04/22 18:17:11 aF9z9yRP
「リフレッシュレートに関する論争」
「タスクシステムに関する論争」

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

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

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

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

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

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

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

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

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

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

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

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

230:名前は開発中のものです。
07/04/22 19:44:55 QxI8Jcnw
>>224のまとめ方は納得できるものだな。
素直に理解できる。

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

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


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

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

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

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

234:名前は開発中のものです。
07/04/22 20:08:12 4/EgVnhk
"ストラウストラップ" の検索結果 約 773 件
"ストラウストラップ的" の検索結果 1 件

235:名前は開発中のものです。
07/04/22 20:11:45 4/EgVnhk
※1 ストラウストラップ的OO

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

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

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

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

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

237:名前は開発中のものです。
07/04/22 20:30:50 v/ich/HT
>>235
マジレスされても困るんだが。(それにそこだけ書いても普通理解できない、コピペ元を貼るべき。)
URLリンク(d.hatena.ne.jp)

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

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

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

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

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

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

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

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

241:名前は開発中のものです。
07/04/22 23:10:29 WXusdEx1
>>239

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

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

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

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


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

243:名前は開発中のものです。
07/04/23 00:46:11 D3wQozch
>>239はこれだね
URLリンク(www.watch.impress.co.jp)


244:名前は開発中のものです。
07/04/23 12:56:56 kPTKND6z
>>241涙目wwwwww

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

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

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

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

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

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


249:名前は開発中のものです。
07/04/24 02:49:26 icr09Pcb
だからそれはマイクロスレッドとかファイバーだろ。

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

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

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

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

252:名前は開発中のものです。
07/04/24 04:08:33 nLYBhYy0
まーた定義厨か。

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

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

254:名前は開発中のものです。
07/04/24 06:21:41 nLYBhYy0
オーケー、これで議論のループはめでたく終了な。

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


256:名前は開発中のものです。
07/04/24 08:30:38 Cn47ifyt
>実装方向の話にうつらないと

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


257:名前は開発中のものです。
07/04/24 09:17:07 wt/UedOB
なんで早朝からカリカリしてんの?

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

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

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

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

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

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

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

265:名前は開発中のものです。
07/04/24 19:32:32 gy8tG6E1
リアルタイム戦略SLGとか?

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


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

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

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

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

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

270:名前は開発中のものです。
07/04/24 23:35:21 nLYBhYy0
自分で自分にレスして「上に同じ」もねぇよなぁ

271:名前は開発中のものです。
07/04/24 23:40:15 sh8YE+KJ
自作自演認定されちゃったよ

272:名前は開発中のものです。
07/04/24 23:44:07 Meuc1va2
>>270
あなたを、タスクシステム普及委員長です

273:名前は開発中のものです。
07/04/25 00:09:37 d3y1YdqK
定義できるのは、ここではタスクシステムをこういう概念で扱いますとローカルで宣言する場合だけ。
グローバルに定義することなど不可能だし、そういうことをしようとする奴は自分の意見を一方的に押し付ける身勝手なやつだけ。
その結果、結局は宗教論争のようになる。

274:名前は開発中のものです。
07/04/25 00:56:02 qAG7MKWl
毎回列に並びなおして、工程ごとに仕事を聞きに来る従業員システムと言えばいいんじゃないの?

275:名前は開発中のものです。
07/04/25 06:27:40 RAoN/rs2
このスレで通じればいいからローカル定義で十分

276:名前は開発中のものです。
07/04/25 08:10:39 Rf7pmltu
>>269
そのレスを建設的な意見ととらえてみる。
たしかに「詳しく議論を」面接官にいわれて、そこからなんにもいいレスは現れてないな。このスレの現状は。

くだらん質問でもいいから、具体的にだれかアプリをタスクシステムで作ってつまづいたところとか
質問すればいいんじゃない?

たとえば2chブラウザにタスクシステムを取り入れてつくったらどうなる?具体的にはHTTPで
スレをもってくる処理をタスクにしてみてはどう?

277:名前は開発中のものです。
07/04/25 12:18:45 XXwI0rZa
タスクシステムなんてのはあくまで実装の仕方なだけで、
それが良い悪いというのは言語同士の争いと同じく不毛
結局のところ言語と一緒で、自分の使い慣れたものを使えばいいだけ
ただ>>276の提示したような明らかに用途が違うものに適用するのは馬鹿げてる

278:名前は開発中のものです。
07/04/25 12:40:36 Yl4vGAsK
実装の共通点といえば処理をタスクというものにまとめて扱うところぐらいだろ
よーするにオブジェクト指向に近い話だと思うんだけど

279:名前は開発中のものです。
07/04/25 16:16:35 tVRJOqln
> たとえば2chブラウザにタスクシステムを取り入れてつくったらどうなる?具体的にはHTTPで
> スレをもってくる処理をタスクにしてみてはどう?
それこそ、マルチスレッドの出番だろw


280:名前は開発中のものです。
07/04/26 00:53:16 zB6RGP0j
>>279
タスクとやらでやってみたけど、劇的に早くなるな。すぐに作れるしソースもきれいにできる。
いろいろ改良してみるよ。

まあ、固定概念にひたってるやつは頭が固いってことだよ。

281:名前は開発中のものです。
07/04/26 01:58:51 ScANyKa7
サビキ仕掛け

282:名前は開発中のものです。
07/04/26 15:18:59 LD+Ad5uI
>>280
釣れますか?

283:名前は開発中のものです。
07/04/26 17:45:46 EAeyMYqP
頭がやわらかすぎるのも考え物だな

284:名前は開発中のものです。
07/04/26 17:54:31 ltksUv3A
脳死者の脳は
溶けちゃってるっていうしなあ

285:名前は開発中のものです。
07/04/26 19:42:12 4pZ8geJG
お前らってタスクリストってソート使う?

286:名前は開発中のものです。
07/04/26 19:53:28 hISFYhVD
OT使ってるからソートはしない。
けど最近のPCは速いからソートしても良いかもなー

287:名前は開発中のものです。
07/04/26 23:47:26 LD+Ad5uI
OTってOrderingTable?これも業界用語だよな・・・

288:名前は開発中のものです。
07/04/28 13:18:26 xqg9LfBt
>>280
その劇的に早いきれいなソースを出さないのは何故?
いや、まぁネタにマジレスするのもどうかとは思ったんだけど

289:名前は開発中のものです。
07/04/28 15:51:51 ABQqrv+P
>>288
教えたくないから。
これって起業レベルのノウハウかもしれないから。社内で提案するかもしれないものをここにはさらせないでしょ。

290:名前は開発中のものです。
07/04/28 16:05:29 B/ltLmOS
289 < 俺・・・このタスクが完成したら起業するんだ・・・

291:名前は開発中のものです。
07/04/28 16:50:13 QLBq9OY8
タスクシステムで起業とか、お前は小学生かと。

292:名前は開発中のものです。
07/04/28 18:47:35 /H8LY+k/
技術が儲けになると思う御年頃なんだろ
インド、中国、韓国あたりに行くのなら、技術が儲けになるという話も間違いではないけど・・・

293:名前は開発中のものです。
07/04/28 19:16:43 00qBiuMZ
釣られんのよw

294:名前は開発中のものです。
07/04/28 23:22:08 XL3V8yE3
ソートはしないな。最初からリストの最後もしくは最初に追加するようにするから。
タスク作成時に必要なリストを作る。

まあ、動的に変化するものは専用の管理クラスかなんか作るだろうな。
プライオリティとかは標準的な制御に入れない。美しくないし。

295:名前は開発中のものです。
07/04/28 23:51:37 F7O57cEz
おまいらなんの目的でソートしてる?

コリジョン判定の回数を減らすためなら、おいらは2分木でデータを追加していくから実質ソート済み。

296:名前は開発中のものです。
07/04/29 01:14:38 KdpdkeKK
他のタスク(郡)にアクセス(干渉(値見たり書き換えたり))するとき

297:名前は開発中のものです。
07/04/29 01:21:54 HaLkae7w
いきなり話かわるけど線形リスト(単方向リスト、チェーン・・・・呼び方はいろいろあるけど)だと挿入や削除は早いけど探索は遅い
これが配列(ベクター、固定領域)だとまったく逆の性質になる

実はゲームに不向きなんじゃないか?タスクシステムって

298:名前は開発中のものです。
07/04/29 01:30:25 yZTB6Hgr
自分のプログラムに向いたコンテナを使えばいいじゃん。
タスクがリストだってイメージはメモリの動的管理をケチるような
(ヒープじゃなくてワークとか言ってるような)時代の名残じゃないかと思う。

299:名前は開発中のものです。
07/04/29 01:30:47 KdpdkeKK
そんな事言ったらコンピュータ自体がゲーム作るのに不利になるって結論に達すると思う。
vectorだと揮発性だからポインタ辺りが面倒くさいし、固定領域だとスタックオーバーフローとか何とかが起こるしね。

300:名前は開発中のものです。
07/04/29 01:37:24 oN9CX2Ee
固定領域でスタックオーバーフローって意味不明。
馬鹿は下手に用語を使うな。

301:名前は開発中のものです。
07/04/29 01:39:24 KdpdkeKK
固定領域じゃスタックオーバーフローは起こらんな。
ちょっとボケてた。

302:名前は開発中のものです。
07/04/29 02:20:56 ybvN8RFV
>>297
リストの配列にすればいいさ
リストから一つのオブジェクトだけを探索したいときは遅いままだけど
そういうときはあらかじめハンドルなりポインタなり握っておけばいい

303:名前は開発中のものです。
07/04/29 07:36:23 HDYBA+tg
Javaの場合だけどリストでもなくBlockingQueue<Task>にいれてる。優先度別にqueueも複数ある
queue内のすべてのタスクのupdateと必要な描画処理が20ms以内ならまずまずかな

304:名前は開発中のものです。
07/04/29 14:50:39 LzYPF20u
>>289みたいなのがいる限りタスクシステム(笑)も安泰だな

305:名前は開発中のものです。
07/04/29 14:52:33 nUOoY/JG
イテレートの速い順序付けツリーってあるの?

306:名前は開発中のものです。
07/04/29 15:34:08 tvNJg+l3
>>305
順序付けツリーなら C++ の set や map がだいたいそんな感じだろう。
で、イテレートの遅いコンテナなんてあるの?

307:名前は開発中のものです。
07/05/01 13:07:57 Nbo+fhA7
deque?
わかんねw

308:名前は開発中のものです。
07/05/01 22:39:08 2cazExNO
アドレスがばらけるコンテナはキャッシュミスが起きやすい。
ハッシュのコンテナも構築時間を犠牲にしないものはスカスカのテーブルをそのまま辿るしかないな。

309:名前は開発中のものです。
07/09/01 14:23:53 pqs4xK60
皆さんのやってるプラットホームはやはりPC?
コンシューマなひと、いなさそうだが・・・

310:名前は開発中のものです。
07/09/01 15:27:45 AAlSvZp8
それを何故このスレで聞くのか

311:名前は開発中のものです。
07/09/01 17:38:15 m1OoG9Xt
一応居るけど

312:名前は開発中のものです。
07/09/01 18:08:30 e9oT09wF
メガドラやってるよw
あのスレは見てない

313:名前は開発中のものです。
07/09/01 19:38:53 X2Bn3rtL
コンシューマやってるけど何が聞きたいの
ハードに依存してない部分だしPCとあんまり変わらんよ?

314:名前は開発中のものです。
07/09/02 04:39:14 OA6cGu0G
そうなん?
てっきり、いまだにタスクシステム使ってるのかと

315:名前は開発中のものです。
07/09/02 04:49:20 4YT1t12/
君の思うタスクシステムの具体的な実装が
どういうもんか言ってもらわんと答えようがないなあ
その通りかもしれないしそうじゃないかもしれないよ

316:名前は開発中のものです。
07/09/02 14:53:28 O3956k1d
なんかGDGDだなこのスレw
でも、嫌いじゃないので、おいらもGDGDカキコ

タスクの良いところってのはその柔軟性だよな。
技術的にはぜんぜんたいした事をしてるわけじゃない。
とくに、このスレではタスク=リストになってるが、別にリストなんて「高度」な
事をしなくても、ただの配列でもまったく問題なく実現できる。
(無論効率は若干落ちるが、即時にデータ起動の並列もどきルーチンが
作れるのでいろんな環境で便利)

唯一凄いと思えるのは、歴史的な経緯かな。
プログラム主体の8bit時代において、
プログラムでデータを管理するのではなく、データで、プログラムを管理(プログラムを選ぶ)
すると言う、データ主体の発送が凄かった。


317:名前は開発中のものです。
07/09/02 16:25:59 OA6cGu0G
リストが高度とか、時代錯誤もは(ry


318:名前は開発中のものです。
07/09/02 20:53:53 O3956k1d
>>316
おいおいw
わざわざ「」付で言ってるんだから
比喩に決まってるだろ

リストが「高度」な技術と言える程、
タスクの実装に技術はいらないって意味だ
ゆとりじゃあるまいし、勘弁しておくれw


319:名前は開発中のものです。
07/09/02 22:16:13 UfEehfKc
茶でも飲んで落ち着けw

320:名前は開発中のものです。
07/09/02 23:01:13 O3956k1d
うむ、そうするか

∧_∧
( ´・ω・) ズズー
( つ旦O
と_)_)


321:名前は開発中のものです。
07/09/02 23:14:50 O3956k1d
せっかくなのでリストを使わないタスクをネタ代わりに投下
てきとーに作っただけなので、コンパイルすらしてないけどなw
#define MAX_TASK 256;
struct tcb{
void (*proc)(tcb*); //処理関数
int work[10]; //ワーク
};
tcb* make((void (*proc)(tcb*)){
//生成
for(int i=0;i<MAX_TASK;i++){
if(TCB[i].proc == null){
TCB[i].proc = proc;
return &TCB[i];
}
}
return null;
}
void del(tcb* deltcb ){
deltcb->proc = null;
}
void exec(){
//実行
for(int i=0;i<MAX_TASK;i++){
if(TCB[i].proc != null)TCB[i].proc(&TCB[i]);
}
}
tcb TCB[MAX_TASK];


322:名前は開発中のものです。
07/09/02 23:19:25 O3956k1d
void main()
{
//初期化
for(int i=0;i<MAX_TASK;i++)TCB[i].proc = null;
//実行
exec()
}


まあ、リストに対するアンチテーゼと、
こんなに短くてもそこそこ機能するってのが言いたかっただけなんだけどね
なんにせよ、タスク(というか、並列動作もどき)ってのは、そんなご大層なものじゃないんで、
もう少し気軽に使えてもいいと思うな。

323:名前は開発中のものです。
07/09/02 23:25:34 4YT1t12/
std::vectorとclass Hoge { virtual void Update() = 0; };なら
そのソースの1/3くらいで終わる

324:名前は開発中のものです。
07/09/02 23:34:48 O3956k1d
>>322
そうか、よかったな。

ただ、このソースは4KのRAMでも動くんだ。
あと、Cを始めて2日の初心者でも理解できるぞ。
ついでに言えば、C++のない環境でも動く。
別に煽ってるわけじゃなくて、316で書いたように
柔軟性が高いということが言いたいだけなんだ。

シンプルなロジックであるが故の柔軟性
かつ、高い並列性がタスクの凄いとこなんだよな

325:名前は開発中のものです。
07/09/02 23:44:30 O3956k1d
>ただ、このソースは4KのRAMでも動くんだ。

おっと、タスク数を256にしていたか、4Kじゃ動かんなw
まあ、意図はわかると思うんで、適当に読み替えてくだちぃ

326:名前は開発中のものです。
07/09/03 00:13:38 OKOrcl0B
うーん、まあ好きなように作ってればいいと思うよ

327:名前は開発中のものです。
07/09/03 00:50:28 eAiA8cQA
>>324
数メガの RAM と C++ コンパイラのある環境で得意げに >>321 みたいな
コードを書かないでいてくれるなら文句は無い。

328:名前は開発中のものです。
07/09/03 01:11:08 tpNXAe5A
>326
いや、無論自分自身は好きに作ってる。
ただ、タスク=LIST管理とかなってきてて、
デザパタとか絡ませる風潮がなんとなくいやなんだ。
もちろん、そういった事を否定するわけじゃなくて、
もっとシンプルなものって事が言いたいだけだよ。


> 数メガの RAM と C++ コンパイラのある環境で得意げに >>321 みたいな
> コードを書かないでいてくれるなら文句は無い。

いや、得意気もなにも普通に組むよ。
無論システムとしては組まないけどね。

というか、逆に聞きたいんだけど、並列ではないシステムで(要するにシングル)で組んでて、
一時的に、並列的な挙動が欲しい時って、どうやって組んでるの?
まさか、システムに組み込ませるわけじゃないよね?

自分はそういったことが頻繁にあるんで、
そんな中での小技テクとして、上記のようなコードをチョコチョコつかってる。
逆に言うと、タスクなんてその程度のもの。
無論、システム化してべったりって好きだけど、その環境だけで組めるわけじゃないからね。


329:名前は開発中のものです。
07/09/03 01:35:46 eAiA8cQA
>>328 >>323

330:名前は開発中のものです。
07/09/03 01:47:58 OKOrcl0B
>というか、逆に聞きたいんだけど、並列ではないシステムで(要するにシングル)で組んでて、
>一時的に、並列的な挙動が欲しい時って、どうやって組んでるの?
まさしく>>323

331:名前は開発中のものです。
07/09/03 02:06:52 tpNXAe5A
>>329
なるほど、STLに行くのか。
て事は基本的な方向性(末端でタスク生成)は変わらないんだよね?

ちなみに自分がかかわったプロジェクトでは、STLはメモリの消費量と、
ガベコレを意識できないプログラマがいて、使えなかった。
厳密には使えたんだが、STLの類は、みんな使うとなったら、とことん使うので、
あっという間に使用量が膨れ上がって、パンクしたw。
(搭載メモリは16Mな)
別の件でSTLはおろか、Cの標準ライブラリすらない環境もあったので、
頼らない組み方が基準にはなった。
確かに、つかえりゃ楽なんだけど、
Window以外は、鬼門なことがままあるからなあ>STL

あと、新人に理解させる期間が必要という現実的な問題もあるしなw

ま、タスクの話からは若干それたが、
329の環境が、STLが使えるような環境を基準に出来れば、それはいいことだと思うよ。
こっちは中々難しいんで、小技テクでごまかして進むしかないけどw


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