1 名前:名前は開発中のものです。 [2007/03/12(月) 23:09:48 ID:8bV5Boxt] どうぞ
2 名前:名前は開発中のものです。 [2007/03/12(月) 23:11:13 ID:0dA4mIiS] 重複です。 【新人は】ゲーム業界人の実情を吐露するスレ【20♀】 ex21.2ch.net/test/read.cgi/ghard/1171817509/
3 名前:名前は開発中のものです。 mailto:sage [2007/03/13(火) 00:18:53 ID:GEtPEl1r] タスクシステムって基底クラス型ポインタに実オブジェクトを代入したらあかんの?
4 名前:名前は開発中のものです。 mailto:sage [2007/03/13(火) 01:05:48 ID:lSPAnQVN] 暇だったんで書いてみた。添削できる人がいたらよろしく。 タスク プロセス・スレッド・ファイバなど実行パスの総称。 この用語はシステムによって異なるものを指すため、動作システムを明らかに するか、「実行する何か」といった抽象的な意味でのみ使うことが推奨される。 古典タスク (別名: ファイバ/軽量スレッド/マイクロスレッド/ノンプリエンプティブスレッド) →ファイバの項を参照 ただし、ゲームのプロセス管理システムとして実装されたものは、コンテキストスイッチの他に 優先順位や実行順序のソートなど各種管理機能を備えたものが通常である。 擬似タスク (別名: 関数ポインタリスト) 関数ポインタ・クラス・(関数ポインタを持った)構造体などをリストで繋いだもの。 古典タスクの機能のうち個々のタスクをリストで繋ぐ部分のみを継承したものと思われる。 データ構造にツリーや配列などの変種がある。一部のゲームプログラマのローカル用語。 注: Winedows3.1等の擬似マルチタスクとは関数のリターンが必要なところは同じであるが、 コンテキストスイッチが伴わないところが異なるため、同じものとは言い難い。
5 名前:名前は開発中のものです。 mailto:sage [2007/03/13(火) 01:06:36 ID:lSPAnQVN] プロセス[Process] →ja.wikipedia.org/wiki/%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9 注: 組み込み業界ではプロセスをタスクと呼ぶ慣習がある。 ゲーム業界は組み込みに近いシステムから同時代のPC並のものまで主流なシステムが 増えたため、異なる方面のエンジニアが交じり合い用語の混乱を招いていると思われる。 スレッド[Thread] (別名: ライトウェイトプロセス/プリエンプティブスレッド) →ja.wikipedia.org/wiki/%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89_%28%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%29 ファイバ[Fiber] (別名: 古典タスク/軽量スレッド/マイクロスレッド/ノンプリエンプティブスレッド) 軽量スレッドとも呼ばれる。並列的な記述が可能だが、スレッドで必要な ロックが必要ない点がメリットである。コンテキストスイッチをOSではなく アプリケーションが明示的に行うスレッド。WindowsではCreateFiber()で作成できる。
6 名前:名前は開発中のものです。 mailto:sage [2007/03/13(火) 20:18:34 ID:oceFcbYg] コルーチンってやつだよね>ファイバ スクリプト言語だと結構実装されてる。
7 名前:名前は開発中のものです。 mailto:sage [2007/03/14(水) 16:01:25 ID:r4GZS4Co] 最近はどうでもよくなってきたな、この辺の話。 どんな方法でやっても絶対どっかで引っかかって、 工数もバグの数も実行性能も結局一緒になるんだよ。 タスク、というかゲームオブジェクト管理周辺って永遠に何か気持ち悪いままなんじゃね。 自分のゲームは薄氷の上で踊ってるようにしか見えんし、 他人のゲームは堅牢に動いてるように見える。そのギャップはたぶん埋まらない。むかつくけど。
8 名前:名前は開発中のものです。 [2007/03/15(木) 10:57:04 ID:PMeVIICQ] 一応、タスク関連ということで、脱タスクな話もいいよね? 実は、最近、タスクは古いかな?という気がして、 今は、ABAさんのソース参考にして書いてる。 Titanion www.asahi-net.or.jp/~cs8k-cyu/windows/ttn.html 昔から、ABA氏のソースは、追っているんだけど、大分洗練されていて面白い。 ・敵、弾、パーティクルなどのActorがあり、タスクの代わりに、それぞれのリストを持つ ・これらのリストはいわゆるオブジェクトプールで、あらかじめ(敵なら敵の)インスタンスを生成しておくもの ・様々な行動パターン(仕様Spec)などは、個別にActorに割り当てられるようになっている。 例えば パーティクルActor + 四角いパーティクルSpec パーティクルActor + 線形のパーティクルSpec みたいな感じ。 ・Actor自身は、あまり情報を持っておらず、状態は、Stateオブジェクトに放り込む 別にこれはやらんでもいい気がするけど・・・ Actor自身においてもいいんじゃないの?という気がする
9 名前:名前は開発中のものです。 [2007/03/15(木) 11:02:03 ID:PMeVIICQ] 追記 ・実際の動きや、描画は、Actorに随時割り当てられた、Specが担当する パーティクルActor + 四角いパーティクルSpec なら、四角く描画 パーティクルActor + 線形のパーティクルSpec なら、ラインで描画 といったように 欠点としてはだな。 ・Stateは、複数のSpecで共通なので状態は、融通が利かない。 例えば、 パーティクルActor + 四角いパーティクルSpec と パーティクルActor + 線形のパーティクルSpec とで、 (というか、パーティクルActorに関連するSpecすべて) Stateが共通なので、メンバなんかが煩雑に増えている そこで、往年の方々なら、タスクシステムよろしく、ワーク領域用意して、 StateをSpecごとに無理やり定義とかやるんでしょうけど、 遭えてやってない感じ。(ABA氏はけっこう古くからいる人のはずなので)
10 名前:名前は開発中のものです。 [2007/03/15(木) 11:04:26 ID:PMeVIICQ] ABA氏のゲームは、基本的にゲーム中にメモリの再確保はしない方向になってて、 逆を言えば、初期化時ならば、オブジェクトの生成はバンバンやってます。 それがわかれば、ソースは読みやすいし、理解し易い思います。
11 名前:名前は開発中のものです。 mailto:sage [2007/03/15(木) 15:40:53 ID:b1+VxKry] 最初に確保してあとは使いまわしという事は リソースプール見たいな感じなのかな
12 名前:名前は開発中のものです。 mailto:sage [2007/03/15(木) 18:57:37 ID:4gWi6T6s] 脱タスクとか、タスクは古いかな、とかもうね。チラ裏じゃん。 僕の肛門も閉鎖しそうです並みの俺ニュースだろ。 まず俺定義・俺解釈・俺実装の「タスク」について補足説明しろ。 脱だの古いだの閉鎖しそうですだの言うのはそれからだ。
13 名前:名前は開発中のものです。 [2007/03/15(木) 19:16:14 ID:VzhOi8YW] まあ、そもそも、関連リンクもなしに>>1 がスレ立てたのが悪いのだが……。 White Paper - Programming homepage3.nifty.com/moha/programming.html タスクシステム www5f.biglobe.ne.jp/~kenmo/program/task/task.html CodeZine:本格的なシューティングゲームを実現するタスクシステム(タスクシステム,シューティング,ゲーム) codezine.jp/a/article.aspx?aid=297 いまどきのタスクシステムの実装 omoikane.my-sv.net/gcss/tasksystem/index.php ゲーム・ノ・シクミ 第11回 C++によるタスクシステムの実現 今は無き C MAGAZINE 2006年1月号 www.cmagazine.jp/contents/200601.html 「処理関数へのポインタ付きワーク構造体の連結リスト」ってのがしっくりくる
14 名前:名前は開発中のものです。 mailto:sage [2007/03/15(木) 21:06:26 ID:ZqsnR0zJ] Javaでやろうとして挫折した。 ワーク構造体とそれをメンバとしてアタッチするラップクラスを作ったんだが あまりにも気持ち悪くてそこでやめてしまった。 タスクシステムはCで書くから美しく見えるんじゃないかと思ってしまう。
15 名前:名前は開発中のものです。 mailto:sage [2007/03/15(木) 21:26:14 ID:EXzxsrWu] JAVAってまともな構造体あったっけ?
16 名前:名前は開発中のものです。 mailto:sage [2007/03/15(木) 22:02:28 ID:qutq4pqL] Javaならインターフェイスとコレクション使えばすぐできるだろ。 ちなみにフレームレートとかは無視する方向で。
17 名前:名前は開発中のものです。 mailto:sage [2007/03/15(木) 22:05:34 ID:yIBWThbm] >>14 それは設計が悪いだけ。 ワーク構造体なんか作らなくても、 タスクインターフェースを実装した具体クラスに 好きな変数ガンガンぶち込めば済む。
18 名前:名前は開発中のものです。 mailto:sage [2007/03/15(木) 22:13:03 ID:ZqsnR0zJ] >>15 ByteBufferってクラス使えば共用体っぽく使えるよ。 ベースはchar配列だけどね。 >>16 , 17 極力オブジェクトプールしてくのがタスクシステムじゃなくて?
19 名前:名前は開発中のものです。 mailto:sage [2007/03/15(木) 22:25:27 ID:yIBWThbm] 別に>>16 や>>17 の方法でもプールできると思うんだが…。
20 名前:名前は開発中のものです。 [2007/03/15(木) 22:37:01 ID:PMeVIICQ] >>17 kwsk 動的生成するのかな?
21 名前:名前は開発中のものです。 mailto:sage [2007/03/15(木) 22:54:30 ID: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 名前:名前は開発中のものです。 mailto:sage [2007/03/15(木) 22:58:37 ID:XmQLFBDw] ワークメモリを分割して使うようなやり方は、高級アセンブラたるC言語ならではといっても良いと思う。 C++ですらそのやり方は馴染まない。ましてや、Javaともなると、メモリ管理を極力隠匿してGCで 自動化しているわけで、それをわざわざ迂回しようとしてるのが>18なんだが、わかってる? 慣れたやり方でやろうとしてしまうのはわかるけども、もう少しオブジェクト指向とか勉強して欲しいとちょっと思った。
23 名前:名前は開発中のものです。 mailto:sage [2007/03/15(木) 23:00:47 ID:b1+VxKry] オブジェクト指向というか言語仕様というか
24 名前:名前は開発中のものです。 mailto:sage [2007/03/15(木) 23:09:07 ID:ZqsnR0zJ] それが気持ち悪いからまっさきに避けたんだが、平行線っぽいから議論はやめとく。
25 名前:名前は開発中のものです。 mailto:sage [2007/03/15(木) 23:11:29 ID:yIBWThbm] >>22 そもそもタスクシステム自体は 全然オブジェクト指向ではないし、 なぜその文脈でオブジェクト指向が出てくるのか。
26 名前:名前は開発中のものです。 [2007/03/15(木) 23:16:11 ID:PMeVIICQ] >>21 あー、やっぱりそれか・・・。 interfaceないころから、俺は、それでやってた。Javaでないけど。 問題は、メンバが変わるような場合なんですよ。 タスクシステムってのは、実行時に、頻繁にメモリ確保しないのが前提だと思うのですが、 >>21 のだと、動的にオブジェクト生成しないといけんよなあ。 まあ、いまどきなら、それでもいいんだけど・・・。 プール使うのは、パーティクルぐらいでも十分の最近の現実。
27 名前:名前は開発中のものです。 mailto:sage [2007/03/15(木) 23:26:21 ID:yIBWThbm] >>26 >>21 の場合でEnemyが頻繁に出入りするような場合は new Enemyで生成するのではなく、 Enemyを管理するEnemyFactoryクラスを作って そいつからEnemyを引っ張ってくるようにすればいいだけ。 あなたが>>8 で言っているActorのリストみたいなものを EnemyFactoryに持たせればいい。
28 名前:名前は開発中のものです。 mailto:sage [2007/03/15(木) 23:33:05 ID:XmQLFBDw] >>24 御意。 >>25 >そもそもタスクシステム自体は全然オブジェクト指向ではないし、 >なぜその文脈でオブジェクト指向が出てくるのか。 プロセスやスレッドだってオブジェクト指向じゃないけど、クラスとして実装されている。 Javaというオブジェクト指向言語上でタスクと同じ役割をするもの(大抵クラスだろう)を 実装するなら、オブジェクト指向からやらないと、オブジェクト指向言語と処理系が やっていることを理解できないんじゃないかな。
29 名前:名前は開発中のものです。 mailto:sage [2007/03/15(木) 23:40:22 ID:EXzxsrWu] >>21 その書き方だとたしかにJAVAらしいなあ。 ただ、そうすると、最初にワークスペースを全てのタスクで用意して、というやり方と違って タスクをアクティブにするときメモリを動的に確保しに行く、ってせざるを得ないのかな?
30 名前:名前は開発中のものです。 [2007/03/16(金) 00:00:01 ID:wlk+IDOq] >>27 Factoryに、敵別にプールつくって、あらかじめ生成しておいて、 そっからひっぱってくる感じ? 出現する敵の最大数をあらかじめ指定しておいて、 最初に敵出る分全部、生成しておくんかな?ステージのはじめとかに。 敵Aと敵Bが最大10体づつ出る場合、 敵Aのプール10体分と、敵Bのプール10体分とをあらかじめ生成しておくんかいな?
31 名前:名前は開発中のものです。 mailto:sage [2007/03/16(金) 00:00:39 ID:yIBWThbm] >>28 あなたが言っているのはカプセル化やクラス設計の話であって、 オブジェクト指向の話ではない気がする。 タスクシステムの構造自体がオブジェクト同士の通信などを 不自然なものにする要員になっていると思うんだよね…。まあこの話はいいや。 >>29 >>27 読んでけれ
32 名前:名前は開発中のものです。 mailto:sage [2007/03/16(金) 00:15:46 ID:4Zw2Xard] >>30 最大数分を耳を揃えてきっちり用意する必要は必ずしもない。 以下、例えばの流れ。 準備段階。EnemyFactoryのプール容量は5でまだ空。 ↓ 敵を4体くれという指令が来る。プールが空なので、慌てて4体newして渡す。 ↓ 敵の出番が終わる。EnemyFactoryが責任を持ってEnemyを回収。プールに4体入る。 ↓ 敵を3体くれという指令が来る。プールから3体分引っ張り出して、 メンバ変数を適切に設定し直して渡す。 ↓ 敵を3体くれという指令がまた来る。プールから残りの1体を取り出して渡す。 2体分足りないので仕方なくnewする。 ↓ 敵6体の出番が終わる。5体回収し、1体はプールに入らないので捨てた。 こんな感じで合計10体が画面に現れる場合だと、 回収して使い回したのでnewしたのは6体分だけで済む。
33 名前:名前は開発中のものです。 [2007/03/16(金) 00:22:25 ID:wlk+IDOq] >>32 なるほど・・・ 完全に動的確保は拒否するわけではなく、 あくまで、メモリ確保を最小限にする方向なのね キャッシュみたいなものか
34 名前:名前は開発中のものです。 mailto:sage [2007/03/16(金) 00:26:50 ID:xvDGcZpT] メインループの中でLazy initializationさせるってありえないんだが・・・
35 名前:名前は開発中のものです。 mailto:sage [2007/03/16(金) 00:43:11 ID:h9V7zR2G] そうか? メモリ確保は重くないだろうし、オブジェクトの初期化処理が重いと感じるのか?
36 名前:名前は開発中のものです。 mailto:sage [2007/03/16(金) 00:47:28 ID:4Zw2Xard] >34 >>32 は一通りの動作(不足と超過)を示す例としてわざとこうしただけ。 実際はプールが不足しない程度に容量を増やすし、 メインループに入る前にプールは満たしておく。 プールから引っ張り出してメンバ変数を設定し直すことも含めて Lazy initializationだと言っているのならば、さすがに気にしすぎだと思うが。 っていうか色々工夫したところで更新処理よりも描画処理の方が格段に重いから困る。
37 名前:名前は開発中のものです。 [2007/03/16(金) 01:18:43 ID:wlk+IDOq] > っていうか色々工夫したところで更新処理よりも描画処理の方が格段に重いから困る。 まあ、そうなんだよなあ・・・。 超絶弾幕シューティングでもないかぎり、 重いのは3D処理だったり当たり判定だったり・・・
38 名前:29 mailto:sage [2007/03/16(金) 01:29:18 ID:ZxwtzxVV] >>31 つーことは、同時に出現する敵の数は、そのEnemyFactoryの初期化時に生成する Enemyのインスタンスの数までという制限があるという認識でおk? 古典的つーか、ワークスペースを確保してタスクごとにワークスペースの分割方法を変える場合は、 敵の最大数は、タスクの最大数に近くなるはずなんだけど、そこらへんに対してウィークポイントになるのかな? いや、もちろん、>>21 の場合、JAVAのオブジェクト指向に則った書き方なので、メモリ周りでバグが出にくいというのは理解している。
39 名前:32 mailto:sage [2007/03/16(金) 01:31:03 ID:ZxwtzxVV] あ、>>30 で割と答えが出てたね、失礼。
40 名前:39 mailto:sage [2007/03/16(金) 01:32:59 ID:ZxwtzxVV] ごめんdでもない書き間違いしたorz >>39 は、>>32 じゃなくて>>29 で、 答えがでたのが>>32 だった。 一昨日妹が死んでまだ慌ててるのかなあ。
41 名前:名前は開発中のものです。 mailto:sage [2007/03/16(金) 01:55:58 ID:xob5GmNS] インスタンス変数初めからプールしちゃうとライフサイクル伸びて じじい世代発見!→フルGC承認!!→光になれー!! って重量GCシナリオが見えるんだが・・・ 俺どこか間違えてる?
42 名前:名前は開発中のものです。 mailto:sage [2007/03/16(金) 06:47:08 ID:RmBov5WG] ×じじい世代発見!→フルGC承認!!→光になれー!! ○じじい世代が世界に溢れる!→フルGC承認!!→光になれー!! ・初期化時に生成してプール→OLD領域に移動(使い回され領域は無駄にならない) ・短寿命のインスタンスを頻繁に生成→Eden領域がすぐに満杯になる→頻繁にGC発生 →From・Toが短寿命のインスタンスで溢れる→長寿命でない物もOLD領域に押し込まれる →OLD領域が不足→フルGC承認!!→光になれー!! (チューニングしてEden領域を大きくして(New領域を大きくして)、MaxTenuringThreshholdを増やせばFullGCは起きにくくなるか? Javaには詳しくないから、嘘書いてたらエロイ人突っ込みヨロシク
43 名前:名前は開発中のものです。 mailto:sage [2007/03/17(土) 00:02:48 ID:ZM3wMuqd] >>41 殿堂入りしたオブジェクトがゲーム終了まで参照を持つのに何故フルGCが起きる? キャッシュさせたいインスタンスはさっさと殿堂入りさせる。 そしてキャッシュしないと決めたインスタンスは短いスパンで確実に使い捨てする。 フルGCを起こさせないための基本的なリソース管理だよ。 FPSを意識するゲームであるなら、ピーク時に的を絞ればいいだけだから簡単だよ。
44 名前:名前は開発中のものです。 mailto:sage [2007/03/18(日) 13:30:17 ID:opYiOvzt] ゲームにおけるデータ構造・クラス設計・パターン pc11.2ch.net/test/read.cgi/gamedev/1155209226/ 話題的に上記のスレが適当だと思う。 っていうかタスクシステム単体で語るようなことが思い浮かばない。
45 名前:名前は開発中のものです。 [2007/03/21(水) 19:40:49 ID:v8Vhdcv6] トラックバック:pc11.2ch.net/test/read.cgi/gamedev/1155209226/
46 名前:名前は開発中のものです。 [2007/03/23(金) 12:53:45 ID:28C6AFOi] 敵といってもたくさん種類いるし 敵以外にも色んなタスクがある場合、それぞれ個別にプールしとけってのか?
47 名前:名前は開発中のものです。 mailto:sage [2007/03/23(金) 13:23:37 ID:vxAgs8Dc] >>46 そんなのは場合によるだろ。 ただ、たくさん種類がいるからめんどくせーって理由だけで プーリングを放棄するのはただの怠け者。
48 名前:名前は開発中のものです。 mailto:sage [2007/03/23(金) 20:59:09 ID:V2teaCuf] >>46 俺もそれ悩んだことがある。 で、悩んだ結果オブジェクトのプーリングはやめてnew/deleteを乗っ取って 自分でフリーリストを実装することにした。(キャッシュするものを一段低レベルな ところに持っていくってことね。) C++の話でJavaでできるかは知らん。 ただ、敵が何体以上は出ないってゲームも割と当たり前なんで、プーリングの 数をハードコーディングしてしまっても別にいいとも思う。
49 名前:名前は開発中のものです。 mailto:sage [2007/03/23(金) 21:08:45 ID:ZM8fpxF3] new/delete 置き換えてできることなんて、大抵はデフォルトの実装でも 同じことやってるんじゃないの? 明確なボトルネックを見つける前から独自のメモリ管理を追加するのは 面倒なバグの元になるだけで終わる可能性がある。 もうちょっとコンパイラ(ライブラリ)実装者を信用してもいいんじゃないかと思う。
50 名前:名前は開発中のものです。 mailto:sage [2007/03/23(金) 21:36:19 ID:V2teaCuf] >>49 > new/delete 置き換えてできることなんて、大抵はデフォルトの実装でも > 同じことやってるんじゃないの? フリーリスト自体はCRT内にもあるものだし、汎用の用途ならdlmallocが最強(?)かも しれないけど、例えば確保のサイズが大部分固定だったり、確保開放のパターンが FIFO的だったりとか文脈に依存したパターンを見つけることで、もっと高速にする余地が あるんだ。 > 明確なボトルネックを見つける前から独自のメモリ管理を追加するのは > 面倒なバグの元になるだけで終わる可能性がある。 > もうちょっとコンパイラ(ライブラリ)実装者を信用してもいいんじゃないかと思う。 これは至極もっともだ。俺も自分でなんでも作りすぎるのはちょっと悪い癖だと思ってる。
51 名前:名前は開発中のものです。 mailto:sage [2007/03/23(金) 21:57:58 ID:P2V386bO] ある程度組み終わった後でも使用するアロケータを楽に変更できるように 組むことなんて可能なのかいな?
52 名前:名前は開発中のものです。 mailto:sage [2007/03/23(金) 22:32:14 ID:V2teaCuf] >>51 アロケータをオブジェクトにして種類別に派生させる。 生成部分を取り替えられるようにするって意味で、デザパタでいうところのアブストラクトファクトリに近いかな。
53 名前:名前は開発中のものです。 mailto:sage [2007/03/23(金) 22:53:52 ID:vxAgs8Dc] メモリ確保方法によらず、常に同じ記述で オブジェクトの生成・破棄が行えると楽だな。 オブジェクト毎にメモリ確保方法が異なっていて、 さらに生成・破棄手順が違うとかだと悲惨だ。 自前でメモリ確保機構を作りたいって人は、 通常のnew、boostのobject_pool、LokiのSmallObj、 Efficient C++のMemoryPoolのソースを全部見てからにした方がいい。 大抵はこいつらで事足りる。 個人的に、boostのobject_poolが最強だと思う。
54 名前:名前は開発中のものです。 mailto:sage [2007/03/24(土) 00:17:00 ID:OuD128ry] 自分で作ると最速のコードに出来ることがあっても 準標準級のライブラリに似たようなのがあれば作らないってのも勇気だわね
55 名前:名前は開発中のものです。 mailto:sage [2007/03/24(土) 00:46:35 ID:SQuGfhfH] >>50 > しれないけど、例えば確保のサイズが大部分固定だったり、確保開放のパターンが > FIFO的だったりとか文脈に依存したパターンを見つけることで、もっと高速にする余地が operator new にはサイズしか渡されないし operator delete にはポインタひとつしか 渡されないので、そういう文脈に依存した処理を組み込むのは難しい。 「new/delete 置き換えてできること」と限定したのはそういう意味だったんだが。
56 名前:名前は開発中のものです。 mailto:sage [2007/03/24(土) 01:18:26 ID:8HwaAyp8] >>55 > operator new にはサイズしか渡されないし operator delete にはポインタひとつしか > 渡されないので、そういう文脈に依存した処理を組み込むのは難しい。 > 「new/delete 置き換えてできること」と限定したのはそういう意味だったんだが。 俺が>49で言ってた「乗っ取って」というのは字面通りの単純な置換って意味じゃなくて 生成機構を変更するって意味なので、まぁ、ほんとに置換しかやらないのなら、 そうですね、としか。 というか、オブジェクトプールがどうこうって流れだったんだからその辺は変更できるってのが 前提じゃないの?
57 名前:名前は開発中のものです。 mailto:sage [2007/03/24(土) 01:21:37 ID:8HwaAyp8] アンカーミスった。>49じゃなくて>48っすね。
58 名前:名前は開発中のものです。 mailto:sage [2007/03/24(土) 02:30:22 ID:oJPw3lLB] お前らはplacement newを知らないのか?
59 名前:名前は開発中のものです。 mailto:sage [2007/03/24(土) 05:25:57 ID:SQuGfhfH] >>56 グローバル opeartor new/delete の置き換えと勘違いしてたみたい。ごめんよ。
60 名前:名前は開発中のものです。 mailto:sage [2007/03/24(土) 05:27:06 ID:SQuGfhfH] >>58 知ってるけど、この流れでは当たり前というか関係ないというか、どうでもいい。
61 名前:名前は開発中のものです。 mailto:sage [2007/03/26(月) 22:37:04 ID:sS1yrghH] タスカー様を復活させるのだ
62 名前:名前は開発中のものです。 mailto:sage [2007/03/26(月) 23:35:38 ID:15IZtZoB] タスク・オム
63 名前:名前は開発中のものです。 mailto:sage [2007/04/02(月) 00:01:32 ID:xHA5oFU3] タスケテシステムとスレタイ読み違えた
64 名前:名前は開発中のものです。 mailto:sage [2007/04/02(月) 22:36:55 ID:rjkFdofu] いや、実は読み違えていない。スレ主が書き間違えてるんだ。
65 名前:名前は開発中のものです。 mailto:sage [2007/04/02(月) 22:55:04 ID:QJ3NujtS] 誰かボスケテシステムスレも建ててよ
66 名前:名前は開発中のものです。 mailto:sage [2007/04/10(火) 21:51:55 ID:DVQJ95h4] Javaでタスクシステムをつくるとき、 各タスクに描画させるのか?(敵のタスクならその機体の描画とか。) それともタスクは座標だけupdateして、別にTimerとかでPanelをrepaintさせるのか?
67 名前:名前は開発中のものです。 [2007/04/11(水) 08:50:01 ID:0dv8Cb9u] >>66 ちらつく。 ダブルバファリングしても無理。
68 名前:名前は開発中のものです。 mailto:sage [2007/04/11(水) 09:13:43 ID:J3mbPVHZ] LWJGL使えよ
69 名前:名前は開発中のものです。 [2007/04/11(水) 21:16:36 ID:S5YhMrov] スプライトシステムか。
70 名前:名前は開発中のものです。 [2007/04/11(水) 23:21:45 ID:S5YhMrov] YaneuraoGameSDK.NETのタスクシステムってどうよ。 yanesdkdotnet.sourceforge.jp/wiki/index.php?FrontPage こういうののJava版とかないかね?
71 名前:名前は開発中のものです。 mailto:sage [2007/04/11(水) 23:58:37 ID:qhNv6z5v] 至って普通。フレームワークにするまでもないというか、使い方覚えるほうが面倒くさくね?というか。 でも、やね氏の作るものは氏が飽きたらそれまでなので今ならXNAでも使っといたほうがいいんじゃないかな。
72 名前:名前は開発中のものです。 [2007/04/12(木) 09:21:05 ID:gzUpXrks] 「シューティングゲームマニアックス」にタスクシステム結構詳しく載ってて、構造体キャスト使ってたけど、結構きつい様な気もする どうなんだろう
73 名前:名前は開発中のものです。 mailto:sage [2007/04/12(木) 20:30:27 ID:mQKUb85m] Javaの場合だとひとつのGraphics2Dをコンテキストとするから タスクが描くってよりも、フレームワークが取り込むって形になりそう
74 名前:名前は開発中のものです。 [2007/04/14(土) 17:35:53 ID:F0D9RwXy] 統合開発環境やデバッガとの連携を全く考慮していない 聳え立つ糞のようなタスクシステムをしこしこ作ってる 孤独なオナニープログラマ諸君。 デバッグの容易さとか、保守のしやすさを考えて作ってますか?
75 名前:名前は開発中のものです。 mailto:sage [2007/04/14(土) 17:53:16 ID:3N17piRe] >>74 あたりまえじゃん
76 名前:名前は開発中のものです。 mailto:sage [2007/04/14(土) 18:33:42 ID:tHggo9K5] >>74 君はそんなものしか作れなかったのかな? それはタスクシステムが悪いんじゃなくて、 君のセンスがないだけだから心配することないよ!
77 名前:名前は開発中のものです。 mailto:sage [2007/04/14(土) 18:56:15 ID:KurcdpHU] そういや、今は亡きCマガにトンデモなタスクシステム紹介記事があったが あれが出た辺りからタスクシステムというキーワードがすっかり香ばしくなったな。 今では>>13 のリンク先の通り、厨房技術用語としての地位は不動のものだな。
78 名前:名前は開発中のものです。 mailto:sage [2007/04/14(土) 20:10:39 ID:KVgw3R/b] Cマガの記事を書いたライターはおそらく、つか間違いなくド素人。 当時ウェブ上に転がってた情報を拾い集めて書いただけの内容だった。 Logician何とかというサイトの記述漏れや記述ミス(というか独自解釈か) をご丁寧に全て継承していた。 ウェブ上で都市伝説のように紹介されていたものをまんま丸写しして 「いまどきwのプロが使うゲーム開発の秘技」みたいに神格化して 紙媒体を使って流布したおかげで、言葉だけが一人歩きを始めた。 実装方法は千差万別のローカル用語なのにね。
79 名前:名前は開発中のものです。 mailto:sage [2007/04/14(土) 20:19:46 ID:g5jEBpoC] フレームワークみたいなもんだろ。 使えるというのは自前の実装で言ってるから判るんだが 使えないというのは自前の実装がへぼいと宣伝してるのかね。 それともあまりにもひどい実装を見たのだろうか。
80 名前:名前は開発中のものです。 mailto:sage [2007/04/15(日) 02:36:38 ID:0Q+hD2uu] タスクシステムに限らず、こういうフレームワーク的なものは 利点や欠点を見極めた上で採用不採用を決定するのが当然なわけだけど、 それを怠って何でもタスクシステムにすりゃいいと思っている 初心者が絶賛大量量産中だから困る。 そういう馬鹿どもが勝手に困る分には全く構わないが、 blogで上級者ぶって布教活動をしたり、 頓珍漢な質問をして場を混乱させたりするのは勘弁してくれ。
81 名前:名前は開発中のものです。 mailto:sage [2007/04/15(日) 02:43:26 ID:KRgQ3nwE] 使えるというのは自前の実装で言ってるから判るんだが 使えないというのは自前の実装がへぼいと宣伝してるのかね?
82 名前:名前は開発中のものです。 mailto:sage [2007/04/15(日) 03:12:12 ID:vOubHFUU] >>81 まあ、そうなんだろう。 結局タスクシステムにしたってオブジェクト指向にしたって、理解できなかった奴が否定しているんだしね。
83 名前:名前は開発中のものです。 mailto:sage [2007/04/15(日) 03:38:07 ID:ib4ZSVvj] タスクシステムやオブジェクト指向よりも ちょっと前のレスをわざわざコピペした>>81 の真意が理解できません><
84 名前:名前は開発中のものです。 mailto:sage [2007/04/15(日) 04:14:42 ID:xBb5xlIW] ヒント:自作自演
85 名前:名前は開発中のものです。 mailto:sage [2007/04/15(日) 04:28:01 ID:vOubHFUU] そういや、単発IDが連続してるなここ
86 名前:名前は開発中のものです。 mailto:sage [2007/04/15(日) 04:39:19 ID:W1PnAJQl] 同一ID:配列 単発ID:リスト→このスレで言うところのタスクシステム。 うむ、スレ違いじゃない。問題無い
87 名前:名前は開発中のものです。 mailto:sage [2007/04/15(日) 04:47:32 ID:0Q+hD2uu] >>86 の例えが理解できる人、解説プリーズ
88 名前:名前は開発中のものです。 mailto:sage [2007/04/15(日) 04:59:44 ID:KRgQ3nwE] 日付が変わってID変わっただけだアホ。
89 名前:名前は開発中のものです。 mailto:sage [2007/04/15(日) 05:00:52 ID:W1PnAJQl] まぁまぁ、隔離スレで熱くなるなよ。
90 名前:名前は開発中のものです。 mailto:OOもタスクシステムも御神託だね [2007/04/15(日) 05:45:42 ID:5XtjNBFQ] 82 : 「●●を正しく理解しない者が●●を否定するのだ。」 ( ^??^?)… ●●を魔法か何かと勘違いして布教する厨房が否定されてるだけだろ。 タスクシステムの定義もOOと同様に抽象的なものでしかないわけだが カビの生えた糞実装(しかも驚くほど似たものばかりが蔓延している)付きで 布教する厨房が頑張ってくれたおかげで、いつの間にかその糞実装込みで タスクシステムという言葉が定義付けられてしまった感があるな。
91 名前:名前は開発中のものです。 mailto:sage [2007/04/15(日) 07:11:04 ID:3dsdfwPB] 同列に語るならデザインパターンとだろう。
92 名前:名前は開発中のものです。 mailto:sage [2007/04/15(日) 07:21:05 ID:5XtjNBFQ] 例えばだけどさ 複数の有限状態機械の相互作用・状態遷移を時間刻み冲の数値積分などで 逐次計算していく(時間発展させる)仕掛けになっていれば、皆タスクシステム としての体を成してるんじゃないか? >>13 のリンク先の連中は、言っちゃ悪いが頭の引き出しが少ないんじゃないかな。 一般化して説明できるはずのものを遠まわしに分かりづらく説明してしまってるね。 結果、頭の引き出しが少ない視野偏狭な読者は、タスクシステムをゲーム業界固有の ハイパーテクノロジーであるかのように錯覚する。>>13 のリンク先を聖経のように 有難がってる趣味プログラマの人はもう少し見識を広めたほうがいいよ。
93 名前:名前は開発中のものです。 mailto:sage [2007/04/15(日) 11:33:45 ID:vOubHFUU] >>90 だから、おまいさんがタスクシステムを理解しているというのなら、 何が糞実装なのか教えてくれよせっかくだからさ。 後学のために俺も知りたい。
94 名前:名前は開発中のものです。 [2007/04/15(日) 12:09:21 ID:bzLlTmPF] >>93 それは俺もしりたい。 上では、糞実装っというより、方言があるものを統一の定番のものように見せているのを 怒っているようにも思うけど。
95 名前:名前は開発中のものです。 mailto:sage [2007/04/15(日) 12:59:53 ID:vOubHFUU] >>94 そうかもねえ。 とにかく、具体的なことを、ID:5XtjNBFQが一切書かないおかげで、 なんか偉そうなことを長文で言っているように見えるけど、 実際に何を言いたいのか訳わからんし。
96 名前:名前は開発中のものです。 mailto:sage [2007/04/15(日) 15:01:20 ID:+CRNM9AG] >>82 みたいなレスをする奴が何を叫んでも まともに相手にされないだけだと思うが
97 名前:名前は開発中のものです。 mailto:sage [2007/04/15(日) 15:07:19 ID:vOubHFUU] はいはい あいかわらず具体的な話が全く出てこなくなったなここは
98 名前:名前は開発中のものです。 mailto:sage [2007/04/15(日) 16:27:50 ID:I+ZXuliP] 他人を否定したい。 でも具体的な話をすると自分が否定されるから絶対出来ない。 人間とはそういうもの。
99 名前:名前は開発中のものです。 mailto:sage [2007/04/15(日) 16:35:35 ID:5XtjNBFQ] ∧,,∧ (・∀ ・) < はいはい、あいかわらず具体的な話が . ノ( )ヽ 全く出てこなくなったなここは。わろすわろすw < > pc11.2ch.net/test/read.cgi/gamedev/1173708588/82n pc11.2ch.net/test/read.cgi/gamedev/1173708588/85n pc11.2ch.net/test/read.cgi/gamedev/1173708588/93n pc11.2ch.net/test/read.cgi/gamedev/1173708588/95n pc11.2ch.net/test/read.cgi/gamedev/1173708588/97n ●理解できなかった奴が否定しているんだ ●偉そうなことを言っているように見える ●実際に何を言いたいのか訳わからん ズコー ヽ(・ω・)/ \(.\ ノ
100 名前:名前は開発中のものです。 mailto:sage [2007/04/15(日) 16:45:56 ID:vOubHFUU] ID:5XtjNBFQ は、相変わらず顔真っ赤にして必死だなあw 早くどういう実装が糞実装なのか教えてよwww
101 名前:名前は開発中のものです。 mailto:sage [2007/04/15(日) 19:44:58 ID:n9DKuG7P] >>90 >>92 暇だからググってみたけど、関数アドレス+汎用ワークのリンクリストという 環境(ゲーム)依存のひとつの手段に過ぎなかったものを、やたら例として あげたがる所が多いみたいね。ちょっと意外だったわ。ネット文化なのかね。 これ、情報(都市伝説)の出所を辿れば同じところに行き着くんじゃないの。
102 名前:名前は開発中のものです。 mailto:sage [2007/04/15(日) 20:39:48 ID:n9DKuG7P] タスクシステムはゲームを駆動させるコア部分=ゲームエンジンなんだから Quake系あたりの有名どころのオープンソースなゲームエンジンの実装を 引き合いに出して解説すればいいのに、ネット上で「タスクシステム」と 名の付く解説文って何故かそういうことはしないんだよね。単に別物だと 勘違いしてるのか、アーケードゲーム創成期の懐古趣味者だからなのか アンテナ張れてない脳味噌コチコチのフェードアウトおやじだからなのか 酸素欠乏症に陥ったテム・レイだからなのか。
103 名前:名前は開発中のものです。 mailto:sage [2007/04/15(日) 21:47:11 ID:PxGC7SLd] オブジェクト指向やデザパタの説明するのに、 有名オープンソースアプリを引き合いにしないのと一緒ってことじゃない?
104 名前:名前は開発中のものです。 mailto:sage [2007/04/15(日) 21:51:00 ID:/fPrY/bJ] 確かに、タスクシステムと他のゲームエンジンを比較する記事は 全く目にしないな。タスクシステムを解説するサイトのほとんどが ゲームエンジンという概念を持たない奴を対象としているみたいだから、 仕方の無いことだとは思う。 問題なのは、解説者自身が、解説の対象となる連中と さほどレベルが変わらないということ。
105 名前:名前は開発中のものです。 mailto:sage [2007/04/15(日) 22:03:11 ID:TiBHGm8x] >>102 おまえはコンパイラの仕組みを解説するのにいちいちgccのソースを持ち出すのか?
106 名前:名前は開発中のものです。 mailto:sage [2007/04/15(日) 22:05:22 ID:/fPrY/bJ] >>103 お前はオープンソースって単語につられすぎ。 タスクシステムと他のゲームエンジンって組み合わせなんだから、 オブジェクト指向の対となるのは構造化プログラミングとか アスペクト指向とかだろ。
107 名前:名前は開発中のものです。 mailto:sage [2007/04/15(日) 22:13:00 ID:PxGC7SLd] >>106 ??? 誰かエスパーの人翻訳ぷりーず
108 名前:名前は開発中のものです。 mailto:sage [2007/04/15(日) 22:37:34 ID:BFtC8cga] うちでもタスクシステムという用語自体は 今でもゲームエンジンとほぼ同義で使ってるな。 キャラクタのオブジェクトのことをタスクと呼んだり ユニットと呼んだりエンティティと呼んだりするのと 同じで、他所では意味合いはすこし違うかもだが。 ま、所詮はローカル用語だな。 確固たる経典があるわけでもなく無理矢理普及 させようとしても都市伝説化するのが関の山だろ。 大人しくゲームエンジンとでも呼んどけってこった。 >>92 >複数の有限状態機械の相互作用・状態遷移を時間刻み冲の数値積分などで >逐次計算していく(時間発展させる)仕掛け 共通の定義を模索していくとそんな感じになるかな。 仮想空間内に配置したエンティティを時間ステップ毎に 駆動させたり、エンティティ同士の情報のやりとりを仲介したり。 ゲームエンジンは自己駆動粒子系のシミュレータの一種だね。
109 名前:名前は開発中のものです。 mailto:sage [2007/04/15(日) 23:49:58 ID:oEvaf3OR] ウェブ上で出回ってるタスクシステム講座はたしかに どれも一様に古臭いな。統制が取れた古臭さとでもいうか。 一線を退いて久しいオサーンが昔を懐かしむ人向けの 読み物と断わった上で公開してるページもあるみたいだが Code Zineの記事の中の子はガチで浦島太郎になってて ちょっとカワイソス。 彼には最新のUnrealのMOD開発用ゲームソースでも 読ませてやりたい。
110 名前:名前は開発中のものです。 mailto:sage [2007/04/16(月) 01:16:12 ID:W5lbbWwm] 主張・文体・時間帯・改行の癖・その他諸々を考慮して、 IDを隠して眺めてみると面白いな。 昨日19時からのログわ。
111 名前:名前は開発中のものです。 mailto:sage [2007/04/16(月) 01:27:08 ID:MDcwQB1m] のちのコナンである。
112 名前:名前は開発中のものです。 mailto:sage [2007/04/16(月) 01:59:47 ID:B1Dtb12v] タイガアドベンチャーだね
113 名前:名前は開発中のものです。 [2007/04/16(月) 02:25:04 ID:QiSCSZ7+] >>104 いや、ある意味、タスクシステム自体が、ゲームエンジンの一種なのでは?
114 名前:名前は開発中のものです。 mailto:sage [2007/04/16(月) 04:52:10 ID:I2bg0tSF] 19時からのログよりも>>79-100 の方が面白い。 何故か同じことを繰り返して言った>>79 >>81 。 2回目の方にレスをつける>>82 (ID:vOubHFUU)。 >>93 で再登場したID:g5jEBpoCに向けて 定期的に書き込まれる単発IDによる援護射撃。 そして、ID:g5jEBpoCがいない時間帯には 決して現われない上記のような面々。
115 名前:名前は開発中のものです。 mailto:sage [2007/04/16(月) 05:02:51 ID:I2bg0tSF] ID:g5jEBpoCじゃなくてID:vOubHFUUだったわ。 ってどうでもいいか。周りのスルー力を見習お。
116 名前:82 mailto:sage [2007/04/16(月) 11:01:09 ID:5cCE7ez3] え、全部俺の自作自演? そいつはすごいやw
117 名前:名前は開発中のものです。 mailto:sage [2007/04/16(月) 23:49:42 ID:vg95lefp] タスクとリフレッシュレートはゲ製の鬼門
118 名前:名前は開発中のものです。 mailto:age [2007/04/17(火) 08:47:02 ID:Aek8raYd] >>117 KWSK
119 名前:名前は開発中のものです。 [2007/04/18(水) 23:28:57 ID:jsz7ODUC] 菊門と聞いて飛ん来ますた
120 名前:名前は開発中のものです。 mailto:sage [2007/04/19(木) 00:02:19 ID:jsz7ODUC] …。 >>104 >>113 ゲームエンジンなんて御洒落な言葉を耳にするようになったのはPS1末期のあたりだな。 それ以前は△△ドライバだの△△君だのタスクシステムだの皆好き勝手に呼んでたぞ。
121 名前:名前は開発中のものです。 mailto:sage [2007/04/19(木) 01:15:58 ID:7k3O26Dk] ようするにタスクシステムって、ゲーム内のいろんな要素をオブジェクトとして扱って、それをリストにして管理してフレーム毎に実行するだけ? 俺の場合、古めのゲームプログラマが連載形式で解説してるのをネットで見たのが最初だった。 そのちょっとあとぐらいに、やね氏がそのサイトを紹介してた気がする…。 それに感化されてやってみたんだけど、親子関係にあるオブジェクトの場合、平等な関係のタスクで扱うのが面倒くさかった。 素人なんで俺がへっぽこなだけだとおもうけど。 ゲームごとに、オブジェクトごとに最適な管理方法を考える方が楽な気がする。
122 名前:名前は開発中のものです。 mailto:sage [2007/04/19(木) 01:18:17 ID:0zzWAwAX] タスクがタスクを扱えるようにすればいくらでも楽勝っす。
123 名前:名前は開発中のものです。 mailto:sage [2007/04/19(木) 02:06:27 ID: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 名前:名前は開発中のものです。 mailto:sage [2007/04/19(木) 02:25:55 ID:EeW/BzCK] >>120 それ以前というか、今でもそんな感じです。うちの場合。 PS2用RPGのチームに異動したときは内製エンジンをタスクシステムと呼んでた。 >>13 で紹介されてるそれとはかけ離れた代物になってたけどね。 >>121 タスクシステムとゲームエンジンは等価。 ゲームエンジンという単語は元々は海外で使われてたの。 それが日本にも浸透したってだけ。 浸透する以前は内製のゲームエンジンはそれぞれ別の呼び方していた。 タスクシステムとか俺様ライブラリとか様々な方言があったと思うよ。 >リストにして管理して 竹やりで万歳突撃?
125 名前:名前は開発中のものです。 mailto:sage [2007/04/19(木) 02:26:33 ID:vUHs3Nla] >>123 メガマウスの具体的な例をお願いします…。 ぱっと見だけど、かなり場数を踏んでる(プロの)方?
126 名前:名前は開発中のものです。 mailto:sage [2007/04/19(木) 02:35:14 ID:Pm183gqV] >>125 メガマウスってでかいんだぜ。 ジンベエザメよりも、シロナガスクジラよりもでかいんだぜ。 でもイソギンチャクって小さいんだぜ。 あと俺みたいな奴がプロだったら 日本はもっとデフレ状態になっても誰も就職に困らないだろうな。
127 名前:名前は開発中のものです。 mailto:sage [2007/04/19(木) 02:36:33 ID:Pm183gqV] あ、メガマウス小さかった。 なんだったけな、最大の海洋生物って。
128 名前:名前は開発中のものです。 mailto:sage [2007/04/19(木) 02:54:09 ID:EeW/BzCK] >>123 タスクシステムは特定の実装方法を指すものではない。 「古代の究極奥義、ダイエットシステムでこんなに痩せた!」 とか言わないのと一緒。
129 名前:名前は開発中のものです。 mailto:sage [2007/04/19(木) 08:09:39 ID:E/KhOlb0] >>123 コンテナクラスを内包したEnemyFactoryを作って 処理ループではメンバ関数一つ呼べば管理が楽にならん? Class EnemyFactory { Vector<CEnemy> EnemyArray; (略) public: func(CPlayerCtrl& player) } enemyfactory.func(&player);を一回呼び出せば全てを処理してくれるように。 って、これがタスクシステムなのか?
130 名前:名前は開発中のものです。 mailto:sage [2007/04/19(木) 14:16:22 ID:KkZ4qP8H] だからさー、お前の脳内定義でのタスクシステムに必須条件って何よ。 ダンボール紙の盾をイージスシステムと名付けるのはお前の自由だが 他人に同意を求めるような話じゃねーだろと。 たかがローカル用語に、具体的な実装も含めた意味付けをして 再定義して普及させようとする仕切り行為は全て徒労に終わる。 ゲームプログラマは基本的に天邪鬼だからな。
131 名前:名前は開発中のものです。 mailto:sage [2007/04/19(木) 21:20:45 ID:I+5EKnEr] >>127 スレと関係ないけどメガロドンじゃね?大昔の巨大サメ。 >>130 >必須条件 これじゃ駄目なのか? en.wikipedia.org/wiki/Task_%28computers%29 >A task is "an execution path through address space".In other words, a set of program instructions that is loaded in memory. >タスクは「アドレス空間を通る実行パス」です。言いかえれば、メモリにロードされるプログラム命令のセット。 風呂桶でも紙コップでもなくて「入れ物」に相当する用語がタスクなんだけど、 それを「俺んちの風呂桶」の意味で使う奴がいるのが問題なんじゃないかと思う。
132 名前:名前は開発中のものです。 mailto:sage [2007/04/19(木) 21:56:37 ID:let+IdBl] そういうこったな。 taskはprocess並に汎用的な技術用語。 そのケツにsystemを付け加えるだけで >タスクシステムを最初に見たときは、オブジェクト指向とは全く違う >自由度と再利用性の高い汎用的な管理の仕方だなと感心したよ。 ↑こんな胡散臭い話になる。マジでお勧め。 「去年まで金無し君だったけど」の改造コピペ文が作れるな
133 名前:名前は開発中のものです。 mailto:sage [2007/04/19(木) 22:42:06 ID:EeW/BzCK] >>123 なんか釣りっぽいが、君の言うタスクシステムってのはこんなやつ? codezine.jp/a/article.aspx?aid=297 これ、ゲームプログラミングの基礎教材としては優良だとは思うが タスクシステムという単語の使われ方はキッパリ忘れたほうがいい。 これ読んで「タスクシステムすげー!」「マジ感動!」 と歓喜して許されるのはリア厨、リア工まで。 それ以上なら技術者(の卵)として最低限のリテラシーが 欠けてるかもしれないと疑ったほうがいい。 何でもいいからオペレーティングシステムの教科書でも 一冊買ってみて読んだほうが遥かに勉強になると思うよ。
134 名前:名前は開発中のものです。 mailto:sage [2007/04/19(木) 22:47:04 ID:Pm183gqV] リア工なので許されるという
135 名前:名前は開発中のものです。 mailto:sage [2007/04/19(木) 22:48:45 ID:EeW/BzCK] アンカーミス。>>132 じゃなくて>>129
136 名前:名前は開発中のものです。 mailto:sage [2007/04/19(木) 22:49:58 ID:EeW/BzCK] >>134 RTOSの本が面白いと思うよ。
137 名前:名前は開発中のものです。 mailto:sage [2007/04/19(木) 22:58:21 ID:let+IdBl] >>135 俺かいw つーのは冗談として。。。 組み込み系の書籍はたしかに参考になるな。 俺も井の中の蛙にならんように精進せんと。
138 名前:名前は開発中のものです。 mailto:sage [2007/04/19(木) 23:00:12 ID:GlQD7rdS] タスクシステムってメモリに対して最適化した設計スタイルなんじゃねーの? ギャラガとかの古の時代の産物なんだから、言葉自体を葬った方がいいんじゃないかと。
139 名前:名前は開発中のものです。 mailto:sage [2007/04/19(木) 23:02:37 ID:let+IdBl] >>138 >タスクシステムってメモリに対して最適化した設計スタイルなんじゃねーの? >タスクシステムという言葉自体を葬った方がいいんじゃないかと。 本来はタスクシステムのローカル定義
140 名前:名前は開発中のものです。 mailto:sage [2007/04/19(木) 23:04:29 ID:let+IdBl] 途中で送信しちまった。 >タスクシステムってメモリに対して最適化した設計スタイルなんじゃねーの? そのタスクシステムのローカル定義を葬ったほうがいいのであって タスクシステムという言葉自体に罪は無いぞ。立派な技術用語だ。
141 名前:名前は開発中のものです。 mailto:sage [2007/04/19(木) 23:37:23 ID:EeW/BzCK] 「ギャラクシアン」「タスクシステム」でぐぐると ナムコ信者とかレトロゲーマニアの知ったかウンチク話として 「タスクシステム」が再定義され広まったのがよく分かる。 こういう出典不在&伝聞のみで造られたゲームファン用語を 真に受けた素人がCマガの記事を書いて更に広めたのは 致命的だったね。
142 名前:名前は開発中のものです。 mailto:sage [2007/04/19(木) 23:54:13 ID:9JdMu3w7] どっかのスレで「古典タスク」とかいう謎の言葉を見かけたな。 あとは「タスクシステムはもう古い」とかいう珍発言もたまに見る。 ゲームファン用語というより知ったかワナビー用語だろ。
143 名前:名前は開発中のものです。 mailto:sage [2007/04/20(金) 00:01:20 ID:cgQq0Bo+] ローカル定義だけ葬るのはもう無理か。 ゲームエンジンでいいよもう。 というわけで関数アドレス+汎用ワークメモリのリンクリストが〜とか どうでもいい仕掛けを車輪の再発明して延々その素晴らしさを語ってる オナニストが作ってるのはセンズリシステムでいいよもう。 Irrlicht使おうぜ。
144 名前:名前は開発中のものです。 mailto:sage [2007/04/20(金) 00:16:48 ID:65Qprn+K] 俺はCrysis Engineを触りたい。
145 名前:名前は開発中のものです。 mailto:sage [2007/04/20(金) 02:10:06 ID:cGzgTfv7] しかしデリゲートをベクターコンテナにぶち込んで使う
146 名前:名前は開発中のものです。 mailto:sage [2007/04/20(金) 03:42:12 ID:RUahNebB] オレはIrrlichtに自前のタスクシステムを乗せるよ。
147 名前:名前は開発中のものです。 mailto:sage [2007/04/20(金) 07:42:04 ID:ZqUifK9K] 関数ポインタだとか汎用ワークメモリだとかは 初心者にとって勉強になるから再発明上等なんだが、 その程度のレベルの奴が悟った気になって 中途半端な理解で解説を書いて広めるからタチが悪い。
148 名前:名前は開発中のものです。 mailto:sage [2007/04/20(金) 11:42:46 ID:EI0MmUU2] >>147 そこまでおっしゃるんなら 是非みんなの目が覚めるような解説サイトを作ってください ID:ZqUifK9K先生!
149 名前:名前は開発中のものです。 mailto:sage [2007/04/20(金) 12:17:21 ID:ohBEpQ/x] タスクシステムを紹介してる人を叩くスレはここですか
150 名前:名前は開発中のものです。 mailto:sage [2007/04/20(金) 13:19:25 ID:J62A1B0A] また>>82 が来たのか
151 名前:名前は開発中のものです。 mailto:sage [2007/04/20(金) 13:44:21 ID:EI0MmUU2] また>>90 が来たのか
152 名前:名前は開発中のものです。 mailto:sage [2007/04/20(金) 14:51:16 ID:ignHfO5a] 確かにタスクシステムは可用性の高いやり方ではあると思うけど、 実態は単なるリストのデータ構造なので(勿論それから拡張された高度なものも存在するけど)、 「タスク」やら「システム」やらの単語は不似合いに思えないことも無い。 そしてそういう単語で付け上がるような中二病野朗は非常にたちが悪い。 死んでくれとは言わないけど、考えを改め直して現実を見て欲しい。
153 名前:名前は開発中のものです。 mailto:sage [2007/04/20(金) 20:30:26 ID:RUahNebB] というかC++でいうオブジェクトをリスト管理するのが タスクシステムなんだよ。 アセンブラだけで開発してた頃に使ってたから割と いい発明だったんだよね。
154 名前:名前は開発中のものです。 mailto:sage [2007/04/20(金) 20:38:17 ID:EI0MmUU2] >>153 >というかC++でいうオブジェクトをリスト管理するのが >タスクシステムなんだよ。 なんかちがわね?
155 名前:名前は開発中のものです。 mailto:sage [2007/04/20(金) 20:39:36 ID:VkPjbBgj] もうタスクじゃない別の呼び名をつけてあげたら?
156 名前:名前は開発中のものです。 mailto:sage [2007/04/20(金) 20:44:06 ID:KK8Da6ng] 重要度思考設計とか?
157 名前:名前は開発中のものです。 [2007/04/20(金) 21:32:26 ID:fGL33psr] タスクシステムを古いとか古典とかいう人は、 どうやって実装しているの? XXというフレームワークとか開発キットをつかっている、という答えでもいいけど、それ自体はタスクシステムをつかっていないの? あと、たとえばマルチスレッドを使うとタスクシステムはいらなくなる?
158 名前:名前は開発中のものです。 mailto:sage [2007/04/20(金) 23:05:53 ID:UGzQxCti] >>157 その前におまえの脳内定義上のタスクシステム について説明したまえよ。 >それ自体はタスクシステムをつかっていないの? お前の言うそのタスクシステムとやらの定義によるな。 >あと、たとえばマルチスレッドを使うとタスクシステムはいらなくなる? お前の言うそのタスクシステムとやらの定義によるな。 で、お前の定義したタスクシステムを前提にした場合の 上記質問事項についてのお前の経験に基づく見解を聞かせてくれよ。
159 名前:名前は開発中のものです。 mailto:sage [2007/04/20(金) 23:42:39 ID:RUahNebB] 便利なものはすべてタスクシステムだ!
160 名前:名前は開発中のものです。 mailto:sage [2007/04/20(金) 23:49:49 ID:cGzgTfv7] マルチスレッドプログラミングもタスクシステムの一種?
161 名前:名前は開発中のものです。 mailto:sage [2007/04/20(金) 23:53:22 ID:KC13gbVA] Q. タスクシステムって何? A. 言語仕様の進歩により実体を失なうシステムのこと。
162 名前:名前は開発中のものです。 mailto:sage [2007/04/20(金) 23:55:47 ID:0083p4+e] 関数ポインタ+汎用ワークのリンクリストをタスクシステムと呼ぶのは個人の自由だし 木製骨格+羽布張り+マキシム機関銃の飛行機をステルス戦闘機と呼ぶのも自由だけど 声を大にして言うとキチガイと思われるから気を付けようね、というごく基本的な話。
163 名前:90 mailto:sage [2007/04/20(金) 23:58:56 ID:0083p4+e] >>151 それは被害妄想だよ。
164 名前:名前は開発中のものです。 mailto:sage [2007/04/21(土) 00:01:14 ID:ohBEpQ/x] ガンダムみたいなIDだな
165 名前:名前は開発中のものです。 mailto:sage [2007/04/21(土) 00:18:39 ID:b9DOuvNS] >>118 遅レスでやんすが 熱い論争が巻き起こるものの、結局結論が出ないので不毛この上ない という意味でござんす。
166 名前:名前は開発中のものです。 mailto:sage [2007/04/21(土) 00:26:45 ID:ohzUMwwU] リフレッシュレートは、3倍して計算というナイスな結論が出てた様な気がするけど、 あの後まと話がこじれたのかいな?
167 名前:名前は開発中のものです。 mailto:sage [2007/04/21(土) 00:57:21 ID:Cncyo4d6] だいたい液晶はリフレッシュしてないし。
168 名前:名前は開発中のものです。 mailto:sage [2007/04/21(土) 03:08:49 ID:96E91bg8] 現状を憂うのは大変結構な事だけど 意見をまとめたコラムをどっかに投稿したり、サイト作ったりしないの? 掲示板の書き込みを追っていくのは辛い
169 名前:名前は開発中のものです。 [2007/04/21(土) 08:33:00 ID:qfI0z2jN] >>158 たとえば↓この本で書かれているタスクシステムを「タスクシステム」と定義してみるとどうだ? cgi32.plala.or.jp/higpen/book/shtPro/shtPro.shtml
170 名前:名前は開発中のものです。 mailto:sage [2007/04/21(土) 09:31:26 ID:rc3MbHen] >>169 その本を書いた松浦健一郎が大混乱の元凶なわけだが
171 名前:名前は開発中のものです。 mailto:sage [2007/04/21(土) 09:40:41 ID:FI1lzfn8] で、その本の中では何て定義してるの?
172 名前:名前は開発中のものです。 [2007/04/21(土) 10:35:11 ID:qfI0z2jN] >>170 おいおい、やっとタスクシステムを定義しようと努力して、これから マルチスレッドとか他の実装方法との比較を論じようとしているんだから、 「大混乱」とか結論ありきのワンセンテンスメッセージはやめようよ。 おれは、この本のタスクシステムをみたとき、ふつうにマルチスレッドでキャラを動かせばいいじゃない (わざわざオブジェクトをNEWしてリストに組み込んでいかなくてもいいのに) と思った。 開発効率とか品質(スピード)などからの面でどのくらいメリットがあるのか、疑問におもった。 その辺の意見をききたい。 自分ではこの本と同じものをマルチスレッドで書いたりする余裕もないからね。
173 名前:名前は開発中のものです。 mailto:sage [2007/04/21(土) 11:09:21 ID:laYGd4sA] 読み進めたけど話が進まないね タスクシステムってなんなのか調べてみた ttp://www5f.biglobe.ne.jp/~kenmo/program/task/task.html ttp://www5f.biglobe.ne.jp/~kenmo/program/task/task2/task2.html ttp://homepage3.nifty.com/moha/prog_task.html わからなかった 糸冬 わ り
174 名前:名前は開発中のものです。 mailto:sage [2007/04/21(土) 11:17:18 ID:Cncyo4d6] >>172 そんなことしたら、シングルコアCPUなら普通に動くけど マルチコアCPUにするとまともに動かない素敵なシステムになりますよ。
175 名前:名前は開発中のものです。 [2007/04/21(土) 12:15:44 ID:3GQIcX1J] 沖縄県の方へ(命に関わる注意事項です) 沖縄県での選挙ですが、どうか民主党だけは避けてください。県民の生命に関わる可能性があります。 民主党の最大の公約は一国二制度(※)ですが、一度「一国二制度 沖縄 三千万」等で検索をお願いします。 この際、民主党のHPで調べても良いです。以下の注釈↓と矛盾することは書いてないはずですから… ※一国二制度 簡単に言えば沖縄を中国と日本の共有物にし、そこに3000万人の中国人を入植させます。 (つまり沖縄人口の 96% を中国人にして、実質、沖縄を中国人の居住地とします。) さらに「自主」の名の下、沖縄で有事が起きても自衛隊は干渉できません。 3000万人の中国人が、少数派となった130万人の日本人に何をしても、です。 そして反日教育を受けた中国人の反日感情の強さは、ほとんどの日本人の理解を超えるものです。 今回の選挙で民主党が勝った場合、「自主」「発展」を連呼しつつ段階的に進めていくことになります。 自主と言っても、自主を認めるのが「住人の96%が中国人となった」後だということに気をつけてください。 発展と言っても、新沖縄の少数派となった「少数民族日本人」の発展ではないことに気をつけてください。
176 名前:名前は開発中のものです。 mailto:sage [2007/04/21(土) 13:08:27 ID:laYGd4sA] >>175 みたいなネトウヨきもいな 言われなくても分かってるだろ普通に・・・ 今まで無知だった自分への恥隠しのつもりか何かか?
177 名前:名前は開発中のものです。 mailto:sage [2007/04/21(土) 13:13:02 ID:qfI0z2jN] >>174 つまり、マルチスレッドだとマルチコアCPUの場合、まともに動かなくなる。 軽量スレッドであるタスクシステムだと、CPUのアーキテクチャに依存せずに動作する。 以上のようなメリットがタスクシステムにはある、ということだな。
178 名前:名前は開発中のものです。 mailto:sage [2007/04/21(土) 13:14:51 ID:Cncyo4d6] ぜんぜん違いますよ。タスクをマルチスレッドで実装するのは 難易度が高い。 その辺を認識せずにスレッド使えばいいとか言ってるアホには 無理なんじゃねってこと。
179 名前:名前は開発中のものです。 mailto:sage [2007/04/21(土) 14:16:13 ID:sEVsPTrc] 古典ゲームタスクシステムはリストの任意位置にロギングタスクを仕込むなど リソース最適化のためのロジックを入れやすい強みがあるからダメダメってわけでもない。
180 名前:名前は開発中のものです。 mailto:sage [2007/04/21(土) 15:28:49 ID:iSBz72w9] >ID.qfI0z2jN ねー、だから>>169 の本の中でのタスクシステムは どういう定義になってるんだい?
181 名前:名前は開発中のものです。 mailto:sage [2007/04/21(土) 19:46:23 ID:445SE7r4] 今求められているもの ・タスクシステムの定義(俺の見る限りではワーク領域を持ったリスト構造のことを指している事が多い木がする) ・なぜワーク領域のあるリスト構造をタスクシステムと呼んではいけないのかに対する回答 ・結局どうやって実装するのがいいのか(一概には言えないっていう答えが妥当ならそれでスレ終了)
182 名前:名前は開発中のものです。 [2007/04/21(土) 22:03:55 ID:qfI0z2jN] >>181 タスクシステムの定義は>>169 のリンク先からサンプルコードをダウンロードしてList3-1と3-2だけみればわかると思う。 List3-1はタスクの構造体、List3-2はそれの実行ルーチンをあらわしている。余裕があったらC++の実装版もみてみるといい。 二番目の回答はどうでもいいような気がする。 で、3番目。 「一概には言えない」でもいけど、マルチスレッドとの比較というテーマなら具体的に比較できると思うぞ。 いまのところCPUをシングルコアという条件で限定すればタスクシステムは、マルチスレッドに対してメリットがあるという答えはでてきてない。 でもマルチスレッドはリソースを多く消費しそうなきがするんだよな。タスクシステムは軽量の自家製スレッドだから スピードも早くメモリ消費も少ないというレポートがあってもいいように思うんだが。
183 名前:名前は開発中のものです。 mailto:sage [2007/04/21(土) 23:08:52 ID:6oOZ9JbV] >>181 >・タスクシステムの定義(俺の見る限りではワーク領域を持ったリスト構造のことを指している事が多い木がする) 狭義 固定サイズのワーク領域を持った単方向リスト構造でサブルーチンの交換が可能なもの ギャラクシアンの実装を原典とする 広義 ワーク領域を持ったリスト構造 ギャラクシアンの設計を原典とする >・なぜワーク領域のあるリスト構造をタスクシステムと呼んではいけないのかに対する回答 ほかの用語(↓)と混同するから プリエンプティブマルチタスクとは 【preemptive multitasking】 - 意味・解説 : IT用語辞典 e-Words e-words.jp/w/E38397E383AAE382A8E383B3E38397E38386E382A3E38396E3839EE383ABE38381E382BFE382B9E382AF.html >・結局どうやって実装するのがいいのか(一概には言えないっていう答えが妥当ならそれでスレ終了) 一概には言えない ……が「あのゲームを俺が実装するならこうするね」的な話は有意義だと思う もし俺が2DSTGを実装するならリストよりツリー構造を使うよ 親子関係をもつキャラクタを適切な順番でまわすのに適しているし キャラクタのグルーピングがしやすいので敵キャラだけ舐めたいときなどに無駄な処理が減る
184 名前:名前は開発中のものです。 mailto:sage [2007/04/21(土) 23:20:34 ID:Ii4A4TL3] C++ で言えば、毎フレームの処理を実装したクラスインスタンスのリストだろ? そんなの画面ごとに std::list<Task*> なりで持てばいい。よく使うなら適当に ラップしたクラス用意すればいいだろう。 「タスクシステム」とか呼ぶ人は、何でもかんでもグローバルだったり、 プログラム全体にこの構造を当てはめる傾向があって嫌い。
185 名前:名前は開発中のものです。 mailto:sage [2007/04/21(土) 23:23:05 ID:96E91bg8] >ほかの用語(↓)と混同するから JAVAスクリプトみたいなもんか
186 名前:名前は開発中のものです。 mailto:sage [2007/04/21(土) 23:37:57 ID:sEVsPTrc] 「タスクシステム」 飽くまで全てをひとつのリストに押し込めようとする努力が多くて、 手段が目的となってる感のあるアプローチのこと。
187 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 00:00:51 ID:SVESfasi] マルチスレッドで効率よく使えない技法なぞ過去の遺物じゃ
188 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 00:31:08 ID:useOh8AV] >>182 おいおいサンプルのダウンロードなんかできないぞ。
189 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 00:53:25 ID:useOh8AV] >>182 >マルチスレッドとの比較というテーマなら どういう比較をするつもりなのか知らないが、まさかとは思うが お前の定義するそのタスクシステムのタスクひとつひとつを スレッドに置換するような形で比較するのではあるまいな。 >タスクシステムは、マルチスレッドに対してメリットが お前の定義するそのタスクシステムとやらは マルチスレッドとは排他的な存在のようだから やはり上記の「まさか」は当たっているということか。 >タスクシステムは軽量の自家製スレッドだから タスクシステムとマルチスレッドをなぜ排他的な存在 いまのところCPUをシングルコアという条件で限定すればタスクシステムは、マルチスレッドに対してメリットがあるという答えはでてきてない。 でもマルチスレッドはリソースを多く消費しそうなきがするんだよな。タスクシステムは軽量の自家製スレッドだから スピードも早くメモリ消費も少ないというレポートがあってもいいように思うんだが。
190 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 00:55:49 ID:useOh8AV] 上は送信ミスだ。 >>182 >マルチスレッドとの比較というテーマなら どういう比較をするつもりなのか知らないが、まさかとは思うが お前の定義するそのタスクシステムのタスクひとつひとつを スレッドに置換するような形で比較するのではあるまいな。 >タスクシステムは、マルチスレッドに対してメリットが お前の定義するそのタスクシステムとやらは マルチスレッドとは排他的な存在のようだから やはり上記の「まさか」は当たっているということか。 >タスクシステムは軽量の自家製スレッドだから それならファイバーやマイクロスレッドと呼べばいいんじゃないか。
191 名前:名前は開発中のものです。 [2007/04/22(日) 01:11:41 ID:QxI8Jcnw] だいたいわかった。 >>184 のように、タスクシステムというのはふつうに使われている。 ただし、一部(多数?)の人は、わざわざタスクシステムなんていって仰々しく議論することに違和感がある。 ちなみにファイバーとかマイクロスレッドなどと呼べばまだましらしい。
192 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 03:36:04 ID:gWESM4cO] >>191 それなんかちょっと違和感が. 前の方はあんま読んでないんだけど,自分の感覚では以下な感じ. fiberは「非時分割で非プリエンプティブ(協調型)なスレッド」 タスクシステムは「エージェント集合でゲームを作るシステム」 現実には同期問題からエージェント=fiberの実装が多いけど, スレッドでも同期エージェントを作れば,タスクシステムは成り立つと思う. fiberの場合のみに限定したとしても,fiberは実装方法であって, 「エージェント集合」が肝であるタスクシステムとは別だと思うんだけど. #名前付けるほどのことか,という話には納得する面もあるんだけど,名前なんて大体そんなもんだと思う. #あとワーク領域がうんたらって話は化石過ぎるんじゃないかしら.
193 名前:名前は開発中のものです。 [2007/04/22(日) 04:51:35 ID:YZWy+Lh2] >>172 > おれは、この本のタスクシステムをみたとき、ふつうにマルチスレッドでキャラを動かせばいいじゃない 無理無理w キャラクター1000体表示したら、1000個マルチスレッド動かすのかy。 しかも、全部好き勝手、平行に走るんだぜ? 1000体分同期取るんだぜ?
194 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 08:07:47 ID:KD72KCOk] 素朴な疑問なんだけど、ゲームって条件判断つきのアニメだよな。 パラパラアニメに分岐があるだけだよな。分岐ってか、インタラクティブってか。 入力があって、計算して、描画、音再生して、その繰り返し。たかが、それだけなのに、 なんちゃらかんちゃらカタカナが飛び交うってのも、不思議だと思った。 きょうびのパソコンなら、if文が1万あっても、フレームレートへの影響って 微々たるものではないかと、察するのだが、推測なので、実際分からんけど、 感覚的には、そんな感じで。 だからさ、お前ら、アポだな、と思った。いや、アポなのは俺かも知れないけど、 正直な気持ちとして、そう思ったのだ。
195 名前:名前は開発中のものです。 [2007/04/22(日) 08:29:39 ID:YZWy+Lh2] 誤爆?
196 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 08:36:23 ID:U5lotNIv] ヒトのやってる事にケチつけないと気がすまないのか? マジメにやってる奴を馬鹿にするレスは不愉快なだけ。 だいたいここはゲームの技術について語る場所だ。 なんとなく思っただけの事ならチラシの裏にでも書いてろ。 俺の言いたいのは以上だ。 もう二度とつまらん書き込みするなよ。
197 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 09:25:02 ID:ridILpBz] >>196 おまえもなー
198 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 09:38:30 ID:KD72KCOk] ぶっちゃけ、俺はタスクシステムが分からない。>>123みたいな実装だな。 つーか、それで、何が問題なのか分からないんだ。具体例はないし、どこ ぞの信者が、わけわからず布教してるだけなスレだな。いくら、あーたら、 こーたら、書き連ねても、何の生産性もないよね。123がもっと、詳しくそ の説明ってか、具体的にどう、メガマウスなのか、コードを交えて、解説を やって欲しいけど、名無し掲示板だと、どうにも議論的な発展がないな。い ろいろな発言があるようで、大して、書いてる人はいないなら、HNがあるほ うが、放置ってか逃亡が認識できて終わりが分かるのでいい気がするっす。
199 名前:名前は開発中のものです。 [2007/04/22(日) 10:24:01 ID:QxI8Jcnw] >>193 サンキュー。やっと具体的な議論ができる発言がでてきたな。 つまりタスクシステムは、 「同期を取る必要がある数1000にものぼるオブジェクトを対象とする並行処理(1つの処理は短時間)を、 少ないリソースで実現させることができる。」 というメリットがあるわけだ。 それをマルチスレッドやったら重過ぎると。 たしかに「組込みマルチタスキングプログラミング」という本をよむとマルチタスキングの4つの基本要件として、 @コンテキストスイッチング、Aタスク間通信、B実行優先度、Cタイミング制御 があげられているがこれらを少ないリソースで実現でき、かつ構造化されている手法がタスクシステムということだな。
200 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 14:33:04 ID:lvPS3FuZ] タスクシステムを構築するのに、内側でマルチスレッドを使っても問題はない。 よってリソースがどうこう言う利点は当てはまらない。 結局は実装方法によりけり。
201 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 14:52:48 ID:f5nllPrq] >>194 >>198 は昔からいろんなスレで 阿呆なことばかり言っている奴なので気にしない方向で
202 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 15:05:20 ID:kFHvjrd1] 所謂タスクシステムとは団子の数が増減する串団子みたいな物だよな ●→先頭 ◎→しんがり ○→プレイヤーオブジェクト ゲーム開始時はこんな感じ ●○◎ 敵キャラやらアイテムなどのオブジェクトが必要に応じて生成されると ●○△△△◇×△◎ 原始的な手法と言うと語弊があるが、所謂配列型のシステムが 常に一定のメモリを使用するのに対して 所謂タスクシステムは必要な時に必要な分のメモリしか使わない リソースを使いたい放題の富豪的なプログラミングが許される今となっては 積極的に使用する意味はない
203 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 15:07:29 ID:gWESM4cO] >>200 自分もそう思うんだけど, このスレ的にはfiberな古典実装のみを扱うのかな? >>199 間違いでは無いと思うんだけど,視点がちょっとずれてる気がする. それはスレッドとfiberの対比に近くて,利点としては副次的なものじゃないかな. タスクシステムはエージェント(タスク)集合にすることで エージェントごとのコードを1箇所に集められるとか,依存性から実装を取り除けるというみたいな, 所謂OO的な利点が主なんじゃないかしらん.
204 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 15:44:05 ID:KD72KCOk] 富豪的プロぐらっむって、他に、学術的な呼称はないの?
205 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 15:45:03 ID:CSfmZnZe] >>203 タスクシステムというとなんとなくノンプリエンプティブな気がする。 現在のOSが持ってるスレッドはプリエンプティブだから、 OSの用意したスレッドでタスクシステムを実装するのは不便な気がする。 マルチコアCPUで高速化するために、複数のタスクシステムを マルチスレッドで並列実行とかならありだと思うけど。
206 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 16:00:54 ID:29CA+INJ] PCゲーの場合、CPUコア数なんてばらばらなんだから スレッドプールでごにょごにょってのは frame per scondの存在しないゲームくらいでしか有効じゃないと思う
207 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 16:06:58 ID:4Cp/kF21] 実際に実測して検証したわけじゃないけど なんとなくポインタ使ったリスト形式のタスクシステム?(名前が悪い!w) が速いような気がするから1フレーム(60FPSなら16ms位?)におさめるのに性能を重視する ゲームで使われてるんだと思います ていうか俺はイメージで使ってるw なんか、new,deleteとか遅いイメージあるし。 ましてやstdなんてごにょごにょ・・・
208 名前:名前は開発中のものです。 [2007/04/22(日) 16:14:42 ID:YZWy+Lh2] >>200 ちげーよw 拡大解釈すなw 本来のタスクシステムの話してんじゃねーよ 少なくとも、このスレのタスクシステムはゲームでの古典的な擬似タスク(もうこの単語も鼻水でるが)の話。 だから、基本マルチスレッドは使ってない。
209 名前:名前は開発中のものです。 [2007/04/22(日) 16:17:57 ID:YZWy+Lh2] >>207 実際に動的生成で、速度駄目かどうかってのは、計った方がいいよ。 動的生成の方が楽できるんだし。 はっきりいって、ゲームによる。キャラクターが少ないなら、動的でいい。 パーティクルとかは、さすがに、動的生成でもプールするけど。 もちろん、高速なメモリマネージャを使うのを前提だけどな・・・
210 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 16:27:38 ID:4Cp/kF21] >>209 動的に生成したほうが手軽だし、リソースの管理にしたってクラス作ったほうが楽なのはわかってるけど なんかゲーム作成となると古典的なCの手法の方が速いような気がするんですよね(これもイメージだけど)w ちなみにゲームじゃなけりゃ。俺もstd::vectorとかclassとか使いまくります。 まあ、やっぱり一番よいのは実測して問題ない方法を使うことなのかも・・・
211 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 16:36:46 ID:KD72KCOk] これは具体的だね。 mkmqwerty.hp.infoseek.co.jp/programing/tips/tips_index.html 「なんだか煩雑なソースになってきました。 実際にはこれに加えて、タイトル画面、 エンディング、スタッフロール等の分岐があり、敵の種類ももっと多いでしょう。 上 記のようなソースでもゲームを、とりあえずつくることはできますが、ソースが読み づらく管理が難しいです。 そこでタスク処理と呼ばれるものを導入します」 俺は、上記のようなソースでも、作れる。 だから、タスク処理いらない。 なんだ、タスクって、逃げかよ。
212 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 16:39:05 ID:O3yavdGP] 動的に領域を確保するやり方のなにがいけないの ゲームによるけど動的に確保するのも悪くないだろ ↓ (いまここ) やっぱり一番良いのは速度計ったりして検討した方法だね ↓ それならPCごとに差が出てもおかしくないだろ できるだけ汎用性のあるやり方をするべき 領域確保の失敗処理も最初の一回で済むし、逐次的な動的確保より やっぱりタスクシステム(鼻水でる単語だけど)の方が良いね ↓ (一番最初へもどる)
213 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 16:43:49 ID:O3yavdGP] >>211 かるいミニゲームとかならそれで十分かもしれないが、 巨大なものを組むならお前の言ってるつくり方ではまず難しすぎる。 それに複雑な面を組むときは、1フレームごとに数百、数千のifを見なくちゃいけないのか? いくらなんでもそれは馬鹿馬鹿しい。 というかその言い分はなに?タスク処理からの逃げかよ、と突っ込まざるを得ない。
214 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 16:54:16 ID:4Cp/kF21] >>212 うは!不毛だ コンシューマ機なら一定の性能だけど。。。 パソはね・・・・
215 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 16:55:46 ID:KD72KCOk] >>213 CPUからして見れば、数千のif文なんて、目くそじゃんw 人間的には、当該コードだけ眺めればいいわけで、頭からけつまで見る必要 ないしw 「富豪VSタスク」戦争の勃発ですね。(むふー)
216 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 17:08:03 ID:tSd7SPRg] ここでいわれているタスクシステムか、 もっと素直なやり方しか知らないってのが大きい気がする。 ってか、他の方法にはどんなのがあるの?
217 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 17:11:10 ID:O3yavdGP] ゲームループ中で、膨大な数の弾や敵機の存在フラグをifで見るのは愚行というもの。 ある程度まともで、リアルタイムなレスポンスが要求されるゲームなら、動かすべきものは優に1000を超える。 そしてそういうものはfpsも60以上が相場なので、画面上に何も無かったとしても、 単なる内部処理で1secに60000という条件分岐を処理しなければならない。 条件分岐のコストというのは非常に高く、昔は、1secに60000まではないとしても多くの条件分岐を処理させたのでは パフォーマンスに関わることが多かった。 そして今でも、高速性が求められるものでは条件分岐のコストを考慮せざるを得ないので、 タスクシステムの需要も無いわけではない。 処理の負担を考慮しない無計画な設計というのは、巨大なゲームを組む時は許されない。 コード全体が失敗した設計に依存してしまうことが多く、取り返しが付かなくなってしまうからだ。 というかそろそろID:KD72KCOkはあぼーんしておいたほうがいいな。馬鹿にもほどがある。どうせ釣りなんだろうが。
218 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 17:26:48 ID:KD72KCOk] >>217 たかたが、スーパーマリオのコピーアンドソースも見当たらない、低レベルな ゲ製作技術板で、そんなこと言われてもなぁ。
219 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 17:29:32 ID:5nxQbdiI] タスクシステムで分岐の負荷が消えるかのような書き方は 感心できないね。関数ポインタで分岐してたら根本的には 解決してないだろ。 存在フラグなんてものを全対象分用意した場合にくらべて 処理しない場合の無駄な分岐は削除できるけど、 それは C++ での仮想関数で十分実現できるよね?
220 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 17:44:24 ID:BUzInjQ8] 多人数で開発する時にシステム化しておくと楽っしょ? 戦闘シーンやフィールド・メニューやショップの処理も、共通のルールで相手がどんな処理(シーン)か知らなくても自由に以降できる汎用性の高いシステムで、わりかし簡単なのがタスクシステムなんじゃないの? ゲームのオブジェクトだけじゃなく、当たり判定からタイムカウントもシーンの管理も全部タスクに突っ込めるのは楽でいいよ。 いまならそれを発展させて、ツリーでもなんでも好きに作ればいい
221 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 17:45:43 ID:BUzInjQ8] あと、処理の順番も優先度で明確に出来るし、フレームごとのきっちりしたエフェクトするのも向くかも いまのフレームレートに依存しないタイプのゲームではどうなのかわからんけど
222 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 18:06:34 ID:v/ich/HT] >>220 >共通のルールで相手がどんな処理(シーン)か知らなくても自由に以降(移行?)できる タスクシステムじゃなくてタスクパターンとでも呼んだ方がわかりやすい気がする。 主観だがシステムというともう少し硬い機械よりなものをイメージするんだよね。
223 名前:擬似タスクw [2007/04/22(日) 18:17:11 ID:aF9z9yRP] 「リフレッシュレートに関する論争」 「タスクシステムに関する論争」 うはwwwwゲームにおけるデータ構造・クラス設計・パターンwwwwwww
224 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 18:30:35 ID:gWESM4cO] >>ID:O3yavdGP,ID:KD72KCOk 動的/静的とか富豪/貧乏みたいなコスト面で見る事自体が本質を見誤ってる. >>211 の引用の通り, べた書きは煩雑で管理が難しい->タスクで処理,依存性を分離すると楽 という話. >>221 >あと、処理の順番も優先度で明確に出来るし、フレームごとのきっちりしたエフェクトするのも向くかも 優先度による同期の代わりに「キャラ全員の移動完了を待って当たり判定タスクを起動」するような同期タスクでもOKでしょ?
225 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 18:41:05 ID:3Cbey4i0] >>217 ,220 多態の一言で済む話をタスクだなんだとゴチャゴチャ言ってるから 低レベルとか古臭いとか言われるんだよ
226 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 18:42:08 ID:ZoaDc3VU] タスクシステムをフレームワークに置き換えて読めば 自分たちがどれほど恥ずかしいことを言ってるかすぐわかる。 フレームワークがなんなのか判らない奴には判らんかw
227 名前:名前は開発中のものです。 [2007/04/22(日) 18:50:14 ID:YZWy+Lh2] >>224 べた書きで難しいなら、普通、今時なら、多態使うだろう。 ロートルじゃあるまいし。 見るべきは、コスト面じゃないのか?
228 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 19:30:55 ID:5nxQbdiI] ロートルがタスクを宣伝しやがったおかげで多態とかの一般的な技術よりも 先に「タスクシステム」とやらに手をつける奴が多いのよ。 その流れで関数ポインタやらリスト構造やらメモリプールやらを 初めて知ることになると、「タスクシステム」が何か偉大な技術みたいに 錯覚しちゃうんじゃないかと思うんだ。 今で言えば関数ポインタは仮想関数で、リスト構造は std::list で済む。 メモリプールも最近の環境では不要なことのほうが多いだろう。
229 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 19:41:55 ID:GAzy/Bcl] >>228 逆じゃね? 最近は、オブジェクト指向を一通り理解したやつしかタスクシステムに手を出していないと思うよ。
230 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 19:44:55 ID:QxI8Jcnw] >>224 のまとめ方は納得できるものだな。 素直に理解できる。 だが、「多様」というキーワードがでてきているのが気になる。 書き方はもっともらしい文体だが、内容はよく読むとなにもない。 無視していいような気がするがID:gWESM4cO他みなさんはどう思う?
231 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 19:50:39 ID:KD72KCOk] もういい。わけわかカタカナが飛び交うオナニープログラムはいい。 変数はすべてグローバル、ユーザー定義関数は使わない。制御はループとイフと フォーの3つのみ。制御用の変数はフラグ(多値)とカウンタのみ。使用言語はLGP。 俺は、これで、FF14でも、スーパーマリオ10でも、メタルギアソリッド7でも モーターストーム3でも、ドラゴンクエスト14でも、なんでも、作っちゃうんだからね。(むふー(鼻息)) たかだか、パラパラアニメですから、楽勝ですよ。 むふー。 まぁ、いつか。な。
232 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 19:57:07 ID:gWESM4cO] >>227 そうなんだけど,違うというか.. ワタシのIDのレス見てもらえば分かると思うんだけど, 多態に限らずストラウストラップ的OOの(エージェント/オブジェクト/タスク)集合により ゲームを構築するシステムをタスクシステムと言うんであって, リストが,fiberが,というような実装の話は実例であってそれ以上ではないと思う. 1実装例(データ構造)のコストを挙げて,タスクシステム(アルゴリズム,パターン)の良し悪しを言うのはお門違いというか.
233 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 20:04:34 ID:v/ich/HT] >>232 > 多態に限らずストラウストラップ的OOの(エージェント/オブジェクト/タスク)集合により > ゲームを構築するシステムをタスクシステムと言うんであって, 誰か翻訳してもらえませんか。
234 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 20:08:12 ID:4/EgVnhk] "ストラウストラップ" の検索結果 約 773 件 "ストラウストラップ的" の検索結果 1 件
235 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 20:11:45 ID:4/EgVnhk] ※1 ストラウストラップ的OO ビアルネ・ストラウストラップのオブジェクト指向。 データ型を定義するのに、「クラス」(もともとはオブジェクト指向とは関係のない SIMULA の言語機能)と その特徴である「継承」を活用するプログラミング手法。 ストラウストラップが '80 年代半ばごろまでに C++ の設計を通じて整理したもので、 現在主流のオブジェクト指向の考え方。
236 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 20:29:47 ID:5nxQbdiI] >>232 > 多態に限らずストラウストラップ的OOの集合によりゲームを構築する これだけじゃ「C++ 使ってゲーム作ってます」ってだけだろ。 システムでもなんでもない。
237 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 20:30:50 ID:v/ich/HT] >>235 マジレスされても困るんだが。(それにそこだけ書いても普通理解できない、コピペ元を貼るべき。) ttp://d.hatena.ne.jp/sumim/20040525/p1 多態性にC++もSmalltalkもないし、タスクはデータよりも処理に注目する考え方、故に元コメントは 意味がわからん、と言う意味だったんだが。
238 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 20:50:33 ID:gWESM4cO] >>236 それを言われちゃおしまいなんですが,名前なんて得てしてそんなもんだと思うんです. あとC++はマルチパラダイムだからC++なOOで〜とかのが正確?(どうでもいいね) >>237 そこをホントに読んだんでしょうか. Smalltalk(は1のアランケイのと読み替えてもいいんですよね?)は 1.“メッセージングによる可能な限り動的な処理・実装・設計”(メッセージ指向とも) を読んで多態性という言葉が出てくるのは驚きです.
239 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 20:52:24 ID:1cO9U5KH] タスクシステム(サブルーチンがぶらさがってるリスト)とスレッドの相性は悪いんだろうか? タスクを食っていくループでCPU資源にうまく割り振れば問題ないはずだ 2〜8個程度のスレッドを生成してサブルーチンを処理するたびに次のポインタを受け取る タスクが銀行のようにフォーク並びをしているのを想像して欲しい 並んでいる人がタスクでATMがスレッドだ ここで問題になるのは実行する順番が入れ替わったり同時であった場合の影響のことだ STGであればキャラクタの種別(敵キャラ、弾など)ごとに処理すれば 並列実行の影響を考える必要はない だから、タスクごとに種別IDを割り振っておけばよい 種別IDが切り替わる所で一度全部のスレッドが処理を終わらせるまで待つことで同期をとる (もちろんゲームによってはそう簡単にはいかないが……) いままでタスクシステムでゲームをつくってきた人はループにちょっとした仕掛けを作るだけで マルチコアCPUに対応できる可能性がある 現状のPC事情を考えると果たして意味がある行為なのかは疑問だがおもしろいTipsじゃなかろうか? (現状のPC事情・・・マルチコアCPU=ハイスペック。といってもローエンド機が置き換わるのも時間の問題だろうけども)
240 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 21:12:35 ID:v/ich/HT] >>238 メッセージ指向だから多態(ポリモーフィズム)がないとでも言うのか?ますますわからん。 どちらにしろこのスレでOOと言えばおまいさんの言うストラウストラップ的なやつがデフォ なのでわざわざ断わられると混乱するだけだよ。
241 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 23:10:29 ID:WXusdEx1] >>239 タスクリストを複数持つのは面白いアイデアだけど、意味なし。 なぜなら、現在のゲームにおいてボトルネックはまず間違いなく、 描画だから。 しかも描画はハード的処理により、スレッド化などしなくても 並列処理にできる。
242 名前:名前は開発中のものです。 mailto:sage [2007/04/22(日) 23:15:44 ID:P6iYulT4] >現状のPC事情を考えると果たして意味がある行為なのかは疑問だがおもしろいTipsじゃなかろうか? マルチコアといっても、大抵2CPUしか積まれていないので、 どんなに良くなっても2倍。ほとんど無意味ではあるかな。 コンシューマ機なら話は大きく変わる。 タスク処理を239のようにするのはデフォになる。 ただ、違うスレッドに居るタスク同士が情報をやり取りするとクラッシュするので、 タスクの基礎部分でだけなんとかするのはムリ。 >なぜなら、現在のゲームにおいてボトルネックはまず間違いなく、 >描画だから。 「現在の」じゃなくて、「一昔前の」ならそうかな。 今は物理計算があるから、そうともいえない。
243 名前:名前は開発中のものです。 mailto:sage [2007/04/23(月) 00:46:11 ID:D3wQozch] >>239 はこれだね ttp://www.watch.impress.co.jp/game/docs/20070131/3dlp.htm
244 名前:名前は開発中のものです。 mailto:sage [2007/04/23(月) 12:56:56 ID:kPTKND6z] >>241 涙目wwwwww
245 名前:名前は開発中のものです。 mailto:sage [2007/04/23(月) 13:28:32 ID:ofnNc5u7] タスクシステム信奉者の致命的な欠点は古い物にこだわりすぎて、 時代をしっかり把握できないことだな >>241 が代表例
246 名前:名前は開発中のものです。 mailto:sage [2007/04/23(月) 14:37:15 ID:sF8jML+T] >>241 がタスクシステム信奉者なんてどういう見解だよw
247 名前:名前は開発中のものです。 mailto:sage [2007/04/23(月) 23:02:50 ID:59B/D9d+] >>243 を見てると、タスクシステムがどうだとかいう議論がむなしくなるなw
248 名前:名前は開発中のものです。 [2007/04/24(火) 02:12:23 ID:rP75YEIH] >>247 タスクシステムを気軽に楽しめばいいんだよ。 世の中には、いろいろなプログラムを作っている人がいて役立つ人もいる。 手のとどく範囲のプログラムにおいて、タスクシステム(タスクパターン)を使ったら設計が簡単でパフォーマンスも あがった、なんてレスがあったらいいんじゃないかな。 おれが思ったのは、GUIのキャラクタの移動や、あとはパケットの取得/処理なんかのネットワークプログラミングに 気軽に応用できそうなきがする。いままでThreadたちあげてwhile(true)でまわしていた処理をすべて見直してるところだ。 だれかそういうTipsを集めたWikiつくってくれ。
249 名前:名前は開発中のものです。 mailto:sage [2007/04/24(火) 02:49:26 ID:icr09Pcb] だからそれはマイクロスレッドとかファイバーだろ。
250 名前:名前は開発中のものです。 mailto:sage [2007/04/24(火) 03:10:26 ID:pD/5kZWi] ゲーム制作における所謂「タスクシステム」がきちんと定義されてないから終わらんな。 曖昧なまま広がって時が流れすぎた。 みんな自分のタスクシステムこそ正義と信じて、終わり無き議論が続いていく。 まとめられるカリスマwも現れないだろうしな。 出来る奴はこんな瑣事に関わろうともしない。
251 名前:名前は開発中のものです。 mailto:sage [2007/04/24(火) 03:59:44 ID:Tdee1eAV] どうせ2chだし、仕事みたいに方向性が別にはっきりとあるわけでもないからな。
252 名前:名前は開発中のものです。 mailto:sage [2007/04/24(火) 04:08:33 ID:nLYBhYy0] まーた定義厨か。 実装はさておき「サブルーチンがぶらさがってるリスト」では 彼の気が済まないんだろうか。
253 名前:名前は開発中のものです。 mailto:sage [2007/04/24(火) 06:19:19 ID:0Y4cOVot] 今日からこのスレでは タスクシステム=サブルーチンがぶらさがってるリスト になりました
254 名前:名前は開発中のものです。 mailto:sage [2007/04/24(火) 06:21:41 ID:nLYBhYy0] オーケー、これで議論のループはめでたく終了な。
255 名前:名前は開発中のものです。 mailto:sage [2007/04/24(火) 08:20:55 ID:rP75YEIH] このスレ自体がタスクシステムで、最近のレスしか読めない人は定義から入ろうとするし いろんなタスク(ファイバー)が走ってると思えばいいじゃない。 でも、ここからはタスクシステム書いてみるなりして実装方向の 話にうつらないと定義ファイバーしか走らないスレになるな。
256 名前:名前は開発中のものです。 mailto:sage [2007/04/24(火) 08:30:38 ID:Cn47ifyt] >実装方向の話にうつらないと また実装乞食か。好きなように作れよ。 サブルーチンがぶらさがってるリストなんだろ?
257 名前:名前は開発中のものです。 mailto:sage [2007/04/24(火) 09:17:07 ID:wt/UedOB] なんで早朝からカリカリしてんの?
258 名前:名前は開発中のものです。 mailto:sage [2007/04/24(火) 11:33:46 ID:BSew7CHC] 所謂タスクシステムと、所謂ファイバーは全然違うモノなのに、 なんでここでは同じモノになっちゃってるの?
259 名前:名前は開発中のものです。 mailto:sage [2007/04/24(火) 11:57:00 ID:aJzi4MOG] タスクシステムの公的な定義なんて存在しないし、 人それぞれにバラバラな解釈をしているんだから、まとまるはずがない。 定義できると思いこんでいるのは、自分の勝手な解釈を他人にもさせようとする、 脳味噌が足りない馬鹿だけ。
260 名前:名前は開発中のものです。 mailto:sage [2007/04/24(火) 12:37:27 ID:pYdxlQj1] >>259 定義しなくても議論はできるさ。 例をあげて話し合えばいい。 問題は90レスほどするとせっかく提示した事例を無視して定義について云々いう奴が現れることだ。
261 名前:名前は開発中のものです。 mailto:sage [2007/04/24(火) 18:18:54 ID:DJmpRTH+] ファイバーを「サブルーチンがぶらさがってるリスト」とか表現したら笑われるよ。
262 名前:名前は開発中のものです。 mailto:sage [2007/04/24(火) 19:00:32 ID:gy8tG6E1] 固定された時間分のCPUリソースを各タスクに均一に割り当てるパターンを研究してくれ。
263 名前:名前は開発中のものです。 mailto:sage [2007/04/24(火) 19:02:48 ID:nLYBhYy0] ファイバの肝はユーザモードでのコンテキストスイッチだもんな。 つーか>>4-5
264 名前:名前は開発中のものです。 mailto:sage [2007/04/24(火) 19:08:20 ID:nLYBhYy0] >>262 そこまでいくとRTOSを移植したほうが早いだろうな。 しかしゲームにおいてCPU時間リソースを均一に割り振るメリットは殆ど無いと思うのだが。 何か思いつく?
265 名前:名前は開発中のものです。 mailto:sage [2007/04/24(火) 19:32:32 ID:gy8tG6E1] リアルタイム戦略SLGとか?
266 名前:名前は開発中のものです。 mailto:sage [2007/04/24(火) 21:55:18 ID:sh8YE+KJ] >>259 >タスクシステムの公的な定義なんて存在しないし フェードアウト組が大好きなタスクシステムについてはそのとおりだな。 「俺の自慢のタスクシステム」の素晴らしさについてグダグダ語る前に せめてテメェの脳内定義上のタスクシステムについて説明してから 発言しろ、というごく基本的な話だな。 >定義できると思いこんでいるのは、自分の勝手な解釈を他人にもさせようとする、 >脳味噌が足りない馬鹿だけ。 上に同じ。(公的な)定義ができると思い込んでるのは狂信者であり お前の言う通りの連中だ。
267 名前:名前は開発中のものです。 mailto:sage [2007/04/24(火) 22:48:36 ID:HwcF2GDq] 定義できないとかいっているやつは 他人と協調も議論もできない自分勝手なやつだけだろ
268 名前:名前は開発中のものです。 mailto:sage [2007/04/24(火) 23:01:09 ID:wt/UedOB] というか通じるよね?定義とかしなくてもさ。 実装してクレとか言ってるわけじゃないんだし、人によって全く違う動作をするようなものじゃないんだから。
269 名前:名前は開発中のものです。 mailto:sage [2007/04/24(火) 23:31:17 ID:Meuc1va2] 面接官「特技はタスクシステムとありますが?」 学生 「はい。タスクシステムです。」 面接官「タスクシステムとは何のことですか?」 学生 「サブルーチンがぶらさがってるリストです。」 面接官「え、サブルーチンがぶらさがってるリスト?」 学生 「はい。サブルーチンがぶらさがってるリストです。」 面接官「…で、そのタスクシステムは当社において働くうえで何のメリットがあるとお考えですか?」 学生 「はい。オブジェクト指向とは全く違う自由度と再利用性の高い汎用的な管理ができるようになります。」 面接官「ほう。もうすこし詳しく聞かせてください。」 学生 「詳しくはCマガジン2006年1月号を参照ください。」 面接官「いえ、あなたの言葉でお願いします。サブルーチンがぶらさがってるリストは何故に オブジェクト指向とは全く違う自由度と再利用性の高い汎用的な管理ができるのですか?」 学生 「やねうらお先生のサイトも参照ください。URLは・・・」 面接官「いえ、あなたの見解を伺ってるのですが。」 学生 「あれあれ?怒らせていいんですか?使いまs」 面接官「帰れよ。」
270 名前:名前は開発中のものです。 mailto:sage [2007/04/24(火) 23:35:21 ID:nLYBhYy0] 自分で自分にレスして「上に同じ」もねぇよなぁ
271 名前:名前は開発中のものです。 mailto:sage [2007/04/24(火) 23:40:15 ID:sh8YE+KJ] 自作自演認定されちゃったよ
272 名前:名前は開発中のものです。 mailto:sage [2007/04/24(火) 23:44:07 ID:Meuc1va2] >>270 あなたを、タスクシステム普及委員長です
273 名前:名前は開発中のものです。 mailto:sage [2007/04/25(水) 00:09:37 ID:d3y1YdqK] 定義できるのは、ここではタスクシステムをこういう概念で扱いますとローカルで宣言する場合だけ。 グローバルに定義することなど不可能だし、そういうことをしようとする奴は自分の意見を一方的に押し付ける身勝手なやつだけ。 その結果、結局は宗教論争のようになる。
274 名前:名前は開発中のものです。 mailto:sage [2007/04/25(水) 00:56:02 ID:qAG7MKWl] 毎回列に並びなおして、工程ごとに仕事を聞きに来る従業員システムと言えばいいんじゃないの?
275 名前:名前は開発中のものです。 mailto:sage [2007/04/25(水) 06:27:40 ID:RAoN/rs2] このスレで通じればいいからローカル定義で十分
276 名前:名前は開発中のものです。 mailto:sage [2007/04/25(水) 08:10:39 ID:Rf7pmltu] >>269 そのレスを建設的な意見ととらえてみる。 たしかに「詳しく議論を」面接官にいわれて、そこからなんにもいいレスは現れてないな。このスレの現状は。 くだらん質問でもいいから、具体的にだれかアプリをタスクシステムで作ってつまづいたところとか 質問すればいいんじゃない? たとえば2chブラウザにタスクシステムを取り入れてつくったらどうなる?具体的にはHTTPで スレをもってくる処理をタスクにしてみてはどう?
277 名前:名前は開発中のものです。 mailto:sage [2007/04/25(水) 12:18:45 ID:XXwI0rZa] タスクシステムなんてのはあくまで実装の仕方なだけで、 それが良い悪いというのは言語同士の争いと同じく不毛 結局のところ言語と一緒で、自分の使い慣れたものを使えばいいだけ ただ>>276 の提示したような明らかに用途が違うものに適用するのは馬鹿げてる
278 名前:名前は開発中のものです。 mailto:sage [2007/04/25(水) 12:40:36 ID:Yl4vGAsK] 実装の共通点といえば処理をタスクというものにまとめて扱うところぐらいだろ よーするにオブジェクト指向に近い話だと思うんだけど
279 名前:名前は開発中のものです。 [2007/04/25(水) 16:16:35 ID:tVRJOqln] > たとえば2chブラウザにタスクシステムを取り入れてつくったらどうなる?具体的にはHTTPで > スレをもってくる処理をタスクにしてみてはどう? それこそ、マルチスレッドの出番だろw
280 名前:名前は開発中のものです。 mailto:sage [2007/04/26(木) 00:53:16 ID:zB6RGP0j] >>279 タスクとやらでやってみたけど、劇的に早くなるな。すぐに作れるしソースもきれいにできる。 いろいろ改良してみるよ。 まあ、固定概念にひたってるやつは頭が固いってことだよ。
281 名前:名前は開発中のものです。 mailto:sage [2007/04/26(木) 01:58:51 ID:ScANyKa7] サビキ仕掛け
282 名前:名前は開発中のものです。 [2007/04/26(木) 15:18:59 ID:LD+Ad5uI] >>280 釣れますか?
283 名前:名前は開発中のものです。 mailto:sage [2007/04/26(木) 17:45:46 ID:EAeyMYqP] 頭がやわらかすぎるのも考え物だな
284 名前:名前は開発中のものです。 mailto:sage [2007/04/26(木) 17:54:31 ID:ltksUv3A] 脳死者の脳は 溶けちゃってるっていうしなあ
285 名前:名前は開発中のものです。 mailto:sage [2007/04/26(木) 19:42:12 ID:4pZ8geJG] お前らってタスクリストってソート使う?
286 名前:名前は開発中のものです。 mailto:sage [2007/04/26(木) 19:53:28 ID:hISFYhVD] OT使ってるからソートはしない。 けど最近のPCは速いからソートしても良いかもなー
287 名前:名前は開発中のものです。 [2007/04/26(木) 23:47:26 ID:LD+Ad5uI] OTってOrderingTable?これも業界用語だよな・・・
288 名前:名前は開発中のものです。 mailto:sage [2007/04/28(土) 13:18:26 ID:xqg9LfBt] >>280 その劇的に早いきれいなソースを出さないのは何故? いや、まぁネタにマジレスするのもどうかとは思ったんだけど
289 名前:名前は開発中のものです。 [2007/04/28(土) 15:51:51 ID:ABQqrv+P] >>288 教えたくないから。 これって起業レベルのノウハウかもしれないから。社内で提案するかもしれないものをここにはさらせないでしょ。
290 名前:名前は開発中のものです。 mailto:sage [2007/04/28(土) 16:05:29 ID:B/ltLmOS] 289 < 俺・・・このタスクが完成したら起業するんだ・・・
291 名前:名前は開発中のものです。 mailto:sage [2007/04/28(土) 16:50:13 ID:QLBq9OY8] タスクシステムで起業とか、お前は小学生かと。
292 名前:名前は開発中のものです。 mailto:sage [2007/04/28(土) 18:47:35 ID:/H8LY+k/] 技術が儲けになると思う御年頃なんだろ インド、中国、韓国あたりに行くのなら、技術が儲けになるという話も間違いではないけど・・・
293 名前:名前は開発中のものです。 [2007/04/28(土) 19:16:43 ID:00qBiuMZ] 釣られんのよw
294 名前:名前は開発中のものです。 mailto:sage [2007/04/28(土) 23:22:08 ID:XL3V8yE3] ソートはしないな。最初からリストの最後もしくは最初に追加するようにするから。 タスク作成時に必要なリストを作る。 まあ、動的に変化するものは専用の管理クラスかなんか作るだろうな。 プライオリティとかは標準的な制御に入れない。美しくないし。
295 名前:名前は開発中のものです。 mailto:sage [2007/04/28(土) 23:51:37 ID:F7O57cEz] おまいらなんの目的でソートしてる? コリジョン判定の回数を減らすためなら、おいらは2分木でデータを追加していくから実質ソート済み。
296 名前:名前は開発中のものです。 mailto:sage [2007/04/29(日) 01:14:38 ID:KdpdkeKK] 他のタスク(郡)にアクセス(干渉(値見たり書き換えたり))するとき
297 名前:名前は開発中のものです。 mailto:sage [2007/04/29(日) 01:21:54 ID:HaLkae7w] いきなり話かわるけど線形リスト(単方向リスト、チェーン・・・・呼び方はいろいろあるけど)だと挿入や削除は早いけど探索は遅い これが配列(ベクター、固定領域)だとまったく逆の性質になる 実はゲームに不向きなんじゃないか?タスクシステムって
298 名前:名前は開発中のものです。 mailto:sage [2007/04/29(日) 01:30:25 ID:yZTB6Hgr] 自分のプログラムに向いたコンテナを使えばいいじゃん。 タスクがリストだってイメージはメモリの動的管理をケチるような (ヒープじゃなくてワークとか言ってるような)時代の名残じゃないかと思う。
299 名前:名前は開発中のものです。 mailto:sage [2007/04/29(日) 01:30:47 ID:KdpdkeKK] そんな事言ったらコンピュータ自体がゲーム作るのに不利になるって結論に達すると思う。 vectorだと揮発性だからポインタ辺りが面倒くさいし、固定領域だとスタックオーバーフローとか何とかが起こるしね。
300 名前:名前は開発中のものです。 mailto:sage [2007/04/29(日) 01:37:24 ID:oN9CX2Ee] 固定領域でスタックオーバーフローって意味不明。 馬鹿は下手に用語を使うな。
301 名前:名前は開発中のものです。 mailto:sage [2007/04/29(日) 01:39:24 ID:KdpdkeKK] 固定領域じゃスタックオーバーフローは起こらんな。 ちょっとボケてた。
302 名前:名前は開発中のものです。 mailto:sage [2007/04/29(日) 02:20:56 ID:ybvN8RFV] >>297 リストの配列にすればいいさ リストから一つのオブジェクトだけを探索したいときは遅いままだけど そういうときはあらかじめハンドルなりポインタなり握っておけばいい
303 名前:名前は開発中のものです。 mailto:sage [2007/04/29(日) 07:36:23 ID:HDYBA+tg] Javaの場合だけどリストでもなくBlockingQueue<Task>にいれてる。優先度別にqueueも複数ある queue内のすべてのタスクのupdateと必要な描画処理が20ms以内ならまずまずかな
304 名前:名前は開発中のものです。 mailto:sage [2007/04/29(日) 14:50:39 ID:LzYPF20u] >>289 みたいなのがいる限りタスクシステム(笑)も安泰だな
305 名前:名前は開発中のものです。 mailto:sage [2007/04/29(日) 14:52:33 ID:nUOoY/JG] イテレートの速い順序付けツリーってあるの?
306 名前:名前は開発中のものです。 mailto:sage [2007/04/29(日) 15:34:08 ID:tvNJg+l3] >>305 順序付けツリーなら C++ の set や map がだいたいそんな感じだろう。 で、イテレートの遅いコンテナなんてあるの?
307 名前:名前は開発中のものです。 mailto:sage [2007/05/01(火) 13:07:57 ID:Nbo+fhA7] deque? わかんねw
308 名前:名前は開発中のものです。 mailto:sage [2007/05/01(火) 22:39:08 ID:2cazExNO] アドレスがばらけるコンテナはキャッシュミスが起きやすい。 ハッシュのコンテナも構築時間を犠牲にしないものはスカスカのテーブルをそのまま辿るしかないな。
309 名前:名前は開発中のものです。 mailto:sage [2007/09/01(土) 14:23:53 ID:pqs4xK60] 皆さんのやってるプラットホームはやはりPC? コンシューマなひと、いなさそうだが・・・
310 名前:名前は開発中のものです。 mailto:sage [2007/09/01(土) 15:27:45 ID:AAlSvZp8] それを何故このスレで聞くのか
311 名前:名前は開発中のものです。 mailto:sage [2007/09/01(土) 17:38:15 ID:m1OoG9Xt] 一応居るけど
312 名前:名前は開発中のものです。 mailto:sage [2007/09/01(土) 18:08:30 ID:e9oT09wF] メガドラやってるよw あのスレは見てない
313 名前:名前は開発中のものです。 mailto:sage [2007/09/01(土) 19:38:53 ID:X2Bn3rtL] コンシューマやってるけど何が聞きたいの ハードに依存してない部分だしPCとあんまり変わらんよ?
314 名前:名前は開発中のものです。 [2007/09/02(日) 04:39:14 ID:OA6cGu0G] そうなん? てっきり、いまだにタスクシステム使ってるのかと
315 名前:名前は開発中のものです。 mailto:sage [2007/09/02(日) 04:49:20 ID:4YT1t12/] 君の思うタスクシステムの具体的な実装が どういうもんか言ってもらわんと答えようがないなあ その通りかもしれないしそうじゃないかもしれないよ
316 名前:名前は開発中のものです。 mailto:sage [2007/09/02(日) 14:53:28 ID:O3956k1d] なんかGDGDだなこのスレw でも、嫌いじゃないので、おいらもGDGDカキコ タスクの良いところってのはその柔軟性だよな。 技術的にはぜんぜんたいした事をしてるわけじゃない。 とくに、このスレではタスク=リストになってるが、別にリストなんて「高度」な 事をしなくても、ただの配列でもまったく問題なく実現できる。 (無論効率は若干落ちるが、即時にデータ起動の並列もどきルーチンが 作れるのでいろんな環境で便利) 唯一凄いと思えるのは、歴史的な経緯かな。 プログラム主体の8bit時代において、 プログラムでデータを管理するのではなく、データで、プログラムを管理(プログラムを選ぶ) すると言う、データ主体の発送が凄かった。
317 名前:名前は開発中のものです。 [2007/09/02(日) 16:25:59 ID:OA6cGu0G] リストが高度とか、時代錯誤もは(ry
318 名前:名前は開発中のものです。 mailto:sage [2007/09/02(日) 20:53:53 ID:O3956k1d] >>316 おいおいw わざわざ「」付で言ってるんだから 比喩に決まってるだろ リストが「高度」な技術と言える程、 タスクの実装に技術はいらないって意味だ ゆとりじゃあるまいし、勘弁しておくれw
319 名前:名前は開発中のものです。 mailto:sage [2007/09/02(日) 22:16:13 ID:UfEehfKc] 茶でも飲んで落ち着けw
320 名前:名前は開発中のものです。 mailto:sage [2007/09/02(日) 23:01:13 ID:O3956k1d] うむ、そうするか ∧_∧ ( ´・ω・) ズズー ( つ旦O と_)_)
321 名前:名前は開発中のものです。 mailto:sage [2007/09/02(日) 23:14:50 ID: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 名前:名前は開発中のものです。 mailto:sage [2007/09/02(日) 23:19:25 ID:O3956k1d] void main() { //初期化 for(int i=0;i<MAX_TASK;i++)TCB[i].proc = null; //実行 exec() } まあ、リストに対するアンチテーゼと、 こんなに短くてもそこそこ機能するってのが言いたかっただけなんだけどね なんにせよ、タスク(というか、並列動作もどき)ってのは、そんなご大層なものじゃないんで、 もう少し気軽に使えてもいいと思うな。
323 名前:名前は開発中のものです。 mailto:sage [2007/09/02(日) 23:25:34 ID:4YT1t12/] std::vectorとclass Hoge { virtual void Update() = 0; };なら そのソースの1/3くらいで終わる
324 名前:名前は開発中のものです。 mailto:sage [2007/09/02(日) 23:34:48 ID:O3956k1d] >>322 そうか、よかったな。 ただ、このソースは4KのRAMでも動くんだ。 あと、Cを始めて2日の初心者でも理解できるぞ。 ついでに言えば、C++のない環境でも動く。 別に煽ってるわけじゃなくて、316で書いたように 柔軟性が高いということが言いたいだけなんだ。 シンプルなロジックであるが故の柔軟性 かつ、高い並列性がタスクの凄いとこなんだよな
325 名前:名前は開発中のものです。 mailto:sage [2007/09/02(日) 23:44:30 ID:O3956k1d] >ただ、このソースは4KのRAMでも動くんだ。 おっと、タスク数を256にしていたか、4Kじゃ動かんなw まあ、意図はわかると思うんで、適当に読み替えてくだちぃ
326 名前:名前は開発中のものです。 mailto:sage [2007/09/03(月) 00:13:38 ID:OKOrcl0B] うーん、まあ好きなように作ってればいいと思うよ
327 名前:名前は開発中のものです。 mailto:sage [2007/09/03(月) 00:50:28 ID:eAiA8cQA] >>324 数メガの RAM と C++ コンパイラのある環境で得意げに >>321 みたいな コードを書かないでいてくれるなら文句は無い。
328 名前:名前は開発中のものです。 mailto:sage [2007/09/03(月) 01:11:08 ID:tpNXAe5A] >326 いや、無論自分自身は好きに作ってる。 ただ、タスク=LIST管理とかなってきてて、 デザパタとか絡ませる風潮がなんとなくいやなんだ。 もちろん、そういった事を否定するわけじゃなくて、 もっとシンプルなものって事が言いたいだけだよ。 > 数メガの RAM と C++ コンパイラのある環境で得意げに >>321 みたいな > コードを書かないでいてくれるなら文句は無い。 いや、得意気もなにも普通に組むよ。 無論システムとしては組まないけどね。 というか、逆に聞きたいんだけど、並列ではないシステムで(要するにシングル)で組んでて、 一時的に、並列的な挙動が欲しい時って、どうやって組んでるの? まさか、システムに組み込ませるわけじゃないよね? 自分はそういったことが頻繁にあるんで、 そんな中での小技テクとして、上記のようなコードをチョコチョコつかってる。 逆に言うと、タスクなんてその程度のもの。 無論、システム化してべったりって好きだけど、その環境だけで組めるわけじゃないからね。
329 名前:名前は開発中のものです。 mailto:sage [2007/09/03(月) 01:35:46 ID:eAiA8cQA] >>328 >>323
330 名前:名前は開発中のものです。 mailto:sage [2007/09/03(月) 01:47:58 ID:OKOrcl0B] >というか、逆に聞きたいんだけど、並列ではないシステムで(要するにシングル)で組んでて、 >一時的に、並列的な挙動が欲しい時って、どうやって組んでるの? まさしく>>323
331 名前:名前は開発中のものです。 mailto:sage [2007/09/03(月) 02:06:52 ID:tpNXAe5A] >>329 なるほど、STLに行くのか。 て事は基本的な方向性(末端でタスク生成)は変わらないんだよね? ちなみに自分がかかわったプロジェクトでは、STLはメモリの消費量と、 ガベコレを意識できないプログラマがいて、使えなかった。 厳密には使えたんだが、STLの類は、みんな使うとなったら、とことん使うので、 あっという間に使用量が膨れ上がって、パンクしたw。 (搭載メモリは16Mな) 別の件でSTLはおろか、Cの標準ライブラリすらない環境もあったので、 頼らない組み方が基準にはなった。 確かに、つかえりゃ楽なんだけど、 Window以外は、鬼門なことがままあるからなあ>STL あと、新人に理解させる期間が必要という現実的な問題もあるしなw ま、タスクの話からは若干それたが、 329の環境が、STLが使えるような環境を基準に出来れば、それはいいことだと思うよ。 こっちは中々難しいんで、小技テクでごまかして進むしかないけどw
332 名前:名前は開発中のものです。 mailto:sage [2007/09/03(月) 02:37:16 ID:eAiA8cQA] >>331 関数ポインタと固定ワーク領域(+無理やりキャスト)が仮想関数に 置き換わっただけで、基本的な考え方は同じ。 あと、新人に理解させるって点で言っても、関数ポインタや無理やりな キャストよりも仮想関数のほうが自然で理解しやすいはず。特にアセンブラを やらない今の時代では。 生配列と vector の違いについては今の話にはほとんど関係ないけど、 「それ何年前の話?」ってぐらいの時代遅れ感がする。 vector 出しただけで STL 全体の話になってたり、「ガベコレ」とか言ってる あたりで理解も怪しいし。
333 名前:名前は開発中のものです。 mailto:sage [2007/09/03(月) 02:54:20 ID:OKOrcl0B] >ちなみに自分がかかわったプロジェクトでは、STLはメモリの消費量と、 >(ry もうこの辺って用途によるんじゃないかなぁ 360とかPS3みたいにメモリが贅沢な環境でも切り詰めりしなきゃならない場面もあるから >>321 みたいな実装になることもあるよ 勘違いして欲しくないのは、本来やりたいことってのが 大量の「関数と実行コンテキストのペア」を如何に管理するかって話なんだから >>321 の例にしても>>323 の例にしても、所詮はその実現方法の1つに過ぎないことかな 逆に質問してみるけど 9割が128バイトのサイズのタスクと残りが1024バイトのタスクが混在するような状況下で あなたはどうやって管理するんでしょうか
334 名前:名前は開発中のものです。 mailto:sage [2007/09/03(月) 02:58:58 ID:sckJXuMq] まあvectorだと、「削除や挿入などの操作」と「タスクへのポインタの保持」が背反するんだけどな。 321みたいな配列系は、リスト用のポインタ変数すら削りたいほどメモリが逼迫してて、 順番の制御が要らないのならいいんじゃね?
335 名前:名前は開発中のものです。 mailto:sage [2007/09/03(月) 03:27:47 ID:Ic41WPtX] >>332 > 関数ポインタと固定ワーク領域(+無理やりキャスト)が仮想関数に > 置き換わっただけで、基本的な考え方は同じ。 なるほど、ここは了解っす。 > vector 出しただけで STL 全体の話になってたり、「ガベコレ」とか言ってる いやいやw、実際使用する段になったら、vectorだけ使用してOKって話にはならんでしょ。 これがだめ、あれがOKって細かく指定するならよいんだけど、そこまでして STL使うプロジェクトには参加したことないなぁ。それに制限するならSTLの意義が薄れてくるし。 (確かに、vector使えるだけでもかなり変わるとは思うけどね) ガベコレについては、話が飛びすぎの感があったんで細かく触れなかったが、 メモリの断片化による、ガベコレの処理落ち、あと、メモリ確保エラーのコトな。 現在のSTLでこれらが一切起こらないことが保証されてるならいいけど、 そうでないなら、対処を知らない人のために、何らかの対策や方針が必要になる。 件のプロジェクトではそれがなくてヤバいことになった。 > あと、新人に理解させるって点で言っても、関数ポインタや無理やりな > キャストよりも仮想関数のほうが自然で理解しやすいはず。 あー、ここは同意。 無理やりキャストよりは、言語使用に沿った概念のほうがいいからね。
336 名前:名前は開発中のものです。 mailto:sage [2007/09/03(月) 03:46:43 ID:Ic41WPtX] >>333 基本的には1024byteのタスクを先に生成して(起動するまでSLEEP)から、128byteタスクの生成かな。 途中でどうしても、フルに使わなきゃならない場合は、グループでの生成と削除を行う。 この例だと、8タスクを1グループとして、生成と削除を行う。 大体、こんなかんじっす。
337 名前:名前は開発中のものです。 mailto:sage [2007/09/03(月) 03:48:53 ID:eAiA8cQA] >>335 ほんと、胡散臭いな。 vector は許可が無いと使えないのが当たり前だと 思ってそうだし。 標準ライブラリに使用制限を付けるほうが異常でしょ?制限を付けるには 理由が要る。コンテナの動的メモリ確保に問題があって禁止するなら、 アルゴリズム系ライブラリまで "STL" とまとめて禁止することは無い。 C++ の言語仕様にも標準ライブラリにもガベコレは無い。 Boehm GC でも 使ってるの? メモリの断片化がどうのこうの云うなら malloc も new も同じことなんだけど、 それらも使わないことにしてるの? あー。 new が禁止になってるなら仮想関数を使わないのかな?
338 名前:名前は開発中のものです。 mailto:sage [2007/09/03(月) 04:13:34 ID:Ic41WPtX] >>337 いや、なにをうさんくさがってるのか知らないけど、 自分の考えや方針と違う人がいるのがそんなに気に入らないのかな? > ほんと、胡散臭いな。 vector は許可が無いと使えないのが当たり前だと > 思ってそうだし。 そんなことは思ってもいないが、STL使用時はメインの人に確認はするよ。 まあ別に、どうでもいいけどね。 > メモリの断片化がどうのこうの云うなら malloc も new も同じことなんだけど、 別にmallocは禁止にしてないけど、ほとんど使わないね。 仮想関数は、c++が使える環境かどうかとメモリ量によるね
339 名前:名前は開発中のものです。 mailto:sage [2007/09/03(月) 05:14:29 ID:eAiA8cQA] >>338 気に入らないのは、不確かな理由で複雑なコードを書いてしまうこと。 vector を使えない理由をいろいろと説明しようとしてくれていたけど、その理由の 真偽が胡散臭いってことね。 ただ、これ以上追究する気もなくなった。
340 名前:名前は開発中のものです。 mailto:sage [2007/09/03(月) 09:21:14 ID:y2Xn2ykc] >>338 提示したソースが洗練されてるとは言わんが、 ほぼすべてのC環境で動くコードが、 最近の環境に適したコードではないからといって、 胡散臭がられるとは思わなかったw 短くて、美しいソースが正義とか思ってそうだね。
341 名前:名前は開発中のものです。 mailto:sage [2007/09/03(月) 09:50:46 ID:OKOrcl0B] >>336 君のやり方って1フレーム中に 毎フレーム256個のタスクがアクティブかどうかチェックするための オーバーヘッドが発生するんだけど(これ自体がそもそも重大な問題なのに) そのメモリの割り当て方はそれを上長させますよ
342 名前:名前は開発中のものです。 mailto:sage [2007/09/03(月) 10:28:10 ID:2Imr3kJv] >>340 id:O3956k1d = id:y2Xn2ykc なのはいいとして(レス番が一個ずつずれてるぞ) 胡散臭いと言われてるのはSTLとガベコレを混同してるid:tpNXAe5A = id:Ic41WPtXd の存在自体 であって、君のことじゃないだろう?
343 名前:名前は開発中のものです。 mailto:sage [2007/09/03(月) 11:23:55 ID:VocmouaK] つか、なんで>>331 でガベコレの話がいきなり出てきたわけ?
344 名前:名前は開発中のものです。 mailto:sage [2007/09/03(月) 11:40:25 ID:ckJtc0Qf] >>331 >(搭載メモリは16Mな) ドリーmあqswでfrgtyふじk 胡散臭がってる人とかPCの人には分らんかもしれんがコンシューマだと プロジェクトによってはSTLはおろかC++も使えないことがあるよ。 C++許可でもnew禁止、とかさ。 古い人(ちょっと偉い人)がプロジェクトに混じるとC主体になったりするし。 >>340 正義がまかり通る職種ではないし、主義主張を煽るような発言は荒れるぜー。 プログラマは性格悪いからなw
345 名前:名前は開発中のものです。 mailto:sage [2007/09/03(月) 11:44:32 ID:ckJtc0Qf] >>343 C++かSTLにガベコレなんて実装されてたっけ? 記憶にないんだけど。
346 名前:名前は開発中のものです。 mailto:sage [2007/09/03(月) 12:25:32 ID:rM0ce6hj] >>344 ゲームじゃないけど RAM128バイトでcコンパイラも無いターゲットで仕事したことあるぞ
347 名前:名前は開発中のものです。 [2007/09/03(月) 13:20:45 ID:BR9raoz2] /' ! ━━┓┃┃ -‐'―ニ二二二二ニ>ヽ、 ┃ ━━━━━━━━ ァ /,,ィ=-;;,,, , ,,_ ト-、 ) ┃ ┃┃┃ ' Y ー==j 〈,,二,゙ ! ) 。 ┛ ゝ. {、 - ,. ヾ "^ } } ゚ 。 ) ,. ‘-,,' ≦ 三 ゞ, ∧ヾ ゝ'゚ ≦ 三 ゚。 ゚ '=-/ ヽ゚ 。≧ 三 ==- / |ヽ \-ァ, ≧=- 。 ! \ イレ,、 >三 。゚ ・ ゚ | >≦`Vヾ ヾ ≧ 〉 ,く 。゚ /。・イハ 、、 `ミ 。 ゚ 。 ・
348 名前:名前は開発中のものです。 mailto:sage [2007/09/03(月) 13:31:16 ID:ckJtc0Qf] 128バイト?キーチェーンとかでももう少しありそうなんだが。 つか、8bit以下のCPUならコンパイラよりもアセンブラだろ。 小さいならバイナリを打ち込んだりとか。
349 名前:名前は開発中のものです。 mailto:sage [2007/09/03(月) 22:41:28 ID:l9Qlmw/p] ワークがちょびっとしかなくても ROMが十分あればどうとでもなる
350 名前:名前は開発中のものです。 mailto:sage [2007/09/04(火) 02:25:05 ID:+Mg349f+] もちろんアセンブラ 他に選択肢は無いし ちなみに、CypressのCY7C63101か何かだった
351 名前:名前は開発中のものです。 mailto:sage [2007/09/07(金) 22:50:02 ID:CXdTTUEg] 時代錯誤のロートルはもう死んでくれ。 お前の糞テクニックなんて今はもう害悪にしかならんよ。
352 名前:名前は開発中のものです。 mailto:sage [2007/09/10(月) 00:23:29 ID:QZRbzkCO] \|/ /⌒ヽ / ̄ ̄ ̄ ̄ ̄ ̄ | ゜Θ゜)< そうでもないよ。 | ∵ つ \______ | ∵ .| \_/
353 名前:名前は開発中のものです。 mailto:sage [2007/09/12(水) 13:27:57 ID:ZYdwKK9S] >>346 それってPICだろ・・・・
354 名前:名前は開発中のものです。 mailto:sage [2007/09/12(水) 15:51:28 ID:+wMsl3iC] >>353 Cypressの8bitマイコンです