- 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」と明示してください そうでない場合はカスタム版タスクであることを明示してください ・人を憎んで言語を憎まず
- 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人以上社員が居るが、糞プランナの言うことをホイホイ聞くようなプログラマも デザイナもサウンドもディレクターも居ないぞ。
- 883 名前:名前は開発中のものです。 mailto:sage [2009/03/23(月) 03:23:53 ID:pfOFwfs9]
- プランナが仕様を切ってそれをプログラマが実装する、というのは、
単なる役割であって、地位が高いとか低いとかって話じゃないよね。 >>880の会社は単にプランナが仕事してないだけって気がする。 というか、例が下手なせいで話がずれてるが、プログラマの地位(というか 発言力?)の高さと、「仕様変更」が発生するかどうかは関係ないと思うが。 元仕様の不備だろうが、実際に動かしてみて生じた新しいアイディアだろうが、 ゲーム製作において(まともな)仕様変更は普通にあり得るし、それを 「そういう作りじゃないので変更は出来ません」と突っぱねるわけには行かないわけで。 で、その仕様変更に対してタスクシステムが有用かどうかということだけど……。 俺の経験上、同じような変更であっても、多少、修正する箇所が少なくて済むような気が するけど、「仕様変更に備えるためにタスクシステムを使う」というほどの差はないと思う。 どんな方法だろうと、大抵の記述はオブジェクトやシーン単位で完結してるし。 >>875 この場合YAGNIは的外れじゃないか? タスクシステム(>>2だろうがそれの発展系だろうが)を使って組んでいるなら、 既にタスク周りのコードは組みあがっているわけで、依存関係やバグが増えることはないよ。 タスク処理そのものを新しく作るとしても、初期仕様からそれを利用するわけだし。
- 884 名前:名前は開発中のものです。 mailto:sage [2009/03/23(月) 08:30:26 ID:5GNmNI21]
- >>862
> 前々スレあたりに出てた > メイン遷移状態・メニュー階層・ゲームオブジェ・エフェクト… > って粒度単位で分かれてる階層タスクシステムってのもあるみたいだけど。 何でもかんでもタスクシステムと呼ばないで欲しい。タスクシステムとか 名前付けるほどのものではなくて、普通に書いたらああなるという例だから。 アレにたいそうな名前付けたら、それこそ for ループに○○システムとか 呼び始めることになるぞw
- 885 名前:名前は開発中のものです。 mailto:sage [2009/03/24(火) 01:03:10 ID:Rj9TsTRs]
- >>884
タスクシステムを改良した物で作った本人が階層タスクシステムと命名したなら 別にタスクシステムって名前がついててもいいんでない?
- 886 名前:名前は開発中のものです。 mailto:sage [2009/03/24(火) 05:58:46 ID:U0cCvZZ8]
- >>885
だったら、>>2との相違点を説明するべきだよね? 少なくともこのスレでいきなり出すのはNGだと思うね
- 887 名前:名前は開発中のものです。 mailto:sage [2009/03/24(火) 06:34:43 ID:okF9YnFL]
- >>883
> この場合YAGNIは的外れじゃないか? > タスクシステム(>>2だろうがそれの発展系だろうが)を使って組んでいるなら、 > 既にタスク周りのコードは組みあがっているわけで、依存関係やバグが増えることはないよ。 それは既存の「タスク周りのコード」への依存を増やしているということ。 そういった共用コードが >840,846 が言うようにゲーム合わせて変更を 加えられていくと考えると、やっぱり >859 みたいなデメリットにつながる ことが考えられる。 >874 で、そのデメリットをあえて受け入れる理由が「ちゃぶ台返し」への 予防策だというのだからまさに YAGNI の出番だ(そんな予防策は要らない)、と。
- 888 名前:名前は開発中のものです。 mailto:sage [2009/03/24(火) 06:36:03 ID:okF9YnFL]
- 結局 >853 で挙げた2つの方針について、前者の「タスクシステム」的方針に
メリットを挙げる人は居ないみたいだ。 個人的には後者が「ふつう」だと思ってたんで驚くべき結果じゃないんだけど、 過去に見てきた「タスクシステム」の実例のせいで、「タスクシステム」と聞くと やたらごてごてといろんなゲームや画面の都合が押し込められた 自作コンテナクラスや、さらにそいつがグローバル変数になってる状態を 想像して嫌な予感しかしないのが正直なところ。 現存する「タスクシステム」は名前がおかしいだけで、構造としては 挙げたような問題を持たないようなものだけが生き残ってる、ってことだと 理解しておくよ。
- 889 名前:名前は開発中のものです。 mailto:sage [2009/03/24(火) 07:08:53 ID:bIbLUBOz]
- >888
全部ID:okF9YnFLの個人的感想と推測でしかないな。
- 890 名前:884 mailto:sage [2009/03/24(火) 07:18:50 ID:0pAn0US9]
- >>885
その本人ですが…
- 891 名前:名前は開発中のものです。 mailto:sage [2009/03/24(火) 07:21:57 ID:bIbLUBOz]
- 実際の話、>2のような『タスクシステム』も含めて、何らかの共通の構造をコレクションした
実行巡回リストを作って統一的に運用している会社が殆ど。 今まで20社以上の下請けにソースコード納品させてて、それで確認しているから、すくなくとも その範囲内では間違いない。 毎回毎回基礎部分からワンオフで作ってる時間も予算も、下請けにはないからな。判ってる 人たちだけで使うなら、基礎部分を固めてその上で工夫する方がよほど効率がいいという ことだ。
- 892 名前:名前は開発中のものです。 [2009/03/24(火) 07:34:12 ID:lE32YVAM]
- 話のまとめがタスクシステム云々と関係無いじゃん
日記帳に書いてろよ
- 893 名前:名前は開発中のものです。 mailto:sage [2009/03/24(火) 07:37:26 ID:bIbLUBOz]
- その中では、普通に>884が言うような『階層的タスクシステム』というような構造も存在するよ。
いわゆる『シーンタスク』には継続機能を持ったものを使って、できるだけシーケンシャルに記述 できるように、ゲーム内オブジェクトはFMSを使用、といった具合に使い分けてる。
- 894 名前:名前は開発中のものです。 mailto:sage [2009/03/24(火) 07:57:17 ID:bIbLUBOz]
- >884じゃねぇな、>862だ。
ソース公開されてる海外のゲーム見ても、普通にこういう構造は使われてるぞ。 EntityとかActorとかいった構造を内包するか継承するかしてコレクションしてる。
- 895 名前:名前は開発中のものです。 mailto:sage [2009/03/25(水) 03:06:34 ID:L7D8ecXi]
- YAGNIの考え方からいけばむしろごった煮のほうがYAGNI的じゃないか?
敵とかアイテムとか地形とかの仕様上の扱いは最後まで決まらないんだから 敵でも何でもタスクてごった煮実装して、最後に仕様が固まって分類わけできる ような仕様に落ち着いたなら、その段階で初めて分ける作業をすればいいわけで。
- 896 名前:名前は開発中のものです。 mailto:sage [2009/03/25(水) 04:07:28 ID:Lr2HI9E7]
- >>895
> 敵とかアイテムとか地形とかの仕様上の扱いは最後まで決まらないんだから ここが間違い。 本当に決まっていないのであれば、そもそもコードを書くべきじゃない。
- 897 名前:名前は開発中のものです。 [2009/03/25(水) 07:51:20 ID:4mzxhtmM]
- 全くだな
手を動かしてる方が進んでる感あるから決まってない仕様には触れずに色々やり出すんだろうけど 明らかにこれが間違いの元 現実には全く進んでないし余計なコードを入れただけ 本当にやらなくてはならないことは、決まっていないから早く決めて欲しい仕様リストの作成と それに対する仕様の提案や仮に決まらなかったときの強行策の練り上げ等であって プログラムを組むことではない すべてをやりつくしたら昼寝でもして待つか仕様が決まっている箇所のバグ潰しが仕事 プログラムを組むことではない プログラムを組む仕事に逃げるなと言いたい
- 898 名前:名前は開発中のものです。 mailto:sage [2009/03/25(水) 11:24:38 ID:CbSm4PZy]
- ここの偉そうに語ってる連中のどれだけがプロなんだか
- 899 名前:名前は開発中のものです。 [2009/03/25(水) 12:49:30 ID:4mzxhtmM]
- じゃ、はっきりいうけど
現場で一番使えない奴はプログラミングしかしてない奴 出世もしないし心当たりない奴は働いたことないだろ
- 900 名前:名前は開発中のものです。 mailto:sage [2009/03/25(水) 23:53:40 ID:pW6Hh/Rg]
- で?
タスクシステムと何か関係あんの?
|

|