タスクシステム総合スレat GAMEDEV
タスクシステム総合スレ - 暇つぶし2ch207:名前は開発中のものです。
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

332:名前は開発中のものです。
07/09/03 02:37:16 eAiA8cQA
>>331
関数ポインタと固定ワーク領域(+無理やりキャスト)が仮想関数に
置き換わっただけで、基本的な考え方は同じ。

あと、新人に理解させるって点で言っても、関数ポインタや無理やりな
キャストよりも仮想関数のほうが自然で理解しやすいはず。特にアセンブラを
やらない今の時代では。

生配列と vector の違いについては今の話にはほとんど関係ないけど、
「それ何年前の話?」ってぐらいの時代遅れ感がする。
vector 出しただけで STL 全体の話になってたり、「ガベコレ」とか言ってる
あたりで理解も怪しいし。

333:名前は開発中のものです。
07/09/03 02:54:20 OKOrcl0B
>ちなみに自分がかかわったプロジェクトでは、STLはメモリの消費量と、
>(ry
もうこの辺って用途によるんじゃないかなぁ
360とかPS3みたいにメモリが贅沢な環境でも切り詰めりしなきゃならない場面もあるから
>>321みたいな実装になることもあるよ

勘違いして欲しくないのは、本来やりたいことってのが
大量の「関数と実行コンテキストのペア」を如何に管理するかって話なんだから
>>321の例にしても>>323の例にしても、所詮はその実現方法の1つに過ぎないことかな

逆に質問してみるけど
9割が128バイトのサイズのタスクと残りが1024バイトのタスクが混在するような状況下で
あなたはどうやって管理するんでしょうか

334:名前は開発中のものです。
07/09/03 02:58:58 sckJXuMq
まあvectorだと、「削除や挿入などの操作」と「タスクへのポインタの保持」が背反するんだけどな。
321みたいな配列系は、リスト用のポインタ変数すら削りたいほどメモリが逼迫してて、
順番の制御が要らないのならいいんじゃね?

335:名前は開発中のものです。
07/09/03 03:27:47 Ic41WPtX
>>332

> 関数ポインタと固定ワーク領域(+無理やりキャスト)が仮想関数に
> 置き換わっただけで、基本的な考え方は同じ。

なるほど、ここは了解っす。

> vector 出しただけで STL 全体の話になってたり、「ガベコレ」とか言ってる

いやいやw、実際使用する段になったら、vectorだけ使用してOKって話にはならんでしょ。
これがだめ、あれがOKって細かく指定するならよいんだけど、そこまでして
STL使うプロジェクトには参加したことないなぁ。それに制限するならSTLの意義が薄れてくるし。
(確かに、vector使えるだけでもかなり変わるとは思うけどね)

ガベコレについては、話が飛びすぎの感があったんで細かく触れなかったが、
メモリの断片化による、ガベコレの処理落ち、あと、メモリ確保エラーのコトな。
現在のSTLでこれらが一切起こらないことが保証されてるならいいけど、
そうでないなら、対処を知らない人のために、何らかの対策や方針が必要になる。
件のプロジェクトではそれがなくてヤバいことになった。


> あと、新人に理解させるって点で言っても、関数ポインタや無理やりな
> キャストよりも仮想関数のほうが自然で理解しやすいはず。

あー、ここは同意。
無理やりキャストよりは、言語使用に沿った概念のほうがいいからね。

336:名前は開発中のものです。
07/09/03 03:46:43 Ic41WPtX
>>333
基本的には1024byteのタスクを先に生成して(起動するまでSLEEP)から、128byteタスクの生成かな。
途中でどうしても、フルに使わなきゃならない場合は、グループでの生成と削除を行う。
この例だと、8タスクを1グループとして、生成と削除を行う。
大体、こんなかんじっす。

337:名前は開発中のものです。
07/09/03 03:48:53 eAiA8cQA
>>335
ほんと、胡散臭いな。 vector は許可が無いと使えないのが当たり前だと
思ってそうだし。

標準ライブラリに使用制限を付けるほうが異常でしょ?制限を付けるには
理由が要る。コンテナの動的メモリ確保に問題があって禁止するなら、
アルゴリズム系ライブラリまで "STL" とまとめて禁止することは無い。

C++ の言語仕様にも標準ライブラリにもガベコレは無い。 Boehm GC でも
使ってるの?

メモリの断片化がどうのこうの云うなら malloc も new も同じことなんだけど、
それらも使わないことにしてるの?
あー。 new が禁止になってるなら仮想関数を使わないのかな?

338:名前は開発中のものです。
07/09/03 04:13:34 Ic41WPtX
>>337
いや、なにをうさんくさがってるのか知らないけど、
自分の考えや方針と違う人がいるのがそんなに気に入らないのかな?

> ほんと、胡散臭いな。 vector は許可が無いと使えないのが当たり前だと
> 思ってそうだし。

そんなことは思ってもいないが、STL使用時はメインの人に確認はするよ。
まあ別に、どうでもいいけどね。

> メモリの断片化がどうのこうの云うなら malloc も new も同じことなんだけど、

別にmallocは禁止にしてないけど、ほとんど使わないね。
仮想関数は、c++が使える環境かどうかとメモリ量によるね


339:名前は開発中のものです。
07/09/03 05:14:29 eAiA8cQA
>>338
気に入らないのは、不確かな理由で複雑なコードを書いてしまうこと。

vector を使えない理由をいろいろと説明しようとしてくれていたけど、その理由の
真偽が胡散臭いってことね。

ただ、これ以上追究する気もなくなった。

340:名前は開発中のものです。
07/09/03 09:21:14 y2Xn2ykc
>>338
提示したソースが洗練されてるとは言わんが、
ほぼすべてのC環境で動くコードが、
最近の環境に適したコードではないからといって、
胡散臭がられるとは思わなかったw
短くて、美しいソースが正義とか思ってそうだね。

341:名前は開発中のものです。
07/09/03 09:50:46 OKOrcl0B
>>336
君のやり方って1フレーム中に
毎フレーム256個のタスクがアクティブかどうかチェックするための
オーバーヘッドが発生するんだけど(これ自体がそもそも重大な問題なのに)
そのメモリの割り当て方はそれを上長させますよ

342:名前は開発中のものです。
07/09/03 10:28:10 2Imr3kJv
>>340
id:O3956k1d = id:y2Xn2ykc なのはいいとして(レス番が一個ずつずれてるぞ)
胡散臭いと言われてるのはSTLとガベコレを混同してるid:tpNXAe5A = id:Ic41WPtXd の存在自体
であって、君のことじゃないだろう?

343:名前は開発中のものです。
07/09/03 11:23:55 VocmouaK
つか、なんで>>331でガベコレの話がいきなり出てきたわけ?

344:名前は開発中のものです。
07/09/03 11:40:25 ckJtc0Qf
>>331
>(搭載メモリは16Mな)
ドリーmあqswでfrgtyふじk

胡散臭がってる人とかPCの人には分らんかもしれんがコンシューマだと
プロジェクトによってはSTLはおろかC++も使えないことがあるよ。
C++許可でもnew禁止、とかさ。
古い人(ちょっと偉い人)がプロジェクトに混じるとC主体になったりするし。

>>340
正義がまかり通る職種ではないし、主義主張を煽るような発言は荒れるぜー。
プログラマは性格悪いからなw

345:名前は開発中のものです。
07/09/03 11:44:32 ckJtc0Qf
>>343
C++かSTLにガベコレなんて実装されてたっけ?
記憶にないんだけど。

346:名前は開発中のものです。
07/09/03 12:25:32 rM0ce6hj
>>344
ゲームじゃないけど
RAM128バイトでcコンパイラも無いターゲットで仕事したことあるぞ

347:名前は開発中のものです。
07/09/03 13:20:45 BR9raoz2
  /'           !   ━┓┃┃
-‐'―ニ二二二二ニ>ヽ、    ┃   ━━━━
ァ   /,,ィ=-;;,,, , ,,_ ト-、 )    ┃               ┃┃┃
'   Y  ー==j 〈,,二,゙ !  )    。                  ┛
ゝ.  {、  - ,. ヾ "^ }  } ゚ 。
   )  ,. ‘-,,'   ≦ 三  
ゞ, ∧ヾ  ゝ'゚       ≦ 三 ゚。 ゚
'=-/ ヽ゚ 。≧         三 ==-
/ |ヽ  \-ァ,          ≧=- 。
  ! \  イレ,、         >三  。゚ ・ ゚
  |   >≦`Vヾ        ヾ ≧
  〉 ,く 。゚ /。・イハ 、、     `ミ 。 ゚ 。 ・

348:名前は開発中のものです。
07/09/03 13:31:16 ckJtc0Qf
128バイト?キーチェーンとかでももう少しありそうなんだが。

つか、8bit以下のCPUならコンパイラよりもアセンブラだろ。
小さいならバイナリを打ち込んだりとか。

349:名前は開発中のものです。
07/09/03 22:41:28 l9Qlmw/p
ワークがちょびっとしかなくても
ROMが十分あればどうとでもなる

350:名前は開発中のものです。
07/09/04 02:25:05 +Mg349f+
もちろんアセンブラ
他に選択肢は無いし
ちなみに、CypressのCY7C63101か何かだった

351:名前は開発中のものです。
07/09/07 22:50:02 CXdTTUEg
時代錯誤のロートルはもう死んでくれ。
お前の糞テクニックなんて今はもう害悪にしかならんよ。

352:名前は開発中のものです。
07/09/10 00:23:29 QZRbzkCO
\|/
/⌒ヽ   / ̄ ̄ ̄ ̄ ̄ ̄
| ゜Θ゜)< そうでもないよ。
| ∵ つ \______
| ∵ .|
\_/

353:名前は開発中のものです。
07/09/12 13:27:57 ZYdwKK9S
>>346
それってPICだろ・・・・

354:名前は開発中のものです。
07/09/12 15:51:28 +wMsl3iC
>>353
Cypressの8bitマイコンです


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