タスクシステム総合スレ part5
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2009/02/19(木) 02:21:01ID:k4ODtuXPpart4 http://pc11.2ch.net/test/read.cgi/gamedev/1233459490/
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/
・タスクと呼ばれる実装は、非常に多岐に渡ります
古典タスクシステムについての話題は「>>2」と明示してください
そうでない場合はカスタム版タスクであることを明示してください
・人を憎んで言語を憎まず
0767ID:EEKBitmg ◆HSP4mee/SU
2009/03/14(土) 01:46:18ID:lcPBznJ3つーかお前、前>>510だろ。当たってる?当たってたらなんご褒美ちょうだい
チョー陰険だし、やたらどうでもいいことで噛み付いてくるし、顔真っ赤になると
言ってること滅茶苦茶になるから多分当たってるだろ。な。陰険アマチュア野郎。タスクシステム=DB君。
俺が性格悪い?まぁアンタほどじゃないよ
>>730みたいな内容ゼロのハッタリゴミクズチンカスレスして悦に浸る中年には適わないね
俺が頭悪い?それ既出ジャン?>>355で既に認めてっからよく嫁カス。何今更言ってんだ
>>>2では最初から並列動作なんか考えてないんだから
ま、この点でアンタとの争点ないのは分かってるから。せいぜい無視したら?
あんたさ、それが分かってるのに何でそこんとこで噛み付くの?俺が気に入らないだけだろ
0768ID:EEKBitmg ◆HSP4mee/SU
2009/03/14(土) 02:33:21ID:lcPBznJ3連結リストのメモリ配置を整えましたー。速くなりましたーっていうけどさ
そんなことするならいっそのこと配列にしてダブルバッファリングしたほうがいい
0769名前は開発中のものです。
2009/03/14(土) 02:33:35ID:nYYNsR/20770名前は開発中のものです。
2009/03/14(土) 02:44:33ID:JpSKv17wでもこの辺のメリットは”知る”ものじゃなくて”理解”するものだから、実際にゲーム作った経験の無い人には
分からないかもしれん。
なんかアンチタスクって独身スレにいる「結婚のメリット教えてくれ!」ってのと同じ感じ。
「絶対に幸せになる保証が無い限り結婚しない!」ってのがいたけど、あれととても似ている…
タスクはゲーム作るときに使うもので、ゲーム作らないならタスクにこだわる必要ないし
実際にタスク以外の方法でゲームつくってるならそれはそれでタスクなんて気にしなくてよい。
アンチはなんでタスクシステムに粘着してるんだろう?
0771名前は開発中のものです。
2009/03/14(土) 03:17:55ID:wqRDNWfrプロ気取りがしたり顔で出鱈目いっちゃ駄目よん
0772並列さん ◆dPfetnROQg
2009/03/14(土) 03:19:14ID:Nif8vd+k> 実際、仮想アドレス上でバランバランでもうろたえるほどの速度低下はない。
その部分に限って言えば、バランバランにメモリをアクセスするのと、
リニアにアクセスするのとでは数倍以上変わると思うけど。
全体に占める割合は…ゲームによるけど、何万パーティクルも表示するつもりなら致命的だと思うけど。
なんか同人規模のシューティングとかしか作ったことのない人が何か言っても説得力ないよ。
0773名前は開発中のものです。
2009/03/14(土) 03:29:59ID:wqRDNWfrゲームをよく作ってる感じがするのねん
0774名前は開発中のものです。
2009/03/14(土) 06:17:22ID:QgvbbJg3なんでおまえはそんな偉そうなんだよw
このスレで一番あてにならないのは具体的なことは言わないくせに
妙に偉そうにしてるやつだとおも
擁護アンチ問わず
0775名前は開発中のものです。
2009/03/14(土) 13:16:45ID:nGWrBYC8タスクシステムを使って書かれたプログラムを引き継ぐ羽目になって(バグが収束せずに
メインプログラマ交代)、散々苦労した。
0776名前は開発中のものです。
2009/03/14(土) 16:42:18ID:TdAuyVy6>つーかお前、前>>510だろ。当たってる?当たってたらなんご褒美ちょうだい
ぶっぶー。チョー陰険だから前510だろってのは間違い!
初出は>>682で、以下ID:E0xOAlNR、ID:0j+yjPij、ID:GPL7IZe+、ID:QLymkmBo、
ID:kAszbGcI、ID:gk02bKgy、かな。抜けてるかもしんないけど多分こんだけ。
てか、あらためてスレを斜め読みしてみたら、ID:EEKBitmgさんて高専の人だったのね。
道理で、知識だけはあっても、考え方も物言いも子供っぽいわけだ・・・。
なんかもうすでにガキの喧嘩の捨て台詞みたいなレスになっちゃってるから、>>767に
いちいち突っ込むのはやめるけど・・・「俺が気に入らないだけだろ」みたいに、
下らない衝動を私に投影するのはやめてね。
上のリスト見れば分かると思うけど、おかしなことを書いてると思った人に対して
それはおかしいんじゃない?って書き込みしてるだけだよ。
0777名前は開発中のものです。
2009/03/14(土) 18:34:28ID:rFb0Dzvp0778名前は開発中のものです。
2009/03/14(土) 19:02:02ID:DOdjkrEe0779名前は開発中のものです。
2009/03/14(土) 19:07:02ID:C4Fq/WX8>763
0780名前は開発中のものです。
2009/03/14(土) 20:18:24ID:JpSKv17w”タスクシステム”を”C言語”とか”ポインタ”に置き換えても成立するな。
バグが収束せずにメインプログラマ交代って時点で既に…
0781名前は開発中のものです。
2009/03/14(土) 21:24:01ID:QgvbbJg30782名前は開発中のものです。
2009/03/14(土) 22:13:43ID:DOdjkrEeただ単にコーディングレベルの問題ではないか?w
0783名前は開発中のものです。
2009/03/15(日) 00:16:39ID:fq8JV7Q3は?何もかいてないけど?
馬鹿がわかりもしないでレスつけないでくれない?
0784510
2009/03/15(日) 02:45:36ID:4et5xcyh書いてみればすぐ分かること。
タスクシステム並列化版
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8978.zip
各スレッドでタスク群の添え字をInterlockedIncrementしつつループまわすだけ。
なお、並列化に関係ない部分は手抜き実装。
0785510
2009/03/15(日) 02:57:48ID:4et5xcyh並列化に処理順序の話を持ち込むのはナンセンスだと考えるが。
並列化しないからといって、処理順序がどうでも良いというわけではない。
0786名前は開発中のものです。
2009/03/15(日) 06:19:12ID:fq8JV7Q3VTuneでも使って一度みてみろマジで
0787名前は開発中のものです。
2009/03/15(日) 08:59:48ID:Osu85aea0788510
2009/03/15(日) 09:15:14ID:4et5xcyh0789名前は開発中のものです。
2009/03/15(日) 11:45:56ID:a+EQhixt#include <boost/lambda/lambda.hpp>
#include <boost/lambda/bind.hpp>
#include <cassert>
#include <vector>
#include <pstade/oven/parallel_for_each.hpp>
#include <pstade/oven/forall.hpp>
struct test_task{
int m_counter;
test_task() : m_counter(0) {}
};
int main(int argc, char *argv[]){
namespace ov = pstade::oven;
namespace ll = boost::lambda;
const size_t N = 10000;
const size_t THREADS_SIZE = 4;
std::vector<test_task> v(N);
ov::parallel_for_each(THREADS_SIZE, v, ll::bind(&test_task::m_counter, ll::_1) += 1);
assert( ov::forall(v, ll::bind(&test_task::m_counter, ll::_1) == 1) );
ov::parallel_for_each(THREADS_SIZE, v, ll::bind(&test_task::m_counter, ll::_1) += 2);
assert( ov::forall(v, ll::bind(&test_task::m_counter, ll::_1) == 3) );
return 0;
}
>>784のmainの動作を真似するだけなら、boostやovenを使ってこう書けたりする。
んで、並行動作するオブジェクト間の依存を上手く消してTBB等のparallel algorithmで一発というのが、
一番簡単な並行プログラミングだろうなと思った。
boost threadはただのマルチスレッドだけどTBBのだと強烈な並列化もしてくれるみたいだしね。
しかし、こういうのは参照透明性の保証が容易な関数型言語の十八番のように思うわ。
0790名前は開発中のものです。
2009/03/16(月) 00:25:10ID:zPsQiR9lゲームに限らんが、並列化しやすい部分としにくい部分がある。描画周りとかパーティクルなどの
エフェクト系、モーション計算とかを並列化したほうが、依存関係が複雑で仕様変更が多発する
プレイヤーやら何やらを並列化するよりよほど現実的だと思うんだが。
0791名前は開発中のものです。
2009/03/16(月) 00:41:01ID:4SuKIn/y優先順位とグローバル変数(シングルトン含めて)問題の冴えたやりかたを検討しようぜ
0792ID:EEKBitmg ◆HSP4mee/SU
2009/03/16(月) 02:18:40ID:9YyKMei6ちょっとちょっとちょっとー。ハッタリ自動並列メタボDBオヤジは本当に大丈夫なの?
『ボクが作ったこのコードにもタスクシステムって名前付けたからこれもタスクシステムですし
ついでに言うとこれDBですし自動並列処理もできますしお前らはボクのコードが並列化に
向いてないって言いたいんだろうけどそれは全くの誤りだしどうしてそれが分からないの?』
こういうことなの?頭の中がお花畑なの?公序良俗に反するポピーの花が自生してるの?
お前がひりだしたウンコがどう陳列され得るかなんていう前衛美術の話なんて誰もしてないから
安心していいよ
それとオッサン、あんたは何で配列にぶち込んだ1万個の鼻糞みたいなちっさな処理を一個一個
処理する度にsleepしたりクリティカルセクションかまして次に処理する要素番号をゲットすんの?
スレッドの数で配列を等分して粗粒度並列化でもしときなさいよ
sleepなんか噛ましたらインストラクションレベルの自動最適化の妨げになっちゃうじゃないの
あんたのコード使うくらいなら直列番長の>>2のほうがまだ速いよ
0793ID:EEKBitmg ◆HSP4mee/SU
2009/03/16(月) 02:40:43ID:9YyKMei6イベント(シグナル)で同期とったりするのは何の冗談なの?
ベンチ取った?アホ?
もしかしてワーカースレッドが目覚める前にメインスレッドが全部処理
しちゃったりしてない?あとさ、最初のTASK1(hage)が終わって
次のTASK1(hoge)が始まる頃には何ms経過してるの?
なんかもう自動並列とか以前に足元がグラグラのヘボヘボな気がする
おやすみ
0794ID:EEKBitmg ◆HSP4mee/SU
2009/03/16(月) 02:44:52ID:9YyKMei6ウソだろ?サンプルだからってこれはないと思う。聳え立つウンコだ
0795ID:EEKBitmg ◆HSP4mee/SU
2009/03/16(月) 08:13:22ID:McZ+hNsyよく見たらtasksystemはグローバル変数だからスレッドは使い回してるから
そびえ立つウンコてのは言い過ぎか
0796名前は開発中のものです。
2009/03/16(月) 13:07:05ID:ah3HB55u0797名前は開発中のものです。
2009/03/16(月) 21:21:55ID:JRonhFLP雑魚とドラム缶を合わせて4つまでしか画面に表示しないように制限するシステム
0798名前は開発中のものです。
2009/03/16(月) 22:00:19ID:/VT9KBYC0799ID:EEKBitmg ◆HSP4mee/SU
2009/03/16(月) 22:53:40ID:McZ+hNsy俺そんなに大人びて見えるか?もしかして俺褒められてる?
このマス掻き童貞夜更かししてないでエロゲでシコって糞して寝てろ、とか
罵倒されるんじゃないかとビクビクしてたんだけど杞憂だったのかな
0800名前は開発中のものです。
2009/03/17(火) 00:41:33ID:0PbiXi361章を読んだだけでタスクシステムのだめな点が指摘されているような気がした。
「継承」対「階層化」では階層化の勝ちで、
理由は階層化の方がはるかに一般的=依存性が少ないからって話みたい。
タスクシステム(なんちゃってC++版)のタスクは継承使ってるよね。
タスクの次にどこに進めばいいか分からないとか、
抽象的な話に飽きた、デザパタとか眉唾ーって人は
これ読むとおもしろいかもよ。おれはおもしろい。当たり前のことが書いてある。
0801名前は開発中のものです。
2009/03/17(火) 01:59:53ID:kxFrGMdGまあ多態性を使わない場面ならすべて包含でいける。
包含だと結合が緩やかだから見通しが良いって話だなそれは。
何段も深くなければよいんじゃないかね?
0802名前は開発中のものです。
2009/03/17(火) 07:25:27ID:VzljBEPwdelegateのリストでも使っとけ。
0803名前は開発中のものです。
2009/03/17(火) 11:28:02ID:b6S1HRLy範囲指定で自殺してくれるの最高。
0804名前は開発中のものです。
2009/03/17(火) 13:49:55ID:hOnodYrQその範囲は何を意味してるの?
何かの値なんだろうけど。
0805名前は開発中のものです。
2009/03/17(火) 14:04:47ID:eriEEpX/0806名前は開発中のものです。
2009/03/17(火) 17:56:34ID:zLwES14L0807名前は開発中のものです。
2009/03/17(火) 21:56:42ID:kxFrGMdGタスクシステムのExecやRunやProcなんかは
まさにそういう用途の窓口じゃないのかね?
0808名前は開発中のものです。
2009/03/18(水) 00:44:43ID:lM4akplnその窓口を誰が用意するかという話。
本人なのか、本人と取り引きする別の人なのか。
どっちがいいかはよくわからん。
もっと条件を絞れば考えやすくはなるが、俺の思考が正しいとは限らん。
0809ID:EEKBitmg ◆HSP4mee/SU
2009/03/20(金) 00:38:03ID:0dULYU21クソガキの俺がそろそろ総括しちゃおっかなーっと
結局21世紀にもなってタスクシステムだタスクシステムだなんて叫んでるおじちゃん達って
相当に不勉強なロートルちゃんが混じってるんだよねー。不勉強なまま頭がコチコチに
固まっちゃったガンコなお年寄りに限って声がデカイもんだから迷惑してる人もいるだろうね
・タスクバカは、たかが実行待ちキューに得意げにお名前を付けてることにいつまでも気付かない
・タスクバカは、タスクシステムが何なのか一般化して説明するだけの知能がない。だから、ハハン、
想像力の問題だね、とかハハン、自分で考えな、みたいに居丈高に振舞って誤魔化すしかない。
・タスクバカは、>>2で使われてる用語のTASKやらTCBやらが実はOSやらMONITORから拝借されて
きた用語であることを知らない。知らないフリをし続ける。指摘されても『アーアー聞こえない聞こえない』
の知能障害で逃げまくる。で、『>>2はOSとは設計も目的も意味も違うから混同するのはおかしい』
だとか、『OSとの比較は無意味』、だとか臆面も無く言ってのける。もはや介護が必要な知的水準だ
・タスクバカは、>>2がOSやMONITORの仕組みを劣化猿真似しただけの代物であることを
どうしても認めたくない。プライドの高い彼らにとって>>2とは、タスクシステムとは
ボクらのギョーカイが編み出したプライスレスでオンリーワンなミラクルテクノロジー
でなければならないらしいのだろう。タスクシステム誇らしいですねホルホルホル
0810名前は開発中のものです。
2009/03/20(金) 00:47:14ID:NOe63qNyただの学生なのにここまで熱心に煽れるエネルギーってなんなんだろうw
0811名前は開発中のものです。
2009/03/20(金) 00:55:34ID:S9RgoUXb人によって場合によって色々前提違うのに、自分の世界の話ばかりだし
リアルならお近付きになりたくないタイプ
ウザすぎる
0812名前は開発中のものです。
2009/03/20(金) 01:11:51ID:gGNkZ3FNおっさんのタスクバカだが>>2がOSやMONITORの仕組みを
劣化猿真似しただけの代物と思ってるぜ。良い意味で。
学問的には屑だがシンプルでちゃんと動くぜというか
微妙なたとえかもしれないが大学に対する高専みたいな。
0813名前は開発中のものです。
2009/03/20(金) 01:37:27ID:7TQPewAA実装する窓口を作るのが本来の仕事だと思います。
タスク間メッセージのやり取りなどで汎用化とか考えがちだけど、
結局は時間的コストがばかにならないのでたいてい失敗に終わる。
メッセージのやり取りなら上位の管理役オブジェクトに
取得するメソッドを経由するほうが効率的だと思います。
で、タスクシステムが何を作るのに有用かと言うと、
上で書いたとおり1実行単位で必ず1回実行したい処理です。
たとえばGameの進行を管理するためのGameMaster、
入力機器などのステータスのアップデート、ゲーム内ステータスの表示(UI)、
プレイヤーが操作するキPC、NPCなどのAIなどが一般的。
当たり判定などはこれらを実行しつつあたり判定用の
データベース(ハッユや4分木)に登録する。
一通りシステムタスクやキャラクタタスクの実行が終わった後、
当たり判定を行いゲーム内物理に応じた反応を計算。
このあとジオメトリ計算やレンダリングが行われるわけです。
0814名前は開発中のものです。
2009/03/20(金) 01:40:55ID:7TQPewAA実装してみれば分かると思いますが、ゲームシステムにおいて
1実行単位で必ず1回実行したい処理ってのは割りとあります。
いろんな所で使うためおもわず「システム」といいたくなるのでしょう。
ツリー構造や処理依存関係を考慮したタスクの
生存管理を行うとよりシステムらしくなるでしょうね。
まあ、すべてタスクで行うの愚かでしょう、
しかしタスクを全く使わないのも非効率ですね。
パーティクルなどはタスクで実装すると、
非効率なのでべつの処理系を僕は作っています。
弾幕ゲーム程度の弾数ですとタスクで処理しちゃいますけどね。
0815510
2009/03/20(金) 18:07:47ID:BbcMOz7M普通に仕事してるので、一週間に一回程度しかスレを確認できないから亀レスすまん。
>配列にぶち込んだ1万個の鼻糞みたいなちっさな処理を一個一個
>処理する度にsleepしたりクリティカルセクションかまして次に処理する要素番号をゲットすんの?
Sleepを入れているのは、明示的にスレッドの切り替えを発生させ、並列動作をテストするため。
だから、本来は入らない。
それから、クリティカルセクションは使ってない。
0816並列さん ◆dPfetnROQg
2009/03/20(金) 20:09:54ID:CF/qt1oOいまさらかも知れないが
名前の「510」は、「前スレ510」とか「タスクシステム改良君」とかにしたほうがいいような気がした。
ところで、>>792だが、俺もちょっと的外れな気がする。
ID:EEKBitmg は、サンプルプログラムを読み解く力に乏しいのか、ケチの付け方が毎度しょーもない。
0817名前は開発中のものです。
2009/03/20(金) 20:40:49ID:a30Oap5a0818名前は開発中のものです。
2009/03/20(金) 23:37:12ID:nTzU835n> ケチの付け方が毎度しょーもない。
仕方ないよ。知識も経験も乏しいセンセイに教わってる学生サンなんだから。
0819ID:EEKBitmg ◆HSP4mee/SU
2009/03/21(土) 00:37:19ID:q+0mNzyTクリティカルセクションじゃなくてインターロックだった。なんか書き間違えた
>>816
うぜぇよハゲ
ちいさな処理をひとつこなしたら排他制御かけて次に処理する要素を決定、とか
こんなチマチマとロックをかけるくらいなら
thread1 execute task[0〜10000/4-1]
thread2 execute task[10000/4〜10000*2/4-1]
thread3 execute task[10000*2/4〜10000*3/4-1]
thread4 execute task[10000*3/4〜10000-1]
のほうがはえーんだけど
0820名前は開発中のものです。
2009/03/21(土) 00:47:27ID:Lt5z4CxY大量のパーティクルとかは、1つのタスクに配列を持たせて管理するでしょ。
0821ID:EEKBitmg ◆HSP4mee/SU
2009/03/21(土) 01:01:55ID:q+0mNzyTてめぇ、質問するときは言葉を選べよボンクラ
俺にタスクシステムの実装を聞いてどうすんだよ
>お前らタスクバカはさ、いい加減『ナニを作るのか』具体的に書けよ
>何でもツクール目指すから『ナニを作るのか』書けません、だとか
>ミラクルドリーマーみたいな事をほざくなよ
何度も何度もいってんだろ。バカが
毎度毎度てめぇのに都合に合わせて俺様実装を引っ張り出して
『当然だけど』、とかほざくなっつってんだよ
0822ID:EEKBitmg ◆HSP4mee/SU
2009/03/21(土) 01:08:12ID:q+0mNzyT>>820
>>2のタスク一個一個でパーティクル一粒一粒を作るようなことをせず
配列でやるというのはとても清々しい実装だと思うね。タスカーっつっても色々だね
ところでそれはタスクシステム派としては多数派の意見なの?
全てをタスクにしないと気がすまない人がいたような気がするんだけど
0823名前は開発中のものです。
2009/03/21(土) 02:41:56ID:NSoih+ibまともに相手にしてんなよ
0824名前は開発中のものです。
2009/03/21(土) 10:47:01ID:pH6WTk/t>全てをタスクにしないと気がすまない人がいたような気がするんだけど
お前の頭の中に仮想敵作って必死にどっかの誰かと戦ってますね
0825名前は開発中のものです。
2009/03/21(土) 10:52:49ID:NSoih+ibタスクシステムなんて使ってるアフォからしてみたらそれはすごく面倒なことなんじゃないの?
引数作ってもってくるみたいなことしてるとも思えないし
0826名前は開発中のものです。
2009/03/21(土) 12:14:38ID:hWHfUpnE>毎度毎度てめぇのに都合に合わせて俺様実装を引っ張り出して
>『当然だけど』、とかほざくなっつってんだよ
てめぇの都合に合わせて俺様実装するのが当たり前だろうが
そういうのが当然だっつってんだよ
お前本当に高専か? 老害連中より頭固いじゃねぇか
教科書読むしか能の無いサルは社会に出てくんなよ迷惑だから
0827名前は開発中のものです。
2009/03/21(土) 13:37:52ID:Lt5z4CxY他の人がどうしてるか知らないけど、普通に考えて、
数千、数万のリストを作る人はいないと思う。
>>825
1つのタスクの中に、複数のオブジェクトのデータがあるだけだよ。
アクセスは引数使ってもできるし、引数なしでもできる。
0828名前は開発中のものです。
2009/03/21(土) 16:58:12ID:aPX2P6NL処理の単位がタスクなだけであって、すべての要素がタスクな訳じゃないだろ
0829名前は開発中のものです。
2009/03/21(土) 17:09:54ID:NSoih+ibでもわざわざ引数なんて使いたくないんでしょ?
0830名前は開発中のものです。
2009/03/21(土) 21:25:16ID:xOJ60zOt俺的にはメソッドに常に self を渡すのは当然
0831名前は開発中のものです。
2009/03/22(日) 05:18:44ID:TvrDIaqh何かアンチタスクは思い込みの激しいタイプみたいだな…
0832名前は開発中のものです。
2009/03/22(日) 05:30:54ID:0jTqsTen引数使う人間がごった煮をメリットだと思うかね・・・馬鹿かね君は
0833名前は開発中のものです。
2009/03/22(日) 05:32:36ID:5NogUcs2どんな状態なんだろうか
0834名前は開発中のものです。
2009/03/22(日) 05:37:34ID:TvrDIaqhやはり何かに取り付かれてるな
見えない何かと戦うのは疲れないかい?
0835名前は開発中のものです。
2009/03/22(日) 10:27:25ID:2tpyojUU0836名前は開発中のものです。
2009/03/22(日) 11:10:41ID:0jTqsTenそれは>>2を読んでないな
とりあえずこのスレのタスクシステムは>>2なんだから会話に参加するなら
まず>>2を読むべき
0837名前は開発中のものです。
2009/03/22(日) 13:18:05ID:5NogUcs20838名前は開発中のものです。
2009/03/22(日) 13:21:33ID:0jTqsTen奴は議論の過渡期にわざわざ見当違いな記事書いて意味不明なフェードアウトしただけ
0839名前は開発中のものです。
2009/03/22(日) 13:34:52ID:2tpyojUU0840名前は開発中のものです。
2009/03/22(日) 13:41:41ID:NwxqzLgyタスクシステムは>>2にあるものがすべてって考えはどうかしてる。
ゲームに合わせて実装は変えるのが普通。
教えられた通りのことしかできないプログラマはゴミ。
0841名前は開発中のものです。
2009/03/22(日) 13:49:52ID:IncocYZRなんでもかんでもごった煮リスト(wに頼らないとやっていけないとか考えてるお子様が未だに存在する
というのがちょっとした脅威。
0842名前は開発中のものです。
2009/03/22(日) 13:51:32ID:DNLKor45そこまで想像できないんだろう。
0843名前は開発中のものです。
2009/03/22(日) 14:18:45ID:0jTqsTenだったらまずは>>2のメリットデメリットを説明した上で
自分の改良版の>>2との相違点を説明するべき
それがこのスレに参加する条件だろ
0844名前は開発中のものです。
2009/03/22(日) 14:44:30ID:B5iuRYmF0845名前は開発中のものです。
2009/03/22(日) 14:50:58ID:IncocYZR人に教えてもらったところで、それを理解できなければ意味が無いだろwww
0846名前は開発中のものです。
2009/03/22(日) 14:51:40ID:DNLKor45具体的な前提条件が無いとメリットデメリットの説明は抽象的なものにしかならんだろうなぁ…
まぁ、抽象的なものでも経験のあるゲームプログラマならだいたい暗黙知で分かるんだけど
タスクの仕組みを聞いただけではその辺がまったく想像すらつかないってレベルなら、
理解できるだけのプログラム能力や経験が不足してるか、そもそもプログラマとしての適正がないんでないかな。かわいそうだけど。
0847名前は開発中のものです。
2009/03/22(日) 16:32:43ID:0jTqsTen一番PGとして適正のない人間ってちゃんと比較検討ができない人間だと思うぜ
数字出してちゃんとメリットとデメリットを掲示できない、
ちゃんと検討もしたことないのに勘でいいものだと信じる
あたりを見回して楽に手の届くところにあるもんをテキトーにつまんで
勉強した気になってるような奴は詐欺師に騙されてしまう
ソフトウェア工学はクズが多すぎたよ
海外の人間からいってウンコみたいな奴等ばっかりだし
グローバル変数・関数が平気で使ってあるもんが褒め称えられてる異常事態
ちゃんと自分で判断できる人間が周囲にいるかどうかも正直微妙だしね
環境によっては糞を受け付けられてしまってもしょうがない
0848名前は開発中のものです。
2009/03/22(日) 16:42:26ID:qn7xQRxP他人にキャンキャン噛み付いてるのを見てると結構面白い
0849名前は開発中のものです。
2009/03/22(日) 16:45:24ID:eDzO8au2抽象的な説明に、ひとつの具体例でもついてれば十分だよ。
デザインパターンの説明なんて、みんなそんなもんだ。
抽象的な説明にしかならないからって、説明しない理由にはならないよね。
0850名前は開発中のものです。
2009/03/22(日) 17:09:32ID:iwp01Fauこのスレ見てると、いつもアンチ側がタスカー側に対して、
説明しろだの具体例を挙げろだのと一方的に要求してるよな。
アンチ側は、自分の方からタスクシステムより良い具体的な実装例を挙げて、
これこれこうだからタスクシステムは駄目なんだ、っていう比較をしようとは思わないのか?
なんか見てて不思議なんだが。
0851名前は開発中のものです。
2009/03/22(日) 17:13:17ID:2tpyojUUすべて個別に実行用のメソッドをもったオブジェクトを、
用途に合わせたコンテナに突っ込んでまわすとかいってた希ガス。
0852名前は開発中のものです。
2009/03/22(日) 17:31:36ID:OM4BCGYz比較対象の無い文脈でメリットやデメリットを問うのは論理的におかしい。
>846ば偉そうにしてる割にそんなこともわからんのか。
>>849
デザインパターンの説明は目的と構造だけだろ。
例えばVisitorパターンのメリット、デメリットは?と問われて答えられる?
0853名前は開発中のものです。
2009/03/22(日) 18:26:41ID:eDzO8au2じゃぁとりあえず個人的な興味で、話の流れに合ってるかどうかは知らないけど、
↓の比較で前者の方針にメリットがあるのかどうか、教えてもらえるとうれしい。
- 「タスクシステム」的方針
まず、毎フレーム実行される処理のコンテナ(リストなど)が在ることが前提。
毎フレーム実行される処理はまず「タスク」と考え、上記のコンテナに登録する。
大量のパーティクルなど、不都合が現れた場合は「タスク」としない。
- そうでない方針(個人的にはこっちが「ふつう」)
とりあえず必要な処理は関数呼び出しで並べる。
動的な寿命や複数インスタンスの一括処理などが必要になったら
リストなどのコンテナを必要な場所に用意して使う。
ここで「アンチタスク」として書き込みしている人は、たぶん前者の方針が
我慢できないんだと思うんだ。
0854名前は開発中のものです。
2009/03/22(日) 18:46:43ID:mHB0TcPPそれってどっちにしても毎フレーム実行コンテナは使ってんだな。
つまり
・常に毎フレーム実行コンテナ
・必要になったときに毎フレーム実行コンテナ
この2派がここまで醜い争いしてんの?w
0855名前は開発中のものです。
2009/03/22(日) 19:20:29ID:eDzO8au2個人的にはそういうことだと思って見てる。たぶんシューティングゲームや
アクションゲームを作れば結果として同じような構造が(必要に迫られて)現れるだろう
と思う。
タスクシステムが「どんなゲームでも基本になる」とか「(メリットが)暗黙知」とか言う人は、
きっとシューティングゲームやアクションゲームなどを作った割合が多いんだろうな、とか。
ただ、後者であればコンテナは複数種使うのがあたりまえだし、ましてグローバルでは
ありえない。
これに対して前者では単一のコンテナ(これが「タスクシステム」と呼ばれたり)だったり、
それがさらにグローバルになったりしやすい。
0856名前は開発中のものです。
2009/03/22(日) 19:30:04ID:mHB0TcPP論争は解決するんじゃね
0857名前は開発中のものです。
2009/03/22(日) 22:42:54ID:DN2untcT>動的な寿命や複数インスタンスの一括処理などが必要になったら
同じような構造がプログラム中に複数表れる場合は
共通化できる部分を抽象化して共通のシステムにできないか、と考えるのが普通だと思うが
アンチは必要な箇所全てにコピペなりで同じような実装を個別に持つのがいい、という理屈か?
まぁ共通化できそうな箇所が2箇所ぐらいならいいけど、アクション系ゲームとかではかなり出てくるだろうし
そーなると共通化したほうがマシでない?
0858名前は開発中のものです。
2009/03/22(日) 22:49:10ID:IncocYZR0859名前は開発中のものです。
2009/03/22(日) 23:14:54ID:eDzO8au2同じ構造のコードを共通化することに異論は無いよ。
共通化できるはずということ(なのかどうか知らないけど)で最初から根っこにひとつ
「タスクシステム」が存在してるのが >853 でいう「タスクシステム」的方針。
共通化できる部分を見つけてから実装を括りだすのが >853 でいう「ふつう」の方針。
前者だと何か構造的な変更を考えたときに、根っこをいじることになって影響が
広がりやすいというデメリットが考えられる。別の言い方をすると、たくさんの
プログラムから共用されているということは変更が難しくなる、という至極当然の話。
これに対して、大きなメリットは思い当たらない。
0860名前は開発中のものです。
2009/03/22(日) 23:22:45ID:IncocYZR> 前者だと何か構造的な変更を考えたときに、根っこをいじることになって影響が
> 広がりやすいというデメリットが考えられる。
いわゆる『タスクシステム』も含めて、それらはただの実行巡回コレクションなのだから、それ以上の
機能を持たせようとするのが間違い。なんでもかんでも一つの構造に押し込めるのがおかしい。
実装をくくりだす後者の場合でも、当然共用されているところに変更が入ったらその機能の調停に
手間がかかるのは同じだ。
機能を絞り込めないなら、前者でも後者でも変更が難しくなるのは変わらないよ。
0861名前は開発中のものです。
2009/03/22(日) 23:24:30ID:eDzO8au2C++ 初期以前の時代なら、すべての要求に対する単一のコンテナをあらかじめ
持っておくという方法に大きなメリットが感じられたのかもしれないけど、今となっては
基本的なコンテナは標準テンプレートから即座に作れてしまうわけで、大きな違いには
ならない。
C++ 標準コンテナの利用という点にメリット・デメリットの感じ方の分岐点があるのだと
考えれば、 C++ 標準コンテナのゲームプログラマ内での普及率とあわせて、
タスクシステムの恩恵を感じる人が多いことも納得できる。
0862名前は開発中のものです。
2009/03/22(日) 23:24:32ID:DN2untcT>共通化できるはずということ(なのかどうか知らないけど)で最初から根っこにひとつ
>「タスクシステム」が存在してるのが >853 でいう「タスクシステム」的方針。
タスクシステムの定義に根っこ一つなんてあったかな?
前々スレあたりに出てた
メイン遷移状態・メニュー階層・ゲームオブジェ・エフェクト…
って粒度単位で分かれてる階層タスクシステムってのもあるみたいだけど。
>共通化できる部分を見つけてから実装を括りだすのが >853 でいう「ふつう」の方針。
そこで括りだされた共通実装って一般にタスクシステムと言われるものでは?
0863名前は開発中のものです。
2009/03/22(日) 23:27:38ID:2tpyojUU>たくさんのプログラムから共用されている
継承が浅ければたいした問題じゃないよ。
その理論からいったら.NETが提供する「Object」なんて、
すべてのオブジェクトから継承されるので論外って話になるんじゃないかね?
0864名前は開発中のものです。
2009/03/22(日) 23:34:22ID:eDzO8au2> いわゆる『タスクシステム』も含めて、それらはただの実行巡回コレクションなのだから、それ以上の
> 機能を持たせようとするのが間違い。なんでもかんでも一つの構造に押し込めるのがおかしい。
そういう立場で言うと、「タスクシステム」と呼ぶほどの構造はどこにも現れないはず。
つまり「タスクシステム」が存在していること自体が、なにか不適切な機能の押し込みの
存在を示している(或いは感じさせる)ということになる。
> 実装をくくりだす後者の場合でも、当然共用されているところに変更が入ったらその機能の調停に
> 手間がかかるのは同じだ。
後者の方針では、共用されていることで変更が面倒になるようなら共用しないという選択が
簡単にできる。だって元々共用することが前提じゃなかったんだから、元に戻すだけの話。
括りだした実装を、結局ひとつの場面でしか使わないことになったとしても何も問題は無い。
0865名前は開発中のものです。
2009/03/22(日) 23:41:47ID:eDzO8au2根っこにひとつという定義は無いと思う。逆に、根っこにひとつとか、共用が前提とかいう
方針でなければ「タスクシステム」と名前がついていても、あまり否定するポイントは無いよ。
名前を改めることを強くお勧めする程度。
0866名前は開発中のものです。
2009/03/22(日) 23:42:38ID:IncocYZRオマエの頭の中には、機能の階層構造が『タスク』と『タスクを継承した何か』しか無いのか?
そもそも『タスクシステム』なんて仰々しい名称が付いてるが、あんなのはただのイディオムでしか
ないぞ。教条的に従うものでもなんでもない。
> そういう立場で言うと、「タスクシステム」と呼ぶほどの構造はどこにも現れないはず。
『タスクシステムとよほどのもの』は無いかもしれないが、そういう『構造』は確かに存在するし、
>859の後者の方針だって、例えば敵なら敵でまとめてコレクションを作って実行巡回する
んだろ? それは敵という機能をベースにした「タスク」のコレクション以外の何だというんだ?
■ このスレッドは過去ログ倉庫に格納されています