トップページgamedev
1001コメント529KB

タスクシステム総合スレ part4

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2009/02/01(日) 12:38:10ID:rVEgp4cM
タスクシステムについての議論、相談、質問、雑談などのスレです

part3 http://pc11.2ch.net/test/read.cgi/gamedev/1226199100/
part2 http://pc11.2ch.net/test/read.cgi/gamedev/1196711513/
part1 http://pc11.2ch.net/test/read.cgi/gamedev/1173708588/
0002名前は開発中のものです。2009/02/01(日) 12:38:48ID:rVEgp4cM
White Paper - Programming
http://homepage3.nifty.com/moha/programming.html

タスクシステム
http://www5f.biglobe.ne.jp/~kenmo/program/task/task.html

CodeZine:本格的なシューティングゲームを実現するタスクシステム(タスクシステム,シューティング,ゲーム)
http://codezine.jp/a/article.aspx?aid=297

Logician Lord … 【コンピュータゲームのからくり】
※ウェブアーカイブのキャッシュ
http://web.archive.org/web/20041009222313/www.hh.iij4u.or.jp/~peto/Games/games_top.html
0003名前は開発中のものです。2009/02/02(月) 06:56:14ID:lhNqT94l
前スレで判明したことだが>>1だけが異様に初心者でおまけに日本語が不自由で
一人だけ言っていることのレベルが低すぎて無駄な議論をすることになる。

ゲ板は>>1のための日本語教室ではない。
よって我々はこのスレは放棄する。

■■■■■■■■■■■■■ 終 了 ■■■■■■■■■■■■■■■■
0004名前は開発中のものです。2009/02/02(月) 07:37:01ID:P5kryGXr
ありゃりゃw
うわーん!もうこねぇよ!的書き込み?
前スレでとっちめ過ぎたか(笑)
強くイキロ
0005名前は開発中のものです。2009/02/02(月) 08:00:02ID:riEYZJpX
初心者でも日本語不自由でも構わないが、そのことを全く無自覚なのが致命的
0006名前は開発中のものです。2009/02/02(月) 09:41:16ID:ZmvZOOAJ
>>3
俺も同感。こんな基地外の面倒見切れねぇ。

■■■■■■■■■■■■■ 終 了 ■■■■■■■■■■■■■■■■
0007名前は開発中のものです。2009/02/02(月) 18:56:46ID:4iEjv7V2
埋めてみる
0008名前は開発中のものです。2009/02/02(月) 19:00:13ID:/OtqrHae
>>1
よかったね
0009名前は開発中のものです。2009/02/02(月) 19:01:02ID:eXicwt1O
>>1
おめでとうございます。
0010名前は開発中のものです。2009/02/02(月) 19:02:19ID:9tvsUBOz
>>1
さすがです。
0011名前は開発中のものです。2009/02/02(月) 19:25:25ID:42Ae1zlH
さすが>>1さん。
>タスクシステムはごった煮ソースになるので
>ほぼ全クラスを一括インクルードしなければ動かないとかかなり糞
とか他の人と言うことが違う。
憧れるわ〜。
0012名前は開発中のものです。2009/02/02(月) 19:36:10ID:cShVBku0
俺のヒーローインタビューがまだ続いてるのか
まあ、数人のタスク信者を2人で撃退したからね当然といえば当然だな
忘れないように前スレの勇姿を貼っておこう

http://pc11.2ch.net/test/read.cgi/gamedev/1226199100/824-974

824 名前:名前は開発中のものです。[sage] 投稿日:2009/01/31(土) 02:30:33 ID:2y83CUUn
デザインパターンで安全にタスクシステムを構築できるということについて
具体的に否定できるヤツは一人もいないなw

ファビョって否定してるやつが数人いるようにみえるがID変えてるだけのアホが一人なんだろうな。

826 名前:名前は開発中のものです。[sage] 投稿日:2009/01/31(土) 02:44:15 ID:rIovvj90
>>824
安全には無理でしょ
明示的な引数がない時点でプログラムの作法云々なんてもう
気にしない組み方だと思うけどね

update();

で動くのと

update(jiki,teki,tama,unko);

で動くのとじゃ
プログラムとしては絶対に下のがいい
上は結局、その関数で何が必要なのか要素がまったくわからない
アクセスしているものを知るには中身のプログラムを読むしかないし
0013名前は開発中のものです。2009/02/02(月) 19:40:57ID:/OtqrHae
>>12
終了ですよ
0014名前は開発中のものです。2009/02/02(月) 19:42:03ID:4iEjv7V2
■■■■■■■■■■■■■ 終 了 ■■■■■■■■■■■■■■■■
0015名前は開発中のものです。2009/02/02(月) 19:43:21ID:eXicwt1O
このスレはすでに終了しています。
0016名前は開発中のものです。2009/02/02(月) 19:45:22ID:9tvsUBOz
糸冬了
0017名前は開発中のものです。2009/02/02(月) 19:47:14ID:cShVBku0
>>13-16
お前もしかして1人でやってんの?(笑)
でひゃひゃひゃひゃw
0018名前は開発中のものです。2009/02/02(月) 19:47:53ID:9tvsUBOz
ひとりでやってるよ
0019名前は開発中のものです。2009/02/02(月) 19:51:25ID:cShVBku0
>>18
書き込み制限つらそうだなw
0020名前は開発中のものです。2009/02/02(月) 19:53:17ID:/OtqrHae
このスレは俺が粘着してるから他のスレで楽しんでください。
0021名前は開発中のものです。2009/02/02(月) 20:08:25ID:ZmvZOOAJ
>>12
> まあ、数人のタスク信者を2人で撃退したからね当然といえば当然だな

お前には、自分が撃退されることもわからないのか。こんな基地外珍しいな。
0022名前は開発中のものです。2009/02/02(月) 20:27:51ID:4iEjv7V2
ID:cShVBku0がコテになるっていうなら俺は消える。
そしてコテになったら即あぼ〜ん設定してあげるよ。
0023名前は開発中のものです。2009/02/02(月) 20:33:59ID:cShVBku0
IDあるんだからさっさとあぼーんしろよw
そしたら前スレの俺の武勇伝をあることないこと脚色して書き込むからさw
0024名前は開発中のものです。2009/02/02(月) 20:35:30ID:4iEjv7V2
IDあぼ〜んしちゃったら何がなんだかわからなくなるじゃん
0025名前は開発中のものです。2009/02/02(月) 20:56:02ID:v0zAXoNG
まともに議論したいんだったら、mixiとか使って
基地外は排除しちゃえばいいんじゃない。
0026名前は開発中のものです。2009/02/02(月) 21:00:59ID:riEYZJpX
よーしじゃあmixiに移動だ
でどこ?
0027名前は開発中のものです。2009/02/02(月) 23:59:31ID:SpnGISw5
>>12
数人っていうか1人のように思う。

それと、疲れちゃったプログラマをからかい続けるのは感心しない。
そろそろやめとけば?
なんか効き目が強い。多分本当に病気だ。
それでもやっぱタスク使ってて何か引っかかるものがあるからこのスレに来てるんだろうし
0028名前は開発中のものです。2009/02/03(火) 00:23:33ID:az8GBqBA
■■■■■■■■■■■■■ スレ主が真性基地外であることが発覚したため終了 ■■■■■■■■■■■■■■■■
0029名前は開発中のものです。2009/02/03(火) 00:30:03ID:lrih8mAc
>>27
いいんだよ
そいつの次の成長なんてタスクシステムを捨てた先にあるのは明らかなんだから
それに他の初心者がこんなもん妄信しはじめたらどうする

それに程度の低い書籍の悪影響もあるだろうな
ベタ書きを極度に馬鹿にするあまり
書かなければならない処理があるということの説明を怠った
独学ばっかりしてて会社でも誰ともやりとりがなければ誰にも指摘をうけないだろうな

前スレで引数の話を始めにしたが
引数が無い関数のがよく見える
とか言い出しやがった
明らかにレベルが低いというか危険レベルだろ
オブジェクト指向云々の前になぜプログラム言語が制限をつける形で成長してきたのか?
そこからすでにわかってねぇそんなレベルだった
型ってなんで必要なのか?引数ってなんであるのか?グローバル変数ってなんでダメなのか?
そういうところを一つ一つ考えなおさなきゃ次へいけないだろ

俺の周りにはたまたま教えてくれる人間がいたんだけどね
0030名前は開発中のものです。2009/02/03(火) 10:35:48ID:az8GBqBA
注意!! >>29 = 真性基地外のため、初心者は騙されるな!!!
0031名前は開発中のものです。2009/02/03(火) 12:02:10ID:vWXRMn0/
とりあえず
ttp://sdc.sun.co.jp/sunstudio/documentation/ss12/mr/man3cc4/task.3.html
昔のC++には含まれていたtask.h(task library)
今の標準にはない
0032名前は開発中のものです。2009/02/03(火) 19:50:07ID:+ZtfpvwK
近代的タスクシステムの構築
http://d.hatena.ne.jp/yaneurao/20090203#p1
0033名前は開発中のものです。2009/02/03(火) 20:20:13ID:bfgGLsQE
>>32
いい記事だとおも
0034名前は開発中のものです。2009/02/03(火) 21:10:48ID:jRNhtvu7
linus先生からのお言葉
http://tabesugi.net/memo/2009/1a.html#152154
0035名前は開発中のものです。2009/02/03(火) 21:24:50ID:lrih8mAc
>>32
どうせなら前スレでボコボコにされたタスク信者のために
明示的な引数の記述についてもコメントしてあげればよかったのにw
20090203とか今日だしよw
どうせみてんだろ>やねうらお
0036名前は開発中のものです。2009/02/03(火) 21:29:31ID:xRxybyai
>>32
>それではタスクシステムは現代においては不要なのかというとそうでもなく、
>成熟したタスクシステム(タスク自体のデバッグを支援するタスクデバッガのような環境を含めて
> 「タスクフレームワーク」と呼ぶほうがふさわしいかも知れない)は、ゲーム開発において依然として有用であり(以下略)
現代的に仕立て直しても有用性がデバッガの存在という1点のみか。
まずは一番最初にデバッガ完成させないと有用じゃないんだな
0037名前は開発中のものです。2009/02/03(火) 22:02:41ID:az8GBqBA
や ね う ら お、はじまったな!
0038名前は開発中のものです。2009/02/03(火) 22:29:12ID:XllhY44u
ここは空気読んでたすくしすてむはクソだ!って言っとけばいいのか?
0039名前は開発中のものです。2009/02/03(火) 23:38:52ID:eseY0VNG
>>31
コルーチンライブラリだね。コンテキストの保存と切り替えしてるね
 Win32APIのFiber
 protothreads
 Luaのコルーチン
 Squirrelのスレッド
 などなど
これらに相当するものでしょ
0040名前は開発中のものです。2009/02/04(水) 00:36:43ID:bPux8EGG
>>31
へー。C++標準にコルーチンを組み込む動きがあったとは知らんかった
コルーチン=協調的マルチタスクだから task.h なんだろうね
でもリンク先に「タスクシステム」とか書いてあるし、嫌タスク派に名前が悪いと怒られないか心配だなw

検索したらC++トランスレータ時代(1985年頃)のマニュアルが参考文献として上がってたわ
"A set of C++ classes for co-routine style programming"
by Stroustrup, B. and Shopiro, J. E.
in Chapter 2 of the C++ Library Manual
ttp://www.softwarepreservation.org/projects/c_plus_plus/cfront/release_e/doc/ClassesForCouroutines.pdf
0041名前は開発中のものです。2009/02/04(水) 01:31:33ID:NUZzb6Kr
>>40
>名前が悪いと怒られないか心配だなw

それは大丈夫じゃないかな
複数のジョブを協調的に並行処理・逐次処理する仕掛けになってるから
ユーザーはプログラムの中にsleep()とかを挟みこむだけでおk

job()
{
 while(1)
 {
  …
  sleep();
  foreach(…){
   …
   sleep();
  }
  …
  sleep();
 }
}
sleep()とかを挟みこむだけでライブラリが半自動的にタスクに分割してくれる
コンテキストの保存と切り替えを全部面倒みてくれる。スケジューリング機構も
一応入ってる。>>2とは雲泥の差だよ
0042名前は開発中のものです。2009/02/04(水) 02:19:05ID:bPux8EGG
>>41
そこはただの軽口だから、そんな真面目に説明されてもね
つか君はコルーチンを説明するフリをして>>2をけなしたいだけだろww別にけなしていいけどさw
まあストラウストラップ先生の書いたクラス群はシステムの名に値するみたいだし
今度からコルーチンシステムと呼ぼうかなー

関係ないけどやねうらおは絶対ここチェックしてるよなw
やねうらお対ひらしょータスク戦争勃発w
0043名前は開発中のものです。2009/02/04(水) 03:52:12ID:zoy9itGC
やねうらおはこんな場末のスレ、見てないだろ

>>32 は、前スレまでの議論よりずっとずっと先を行ってるから
彼にとってはこんなスレ、見る価値もないんでねーの?

さすがにこれは天晴れと言わざるを得ない
0044名前は開発中のものです。2009/02/04(水) 04:04:25ID:YtdnZlpb
>>43
みてないとか嘘だろ
だって「ごった煮」とか前スレ特有の言葉だしてきてるし
わざわざ見てますよアピールしてんだからかまってやれよw

でも前スレで話題に上がった引数に関して触れてないのはいただけないな
無視なら「そんなもんは無視」って名言してくれるだけでもスタンスわかっていいんだけど
別にいい悪いも正解不正解もないわけだし
0045名前は開発中のものです。2009/02/04(水) 21:49:37ID:mLZ417D5
>39
protothreadはコンテキスト保存してないよ。
0046名前は開発中のものです。2009/02/04(水) 23:51:04ID:Tig/dZbl
>>32
親切心から、敢えてコメントさせてもらうと・・・

アマチュアゲームプログラマ未満だな。
まともにゲーム製作を経験した人間が書いた記事とは、到底思えない。
これ誉めちぎっている奴の狙いって何なんだろ。
一部の明らかにテンションが違う応援団は、スルーするのが基本なのか?
0047名前は開発中のものです。2009/02/04(水) 23:58:11ID:iOg8fZiC
ほめちぎってる応援団なんてどこにいるんだ
0048名前は開発中のものです。2009/02/05(木) 00:10:20ID:e5oU/vxX
>>46
是非、どこかのブログで反論頼む!
0049名前は開発中のものです。2009/02/05(木) 00:31:46ID:9DTLfrVW
やねう先生の近代的なタスクの話を読んでみたけど、
boost::shared_ptrとかunordered_mapとか実装が近代的というだけで、
やってることは古典的だよね(そういう趣旨だから当然だけど)。
ってことで、Mix-in好きのオレが近代的なタスクを考えてみた。

古典的タスクシステムをupdate巡回リストであると仮定すると、
タスクとはすなわちフレームをまたいだ継続的処理の抽象化だと考えることができる。
継続処理を今風に考えれば以下の3種類に分かれるはずで、
どれが良いかはケースバイケースで異なる。

//(1)毎フレーム呼ばれる古き良きタスク(負荷が小さい。排他処理不要)
class PeriodicalTask {
public:
  virtual void update() = 0;
};

//(2)コルーチン動作するタスク(負荷は中程度。排他処理不要)
class CooperativeTask {
public:
  CooperativeTask(size_t stackSize);
  virtual int call() = 0;
};

//(3)ネイティブスレッド動作するタスク(負荷が大きい。排他処理必須)
class PreemptiveTask {
public:
  PreemptiveTask(size_t stackSize);
  virtual int start() = 0;
};
0050名前は開発中のものです。2009/02/05(木) 00:32:17ID:9DTLfrVW
ここでは描画オブジェクトとタスクは無関係だと考えて、以下のクラスを用意する。
無関係とするのは、描画オブジェクトが必ず継続処理を必要とするわけではないからだ。

//描画オブジェクト
template <class DrawContext>
class DrawingObject {
public:
  virtual void draw(const DrawContext& dc) = 0;
};

描画用リストは CompositeDrawingObject クラスが管理する。
インターフェイスは自明な気がするので省略。
さてゲームの主人公マリオをどう表現するかというと、

//マリオ
class Mario : public DrawingObject<DrawContext2D>, public PeriodicalTask {
public:
  void draw(const DrawContext2D& dc);
  void update();
};

このようにMix-inして作る。ここでは PeriodicalTask を Mix-in したが、
マリオの継続処理を CooperativeTask でコーディングしたければそれを選んでも構わない。
PreemptiveTask を選ぶのは明らかにオーバースペックで排他処理が面倒になるが、
やりたければそれもまあ可能だ。
0051名前は開発中のものです。2009/02/05(木) 00:32:50ID:9DTLfrVW
タスクと描画オブジェクトが無関係な理由はもう一つある。
例えば以下のように、描画オブジェクトでなくても継続処理をしたい場合があるからだ。

//テクスチャ画像を波打たせるトランジション
class RippleTextureTransition : public TextureTransition, public CooperativeTask {
public:
  int call();
};

とまあこんな感じはどうだろう。モダンっぽくね?
0052名前は開発中のものです。2009/02/05(木) 00:46:05ID:/BuTmFOA
1,2,3を混ぜたい時はどうするんだ?
単一の巡回呼び出しでは呼べないぞ、それじゃ。

というか、3は明らかに不要だろ。
taskの更新処理は1と2以外にないだろ。
0053名前は開発中のものです。2009/02/05(木) 00:48:58ID:e5oU/vxX
>>49
何か勘違いしているように思える。

(1)に限らず、(2)でも(3)でも毎フレーム呼び出されると思うのだが。
0054名前は開発中のものです。2009/02/05(木) 00:53:46ID:/BuTmFOA
>53
3は論外だが、普通に実装すれば1と2はきちんと呼び出し元に帰るから問題ないんじゃね?
0055名前は開発中のものです。2009/02/05(木) 01:01:17ID:e5oU/vxX
>>54
(2)は、1フレームごとに呼び出し元に戻らないのか?戻らないとしたらいつ戻るんだ?

そもそも1フレームごとに呼び出し元に戻すためにcoroutineにしているんだろ?

わけがわからん…。
0056名前は開発中のものです。2009/02/05(木) 01:27:02ID:9DTLfrVW
>>52
単一の巡回呼び出しですべて巡回させる必要はないと思う。
もちろん共通のタスクプライオリティを実装して単一巡回にしてもいいのだけれど、
ここではタスクの呼び出し順序に依存しないコーディングを前提としてみた(3はそもそも処理順序を付けられないし)。
んで、今までの慣例的なゲーム開発手法で考えると確かに3は使わないように思えるが、
これから先の開発手法(MTフレームワークとか)もにらんだ話であるし、
「タスク=フレームをまたいだ継続的処理の抽象化」という観点から同列に扱っている。
ただ、現状では貴重な資源であるネイティブスレッドを本当に他と同列に扱えるかというと難しいとは思う。

>>53
いや、3はただのスレッドだよ。2は、なんかごめん。確かに混乱するかもなこれ。
call() は毎フレーム(コンテキスト差し替えの上で)呼ばれる関数で、call() の中では yield し続けると思ってくれ。
0057名前は開発中のものです。2009/02/05(木) 01:37:27ID:e5oU/vxX
>>56
毎フレームcallが呼び出されるなら、結局呼び出し側(タスクシステム)からしてみれば、
単なるメソッド呼び出しなわけで、その実装の詳細(coroutineで書かれているか/いないか)は
どうでもいいのでは?

だから、(1)と(2)でinterfaceを変更する意味がわからない。
どう見ても共通のinterfaceで良いように思える。
0058名前は開発中のものです。2009/02/05(木) 01:42:57ID:e5oU/vxX
>>56
> 「タスク=フレームをまたいだ継続的処理の抽象化」という観点から同列に扱っている。

についてだけど、タスクはフレームをまたぐが、少なくとも1フレーム以内に制御はいったん呼び出し側に
戻ってこないと困ると思うのだが。

ID:9DTLfrVWは何かここを勘違いしているような気がする。

そもそもスレッドを割り当てるのは、呼び出し側で制御すべき問題であって、
スレッド一つ割り当てて実行させたいからと言って呼び出される側のタスクが勝手に
スレッドを作っていいわけではない。

ここまではわかってる?
0059名前は開発中のものです。2009/02/05(木) 02:02:00ID:9DTLfrVW
>>58
んー、古典タスクの定義にこだわりすぎだと思うんですが
あくまで近代的タスクという思考実験なので・・・
暇な時に簡単な参考実装でも作ってみようかな

>タスクは(略)1フレーム以内に制御はいったん呼び出し側に戻ってこないと困ると思うのだが。
1と2は戻ります
3は戻りませんが、ユーザプログラムはそれを分かって3を使うわけなので困らないと思いますよ

>そもそもスレッドを割り当てるのは、呼び出し側(タスクシステム)で制御すべき問題であって、
スレッドの割り当てはユーザプログラムが制御すべき問題であって、
呼び出し側(システムプログラム側)ではない、という考えでこうなっています。
MTフレームワークではシステム側で各スレッドにタスクを振り分けて負荷の分散を
行っているらしいのでそういう場合は仰るとおりですが、
それを前提にすると1と2も排他処理必須になるのでちょっと複雑になりすぎるかなと。
0060名前は開発中のものです。2009/02/05(木) 02:11:55ID:e5oU/vxX
>>59
> 3は戻りませんが、ユーザプログラムはそれを分かって3を使うわけなので困らないと思いますよ

戻らないということは、そのスレッドは呼び出し側で生成したスレッド
そのまま使い切ることになるのだから、「呼び出し側(システムプログラム側)では
ない、という考えでこうなっています」と明らかに矛盾してるんだが。
0061名前は開発中のものです。2009/02/05(木) 02:23:22ID:9DTLfrVW
CreateThread()というAPIがあるとして、誰がCreateThread()を呼ぶかと言う話なら
それはシステム側になると思いますけど、
作成タイミングもスタック容量もユーザプログラムが制御するのだから別に矛盾してないと思いますよう

それより、なんか疑問点を出されているというより粗探しをされている気がする
どうして突っかかられてるのかが分からないなあ
0062名前は開発中のものです。2009/02/05(木) 02:38:16ID:e5oU/vxX
>>61
粗探しをしているつもりはないので、疑似コードなり何なりを出してもらえれば
協力はさせてもらうが。

threadというのは生成に時間がかかるものであって事前に作ってpoolingして
おくのが普通であって、stack sizeなんか都度指定されたらpoolingしている
threadが使い回せない。

つまり、(3)でスレッドを割り当てて欲しいときにstack sizeの指定はいらない。
タスクシステムからのupdate呼び出しのなかでスレッドを割り当てて欲しいときに

threadPooler.Run(boost::function(&MyClass::Worker));

とするだけのことではないか?

だから、(3)を、普通のタスク(1),(2)と区別する意味が俺にはよくわからないのだが…。
0063名前は開発中のものです。2009/02/05(木) 03:06:56ID:WlW8taMc
とりあえずどんな問題を解決したいのか明らかにしてからコード書いてください。おねがいします。
0064名前は開発中のものです。2009/02/05(木) 03:10:28ID:9DTLfrVW
>>62
なる、プールされたスレッドってのは考えてなかったです

例に挙げられたコードも分かりやすいと思いますが、
とりあえず>>49の方向でそうした実装を取り入れるなら、
PreemptiveTask のコンストラクタがスタックサイズを引数に取らないようにして、
内部的にプールされたスレッドを使い回すようにすると良さげかもですね
それか、必ずプールされているのも都合が悪いことがありそうだから
PooledPreemptiveTask のような新しいクラスにそうした実装を組み込むか
とりあえず、その辺はより実装に近い部分なので、ゆっくり煮詰めていくたぐいの話ではないですかね

1、2、3をそれぞれ区別するのは、使い手側から見た時に混同せず
明確に区別すべきものだからです(コーディング方法もそれぞれ異なるし)
>>62はシステム側の都合から見てるから区別不要に思えるんじゃないかな

>>63
え、おれ?ごめん

ということですいませんが、そろそろ寝ます
敗北宣言
0065名前は開発中のものです。2009/02/05(木) 03:50:41ID:MYSEarFY
近代的タスクシステムの構築(2)
http://d.hatena.ne.jp/yaneurao/20090204
0066名前は開発中のものです。2009/02/05(木) 04:12:57ID:Ib2V0W+J
やねうらおの方からきますたw

まあ、ゲームオブジェクト管理周りをどうするかは作るもん次第、銀の弾丸なしってことで、
それはプログラマの仕事がなくならないってことで、いい話なんじゃね。
0067名前は開発中のものです。2009/02/05(木) 07:42:18ID:V08fWeRa
やねも昔ほど強く言わなくなってるな
実は必要無いってもう気付いてるな
そもそもタスクシステム、コーティングの手間しか削らない割に記述の複雑さは一級品だからな
ベタガキで誰でも読めるソースになるならそのほうがいいだろ
長い期間強く組む為には構造は単純でないと駄目なんだよね
0068名前は開発中のものです。2009/02/05(木) 07:42:24ID:/BuTmFOA
>64
1,2,3を混ぜて巡回呼び出ししたい場合というのが存在するから、同一I/Fから呼び出せないと困るぞ。

例えば、全てのtaskにコンテキスト保存が必要では無い場合に一部taskは1で作成するとかな。
0069名前は開発中のものです。2009/02/05(木) 17:15:53ID:tABpRsfL
>>32
現代じゃなくて近代なのか。ずいぶん遠慮がちに書くのだなぁ。最初から後退戦か
敗北主義を匂わせれば、相手は正面から斬り付けるのを躊躇うはず、という計算が
見え隠れすんなぁ

>いまの視点(2009年)で見たときに拙著(ASIN:4798006033)にて不足している部分を補足するため

今までは利得がどこにあるのかを決定的に見誤っていた、と白状したほうが高感度アップな

>成熟したタスクシステム(タスク自体のデバッグを支援するタスクデバッガのような環境を含めて
>「タスクフレームワーク」と呼ぶほうがふさわしいかも知れない)は、ゲーム開発において依然として有用であり

それにしてもタスクフレームワークとか鼻クソみたいな造語を作るの好きな人が多いな
ビデオゲーム開発のためのフレームワークなんだろ?
ビデオゲームというのは何かしらの時間ステップで何かしらの逐次処理(数値積分など)を
繰り返すもの。そしてその処理は複数。だから並行処理ないし並列処理することになる
どんなものであれ、その内部でジョブステップ(タスク)が駆動するなんて当たり前のこと
ありふれたこと。むしろないほうがおかしい

なのにビデオゲーム開発のためのフレームワークの看板にタスクを掲げる
つまり【タスク】が他のフレームワークには存在しない特徴でありウリだと思い込んでる

タスクというキーワードに何か特殊な意味・特定の実装(>>2とか)を連想し、それ以外は
タスクではない、という視野狭窄・自己中・ド田舎ルール・カルト信仰が見え隠れするね
つまりタスク厨

タスクというキーワードに対する思い入れの強さ。これは>>2、松浦本ベースの劣化
トンデモ情報による刷り込みがやねうらおにも及んでいた可能性を示唆する
0070名前は開発中のものです。2009/02/05(木) 20:01:26ID:1mXFjsrF
何と戦っているんだ?
0071名前は開発中のものです。2009/02/05(木) 20:05:59ID:tABpRsfL
>>32
>現代において、タスクシステムを実装するなら、もう少しタスク間通信を抽象化してタスク側から
>タスクシステムが保持しているlistには直接触れないようにするべきだが

今度は近代じゃなくて現代なのか
はっきり言っちゃうよ。それは時代ではないんだよ。それは開発規模に応じた普遍的な要求なんだよ
例えば大所帯でRPG作るとき、みんながジョブエントリ・タスクエントリのコンテナに直接触れたらどうなる
わかるよな?
15年以上前にはビデオゲームの世界にさえジョブモニタやタスクモニタといったものが存在した
これは汎用機や組み込みシステムのモニタやOS(RTOS)が大昔に進んだ道を踏襲しているに過ぎない

32bit機が登場した頃には中堅どころでさえブクブクと膨れ上がるゲームのボリュームに汲々としており
ジョブを記述するユーザー(スクリプタ含む)にジョブエントリやタスクエントリのコンテナへの自由な
アクセスを許可するなんて蛮勇以外のなにものでもないケースは珍しくなくなっていた
一定以上の規模になればユーザーを中枢から隔離するなんて時代を問わず当たり前のこと
CだのC++だのアセンブリ言語だの関係ない

これを【現代】の流れというなら、それはやねうらおの内なる世界における歴史的系譜を辿る際に
現代の1ページに登場するとある事変に過ぎず。やねうらおの個人的出来事に過ぎない
『やねうらおの歴史 〜やねうらおの近代そして現代〜』というタイトルで出版したほうがいい
みんな買うよ
0072名前は開発中のものです。2009/02/05(木) 21:33:53ID:HwyPz9yB
ID:tABpRsfLはなんでそんなに日本語が不自由なの?
0073名前は開発中のものです。2009/02/05(木) 21:44:34ID:sYm6Gfdu
タスクというキーワードに対する思い入れwww
0074名前は開発中のものです。2009/02/05(木) 21:48:23ID:Kg6Z2A1M
やねが今回タスクシステム(なにそれ?)を語りだしたときに
それがどういう規模のゲーム開発のお話なのか、という部分には
一切言及しなかったよな
この手のお話には必須の大前提なんだけどバサーリ省いた
あらゆる規模にタスクシステムとやらいうものが適用するメリットがあると
考えてるんだろうかね
もうこの時点で彼のタスクシステム(はぁ?)論は敗北確率急上昇だろ

とても残念だ

少人数・ないし一人のプログラマによる小規模開発ではベタ書きのがいい
彼の言うタスクフレームワーク(あ?)とかいうもの。こいつを構築するために
支払うイニシャルコストがペイできる分岐点ってもんがあるわけ

やねはここを見積もってないんだろうね


0075名前は開発中のものです。2009/02/05(木) 21:56:59ID:Kg6Z2A1M
誰と作るのか。何人で?そいつらの戦闘力はいくつ?期間は?実装対象は?
開発機材は?既存のライブラリとかのリソースは?買っていいの?

こういうファクターを丸無視してコーディングスタイルとか設計の是非を語ろうったって
解なんて出やしない。だからやねがエロゲ作ってるならエロゲ話のことだと言えばいいんだよ

PC用3Dエロゲにおけるタスクシステムの有効性について

とかな。あ、3Dは駄目なんだっけこのオッサン
0076名前は開発中のものです。2009/02/05(木) 22:06:28ID:Kri4Crxo
やねうや夫は2Dオヤジだから一般化して語れないぞ

あとゲーム専用ハードのゲーム開発経験もないんじゃないかな
0077名前は開発中のものです。2009/02/05(木) 22:39:01ID:tABpRsfL
やねうらおさんってコンシューマ畑とも縁遠いのか。それは失礼した
DSで死にそうになってるフェードアウトハゲが10年単位の周回遅れで
発明した独自理論を得意げに語ってるのかと思ってた

エロゲの人ならこういう発見もアリなんじゃないかな。煉獄へようこそ
0078名前は開発中のものです。2009/02/05(木) 23:02:22ID:AceVSe0N
>>36
前々スレから散々におわせていたことをようやく認識した
ということだろうね

IDだのハンドル云々の話は10年近く前にファミベのよっしんが記事を書いてる
http://www2.tky.3web.ne.jp/~yosshin/memo/000213.html
アーケードやコンシューマと無縁なやねなら確実に読んでると思うんだけどね
参考リンクとして貼りゃいいのに

よっしん氏が呼んでるタスクシステムという代物と>>2は同一ではないよな
>>2はタスクリストとかいうものを周期的にナメまわしてバッチ処理するだけ
「はいこれでオシマーイ。あとはお前らにお任せだっよーん」みたいなゴミカス
最近じゃこれだけでタスクシステムってことで通用するんだから
タスクシステムはタスクの相互作用なんて気にする必要まったくないわけ
変な通信機能盛り込むなよ
0079名前は開発中のものです。2009/02/05(木) 23:10:23ID:yvQde++7
>>74
http://d.hatena.ne.jp/yaneurao/20090204

> すべてのゲームにタスクシステムが必要なのではない。

はっきりと書いてあるのに

> あらゆる規模にタスクシステムとやらいうものが適用するメリットがあると
> 考えてるんだろうかね

とは、とても残念な理解力ですね。
0080名前は開発中のものです。2009/02/05(木) 23:15:47ID:/BuTmFOA
>74
> 彼の言うタスクフレームワーク(あ?)とかいうもの。こいつを構築するために
> 支払うイニシャルコストがペイできる分岐点ってもんがあるわけ
> やねはここを見積もってないんだろうね

逆に、一人で開発してるなら何やってもイイと思うけどね。
0081名前は開発中のものです。2009/02/05(木) 23:45:46ID:/BuTmFOA
>12
> update();
> で動くのと
> update(jiki,teki,tama,unko);
> で動くのとじゃ
> プログラムとしては絶対に下のがいい

普通に考えると、visitorに共通コンテキストを持たせてコンテナ内のタスクを巡回処理させる。
引数で渡すなんて愚の骨頂。
■ このスレッドは過去ログ倉庫に格納されています