1 名前:名前は開発中のものです。 mailto:sage [2009/02/01(日) 12:38:10 ID:rVEgp4cM] タスクシステムについての議論、相談、質問、雑談などのスレです part3 pc11.2ch.net/test/read.cgi/gamedev/1226199100/ part2 pc11.2ch.net/test/read.cgi/gamedev/1196711513/ part1 pc11.2ch.net/test/read.cgi/gamedev/1173708588/
18 名前:名前は開発中のものです。 mailto:sage [2009/02/02(月) 19:47:53 ID:9tvsUBOz] ひとりでやってるよ
19 名前:名前は開発中のものです。 mailto:sage [2009/02/02(月) 19:51:25 ID:cShVBku0] >>18 書き込み制限つらそうだなw
20 名前:名前は開発中のものです。 mailto:sage [2009/02/02(月) 19:53:17 ID:/OtqrHae] このスレは俺が粘着してるから他のスレで楽しんでください。
21 名前:名前は開発中のものです。 mailto:sage [2009/02/02(月) 20:08:25 ID:ZmvZOOAJ] >>12 > まあ、数人のタスク信者を2人で撃退したからね当然といえば当然だな お前には、自分が撃退されることもわからないのか。こんな基地外珍しいな。
22 名前:名前は開発中のものです。 mailto:sage [2009/02/02(月) 20:27:51 ID:4iEjv7V2] ID:cShVBku0がコテになるっていうなら俺は消える。 そしてコテになったら即あぼ〜ん設定してあげるよ。
23 名前:名前は開発中のものです。 mailto:sage [2009/02/02(月) 20:33:59 ID:cShVBku0] IDあるんだからさっさとあぼーんしろよw そしたら前スレの俺の武勇伝をあることないこと脚色して書き込むからさw
24 名前:名前は開発中のものです。 mailto:sage [2009/02/02(月) 20:35:30 ID:4iEjv7V2] IDあぼ〜んしちゃったら何がなんだかわからなくなるじゃん
25 名前:名前は開発中のものです。 mailto:sage [2009/02/02(月) 20:56:02 ID:v0zAXoNG] まともに議論したいんだったら、mixiとか使って 基地外は排除しちゃえばいいんじゃない。
26 名前:名前は開発中のものです。 mailto:sage [2009/02/02(月) 21:00:59 ID:riEYZJpX] よーしじゃあmixiに移動だ でどこ?
27 名前:名前は開発中のものです。 mailto:sage [2009/02/02(月) 23:59:31 ID:SpnGISw5] >>12 数人っていうか1人のように思う。 それと、疲れちゃったプログラマをからかい続けるのは感心しない。 そろそろやめとけば? なんか効き目が強い。多分本当に病気だ。 それでもやっぱタスク使ってて何か引っかかるものがあるからこのスレに来てるんだろうし
28 名前:名前は開発中のものです。 mailto:sage [2009/02/03(火) 00:23:33 ID:az8GBqBA] ■■■■■■■■■■■■■ スレ主が真性基地外であることが発覚したため終了 ■■■■■■■■■■■■■■■■
29 名前:名前は開発中のものです。 mailto:sage [2009/02/03(火) 00:30:03 ID:lrih8mAc] >>27 いいんだよ そいつの次の成長なんてタスクシステムを捨てた先にあるのは明らかなんだから それに他の初心者がこんなもん妄信しはじめたらどうする それに程度の低い書籍の悪影響もあるだろうな ベタ書きを極度に馬鹿にするあまり 書かなければならない処理があるということの説明を怠った 独学ばっかりしてて会社でも誰ともやりとりがなければ誰にも指摘をうけないだろうな 前スレで引数の話を始めにしたが 引数が無い関数のがよく見える とか言い出しやがった 明らかにレベルが低いというか危険レベルだろ オブジェクト指向云々の前になぜプログラム言語が制限をつける形で成長してきたのか? そこからすでにわかってねぇそんなレベルだった 型ってなんで必要なのか?引数ってなんであるのか?グローバル変数ってなんでダメなのか? そういうところを一つ一つ考えなおさなきゃ次へいけないだろ 俺の周りにはたまたま教えてくれる人間がいたんだけどね
30 名前:名前は開発中のものです。 mailto:sage [2009/02/03(火) 10:35:48 ID:az8GBqBA] 注意!! >>29 = 真性基地外のため、初心者は騙されるな!!!
31 名前:名前は開発中のものです。 mailto:sage [2009/02/03(火) 12:02:10 ID:vWXRMn0/] とりあえず ttp://sdc.sun.co.jp/sunstudio/documentation/ss12/mr/man3cc4/task.3.html 昔のC++には含まれていたtask.h(task library) 今の標準にはない
32 名前:名前は開発中のものです。 [2009/02/03(火) 19:50:07 ID:+ZtfpvwK] 近代的タスクシステムの構築 d.hatena.ne.jp/yaneurao/20090203#p1
33 名前:名前は開発中のものです。 mailto:sage [2009/02/03(火) 20:20:13 ID:bfgGLsQE] >>32 いい記事だとおも
34 名前:名前は開発中のものです。 mailto:sage [2009/02/03(火) 21:10:48 ID:jRNhtvu7] linus先生からのお言葉 tabesugi.net/memo/2009/1a.html#152154
35 名前:名前は開発中のものです。 mailto:sage [2009/02/03(火) 21:24:50 ID:lrih8mAc] >>32 どうせなら前スレでボコボコにされたタスク信者のために 明示的な引数の記述についてもコメントしてあげればよかったのにw 20090203とか今日だしよw どうせみてんだろ>やねうらお
36 名前:名前は開発中のものです。 mailto:sage [2009/02/03(火) 21:29:31 ID:xRxybyai] >>32 >それではタスクシステムは現代においては不要なのかというとそうでもなく、 >成熟したタスクシステム(タスク自体のデバッグを支援するタスクデバッガのような環境を含めて > 「タスクフレームワーク」と呼ぶほうがふさわしいかも知れない)は、ゲーム開発において依然として有用であり(以下略) 現代的に仕立て直しても有用性がデバッガの存在という1点のみか。 まずは一番最初にデバッガ完成させないと有用じゃないんだな
37 名前:名前は開発中のものです。 mailto:sage [2009/02/03(火) 22:02:41 ID:az8GBqBA] や ね う ら お、はじまったな!
38 名前:名前は開発中のものです。 mailto:sage [2009/02/03(火) 22:29:12 ID:XllhY44u] ここは空気読んでたすくしすてむはクソだ!って言っとけばいいのか?
39 名前:名前は開発中のものです。 mailto:sage [2009/02/03(火) 23:38:52 ID:eseY0VNG] >>31 コルーチンライブラリだね。コンテキストの保存と切り替えしてるね Win32APIのFiber protothreads Luaのコルーチン Squirrelのスレッド などなど これらに相当するものでしょ
40 名前:名前は開発中のものです。 mailto:sage [2009/02/04(水) 00:36:43 ID: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
41 名前:名前は開発中のものです。 mailto:sage [2009/02/04(水) 01:31:33 ID:NUZzb6Kr] >>40 >名前が悪いと怒られないか心配だなw それは大丈夫じゃないかな 複数のジョブを協調的に並行処理・逐次処理する仕掛けになってるから ユーザーはプログラムの中にsleep()とかを挟みこむだけでおk job() { while(1) { … sleep(); foreach(…){ … sleep(); } … sleep(); } } sleep()とかを挟みこむだけでライブラリが半自動的にタスクに分割してくれる コンテキストの保存と切り替えを全部面倒みてくれる。スケジューリング機構も 一応入ってる。>>2 とは雲泥の差だよ
42 名前:名前は開発中のものです。 mailto:sage [2009/02/04(水) 02:19:05 ID:bPux8EGG] >>41 そこはただの軽口だから、そんな真面目に説明されてもね つか君はコルーチンを説明するフリをして>>2 をけなしたいだけだろww別にけなしていいけどさw まあストラウストラップ先生の書いたクラス群はシステムの名に値するみたいだし 今度からコルーチンシステムと呼ぼうかなー 関係ないけどやねうらおは絶対ここチェックしてるよなw やねうらお対ひらしょータスク戦争勃発w
43 名前:名前は開発中のものです。 mailto:sage [2009/02/04(水) 03:52:12 ID:zoy9itGC] やねうらおはこんな場末のスレ、見てないだろ >>32 は、前スレまでの議論よりずっとずっと先を行ってるから 彼にとってはこんなスレ、見る価値もないんでねーの? さすがにこれは天晴れと言わざるを得ない
44 名前:名前は開発中のものです。 mailto:sage [2009/02/04(水) 04:04:25 ID:YtdnZlpb] >>43 みてないとか嘘だろ だって「ごった煮」とか前スレ特有の言葉だしてきてるし わざわざ見てますよアピールしてんだからかまってやれよw でも前スレで話題に上がった引数に関して触れてないのはいただけないな 無視なら「そんなもんは無視」って名言してくれるだけでもスタンスわかっていいんだけど 別にいい悪いも正解不正解もないわけだし
45 名前:名前は開発中のものです。 mailto:sage [2009/02/04(水) 21:49:37 ID:mLZ417D5] >39 protothreadはコンテキスト保存してないよ。
46 名前:名前は開発中のものです。 mailto:sage [2009/02/04(水) 23:51:04 ID:Tig/dZbl] >>32 親切心から、敢えてコメントさせてもらうと・・・ アマチュアゲームプログラマ未満だな。 まともにゲーム製作を経験した人間が書いた記事とは、到底思えない。 これ誉めちぎっている奴の狙いって何なんだろ。 一部の明らかにテンションが違う応援団は、スルーするのが基本なのか?
47 名前:名前は開発中のものです。 mailto:sage [2009/02/04(水) 23:58:11 ID:iOg8fZiC] ほめちぎってる応援団なんてどこにいるんだ
48 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 00:10:20 ID:e5oU/vxX] >>46 是非、どこかのブログで反論頼む!
49 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 00:31:46 ID: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; };
50 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 00:32:17 ID: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 を選ぶのは明らかにオーバースペックで排他処理が面倒になるが、 やりたければそれもまあ可能だ。
51 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 00:32:50 ID:9DTLfrVW] タスクと描画オブジェクトが無関係な理由はもう一つある。 例えば以下のように、描画オブジェクトでなくても継続処理をしたい場合があるからだ。 //テクスチャ画像を波打たせるトランジション class RippleTextureTransition : public TextureTransition, public CooperativeTask { public: int call(); }; とまあこんな感じはどうだろう。モダンっぽくね?
52 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 00:46:05 ID:/BuTmFOA] 1,2,3を混ぜたい時はどうするんだ? 単一の巡回呼び出しでは呼べないぞ、それじゃ。 というか、3は明らかに不要だろ。 taskの更新処理は1と2以外にないだろ。
53 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 00:48:58 ID:e5oU/vxX] >>49 何か勘違いしているように思える。 (1)に限らず、(2)でも(3)でも毎フレーム呼び出されると思うのだが。
54 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 00:53:46 ID:/BuTmFOA] >53 3は論外だが、普通に実装すれば1と2はきちんと呼び出し元に帰るから問題ないんじゃね?
55 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 01:01:17 ID:e5oU/vxX] >>54 (2)は、1フレームごとに呼び出し元に戻らないのか?戻らないとしたらいつ戻るんだ? そもそも1フレームごとに呼び出し元に戻すためにcoroutineにしているんだろ? わけがわからん…。
56 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 01:27:02 ID:9DTLfrVW] >>52 単一の巡回呼び出しですべて巡回させる必要はないと思う。 もちろん共通のタスクプライオリティを実装して単一巡回にしてもいいのだけれど、 ここではタスクの呼び出し順序に依存しないコーディングを前提としてみた(3はそもそも処理順序を付けられないし)。 んで、今までの慣例的なゲーム開発手法で考えると確かに3は使わないように思えるが、 これから先の開発手法(MTフレームワークとか)もにらんだ話であるし、 「タスク=フレームをまたいだ継続的処理の抽象化」という観点から同列に扱っている。 ただ、現状では貴重な資源であるネイティブスレッドを本当に他と同列に扱えるかというと難しいとは思う。 >>53 いや、3はただのスレッドだよ。2は、なんかごめん。確かに混乱するかもなこれ。 call() は毎フレーム(コンテキスト差し替えの上で)呼ばれる関数で、call() の中では yield し続けると思ってくれ。
57 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 01:37:27 ID:e5oU/vxX] >>56 毎フレームcallが呼び出されるなら、結局呼び出し側(タスクシステム)からしてみれば、 単なるメソッド呼び出しなわけで、その実装の詳細(coroutineで書かれているか/いないか)は どうでもいいのでは? だから、(1)と(2)でinterfaceを変更する意味がわからない。 どう見ても共通のinterfaceで良いように思える。
58 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 01:42:57 ID:e5oU/vxX] >>56 > 「タスク=フレームをまたいだ継続的処理の抽象化」という観点から同列に扱っている。 についてだけど、タスクはフレームをまたぐが、少なくとも1フレーム以内に制御はいったん呼び出し側に 戻ってこないと困ると思うのだが。 ID:9DTLfrVWは何かここを勘違いしているような気がする。 そもそもスレッドを割り当てるのは、呼び出し側で制御すべき問題であって、 スレッド一つ割り当てて実行させたいからと言って呼び出される側のタスクが勝手に スレッドを作っていいわけではない。 ここまではわかってる?
59 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 02:02:00 ID:9DTLfrVW] >>58 んー、古典タスクの定義にこだわりすぎだと思うんですが あくまで近代的タスクという思考実験なので・・・ 暇な時に簡単な参考実装でも作ってみようかな >タスクは(略)1フレーム以内に制御はいったん呼び出し側に戻ってこないと困ると思うのだが。 1と2は戻ります 3は戻りませんが、ユーザプログラムはそれを分かって3を使うわけなので困らないと思いますよ >そもそもスレッドを割り当てるのは、呼び出し側(タスクシステム)で制御すべき問題であって、 スレッドの割り当てはユーザプログラムが制御すべき問題であって、 呼び出し側(システムプログラム側)ではない、という考えでこうなっています。 MTフレームワークではシステム側で各スレッドにタスクを振り分けて負荷の分散を 行っているらしいのでそういう場合は仰るとおりですが、 それを前提にすると1と2も排他処理必須になるのでちょっと複雑になりすぎるかなと。
60 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 02:11:55 ID:e5oU/vxX] >>59 > 3は戻りませんが、ユーザプログラムはそれを分かって3を使うわけなので困らないと思いますよ 戻らないということは、そのスレッドは呼び出し側で生成したスレッド そのまま使い切ることになるのだから、「呼び出し側(システムプログラム側)では ない、という考えでこうなっています」と明らかに矛盾してるんだが。
61 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 02:23:22 ID:9DTLfrVW] CreateThread()というAPIがあるとして、誰がCreateThread()を呼ぶかと言う話なら それはシステム側になると思いますけど、 作成タイミングもスタック容量もユーザプログラムが制御するのだから別に矛盾してないと思いますよう それより、なんか疑問点を出されているというより粗探しをされている気がする どうして突っかかられてるのかが分からないなあ
62 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 02:38:16 ID:e5oU/vxX] >>61 粗探しをしているつもりはないので、疑似コードなり何なりを出してもらえれば 協力はさせてもらうが。 threadというのは生成に時間がかかるものであって事前に作ってpoolingして おくのが普通であって、stack sizeなんか都度指定されたらpoolingしている threadが使い回せない。 つまり、(3)でスレッドを割り当てて欲しいときにstack sizeの指定はいらない。 タスクシステムからのupdate呼び出しのなかでスレッドを割り当てて欲しいときに threadPooler.Run(boost::function(&MyClass::Worker)); とするだけのことではないか? だから、(3)を、普通のタスク(1),(2)と区別する意味が俺にはよくわからないのだが…。
63 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 03:06:56 ID:WlW8taMc] とりあえずどんな問題を解決したいのか明らかにしてからコード書いてください。おねがいします。
64 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 03:10:28 ID:9DTLfrVW] >>62 なる、プールされたスレッドってのは考えてなかったです 例に挙げられたコードも分かりやすいと思いますが、 とりあえず>>49 の方向でそうした実装を取り入れるなら、 PreemptiveTask のコンストラクタがスタックサイズを引数に取らないようにして、 内部的にプールされたスレッドを使い回すようにすると良さげかもですね それか、必ずプールされているのも都合が悪いことがありそうだから PooledPreemptiveTask のような新しいクラスにそうした実装を組み込むか とりあえず、その辺はより実装に近い部分なので、ゆっくり煮詰めていくたぐいの話ではないですかね 1、2、3をそれぞれ区別するのは、使い手側から見た時に混同せず 明確に区別すべきものだからです(コーディング方法もそれぞれ異なるし) >>62 はシステム側の都合から見てるから区別不要に思えるんじゃないかな >>63 え、おれ?ごめん ということですいませんが、そろそろ寝ます 敗北宣言
65 名前:名前は開発中のものです。 [2009/02/05(木) 03:50:41 ID:MYSEarFY] 近代的タスクシステムの構築(2) d.hatena.ne.jp/yaneurao/20090204
66 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 04:12:57 ID:Ib2V0W+J] やねうらおの方からきますたw まあ、ゲームオブジェクト管理周りをどうするかは作るもん次第、銀の弾丸なしってことで、 それはプログラマの仕事がなくならないってことで、いい話なんじゃね。
67 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 07:42:18 ID:V08fWeRa] やねも昔ほど強く言わなくなってるな 実は必要無いってもう気付いてるな そもそもタスクシステム、コーティングの手間しか削らない割に記述の複雑さは一級品だからな ベタガキで誰でも読めるソースになるならそのほうがいいだろ 長い期間強く組む為には構造は単純でないと駄目なんだよね
68 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 07:42:24 ID:/BuTmFOA] >64 1,2,3を混ぜて巡回呼び出ししたい場合というのが存在するから、同一I/Fから呼び出せないと困るぞ。 例えば、全てのtaskにコンテキスト保存が必要では無い場合に一部taskは1で作成するとかな。
69 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 17:15:53 ID:tABpRsfL] >>32 現代じゃなくて近代なのか。ずいぶん遠慮がちに書くのだなぁ。最初から後退戦か 敗北主義を匂わせれば、相手は正面から斬り付けるのを躊躇うはず、という計算が 見え隠れすんなぁ >いまの視点(2009年)で見たときに拙著(ASIN:4798006033)にて不足している部分を補足するため 今までは利得がどこにあるのかを決定的に見誤っていた、と白状したほうが高感度アップな >成熟したタスクシステム(タスク自体のデバッグを支援するタスクデバッガのような環境を含めて >「タスクフレームワーク」と呼ぶほうがふさわしいかも知れない)は、ゲーム開発において依然として有用であり それにしてもタスクフレームワークとか鼻クソみたいな造語を作るの好きな人が多いな ビデオゲーム開発のためのフレームワークなんだろ? ビデオゲームというのは何かしらの時間ステップで何かしらの逐次処理(数値積分など)を 繰り返すもの。そしてその処理は複数。だから並行処理ないし並列処理することになる どんなものであれ、その内部でジョブステップ(タスク)が駆動するなんて当たり前のこと ありふれたこと。むしろないほうがおかしい なのにビデオゲーム開発のためのフレームワークの看板にタスクを掲げる つまり【タスク】が他のフレームワークには存在しない特徴でありウリだと思い込んでる タスクというキーワードに何か特殊な意味・特定の実装(>>2 とか)を連想し、それ以外は タスクではない、という視野狭窄・自己中・ド田舎ルール・カルト信仰が見え隠れするね つまりタスク厨 タスクというキーワードに対する思い入れの強さ。これは>>2 、松浦本ベースの劣化 トンデモ情報による刷り込みがやねうらおにも及んでいた可能性を示唆する
70 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 20:01:26 ID:1mXFjsrF] 何と戦っているんだ?
71 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 20:05:59 ID:tABpRsfL] >>32 >現代において、タスクシステムを実装するなら、もう少しタスク間通信を抽象化してタスク側から >タスクシステムが保持しているlistには直接触れないようにするべきだが 今度は近代じゃなくて現代なのか はっきり言っちゃうよ。それは時代ではないんだよ。それは開発規模に応じた普遍的な要求なんだよ 例えば大所帯でRPG作るとき、みんながジョブエントリ・タスクエントリのコンテナに直接触れたらどうなる わかるよな? 15年以上前にはビデオゲームの世界にさえジョブモニタやタスクモニタといったものが存在した これは汎用機や組み込みシステムのモニタやOS(RTOS)が大昔に進んだ道を踏襲しているに過ぎない 32bit機が登場した頃には中堅どころでさえブクブクと膨れ上がるゲームのボリュームに汲々としており ジョブを記述するユーザー(スクリプタ含む)にジョブエントリやタスクエントリのコンテナへの自由な アクセスを許可するなんて蛮勇以外のなにものでもないケースは珍しくなくなっていた 一定以上の規模になればユーザーを中枢から隔離するなんて時代を問わず当たり前のこと CだのC++だのアセンブリ言語だの関係ない これを【現代】の流れというなら、それはやねうらおの内なる世界における歴史的系譜を辿る際に 現代の1ページに登場するとある事変に過ぎず。やねうらおの個人的出来事に過ぎない 『やねうらおの歴史 〜やねうらおの近代そして現代〜』というタイトルで出版したほうがいい みんな買うよ
72 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 21:33:53 ID:HwyPz9yB] ID:tABpRsfLはなんでそんなに日本語が不自由なの?
73 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 21:44:34 ID:sYm6Gfdu] タスクというキーワードに対する思い入れwww
74 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 21:48:23 ID:Kg6Z2A1M] やねが今回タスクシステム(なにそれ?)を語りだしたときに それがどういう規模のゲーム開発のお話なのか、という部分には 一切言及しなかったよな この手のお話には必須の大前提なんだけどバサーリ省いた あらゆる規模にタスクシステムとやらいうものが適用するメリットがあると 考えてるんだろうかね もうこの時点で彼のタスクシステム(はぁ?)論は敗北確率急上昇だろ とても残念だ 少人数・ないし一人のプログラマによる小規模開発ではベタ書きのがいい 彼の言うタスクフレームワーク(あ?)とかいうもの。こいつを構築するために 支払うイニシャルコストがペイできる分岐点ってもんがあるわけ やねはここを見積もってないんだろうね
75 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 21:56:59 ID:Kg6Z2A1M] 誰と作るのか。何人で?そいつらの戦闘力はいくつ?期間は?実装対象は? 開発機材は?既存のライブラリとかのリソースは?買っていいの? こういうファクターを丸無視してコーディングスタイルとか設計の是非を語ろうったって 解なんて出やしない。だからやねがエロゲ作ってるならエロゲ話のことだと言えばいいんだよ PC用3Dエロゲにおけるタスクシステムの有効性について とかな。あ、3Dは駄目なんだっけこのオッサン
76 名前:名前は開発中のものです。 [2009/02/05(木) 22:06:28 ID:Kri4Crxo] やねうや夫は2Dオヤジだから一般化して語れないぞ あとゲーム専用ハードのゲーム開発経験もないんじゃないかな
77 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 22:39:01 ID:tABpRsfL] やねうらおさんってコンシューマ畑とも縁遠いのか。それは失礼した DSで死にそうになってるフェードアウトハゲが10年単位の周回遅れで 発明した独自理論を得意げに語ってるのかと思ってた エロゲの人ならこういう発見もアリなんじゃないかな。煉獄へようこそ
78 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 23:02:22 ID:AceVSe0N] >>36 前々スレから散々におわせていたことをようやく認識した ということだろうね IDだのハンドル云々の話は10年近く前にファミベのよっしんが記事を書いてる www2.tky.3web.ne.jp/~yosshin/memo/000213.html アーケードやコンシューマと無縁なやねなら確実に読んでると思うんだけどね 参考リンクとして貼りゃいいのに よっしん氏が呼んでるタスクシステムという代物と>>2 は同一ではないよな >>2 はタスクリストとかいうものを周期的にナメまわしてバッチ処理するだけ 「はいこれでオシマーイ。あとはお前らにお任せだっよーん」みたいなゴミカス 最近じゃこれだけでタスクシステムってことで通用するんだから タスクシステムはタスクの相互作用なんて気にする必要まったくないわけ 変な通信機能盛り込むなよ
79 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 23:10:23 ID:yvQde++7] >>74 d.hatena.ne.jp/yaneurao/20090204 に > すべてのゲームにタスクシステムが必要なのではない。 はっきりと書いてあるのに > あらゆる規模にタスクシステムとやらいうものが適用するメリットがあると > 考えてるんだろうかね とは、とても残念な理解力ですね。
80 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 23:15:47 ID:/BuTmFOA] >74 > 彼の言うタスクフレームワーク(あ?)とかいうもの。こいつを構築するために > 支払うイニシャルコストがペイできる分岐点ってもんがあるわけ > やねはここを見積もってないんだろうね 逆に、一人で開発してるなら何やってもイイと思うけどね。
81 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 23:45:46 ID:/BuTmFOA] >12 > update(); > で動くのと > update(jiki,teki,tama,unko); > で動くのとじゃ > プログラムとしては絶対に下のがいい 普通に考えると、visitorに共通コンテキストを持たせてコンテナ内のタスクを巡回処理させる。 引数で渡すなんて愚の骨頂。
82 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 00:09:26 ID:wGKtGJau] >>81 >>12 =スレ主=基地外が前スレで判明している。触るな危険。
83 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 00:12:08 ID:H1z7Q+5u] >>81 引数のない関数ってどうよ? お前、自分が使ってみろって言われたときのこと考えろよ
84 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 00:15:46 ID:4xm8YBEc] >83 おまえvisitorの意味判ってないだろ。
85 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 00:18:56 ID:H1z7Q+5u] >>84 関係ないね 大事なのは引数で渡すことによって関数無いで変更される恐れのある インスタンスを明確にすること お前のような素人はデザパタの前にC言語でも勉強しろ なにせ引数もよくわからずグローバル変数で渡してるぐらいの低知能なんだからなw
86 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 00:19:44 ID:4xm8YBEc] >85 やっぱり判ってないのかw
87 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 00:20:01 ID:1vVyPOFv] 釣りにしか見えない
88 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 00:20:20 ID:H1z7Q+5u] >>86 引数の有効性はわかったかね?
89 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 00:23:00 ID:H1z7Q+5u] >>86 前スレよろしく 今回も俺が特別に教えてあげよう 上のupdate()は関数内で何にアクセスしてるのかまったくわからないが 下のupdate(jiki・・・)はアクセスしてるインスタンスを引数に絞ることができる (グローバル変数を使わないという規約を守れば) これによってデータの安全性が保障されるというわけだよ 君のようにコーディングの効率ばっかりとって 引数もわからんような低知能は俺と話すようなレベルにないということがわかったかね?
90 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 00:26:08 ID:ux7UjNgY] >88 ここまでムキになるということは、>12=スレ主ってヤツかwww 修正コストとか考えたこと無いんだろうなぁ。幸せなヤツw
91 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 00:26:51 ID:1vrKKSIM] ID:H1z7Q+5uが噂のスレ主だな 一人だけ極端にレベルが低いのにその自覚なし
92 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 00:28:03 ID:Cfc6lR6P] こらこら、触るな危険といってるだろうに。
93 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 00:31:12 ID:ux7UjNgY] >89 > 下のupdate(jiki・・・)はアクセスしてるインスタンスを引数に絞ることができる 笑っちゃうなwww ということは、ID:H1z7Q+5uはtaskの種類によって引数が変わることが前提か。 もしかしてtask保持コンテナも別に持つ派なのか? 例えば敵タスクがあったとして、雑魚敵Aと雑魚敵Bが異なるコンテキストを必要とする場合とか 考えたこと無いのか? 雑魚敵Aと雑魚敵Bで最小公倍数的な引数を取るupdate関数をつくったら、 それはID:H1z7Q+5uが>89で言っていることと矛盾するって気づかないのか?
94 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 00:34:26 ID:1vVyPOFv] 残念なスレ主と遊ぼうのスレはここですか?
95 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 00:52:39 ID:nWDkACnD] 押すなよ! 絶対押すなよ!
96 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 00:53:38 ID:ZPF/rc3n] >>80 その一人開発ってことは趣味の世界の話でいいよな? プロの一人開発ったってフリーランスという名のプーでもなければ 自分一人の問題じゃねーし、他と折り合い付けないと会社つぶれるしな >>2 ベースのゲロゲロフレームワークなんて誰も使いたがらないから作らないよ で、趣味野郎でオナニーフレームワーク?これもあんま意味ないよ女子高生 大多数のパンピースペックの趣味プログラマは無難にサクっとゲーム一本 作りあげる方法を模索する パンピースペックの趣味野郎がオナニーフレームワークとかいうハマリ道に 進んだら大半は生きて還ってこれん。終わり無きライフワークになるだろ まぁそれはそれで楽しい人生なのかもね。否定はしない ゲームではなく部品を作ることに情熱燃やして技巧に走って茨の道へ突進して 何年もの歳月をかけて山篭りして誰にも使われないフレームワークを構築する人生 悪くない。でもその結果が>>2 ベースのゲロゲロシステムじゃな。成仏できんの?w
97 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 00:59:04 ID:1vrKKSIM] 96もスレ主じゃね?こいつ本当に頭おかしいんだな。
98 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 01:00:52 ID:ZPF/rc3n] 引数君と一緒にすんなハゲ
99 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 01:05:33 ID:1vrKKSIM] >>98 じゃあ、この残念な引数君にも何か言ってやってくれ
100 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 01:17:02 ID:ZPF/rc3n] 引数君がアンチタスクだということは知っているが、前スレ終わりごろの 議論の内容がよくわからん 俺は>>2 =チンカスゴミカス だと思ってるが引数君とは批判のベクトルが違うようだ 彼は数種類のクラスに共通のインターフェースを与え、共通のコードから呼び出す というメカニズムを全否定してるのだろうか?だとしたらそれは仮想関数の全否定であり わけわからん 引数君の主張内容がよく分かってない
101 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 01:25:06 ID:1vrKKSIM] >>100 >>12
102 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 01:29:48 ID:ZPF/rc3n] あぁ?
103 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 01:34:39 ID:1vrKKSIM] 引数君の主張なら>>12 のリンク先を見れば十分わかると思うんだが、わからないのか? それとも、あんたも日本語の残念な人か?
104 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 01:39:11 ID:ZPF/rc3n] 俺は前スレの>>823 だ。何なら他の発言も発掘してこようか?
105 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 01:43:50 ID:OdnmQxD5] 引数君の方がまだ技術に近い話をしてる分マシだな。 もしかして彼はひらしょー氏の言うデータと処理の分離を 超まわりくどく主張しているのかな。
106 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 01:50:49 ID:1vrKKSIM] >>104 前スレ823か。 引数君よりは能力的にマシだということはわかるが、説明がくどく、わかりにくい。 俺はこんな内容の薄い、回りくどい説明を読むのはまっぴらごめんなので、さいなら。
107 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 02:08:15 ID:EVIE955W] ESP能力に問題があるID:1vrKKSIM は すべてのアンチタスクがスレ主に見える病気を克服するべき
108 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 02:09:41 ID:ZPF/rc3n] 超能力能力か
109 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 02:12:05 ID:EVIE955W] くっ…。どうして「お前はバカを克服するべき」って言ってくれないの? 内容の薄い、回りくどい指摘を読むのはまっぴらごめんなので、さようなら
110 名前:名前は開発中のものです。 [2009/02/06(金) 07:38:45 ID:RQ4iGJCo] お前等馬鹿は、プログラミングで一番時間がかかるのはどこですか? と聞かれてコーディングとは絶対に答えないくせに コーディングの手間ばかり減らすことに執着している なかなか読めないプログラムってなんだ? 構造が複雑なプログラムじゃないの? お前等馬鹿は全く逆のことを自己満足のためにやっているオナニストだ プログラマならせめて理詰めで動けよ お前等凡人から理性まで抜いたら猿と変わらないだろ
111 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 09:47:48 ID:SpEabv2C] >>32 えーと、この人ってイイ歳した何者なの?プロ?パソゲー専門なんじゃない? >ビデオゲーム黎明期においては、オールアセンブラで書くことが普通だったので、 >std::listのような便利なコンテナがあるわけでもなく、技巧的な方法でstd::list >みたいなことを実現していただけ えっえー?この人のいうビデオゲーム黎明期っていつごろのお話なのかな? 70年代?だったらまずZ80アセンブリで>>2 を書いてみればいいのに。おかしな人だよ 16bit機時代?intrusiveなコンテナを使った理由がオールアセンブラだから?本当に? 最近は想像だけで昔話を書いても教科書になるのかしら? どこのゲー専の子が犠牲になるのかしら。ちょっと可哀相ね 知らないことは知らないって言えばいいし、足を使って取材しに行けばいいと思う んで、頭下げて監修してもらえばいいと思う。このままじゃあんまりだよ >古典的なタスクシステムにおいてはタスクに番号(プライオリティ)が振られており >番号を指定して特定のタスクのポインタを得ることが出来た えっえー?つーか古典的タスクシステムってなんじゃい?ファンタジーゾーンなの?
112 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 10:34:43 ID:wGKtGJau] >>111 あんた、何かがしゃべり方がキモイんだけど。 それはそうと、相手は年収何千万もある凄腕のプログラマらしいので、 技術的な反論は是非どこかのブログでやっちゃってください。
113 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 21:26:12 ID:+KF0MHRv] タスクシステムでグローバル変数使うから駄目だって意見が多いけど、 でも見渡してみると、ウィンドウズのウィンドウだってそういうしくみだしなぁ。
114 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 22:07:10 ID:H/Ui7lv7] エロゲー製作は大変ナリよ d.hatena.ne.jp/yaneurao/searchdiary?word=%a5%a8%a5%ed%a5%b2%a1%bc%c0%bd%ba%ee
115 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 22:31:40 ID:RQ4iGJCo] >>113 ウィンドウ同士であまりやりとりしなくてもあの複雑さだぞ リストコントロール2つを連動させるだけでもやばいくらいの手間 基本的にウィンドウズの作り自体関連がたくさん生まれる処理に向いてない あくまでも独立した動作が前提
116 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 22:36:12 ID:nWDkACnD] >>113 そう思ったのなら両方とも自分で実装してみて比較検討だ! でも数千行レベルでは使いやすかったやり方が数万行レベルでも同じように使いやすいままかどうかはまた別問題だ! そこは注意な! 王道はグローバル変数使わないことだぞ!
117 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 23:12:31 ID:ux7UjNgY] また引数クンの登場か。 >93について、具体例を挙げて答えてよ。
118 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 23:44:30 ID:H1z7Q+5u] >>117 はぁ?何言ってるのかわからない 俺が言いたいのは関数に引数つけろってそんだけだけど? コンテキスト?は? そんなもん使った時点で負けだ馬鹿 設計死んでるんだよ 俺の価値観ではそんなもん使った時点で負け void*となにも変わらない