[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/09 21:46 / Filesize : 382 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:名前は開発中のものです。 mailto:sage [2009/02/19(木) 02:21:01 ID:k4ODtuXP]
タスクシステムについての議論、相談、質問、雑談などのスレです

part4 pc11.2ch.net/test/read.cgi/gamedev/1233459490/
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/


・タスクと呼ばれる実装は、非常に多岐に渡ります
 古典タスクシステムについての話題は「>>2」と明示してください
 そうでない場合はカスタム版タスクであることを明示してください

・人を憎んで言語を憎まず

782 名前:名前は開発中のものです。 mailto:sage [2009/03/14(土) 22:13:43 ID:DOdjkrEe]
>バグが収束せず
ただ単にコーディングレベルの問題ではないか?w

783 名前:名前は開発中のものです。 [2009/03/15(日) 00:16:39 ID:fq8JV7Q3]
>>779
は?何もかいてないけど?
馬鹿がわかりもしないでレスつけないでくれない?

784 名前:510 mailto:sage [2009/03/15(日) 02:45:36 ID:4et5xcyh]
タスクシステムが並列化に向く向かないで盛り上がっているようだが。
書いてみればすぐ分かること。

タスクシステム並列化版
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8978.zip

各スレッドでタスク群の添え字をInterlockedIncrementしつつループまわすだけ。

なお、並列化に関係ない部分は手抜き実装。

785 名前:510 mailto:sage [2009/03/15(日) 02:57:48 ID:4et5xcyh]
処理順序だとかプライオリティーだとか色々議論しているが、
並列化に処理順序の話を持ち込むのはナンセンスだと考えるが。
並列化しないからといって、処理順序がどうでも良いというわけではない。

786 名前:名前は開発中のものです。 [2009/03/15(日) 06:19:12 ID:fq8JV7Q3]
これ並列動作しねぇって
VTuneでも使って一度みてみろマジで

787 名前:名前は開発中のものです。 mailto:sage [2009/03/15(日) 08:59:48 ID:Osu85aea]
おいおい お口チャックマンだぜ?

788 名前:510 mailto:sage [2009/03/15(日) 09:15:14 ID:4et5xcyh]
いや、並列で動くことは動くんだが、他のところがバグってるね。

789 名前:名前は開発中のものです。 mailto:sage [2009/03/15(日) 11:45:56 ID: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のだと強烈な並列化もしてくれるみたいだしね。
しかし、こういうのは参照透明性の保証が容易な関数型言語の十八番のように思うわ。


790 名前:名前は開発中のものです。 mailto:sage [2009/03/16(月) 00:25:10 ID:zPsQiR9l]
そもそも、なんでタスクとやらを並列化したがるかな。

ゲームに限らんが、並列化しやすい部分としにくい部分がある。描画周りとかパーティクルなどの
エフェクト系、モーション計算とかを並列化したほうが、依存関係が複雑で仕様変更が多発する
プレイヤーやら何やらを並列化するよりよほど現実的だと思うんだが。



791 名前:名前は開発中のものです。 mailto:sage [2009/03/16(月) 00:41:01 ID:4SuKIn/y]
並列化は別で話してほしい。
優先順位とグローバル変数(シングルトン含めて)問題の冴えたやりかたを検討しようぜ


792 名前:ID:EEKBitmg ◆HSP4mee/SU mailto:sage [2009/03/16(月) 02:18:40 ID:9YyKMei6]
>>784
ちょっとちょっとちょっとー。ハッタリ自動並列メタボDBオヤジは本当に大丈夫なの?

  『ボクが作ったこのコードにもタスクシステムって名前付けたからこれもタスクシステムですし
   ついでに言うとこれDBですし自動並列処理もできますしお前らはボクのコードが並列化に
   向いてないって言いたいんだろうけどそれは全くの誤りだしどうしてそれが分からないの?』

こういうことなの?頭の中がお花畑なの?公序良俗に反するポピーの花が自生してるの?
お前がひりだしたウンコがどう陳列され得るかなんていう前衛美術の話なんて誰もしてないから
安心していいよ

それとオッサン、あんたは何で配列にぶち込んだ1万個の鼻糞みたいなちっさな処理を一個一個
処理する度にsleepしたりクリティカルセクションかまして次に処理する要素番号をゲットすんの?
スレッドの数で配列を等分して粗粒度並列化でもしときなさいよ
sleepなんか噛ましたらインストラクションレベルの自動最適化の妨げになっちゃうじゃないの

あんたのコード使うくらいなら直列番長の>>2のほうがまだ速いよ

793 名前:ID:EEKBitmg ◆HSP4mee/SU mailto:sage [2009/03/16(月) 02:40:43 ID:9YyKMei6]
あとさ、同一フレーム内で終わらせないといけない処理なのに
イベント(シグナル)で同期とったりするのは何の冗談なの?
ベンチ取った?アホ?

もしかしてワーカースレッドが目覚める前にメインスレッドが全部処理
しちゃったりしてない?あとさ、最初のTASK1(hage)が終わって
次のTASK1(hoge)が始まる頃には何ms経過してるの?

なんかもう自動並列とか以前に足元がグラグラのヘボヘボな気がする
おやすみ

794 名前:ID:EEKBitmg ◆HSP4mee/SU mailto:sage [2009/03/16(月) 02:44:52 ID:9YyKMei6]
あと、TASK1(hogehoge)の度にスレッド作るのはサンプルだから?
ウソだろ?サンプルだからってこれはないと思う。聳え立つウンコだ

795 名前:ID:EEKBitmg ◆HSP4mee/SU mailto:sage [2009/03/16(月) 08:13:22 ID:McZ+hNsy]
>>794
よく見たらtasksystemはグローバル変数だからスレッドは使い回してるから
そびえ立つウンコてのは言い過ぎか

796 名前:名前は開発中のものです。 mailto:sage [2009/03/16(月) 13:07:05 ID:ah3HB55u]
おっさん言う奴は自分は若いと思ってる20代後半から30代前半の独身男性だな

797 名前:名前は開発中のものです。 mailto:sage [2009/03/16(月) 21:21:55 ID:JRonhFLP]
タスクシステムってあれだろ
雑魚とドラム缶を合わせて4つまでしか画面に表示しないように制限するシステム

798 名前:名前は開発中のものです。 mailto:sage [2009/03/16(月) 22:00:19 ID:/VT9KBYC]
大体お前の頭の中身と同じだな。

799 名前:ID:EEKBitmg ◆HSP4mee/SU mailto:sage [2009/03/16(月) 22:53:40 ID:McZ+hNsy]
>>796
俺そんなに大人びて見えるか?もしかして俺褒められてる?
このマス掻き童貞夜更かししてないでエロゲでシコって糞して寝てろ、とか
罵倒されるんじゃないかとビクビクしてたんだけど杞憂だったのかな

800 名前:名前は開発中のものです。 mailto:sage [2009/03/17(火) 00:41:33 ID:0PbiXi36]
「新装版 大規模C++ソフトウェアデザイン」って本を昨日から読み始めたんだけど、
1章を読んだだけでタスクシステムのだめな点が指摘されているような気がした。

「継承」対「階層化」では階層化の勝ちで、
理由は階層化の方がはるかに一般的=依存性が少ないからって話みたい。
タスクシステム(なんちゃってC++版)のタスクは継承使ってるよね。

タスクの次にどこに進めばいいか分からないとか、
抽象的な話に飽きた、デザパタとか眉唾ーって人は
これ読むとおもしろいかもよ。おれはおもしろい。当たり前のことが書いてある。



801 名前:名前は開発中のものです。 mailto:sage [2009/03/17(火) 01:59:53 ID:kxFrGMdG]
包含と継承のことだな。

まあ多態性を使わない場面ならすべて包含でいける。
包含だと結合が緩やかだから見通しが良いって話だなそれは。

何段も深くなければよいんじゃないかね?

802 名前:名前は開発中のものです。 mailto:sage [2009/03/17(火) 07:25:27 ID:VzljBEPw]
なんでもかんでも機能を突っ込もうとするからだ。

delegateのリストでも使っとけ。

803 名前:名前は開発中のものです。 mailto:sage [2009/03/17(火) 11:28:02 ID:b6S1HRLy]
タスクシステムいいじゃん。
範囲指定で自殺してくれるの最高。

804 名前:名前は開発中のものです。 mailto:sage [2009/03/17(火) 13:49:55 ID:hOnodYrQ]
>>803
その範囲は何を意味してるの?
何かの値なんだろうけど。

805 名前:名前は開発中のものです。 mailto:sage [2009/03/17(火) 14:04:47 ID:eriEEpX/]
親殺せば子も死ぬってことじゃね?

806 名前:名前は開発中のものです。 [2009/03/17(火) 17:56:34 ID:zLwES14L]
タスクシステム関係無いじゃん

807 名前:名前は開発中のものです。 mailto:sage [2009/03/17(火) 21:56:42 ID:kxFrGMdG]
>>802
タスクシステムのExecやRunやProcなんかは
まさにそういう用途の窓口じゃないのかね?

808 名前:名前は開発中のものです。 mailto:sage [2009/03/18(水) 00:44:43 ID:lM4akpln]
>>807
その窓口を誰が用意するかという話。
本人なのか、本人と取り引きする別の人なのか。

どっちがいいかはよくわからん。
もっと条件を絞れば考えやすくはなるが、俺の思考が正しいとは限らん。

809 名前:ID:EEKBitmg ◆HSP4mee/SU mailto:sage [2009/03/20(金) 00:38:03 ID:0dULYU21]
(・∀・)ヘラヘラ
クソガキの俺がそろそろ総括しちゃおっかなーっと
結局21世紀にもなってタスクシステムだタスクシステムだなんて叫んでるおじちゃん達って
相当に不勉強なロートルちゃんが混じってるんだよねー。不勉強なまま頭がコチコチに
固まっちゃったガンコなお年寄りに限って声がデカイもんだから迷惑してる人もいるだろうね

 ・タスクバカは、たかが実行待ちキューに得意げにお名前を付けてることにいつまでも気付かない
 ・タスクバカは、タスクシステムが何なのか一般化して説明するだけの知能がない。だから、ハハン、
  想像力の問題だね、とかハハン、自分で考えな、みたいに居丈高に振舞って誤魔化すしかない。
 ・タスクバカは、>>2で使われてる用語のTASKやらTCBやらが実はOSやらMONITORから拝借されて
  きた用語であることを知らない。知らないフリをし続ける。指摘されても『アーアー聞こえない聞こえない』
  の知能障害で逃げまくる。で、『>>2はOSとは設計も目的も意味も違うから混同するのはおかしい』
  だとか、『OSとの比較は無意味』、だとか臆面も無く言ってのける。もはや介護が必要な知的水準だ

 ・タスクバカは、>>2がOSやMONITORの仕組みを劣化猿真似しただけの代物であることを
  どうしても認めたくない。プライドの高い彼らにとって>>2とは、タスクシステムとは

    ボクらのギョーカイが編み出したプライスレスでオンリーワンなミラクルテクノロジー

  でなければならないらしいのだろう。タスクシステム誇らしいですねホルホルホル

810 名前:名前は開発中のものです。 mailto:sage [2009/03/20(金) 00:47:14 ID:NOe63qNy]
老害プログラマーに現在進行形でムカついてんならともかく
ただの学生なのにここまで熱心に煽れるエネルギーってなんなんだろうw



811 名前:名前は開発中のものです。 mailto:sage [2009/03/20(金) 00:55:34 ID:S9RgoUXb]
ここ以外では話聞いてもらえないんじゃねぇの
人によって場合によって色々前提違うのに、自分の世界の話ばかりだし
リアルならお近付きになりたくないタイプ
ウザすぎる

812 名前:名前は開発中のものです。 mailto:sage [2009/03/20(金) 01:11:51 ID:gGNkZ3FN]
>>809
おっさんのタスクバカだが>>2がOSやMONITORの仕組みを
劣化猿真似しただけの代物と思ってるぜ。良い意味で。

学問的には屑だがシンプルでちゃんと動くぜというか
微妙なたとえかもしれないが大学に対する高専みたいな。

813 名前:名前は開発中のものです。 mailto:sage [2009/03/20(金) 01:37:27 ID:7TQPewAA]
タスクシステムは1実行単位で必ず1回実行したい処理などを、
実装する窓口を作るのが本来の仕事だと思います。

タスク間メッセージのやり取りなどで汎用化とか考えがちだけど、
結局は時間的コストがばかにならないのでたいてい失敗に終わる。

メッセージのやり取りなら上位の管理役オブジェクトに
取得するメソッドを経由するほうが効率的だと思います。

で、タスクシステムが何を作るのに有用かと言うと、
上で書いたとおり1実行単位で必ず1回実行したい処理です。

たとえばGameの進行を管理するためのGameMaster、
入力機器などのステータスのアップデート、ゲーム内ステータスの表示(UI)、
プレイヤーが操作するキPC、NPCなどのAIなどが一般的。

当たり判定などはこれらを実行しつつあたり判定用の
データベース(ハッユや4分木)に登録する。

一通りシステムタスクやキャラクタタスクの実行が終わった後、
当たり判定を行いゲーム内物理に応じた反応を計算。

このあとジオメトリ計算やレンダリングが行われるわけです。


814 名前:名前は開発中のものです。 mailto:sage [2009/03/20(金) 01:40:55 ID:7TQPewAA]

実装してみれば分かると思いますが、ゲームシステムにおいて
1実行単位で必ず1回実行したい処理ってのは割りとあります。

いろんな所で使うためおもわず「システム」といいたくなるのでしょう。

ツリー構造や処理依存関係を考慮したタスクの
生存管理を行うとよりシステムらしくなるでしょうね。

まあ、すべてタスクで行うの愚かでしょう、
しかしタスクを全く使わないのも非効率ですね。

パーティクルなどはタスクで実装すると、
非効率なのでべつの処理系を僕は作っています。

弾幕ゲーム程度の弾数ですとタスクで処理しちゃいますけどね。

815 名前:510 mailto:sage [2009/03/20(金) 18:07:47 ID:BbcMOz7M]
>>792
普通に仕事してるので、一週間に一回程度しかスレを確認できないから亀レスすまん。


>配列にぶち込んだ1万個の鼻糞みたいなちっさな処理を一個一個
>処理する度にsleepしたりクリティカルセクションかまして次に処理する要素番号をゲットすんの?

Sleepを入れているのは、明示的にスレッドの切り替えを発生させ、並列動作をテストするため。
だから、本来は入らない。
それから、クリティカルセクションは使ってない。

816 名前:並列さん ◆dPfetnROQg mailto:sage [2009/03/20(金) 20:09:54 ID:CF/qt1oO]
>>815
いまさらかも知れないが
名前の「510」は、「前スレ510」とか「タスクシステム改良君」とかにしたほうがいいような気がした。

ところで、>>792だが、俺もちょっと的外れな気がする。
ID:EEKBitmg は、サンプルプログラムを読み解く力に乏しいのか、ケチの付け方が毎度しょーもない。

817 名前:名前は開発中のものです。 mailto:sage [2009/03/20(金) 20:40:49 ID:a30Oap5a]
嫌タスク厨にレスする度に、魂がよごれていく気がするんだよな、ハハン

818 名前:名前は開発中のものです。 mailto:sage [2009/03/20(金) 23:37:12 ID:nTzU835n]
>816
> ケチの付け方が毎度しょーもない。

仕方ないよ。知識も経験も乏しいセンセイに教わってる学生サンなんだから。

819 名前:ID:EEKBitmg ◆HSP4mee/SU mailto:sage [2009/03/21(土) 00:37:19 ID:q+0mNzyT]
>>815
クリティカルセクションじゃなくてインターロックだった。なんか書き間違えた

>>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]

のほうがはえーんだけど

820 名前:名前は開発中のものです。 mailto:sage [2009/03/21(土) 00:47:27 ID:Lt5z4CxY]
当然だけど、すべてがタスクシステムのリストに繋がってると思ってないよね。
大量のパーティクルとかは、1つのタスクに配列を持たせて管理するでしょ。



821 名前:ID:EEKBitmg ◆HSP4mee/SU mailto:sage [2009/03/21(土) 01:01:55 ID:q+0mNzyT]
>>820
てめぇ、質問するときは言葉を選べよボンクラ
俺にタスクシステムの実装を聞いてどうすんだよ

>お前らタスクバカはさ、いい加減『ナニを作るのか』具体的に書けよ
>何でもツクール目指すから『ナニを作るのか』書けません、だとか
>ミラクルドリーマーみたいな事をほざくなよ

何度も何度もいってんだろ。バカが
毎度毎度てめぇのに都合に合わせて俺様実装を引っ張り出して
『当然だけど』、とかほざくなっつってんだよ


822 名前:ID:EEKBitmg ◆HSP4mee/SU mailto:sage [2009/03/21(土) 01:08:12 ID:q+0mNzyT]
というのは不毛なので
>>820
>>2のタスク一個一個でパーティクル一粒一粒を作るようなことをせず
配列でやるというのはとても清々しい実装だと思うね。タスカーっつっても色々だね
ところでそれはタスクシステム派としては多数派の意見なの?
全てをタスクにしないと気がすまない人がいたような気がするんだけど

823 名前:名前は開発中のものです。 mailto:sage [2009/03/21(土) 02:41:56 ID:NSoih+ib]
相手によって発言内容変えてくるクズだろ?
まともに相手にしてんなよ

824 名前:名前は開発中のものです。 mailto:sage [2009/03/21(土) 10:47:01 ID:pH6WTk/t]
>ところでそれはタスクシステム派としては多数派の意見なの?
>全てをタスクにしないと気がすまない人がいたような気がするんだけど
お前の頭の中に仮想敵作って必死にどっかの誰かと戦ってますね

825 名前:名前は開発中のものです。 mailto:sage [2009/03/21(土) 10:52:49 ID:NSoih+ib]
でもすべてごった煮にしてないとせっかくまとめたのにアクセスできないオブジェクトができるよね?
タスクシステムなんて使ってるアフォからしてみたらそれはすごく面倒なことなんじゃないの?
引数作ってもってくるみたいなことしてるとも思えないし

826 名前:名前は開発中のものです。 mailto:sage [2009/03/21(土) 12:14:38 ID:hWHfUpnE]
>>821
>毎度毎度てめぇのに都合に合わせて俺様実装を引っ張り出して
>『当然だけど』、とかほざくなっつってんだよ

てめぇの都合に合わせて俺様実装するのが当たり前だろうが
そういうのが当然だっつってんだよ

お前本当に高専か? 老害連中より頭固いじゃねぇか
教科書読むしか能の無いサルは社会に出てくんなよ迷惑だから

827 名前:名前は開発中のものです。 mailto:sage [2009/03/21(土) 13:37:52 ID:Lt5z4CxY]
>>822
他の人がどうしてるか知らないけど、普通に考えて、
数千、数万のリストを作る人はいないと思う。

>>825
1つのタスクの中に、複数のオブジェクトのデータがあるだけだよ。
アクセスは引数使ってもできるし、引数なしでもできる。

828 名前:名前は開発中のものです。 mailto:sage [2009/03/21(土) 16:58:12 ID:aPX2P6NL]
パーティクルの一粒一粒が他のタスクに何らかの影響を与えて相互に作用する必要がないなら全部まとめて1タスク内で処理するよな
処理の単位がタスクなだけであって、すべての要素がタスクな訳じゃないだろ

829 名前:名前は開発中のものです。 mailto:sage [2009/03/21(土) 17:09:54 ID:NSoih+ib]
>>827
でもわざわざ引数なんて使いたくないんでしょ?

830 名前:名前は開発中のものです。 mailto:sage [2009/03/21(土) 21:25:16 ID:xOJ60zOt]
引数ってなんの話だっけ
俺的にはメソッドに常に self を渡すのは当然



831 名前:名前は開発中のものです。 mailto:sage [2009/03/22(日) 05:18:44 ID:TvrDIaqh]
>>829
何かアンチタスクは思い込みの激しいタイプみたいだな…

832 名前:名前は開発中のものです。 mailto:sage [2009/03/22(日) 05:30:54 ID:0jTqsTen]
>>831
引数使う人間がごった煮をメリットだと思うかね・・・馬鹿かね君は

833 名前:名前は開発中のものです。 mailto:sage [2009/03/22(日) 05:32:36 ID:5NogUcs2]
ごった煮ってこのスレでよく見かける言葉だけど、
どんな状態なんだろうか

834 名前:名前は開発中のものです。 mailto:sage [2009/03/22(日) 05:37:34 ID:TvrDIaqh]
引数つかわない、ごった煮…
やはり何かに取り付かれてるな

見えない何かと戦うのは疲れないかい?

835 名前:名前は開発中のものです。 mailto:sage [2009/03/22(日) 10:27:25 ID:2tpyojUU]
インターフェースを使った抽象化をごった煮とはこれいかにw

836 名前:名前は開発中のものです。 mailto:sage [2009/03/22(日) 11:10:41 ID:0jTqsTen]
>>833
それは>>2を読んでないな
とりあえずこのスレのタスクシステムは>>2なんだから会話に参加するなら
まず>>2を読むべき

837 名前:名前は開発中のものです。 mailto:sage [2009/03/22(日) 13:18:05 ID:5NogUcs2]
面倒だからググったらやねうらおの記事で使われてる言葉だったのか

838 名前:名前は開発中のものです。 mailto:sage [2009/03/22(日) 13:21:33 ID:0jTqsTen]
日付と過去ログを合わせればここで使ってたほうが早いぞ
奴は議論の過渡期にわざわざ見当違いな記事書いて意味不明なフェードアウトしただけ

839 名前:名前は開発中のものです。 mailto:sage [2009/03/22(日) 13:34:52 ID:2tpyojUU]
タスクシステムなんて記憶をたどると15年位前から使われてる。

840 名前:名前は開発中のものです。 mailto:sage [2009/03/22(日) 13:41:41 ID:NwxqzLgy]
>>836
タスクシステムは>>2にあるものがすべてって考えはどうかしてる。
ゲームに合わせて実装は変えるのが普通。
教えられた通りのことしかできないプログラマはゴミ。



841 名前:名前は開発中のものです。 mailto:sage [2009/03/22(日) 13:49:52 ID:IncocYZR]
というか、実行巡回リストのみしか存在しない、それ以外のコレクションが存在しないとか考えてて、
なんでもかんでもごった煮リスト(wに頼らないとやっていけないとか考えてるお子様が未だに存在する
というのがちょっとした脅威。

842 名前:名前は開発中のものです。 mailto:sage [2009/03/22(日) 13:51:32 ID:DNLKor45]
アンチ君はプログラマではなくてただの学生みたいだから
そこまで想像できないんだろう。

843 名前:名前は開発中のものです。 mailto:sage [2009/03/22(日) 14:18:45 ID:0jTqsTen]
>>840
だったらまずは>>2のメリットデメリットを説明した上で
自分の改良版の>>2との相違点を説明するべき

それがこのスレに参加する条件だろ

844 名前:名前は開発中のものです。 mailto:sage [2009/03/22(日) 14:44:30 ID:B5iuRYmF]
別に相違点だけでいいんじゃね?

845 名前:名前は開発中のものです。 mailto:sage [2009/03/22(日) 14:50:58 ID:IncocYZR]
>843
人に教えてもらったところで、それを理解できなければ意味が無いだろwww

846 名前:名前は開発中のものです。 mailto:sage [2009/03/22(日) 14:51:40 ID:DNLKor45]
タスクってゲーム毎に手を入れて使うのが普通だし、プラットフォームとかジャンルとか前提条件によって使い方も異なるから
具体的な前提条件が無いとメリットデメリットの説明は抽象的なものにしかならんだろうなぁ…

まぁ、抽象的なものでも経験のあるゲームプログラマならだいたい暗黙知で分かるんだけど
タスクの仕組みを聞いただけではその辺がまったく想像すらつかないってレベルなら、
理解できるだけのプログラム能力や経験が不足してるか、そもそもプログラマとしての適正がないんでないかな。かわいそうだけど。

847 名前:名前は開発中のものです。 mailto:sage [2009/03/22(日) 16:32:43 ID:0jTqsTen]
>>846
一番PGとして適正のない人間ってちゃんと比較検討ができない人間だと思うぜ
数字出してちゃんとメリットとデメリットを掲示できない、
ちゃんと検討もしたことないのに勘でいいものだと信じる
あたりを見回して楽に手の届くところにあるもんをテキトーにつまんで
勉強した気になってるような奴は詐欺師に騙されてしまう

ソフトウェア工学はクズが多すぎたよ
海外の人間からいってウンコみたいな奴等ばっかりだし
グローバル変数・関数が平気で使ってあるもんが褒め称えられてる異常事態
ちゃんと自分で判断できる人間が周囲にいるかどうかも正直微妙だしね
環境によっては糞を受け付けられてしまってもしょうがない

848 名前:名前は開発中のものです。 mailto:sage [2009/03/22(日) 16:42:26 ID:qn7xQRxP]
PGには独善的な連中も多いようだな
他人にキャンキャン噛み付いてるのを見てると結構面白い

849 名前:名前は開発中のものです。 mailto:sage [2009/03/22(日) 16:45:24 ID:eDzO8au2]
>>846
抽象的な説明に、ひとつの具体例でもついてれば十分だよ。
デザインパターンの説明なんて、みんなそんなもんだ。

抽象的な説明にしかならないからって、説明しない理由にはならないよね。

850 名前:名前は開発中のものです。 mailto:sage [2009/03/22(日) 17:09:32 ID:iwp01Fau]
俺自身は、タスクシステムが良いとか悪いとか言うつもりは無いんだが・・・
このスレ見てると、いつもアンチ側がタスカー側に対して、
説明しろだの具体例を挙げろだのと一方的に要求してるよな。
アンチ側は、自分の方からタスクシステムより良い具体的な実装例を挙げて、
これこれこうだからタスクシステムは駄目なんだ、っていう比較をしようとは思わないのか?
なんか見てて不思議なんだが。



851 名前:名前は開発中のものです。 mailto:sage [2009/03/22(日) 17:13:17 ID:2tpyojUU]
>>850
すべて個別に実行用のメソッドをもったオブジェクトを、
用途に合わせたコンテナに突っ込んでまわすとかいってた希ガス。

852 名前:名前は開発中のものです。 mailto:sage [2009/03/22(日) 17:31:36 ID:OM4BCGYz]
メリットやデメリットは何かと比較したときに初めて出てくるもので
比較対象の無い文脈でメリットやデメリットを問うのは論理的におかしい。
>846ば偉そうにしてる割にそんなこともわからんのか。

>>849
デザインパターンの説明は目的と構造だけだろ。
例えばVisitorパターンのメリット、デメリットは?と問われて答えられる?

853 名前:名前は開発中のものです。 mailto:sage [2009/03/22(日) 18:26:41 ID:eDzO8au2]
そうか比較対象が明らかじゃないのか。すまんかった。

じゃぁとりあえず個人的な興味で、話の流れに合ってるかどうかは知らないけど、
↓の比較で前者の方針にメリットがあるのかどうか、教えてもらえるとうれしい。

- 「タスクシステム」的方針
まず、毎フレーム実行される処理のコンテナ(リストなど)が在ることが前提。
毎フレーム実行される処理はまず「タスク」と考え、上記のコンテナに登録する。
大量のパーティクルなど、不都合が現れた場合は「タスク」としない。

- そうでない方針(個人的にはこっちが「ふつう」)
とりあえず必要な処理は関数呼び出しで並べる。
動的な寿命や複数インスタンスの一括処理などが必要になったら
リストなどのコンテナを必要な場所に用意して使う。

ここで「アンチタスク」として書き込みしている人は、たぶん前者の方針が
我慢できないんだと思うんだ。

854 名前:名前は開発中のものです。 mailto:sage [2009/03/22(日) 18:46:43 ID:mHB0TcPP]
>>853
それってどっちにしても毎フレーム実行コンテナは使ってんだな。
つまり
・常に毎フレーム実行コンテナ
・必要になったときに毎フレーム実行コンテナ
この2派がここまで醜い争いしてんの?w

855 名前:名前は開発中のものです。 mailto:sage [2009/03/22(日) 19:20:29 ID:eDzO8au2]
>>854
個人的にはそういうことだと思って見てる。たぶんシューティングゲームや
アクションゲームを作れば結果として同じような構造が(必要に迫られて)現れるだろう
と思う。

タスクシステムが「どんなゲームでも基本になる」とか「(メリットが)暗黙知」とか言う人は、
きっとシューティングゲームやアクションゲームなどを作った割合が多いんだろうな、とか。

ただ、後者であればコンテナは複数種使うのがあたりまえだし、ましてグローバルでは
ありえない。

これに対して前者では単一のコンテナ(これが「タスクシステム」と呼ばれたり)だったり、
それがさらにグローバルになったりしやすい。


856 名前:名前は開発中のものです。 mailto:sage [2009/03/22(日) 19:30:04 ID:mHB0TcPP]
おまいら全員毎フレーム実行コンテナを使わないことにすれば
論争は解決するんじゃね

857 名前:名前は開発中のものです。 mailto:sage [2009/03/22(日) 22:42:54 ID:DN2untcT]
>>853
>動的な寿命や複数インスタンスの一括処理などが必要になったら
同じような構造がプログラム中に複数表れる場合は
共通化できる部分を抽象化して共通のシステムにできないか、と考えるのが普通だと思うが

アンチは必要な箇所全てにコピペなりで同じような実装を個別に持つのがいい、という理屈か?

まぁ共通化できそうな箇所が2箇所ぐらいならいいけど、アクション系ゲームとかではかなり出てくるだろうし
そーなると共通化したほうがマシでない?

858 名前:名前は開発中のものです。 [2009/03/22(日) 22:49:10 ID:IncocYZR]
確か継承も否定してたぞ>アンチタスク厨


859 名前:名前は開発中のものです。 mailto:sage [2009/03/22(日) 23:14:54 ID:eDzO8au2]
>>857
同じ構造のコードを共通化することに異論は無いよ。

共通化できるはずということ(なのかどうか知らないけど)で最初から根っこにひとつ
「タスクシステム」が存在してるのが >853 でいう「タスクシステム」的方針。

共通化できる部分を見つけてから実装を括りだすのが >853 でいう「ふつう」の方針。


前者だと何か構造的な変更を考えたときに、根っこをいじることになって影響が
広がりやすいというデメリットが考えられる。別の言い方をすると、たくさんの
プログラムから共用されているということは変更が難しくなる、という至極当然の話。
これに対して、大きなメリットは思い当たらない。

860 名前:名前は開発中のものです。 mailto:sage [2009/03/22(日) 23:22:45 ID:IncocYZR]
>859
> 前者だと何か構造的な変更を考えたときに、根っこをいじることになって影響が
> 広がりやすいというデメリットが考えられる。

いわゆる『タスクシステム』も含めて、それらはただの実行巡回コレクションなのだから、それ以上の
機能を持たせようとするのが間違い。なんでもかんでも一つの構造に押し込めるのがおかしい。

実装をくくりだす後者の場合でも、当然共用されているところに変更が入ったらその機能の調停に
手間がかかるのは同じだ。

機能を絞り込めないなら、前者でも後者でも変更が難しくなるのは変わらないよ。



861 名前:名前は開発中のものです。 mailto:sage [2009/03/22(日) 23:24:30 ID:eDzO8au2]
局所的な要求に対して個別のコンテナを置く(作る)のが難しかった(面倒だった)
C++ 初期以前の時代なら、すべての要求に対する単一のコンテナをあらかじめ
持っておくという方法に大きなメリットが感じられたのかもしれないけど、今となっては
基本的なコンテナは標準テンプレートから即座に作れてしまうわけで、大きな違いには
ならない。

C++ 標準コンテナの利用という点にメリット・デメリットの感じ方の分岐点があるのだと
考えれば、 C++ 標準コンテナのゲームプログラマ内での普及率とあわせて、
タスクシステムの恩恵を感じる人が多いことも納得できる。

862 名前:名前は開発中のものです。 mailto:sage [2009/03/22(日) 23:24:32 ID:DN2untcT]
>>859
>共通化できるはずということ(なのかどうか知らないけど)で最初から根っこにひとつ
>「タスクシステム」が存在してるのが >853 でいう「タスクシステム」的方針。
タスクシステムの定義に根っこ一つなんてあったかな?

前々スレあたりに出てた
メイン遷移状態・メニュー階層・ゲームオブジェ・エフェクト…
って粒度単位で分かれてる階層タスクシステムってのもあるみたいだけど。

>共通化できる部分を見つけてから実装を括りだすのが >853 でいう「ふつう」の方針。
そこで括りだされた共通実装って一般にタスクシステムと言われるものでは?

863 名前:名前は開発中のものです。 mailto:sage [2009/03/22(日) 23:27:38 ID:2tpyojUU]
>>859
>たくさんのプログラムから共用されている

継承が浅ければたいした問題じゃないよ。

その理論からいったら.NETが提供する「Object」なんて、
すべてのオブジェクトから継承されるので論外って話になるんじゃないかね?

864 名前:名前は開発中のものです。 mailto:sage [2009/03/22(日) 23:34:22 ID:eDzO8au2]
>>860
> いわゆる『タスクシステム』も含めて、それらはただの実行巡回コレクションなのだから、それ以上の
> 機能を持たせようとするのが間違い。なんでもかんでも一つの構造に押し込めるのがおかしい。

そういう立場で言うと、「タスクシステム」と呼ぶほどの構造はどこにも現れないはず。
つまり「タスクシステム」が存在していること自体が、なにか不適切な機能の押し込みの
存在を示している(或いは感じさせる)ということになる。

> 実装をくくりだす後者の場合でも、当然共用されているところに変更が入ったらその機能の調停に
> 手間がかかるのは同じだ。

後者の方針では、共用されていることで変更が面倒になるようなら共用しないという選択が
簡単にできる。だって元々共用することが前提じゃなかったんだから、元に戻すだけの話。
括りだした実装を、結局ひとつの場面でしか使わないことになったとしても何も問題は無い。


865 名前:名前は開発中のものです。 mailto:sage [2009/03/22(日) 23:41:47 ID:eDzO8au2]
>>862
根っこにひとつという定義は無いと思う。逆に、根っこにひとつとか、共用が前提とかいう
方針でなければ「タスクシステム」と名前がついていても、あまり否定するポイントは無いよ。

名前を改めることを強くお勧めする程度。

866 名前:名前は開発中のものです。 mailto:sage [2009/03/22(日) 23:42:38 ID:IncocYZR]
>864
オマエの頭の中には、機能の階層構造が『タスク』と『タスクを継承した何か』しか無いのか?

そもそも『タスクシステム』なんて仰々しい名称が付いてるが、あんなのはただのイディオムでしか
ないぞ。教条的に従うものでもなんでもない。

> そういう立場で言うと、「タスクシステム」と呼ぶほどの構造はどこにも現れないはず。

『タスクシステムとよほどのもの』は無いかもしれないが、そういう『構造』は確かに存在するし、
>859の後者の方針だって、例えば敵なら敵でまとめてコレクションを作って実行巡回する
んだろ? それは敵という機能をベースにした「タスク」のコレクション以外の何だというんだ?


867 名前:名前は開発中のものです。 mailto:sage [2009/03/22(日) 23:43:24 ID:IncocYZR]
×『タスクシステムとよほどのもの』
○『タスクシステムと呼ぶほどのもの』

868 名前:名前は開発中のものです。 mailto:sage [2009/03/22(日) 23:44:55 ID:2tpyojUU]
>>864
実行巡回リストに、実行の依存関係の解決や、
ライフタイムの管理などを加えてやるとシステムといって良い物になるともうけどな〜。

上記のような実装があると便利な処理にはこれを継承させるといいよ。
割と継承する機会が多いから「システム」と呼んでいるんだと思うのだが・・・。

869 名前:名前は開発中のものです。 mailto:sage [2009/03/22(日) 23:48:03 ID:eDzO8au2]
>>863
比較して欲しいのは、共用が前提になっている方針とそうでない方針のメリット・デメリットね。
共用を前提にしたうえで「たいした問題じゃない」と言われても「はぁそうですか」としか言えない。

.NET が提供する Object は、明確な目的があって共用されるべく作られたのであって、
これがなければいろいろ困るというのはすぐわかる。これがあるから「タスクシステム」も
同じことだ、なんてまるで思えない。

870 名前:名前は開発中のものです。 mailto:sage [2009/03/22(日) 23:56:38 ID:eDzO8au2]
>>866
> 『タスクシステムとよほどのもの』は無いかもしれないが、そういう『構造』は確かに存在するし、
> >859の後者の方針だって、例えば敵なら敵でまとめてコレクションを作って実行巡回する
> んだろ? それは敵という機能をベースにした「タスク」のコレクション以外の何だというんだ?

???
「敵のコレクション」に決まってる。

どこから「タスク」が出てくるの?自分で言ってておかしいと思わないの?



871 名前:名前は開発中のものです。 mailto:sage [2009/03/23(月) 00:09:13 ID:LvfAcAqg]
>870
> ???
> 「敵のコレクション」に決まってる。
> どこから「タスク」が出てくるの?自分で言ってておかしいと思わないの?

頭の悪いレス返すなよw

『敵のコレクション』のなかに、『タスクのコレクション』と同質な構造を読み取れないなら
プログラマとしての才能無いよ。

872 名前:名前は開発中のものです。 mailto:sage [2009/03/23(月) 00:10:00 ID:V2ED/dbE]
>>868
うん。そこまでいくと「〜システム」と名を付けてもいいかもしれないと思う。

で、そこまで手の込んだものを全体で共用するという方針を採ってしまうと、
>859 で挙げたデメリットが出てくる。ってことで >853,859 の話に戻ってね。

873 名前:名前は開発中のものです。 mailto:sage [2009/03/23(月) 00:10:18 ID:LvfAcAqg]
結局、『敵』という機能単位で実行巡回コレクションを持ってるなら、それは同じことだ。

名前に惑わされてるだけ。

874 名前:名前は開発中のものです。 mailto:sage [2009/03/23(月) 00:20:29 ID:EDktN1ia]
古参のゲームプログラマが「敵のコレクション」とやらを見れば
「あぁ、敵タスクの集まりね」って言うだろうし。
結局タスクなりコレクションなりの方言の違いだけで内容はたいして違わないような…

でも「敵」とか「アイテム」とかの単位で括ってしまうのは仕様変更したとき地獄を見そうだから嫌だな
おえらいゲームデザイナー様の頭の中にしか無い仕様次第で、「この敵はイベント起こるとアイテム扱いで取得できるようになるから」
とか仕様ころころ追加されるし。

移植みたいに仕様が完全に動かないものなら初めから分類して設計できるけど、一般的にゲームはマスター寸前でも
つまらないと基礎構造からちゃぶ台返しがあって入れ替わりがあるから、そんなガチガチに固定した構造で作るのはかえって危険。

875 名前:名前は開発中のものです。 mailto:sage [2009/03/23(月) 00:27:49 ID:V2ED/dbE]
>>874
仕様追加されてから変更すればいいじゃん。

誰も予知能力なんか期待してないってのに、そのために不要な依存関係やバグを
増やすのは嫌だよ。

www.google.co.jp/search?q=YAGNI

876 名前:名前は開発中のものです。 mailto:sage [2009/03/23(月) 00:31:25 ID:LvfAcAqg]
>874
> 一般的にゲームはマスター寸前でも
> つまらないと基礎構造からちゃぶ台返しがあって入れ替わりがあるから、

今まで面白いと勘違いしてきたクソ仕様を、そんな土壇場でひっくり返した糞プランナーに
唯々諾々と従うのはただのバカだ。

仕事なら、キチンとその糞プランナーに責任取らせろ。趣味で作ってるなら、バカにはきちんとバカと
逝ってやれ。

> そんなガチガチに固定した構造で作るのはかえって危険。

敵である『敵』と、アイテムである『敵』は、別に別タスクでも問題ないだろ。内部で参照しあって
リンクしてるとか、双方を子に持つ親が居るとか、色々管理方法はあるだろ。

しかしそんな『敵』であり同時に『アイテム』でもあるような敵が居るなら、そんなクソ仕様で本当に
面白いのかどうかプランナーを小一時間問い詰めたいところだな。


877 名前:名前は開発中のものです。 mailto:sage [2009/03/23(月) 00:35:14 ID:bJ5OKMfv]
>『敵』であり同時に『アイテム』でもあるような敵

ありがとう、なんか閃いた!
このスレ見てて初めて新しい何かに触れた

878 名前:名前は開発中のものです。 mailto:sage [2009/03/23(月) 00:38:56 ID:LvfAcAqg]
>877
礼を言われるようなことは何も書いてはいないが、その閃きが何か形として昇華されることを望むよ。

879 名前:名前は開発中のものです。 mailto:sage [2009/03/23(月) 00:42:42 ID:lCjH8IyB]
>『敵』であり同時に『アイテム』でもあるような敵
そしてマップでも背景でも障害物でもあるんだな
そしてごった煮ができたと

880 名前:名前は開発中のものです。 mailto:sage [2009/03/23(月) 01:00:17 ID:EDktN1ia]
>>876
君はゲーム会社でのプログラマの地位をわかっていないな…
普通よほど小さい会社でもない限りプログラマがゲーム仕様に口出しなんて出来んよ。

ごった煮が見苦しいことは作ってるプログラマが一番よくしってるんだけど
仕様が固まらないまま「とりあえず今あるだけの仕様を作って、細かいことはそれで遊んで決めるから。あ、でもつまんなかったらチーム解散ね。」
とか言われると、基礎システムは変えずに何でもできちゃう「ごった煮」以外の選択肢が無かったりするんだよね…

大作作ってる大手とか、外注に仕事投げる元受系はきっちり仕様書切るみたいだけど、
ゲームデザイン用のプロトタイプとかを本編と別に作れるほど人員も期間も無かったりする中小の中途半端なゲーム開発ではそういうこともあるってことで。



881 名前:名前は開発中のものです。 mailto:sage [2009/03/23(月) 01:04:52 ID:UXdp0kDT]
>>880
おれの会社は小さいからプログラマーの地位が一番いいよ。

882 名前:名前は開発中のものです。 mailto:sage [2009/03/23(月) 01:22:45 ID:LvfAcAqg]
>880
そんなクソな会社辞めちまえ。

ウチは500人以上社員が居るが、糞プランナの言うことをホイホイ聞くようなプログラマも
デザイナもサウンドもディレクターも居ないぞ。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<382KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef