タスクシステム総合スレ part3
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2008/11/09(日) 11:51:40ID:+pjnJyQQpart2 http://pc11.2ch.net/test/read.cgi/gamedev/1196711513/
part1 http://pc11.2ch.net/test/read.cgi/gamedev/1173708588/
0404名前は開発中のものです。
2009/01/01(木) 15:12:29ID:AYpKL28Gロックオンした目標が複数あればグラフ構造にもなるな
0405名前は開発中のものです。
2009/01/01(木) 15:18:57ID:kIedBn3kわかってないのお前ひとりだけじゃん。
お前が底抜けの馬鹿だからわからないだけで・・・
0406名前は開発中のものです。
2009/01/01(木) 16:17:14ID:bLjGdube0407名前は開発中のものです。
2009/01/01(木) 16:53:23ID:ocRuaHu5なんか
わからないんだ?プギャー(笑)
的な流れにして説明責任果たそうとしない流れにしがちだけど
現実、仕事となったらここが一番大事だしその後の理論がどんなに立派でも糞とカワンネ
仮に関連してたとしてもこれ関連性を説明するの滅茶苦茶大変だぜ
0408名前は開発中のものです。
2009/01/01(木) 16:58:11ID:kIedBn3k大馬鹿はお前ら二人。
0409名前は開発中のものです。
2009/01/01(木) 17:27:22ID:AYpKL28G0410名前は開発中のものです。
2009/01/01(木) 18:05:53ID:DH9ba0yVこういうのってHFSMみたいな記述になるのかしら
ツリーの各ノードがFSMっていうイメージでいいのかな>HFSM
0411名前は開発中のものです。
2009/01/01(木) 18:30:10ID:AYpKL28Gみたいなものじゃなかったっけ(ちがったかな)
編隊のリーダーと部下みたいなFSM同士の主従関係とか
組織のヒエラルキーをあらわす木構造の場合は
単に木構造のコンテナにFSMが入ってればいいだけなので
HFSMとは違うかもだ
0412名前は開発中のものです。
2009/01/01(木) 19:05:56ID:ocRuaHu5そんなこと言って難しい部分は説明できないから逃げる気でしょ?
職場でもこんなわけのわからないもの採用させるなんていったら大変なのはそこだよ
逆に批判をかわすのもわけわかんないこと叫んでかわせばいいけど
そうゆうこと馴れると技術者として死ぬよ
批判する側に説明責任の押し付けゴッコ始めていつもかわすけど
そもそもなんの関連もないの明らかじゃん
0413名前は開発中のものです。
2009/01/01(木) 19:19:14ID:kIedBn3k何度でも言うがわかってないのお前ら馬鹿二人だけなんだよ。
なんなら周りのプログラマにこのスレ見せて聞いてみなよ。
0414名前は開発中のものです。
2009/01/01(木) 19:29:46ID:ocRuaHu5関係無いから関連を説明しろっていってるだけじゃん
0415名前は開発中のものです。
2009/01/01(木) 19:44:34ID:kIedBn3k馬鹿すぎて周りに友達いねーのか。それは可哀想に。
0416名前は開発中のものです。
2009/01/02(金) 07:00:34ID:sLC5p+39すげぇな
飛行機や対空ミッソー飛ばしてもデッドライン(敵が目標上空に着く時間)までに
敵とご対面させてやらなきゃ全部パーだよな?
リアルタイムシステムだな。しかもかなりハードな
0417名前は開発中のものです。
2009/01/02(金) 16:48:56ID:btxOwAnq0418名前は開発中のものです。
2009/01/02(金) 20:57:49ID:+c5nb6jCdクス。なるほど。状態に子あ孫があるのか
0419名前は開発中のものです。
2009/01/03(土) 19:21:39ID:ejAsMA5Y0420名前は開発中のものです。
2009/01/03(土) 23:49:19ID:x7V4/J69なんの?
こんなもん使わなきゃいいだろ
普通に必要なだけ処理書いて引数で必要なもんだけ渡せよ
0421名前は開発中のものです。
2009/01/04(日) 09:29:42ID:9lklfsu+0422名前は開発中のものです。
2009/01/04(日) 09:42:16ID:OS7DnqUyオブジェクト指向で普通に書けばいいだろヴォケ
0423名前は開発中のものです。
2009/01/04(日) 10:01:35ID:bsxJMCxA多分
0424名前は開発中のものです。
2009/01/04(日) 11:18:31ID:d8gMrFGB0425名前は開発中のものです。
2009/01/04(日) 15:08:16ID:9lklfsu+0426名前は開発中のものです。
2009/01/04(日) 16:24:39ID:OS7DnqUy普通なんですかそうですか。
それってどこの世界のオブジェクト指向プログラミング?
0427名前は開発中のものです。
2009/01/04(日) 16:48:53ID:Do3+Cssh>>2を見る限りでは、個々のタスクはただ一つ、「実行しろ」というメッセージにしか
反応しないオブジェクトのように見えます。
よって、オブジェクト間の相互作用のための手段は非常に限られるので、
C風に「リストを舐めて構造体の中身を直接のぞく」コーディングが行われていたのでは
ないでしょうか。
それは「OO」じゃないですよね。人のものを勝手に見るのではなく、
人に頼む、尋ねるのがOOのスタイルです。
それとも、実際にはタスクは複数のメッセージを処理するためのディスパッチャ
や関数テーブルを持っていたのでしょうか?
それならば、貧弱な言語/環境であるがゆえに
自分で型タグやオブジェクトID、メソッドテーブルを実装しなければならなかった
というだけで、OOであると言っていいと思います。
0428名前は開発中のものです。
2009/01/04(日) 19:15:52ID:OPWOLTuA(有名どころではXtとかが使ってた)の真似事みたいなことは
してるけど、オブジェクト指向とはどうにも認めがたい。
タスクとキューはis-a関係じゃないしな。
(オブジェクト指向をCで、的にはそういうことをしてる)
秀和の本でだいぶ古いけど、「C言語ゲームプログラミング」が
それっぽいことをやっていたな。今見る価値がある本ではないが。
0429名前は開発中のものです。
2009/01/04(日) 22:14:00ID:JA/ZQlx8単一のインスタンス構造に多数の関数ぶらさげてただけだし。
0430名前は開発中のものです。
2009/01/04(日) 23:50:15ID:ZM4TPJrr0431名前は開発中のものです。
2009/01/05(月) 01:24:39ID:NWIfeL18あんまりその辺こだわってる奴ってもういないと思うぜ
オブジェクト指向云々とかあまり問題じゃない
たまに急に振る奴がいるけど別にクラスなんかあってもなくても同じ問題に直面する
ま、STGだったら自機、敵、弾とあってそれぞれをクラスっていうか
オブジェクトにして必要な分のインスタンスを用意する
ここまではみんないっしょだろうし別にC言語風味に構造体定義して
インスタンス作っても別に大して変わらない
問題はインスタンスの扱いだと思うんだよね
@void*で一括して配列用意して(リストでもいいけど)newで確保して型覚えておいてキャストして使うか
(これがタスクシステムっぽいやつ?)
A型ごとに配列定義して地道に作っていくか
(これが正統派?)
まあ、微妙な違いはあれどこの2つのどっちかになるだろね
前者だと必要なところどころで型キャストして戻さなきゃいけないけど一括して扱える
後者だと型ごとに同じ処理を何度も書かなきゃいけないけどキャストとかする必要がない
ただ、@の方法で組むと一括処理にばっかりこだわって引数とか省略して
グローバル変数使うようになってバグが増えるのはたしか
Aで組んだほうがソースもわかりやすい(と、俺は思う)
まあ、Aは面倒だけど正統派?そんなイメージ(ただ、面倒っていっても実装的に面倒って話だからねぇ・・・)
とまあ、オブジェクト指向云々関係ないでしょw
0432名前は開発中のものです。
2009/01/05(月) 02:50:49ID:yvKzI2YZ闇鍋循環リストに全てを放り込む>>2が何故詰んでいるかというと
弾も敵もパーティクルもひとつのリストにぶち込み同じコードでディスパッチするから。
分岐先はほぼ予測不可能。>>2はハードウェアに分岐先を絞り込むヒントを与えない。
サブルーチンアドレスはフラットなFSMの状態変数を兼ねているため種類は膨大。
CPU内蔵の分岐先バッファは役に立たない。ループする度に分岐先予測ミスが発生し
ペナルティを受ける。毎度毎度ご丁寧にサブルーチンアドレスを参照してディスパッチ
オブジェクトの種類順(弾、敵、プレイヤーなど)にソートしても根本的な解決には
ならない。なぜならオブジェクトの種類が同じであっても状態が違えばサブルーチン
アドレスは違うのだから
大昔に興味本位で測定した。AMDのAthlonXP(Bartonコア)で>>2を使うと速度は半分になった
大昔の、アドレッシングモードの貧相な(かなり特徴的な)8bitCPU、それにOBJやBGを
HSYNC毎にアナログ映像信号に変換してCRTに出力してくれるハードワイアードロジック回路
を搭載したカスタムボードを中途半端に意識して、当時の神の業などと詐称して喧伝してる時点で
クズの所業だが、実際に走らせるハードの特性を完全に無視してるのだから輪をかけてクズといえる
0433名前は開発中のものです。
2009/01/05(月) 03:19:03ID:yvKzI2YZそこで解説されてる手法(?)を祀り上げてるカルト信者のことな
0434名前は開発中のものです。
2009/01/05(月) 07:07:50ID:s3/QcMtY○ライン毎に
0435名前は開発中のものです。
2009/01/05(月) 08:26:50ID:tyiIafJA>大昔に興味本位で測定した。AMDのAthlonXP(Bartonコア)で>>2を使うと速度は半分になった
面白いですね。比較対象ってどんな組み方のものですか?
0436名前は開発中のものです。
2009/01/05(月) 09:23:56ID:294GFQWC現代のプロセッサでは性能が出ないとか扱き下ろしている人がいるのは
このスレですか?
0437名前は開発中のものです。
2009/01/05(月) 10:41:47ID:s3/QcMtYパフォーマンスアナライザやプロファイラを使わず現実を見ずに先入観のみで
>>2はきっと良いに違いないと盲信するならエンジニアではない
エセ科学信仰とかカルト信仰に溺れる知的弱者だ
0438名前は開発中のものです。
2009/01/05(月) 10:51:52ID:T3/gLJL6@かAを採用するかは
ゲームによって臨機応変に対処すればいいんじゃないかな
どちらか絶対という事はないと思う
弾幕シューティングなどは明らかに後者が適していると思う
自分が最近作ったゲームはシーン(メニュー、コンフィグ、ゲームプレイなど)すら
オブジェクト化した@を採用してみた
0439名前は開発中のものです。
2009/01/05(月) 13:00:39ID:294GFQWC> パフォーマンスアナライザやプロファイラを使わず現実を見ずに先入観のみで
> >>2はきっと良いに違いないと盲信するならエンジニアではない
> エセ科学信仰とかカルト信仰に溺れる知的弱者だ
あっそう。
> 制御対象の計算粒度と数の特性ゆえに>>2は不利となる
と断言する根拠を是非パフォーマンスアナライザやプロファイラで示してね。
0440名前は開発中のものです。
2009/01/05(月) 13:07:36ID:F56Xf+vn性能だけで論じるなら早い話がC++とか消えろって話だよね
まあC++で書いてるなら
・擬似OOの実装を頑張らなくても、言語組み込み機能でタダで手に入る
・FSM作るのに関数ポインタのすげかえやマシンレベルの実行コード書き換えは
用いない
・何でもかんでも一個のリストに繋げない
でしょうけれども
0441名前は開発中のものです。
2009/01/05(月) 13:24:38ID:DMExbRge0442名前は開発中のものです。
2009/01/05(月) 19:58:30ID:whWAu0niじゃあ俺のタスクシステムじゃなかったんだw
0443名前は開発中のものです。
2009/01/05(月) 20:04:55ID:iIypQ15Bそのごった煮状態ってなんかいいの?
ソース見る側としちゃ勘弁してほしい感じだけど
0444名前は開発中のものです。
2009/01/05(月) 23:51:57ID:fCMc2sX5>>387
IBMやDECのメインフレーム
↓
IBMのメインフレームやDECのミニコン
>>392
末尾のPDPミニコンの部分は記述ミス。ごめん
酩酊状態でタラタラ書いて校正せずにそのまま投げて寝ちゃった。
Whirlwind 1とSAGE防空システムに関しては英語文献が存在する
半世紀以上前の兵器システムの大凡の機能は教本に載っている。
どっかのmilドメインのサイトに幹部や技術系の中途採用試験(?)
対策用の参考資料が公開されている。詳細なパラメータは伏せてあるが
ぐぐればバシバシひっかかる
0445名前は開発中のものです。
2009/01/06(火) 00:05:24ID:d8k/H0vb半分はないと思うよJK
0446名前は開発中のものです。
2009/01/06(火) 00:16:06ID:uRByKfhoめっちゃくちゃ複雑じゃね?
そこまでなったらもうバグのオンパレード状態で収集つかない希ガス
0447名前は開発中のものです。
2009/01/06(火) 12:42:23ID:Eo7dUke5マルチコアならAの方がいいと思う。
カプコンのMTフレームワークもそんな感じだったような。
0448名前は開発中のものです。
2009/01/06(火) 14:37:10ID:z4Dce+Vdごった煮かもしれんが、並列処理ができるのがいいのよ
例えばタイトル画面表示中に、雪を降らせるなんてことも容易に実現できる
シーン式のゲームでもやろうと思えばできないことはないが面倒だろ
流石に全てのゲームジャンルでこの方法が適しているとは思わない
0449名前は開発中のものです。
2009/01/06(火) 15:13:06ID:8Exk+ciZより抽象度の高い話をすれば
「全てのゲームオブジェクトについて、1フレーム内でiterativeに処理を行いたい」
あるいは
「全てのゲームオブジェクトに、同じメッセージをブロードキャストしたい」
ことがあるかどうか、という話じゃなかろーか
あるのなら、それをリストに持っておくという実装もあるだろう
ただ、抽象的には欲しいのは「リスト」ではなく「反復子」のはずなので、
実装はどうとでもできるように思える
0450名前は開発中のものです。
2009/01/06(火) 17:34:45ID:AVnom9hsジョブエントリのリストをなめて順次処理(バッチ処理)するだけの
コードをもって、これは並列処理できるのだと豪語するか。これいかに
バッチ処理するしか能のない粗末なコードをポンと渡して
それをユーザーに無理矢理に逐次処理に使わせておいて
(逐次・並行処理に必要な仕組みは全てユーザーに丸投げておいて)
どうだ便利だろこのソロモンの指輪は、並列処理できるんだぜ、なんといういとしいしと・・・
と陶酔するのは技術屋としてどうなの
0451名前は開発中のものです。
2009/01/06(火) 20:14:08ID:dEvFXJdO何を言ってるのか本気でわからない
Aで組んだことない?
仮にごった煮にしないでシーン?とゲームオブジェクトを別に管理したら
そっちのが扱いやすいだろ?
まとめるってことはアクセスするたびにそいつを判別するなんらかの仕組みが必要になるってことだし基本的には面倒が増えるよ
よほど一括で処理したいなにかがないとメリットはないと思うんだけど?
0452名前は開発中のものです。
2009/01/06(火) 20:27:19ID:a2y2pcidタスクシステム = カオスで美麗で斬新な60FPS紙芝居の夢を追及している奴専用
0453名前は開発中のものです。
2009/01/06(火) 20:36:30ID:SJLak1z60454名前は開発中のものです。
2009/01/06(火) 21:25:55ID:c5JPjzC/0455名前は開発中のものです。
2009/01/06(火) 22:20:13ID:IveoX0Qeと思いついたので分類してみた。C++なんちゃってタスクシステムの話
1. マルチプロセス級:ゲームタスク、バッテリ残量監視タスク、...
2. マルチスレッド級:入力監視タスク、ゲーム処理タスク、描画処理タスク、鳴音タスク、...
3. 仮想関数インタフェース級:仮想update関数タスク、仮想move関数タスク、仮想draw関数タスク、仮想onkey関数タスク、...
・マルチプロセス級はほぼ関係無い処理だけど1台のPCにはともに入ってて欲しい位のとこで分割。.exe相当。
・マルチスレッド級は決まりきったデータ通信が発生する程度に関係のある処理で分割。
通信を標準化するのもそう悪くないってとこで分けるのがミソかも(使ったこと無い俺)。
・仮想関数インタフェース級は関係性とか概念の違いとか無視してたまたま関数インタフェースが似た感じっぽいところを探して
縦横無尽に共通化(抽象化)したもの。イベントハンドラの延長?
仮想関数インタフェース自体の仕様変更耐性とか再利用性が最悪。最悪。最悪。
それでいて性能も悪いかも。仮想関数ゆえにメモリキャッシュまわりとか?
でも1画面ミニゲーム、画面エフェクト無し、凝ったギミック無しとかなら使い勝手良かったりする。
グローバル変数が通常サイズのクラス1個分に収まる程度までが利点を享受できる適正規模?
2と3の間にゲームオブジェクトとかシーンオブジェクトとかで分けた「クラス分け級」を入れようとしたけどなんか無理だった。
3番と同じ気がしてしっくりこなかった。
0456名前は開発中のものです。
2009/01/06(火) 23:16:50ID:8QL2ssG/0457名前は開発中のものです。
2009/01/06(火) 23:22:37ID:UozvWyya0458名前は開発中のものです。
2009/01/07(水) 00:21:50ID:ioSES1so0459名前は開発中のものです。
2009/01/07(水) 02:21:29ID:02Pyli+B残念だがそのシナリオを選択する(orデカイ声で叫ぶ)のは遅すぎだな。というか無理がありすぎるな
>>2(特にLogicianLord。拡散の元凶)と>>2を誤読したゲッベルス(松浦大先生。拡散させた偉大な男)
およびその忠実な部下(熱烈な読者)は、パンピー(neutralな人)たちに対して、奇妙なまでに一致した
偏った「とあるヘンテコリン実装」でもってタスクシステム(?)なるものを解説しネット・雑誌・書籍で
流布した。流布し尽くした。2009年現在、ネット上で>>458説を提唱するのは完全に手遅れといえる
タスクシステムという言葉は>>2に代表される、極めて特徴的な、奇異なまでに一致したヘンテコリン実装
「TCBがプライオリティをサブルーチンアドレスでディスパッチなのです><」
と完全に癒着している。もう引き剥がせない。OoOやマルチコアプロセッサの普及により>>2の実装が
obsoleteといえるならば、タスクシステムという呼称もまたこの味噌が付いた実装と共に成仏することになる
0460名前は開発中のものです。
2009/01/07(水) 08:38:38ID:A93Nxs/XCマガ2004/12「ゲームのためのタスクシステム」松浦
単行本「シューティングゲームプログラミング」松浦
「Windowsプロフェッショナルゲームプログラミング2」やね
これだけ?
0461名前は開発中のものです。
2009/01/07(水) 20:53:38ID:axJ9jn6kじゃあ実際はどんなのが使われてるのか教えてください。
まったく違うものなんですか?
オブジェクトの種類ごとに持つデータが違うとか、
オブジェクトのデータのメモリ管理方法が違うとか、単一のリストじゃないとか、
そんなのは違いのうちに入らないと思うよ。
0462名前は開発中のものです。
2009/01/07(水) 21:57:34ID:dIlqsnyPオイ、コラァ!
「ヘンテコリン」はお前とお前のキチガイじみた駄文だろーが
やたら人を見下した態度をとっているが、具体的論理展開は全く無し。
典型的なチキンだな。
0463名前は開発中のものです。
2009/01/07(水) 22:12:07ID:rBsXmGd8シーン遷移とシーン管理。
あれはひとつクラス作って使い方を決めときゃどんなゲームでも鉄板では?
0464名前は開発中のものです。
2009/01/08(木) 00:12:58ID:pmCaa13A> じゃあ実際はどんなのが使われてるのか教えてください。
過去ログぐらい嫁
0465名前は開発中のものです。
2009/01/08(木) 00:19:01ID:XxumHwJp不必要に全部のオブジェクトを1個のリストに乗せる必要もない。
Cとは縁を切るところからはじめるんだ。
0466名前は開発中のものです。
2009/01/08(木) 00:46:34ID:4sBQ+VSz俺たちが作りたいのは電動車庫なんだ
ボタンを押せば欲しいものが出てくる仕組み
Javaではリスナー、Cではタスクシステム、C++ならコンテナ、DelphiならTList
みんな完璧じゃないけど一工夫してある
ただの線形リストとタスクシステムの違いはデータにメッセージを送ると能動的に処理が走ること
プログラム側からデータを触ってやらないといけない線形リストだとデータがグローバル変数と
同じように扱われ保守性が落ちる
タスクリストはただの線形リストではない
0467名前は開発中のものです。
2009/01/08(木) 02:59:34ID:B6I28cqd過去ログ読んでも同じような煽りしか無いじゃないかw
0468名前は開発中のものです。
2009/01/08(木) 05:04:27ID:VWBWdLMfただの線形リストでも要素がクラスインスタンスなら、その「タスクシステムの違い」ってのは
無くなるね。
0469名前は開発中のものです。
2009/01/08(木) 07:36:03ID:+JWwjlC0何言ってるかわかんない
結局ありがちなごった煮リストなんだろ?
違いをもたせるなよ(笑)
0470名前は開発中のものです。
2009/01/08(木) 22:56:20ID:XxumHwJpおまえはまずデザパタとエフェクティブC++を読め。
0471名前は開発中のものです。
2009/01/08(木) 22:58:05ID:7CpFpz4uやだよ
そんなの役に立たないもん
0472名前は開発中のものです。
2009/01/08(木) 23:00:27ID:8VoEuW6w0473名前は開発中のものです。
2009/01/08(木) 23:03:23ID:4sBQ+VSz0474名前は開発中のものです。
2009/01/08(木) 23:10:47ID:7CpFpz4uああいうごちゃごちゃしたソース組んで悦に浸ってるのは下手っぴ
0475名前は開発中のものです。
2009/01/08(木) 23:57:46ID:LE+aMQpC声がかかった。ババを引いたBチームのプログラマ2名(メインとサブ(私))はションボリしながら
Aチームのサブプログラマから具体的な状況説明を受けている。開発の終盤になって再現性に乏しい
メモリ破壊系のバグに悩まされてるのだという
Aチームの仲良し古参二人組(ディレクターとメインプログラマ)は現在、開発の遅延に業を煮やした
営業部長に呼び出されて会議室でコッテリ絞られている
Bメイン : 「全オブジェクトのヘッダにTCBとかいう管理領域があるな。前後ノードのアドレスに
プライオリティに関数ポインタ、と…。呼び出される関数はreturnする前に管理領域の
関数ポインタを書き換えてるな。この関数群は人力で分割したジョブステップだな…すごい数だ」
私 .: 「ええ…」
そこへAチームの古参2名が戻ってきた
Aメイン : 『使いたいか!テツオ(Bチームのメインプログラマ)!』
Bメイン : 「あ、どうも。使いたいも何も、もはやこれでいくしかないでしょう」
Aメイン : 『俺用に改良したタスクシステムだ、ピーキー過ぎてお前ら(Bチーム)には無理だよ!』
B全員: ('-`)。oO(こんなの使ってるほうが気が知れないよ)
Bメイン : 「ところで、このオブジェクト群を呼び出してるモニタ側のソースも見せてもらえますか。」
Aメイン : 『ははっ!欲しけりゃな。お前もデカイのひとつ分捕りな!』
Bメイン : 「あ、いや、我々は社長の指示でこちらに来てます。休暇返上で急遽編入されました」
Aメイン : 『そんな話は聞いてないぞ!・・・くっ・・・しょうがない、これだよホレ!』
Bメイン : 「あの、僕のforeach一行じゃなくてその、モニタデバッガライブラリはどこですか。
つまりその、状況を監視・可視化してくれるツール群とかあるのでしょう?」
Aメイン : 『そんなもんねーよ!やっとモーターのコイルが暖まってきたところだぜ。デバッグ続けるぞお前等!』
Aスタッフ: 『オーッ!』『ダーッ!』
B全員: ('A`)。oO(・・・)
0476名前は開発中のものです。
2009/01/09(金) 00:37:39ID:C9mB370D0477名前は開発中のものです。
2009/01/09(金) 09:13:46ID:u9nYazWSコードで語ってくれ
0478名前は開発中のものです。
2009/01/10(土) 02:10:09ID:Jush8tf+0479名前は開発中のものです。
2009/01/10(土) 03:01:45ID:1Stepbtb0480名前は開発中のものです。
2009/01/10(土) 07:10:36ID:jT7iIe5T0481名前は開発中のものです。
2009/01/10(土) 19:24:56ID:qAPK1zVY0482名前は開発中のものです。
2009/01/10(土) 22:56:42ID:s6hcDJwE0483名前は開発中のものです。
2009/01/10(土) 23:27:35ID:GXwf3cbn読まずに役に立たないだと?
EffectiveC++が役に立たないというならおまえがC++をまったく
使えてないか完全に仕様を理解しているのどちらかでしかない。
C++を理解してデザパタイランというなら頭おかしい。
そのまま流用する必要は無いが、似たようなものを作ることになるのは目に見えてる。
0484名前は開発中のものです。
2009/01/10(土) 23:41:41ID:s6hcDJwE>EffectiveC++が役に立たないというならおまえがC++をまったく
>C++を理解してデザパタイランというなら頭おかしい
これ好きな人ってだいたいセットで好きだよね
ただ、毎回「これ駄目っていう奴は馬鹿」みたいな雰囲気あるから言わなかったけど
正直、これ何がいいの?って思うようになった
俺もはじめの頃はC言語勉強してそのままC++に来て
仕事でC++で組んでるけど正直、クラスのメリットってよくわかんないんだよね
っていうかよくわからなくなった
ちなみにプログラム経験12〜13年
C言語とC++では仕事ではC++しか使ったことない
>C++を理解してデザパタイランというなら頭おかしい
そうか?
具体的に何がいいの?
俺は実際に使いたがる奴の行動見てたけど
なんでそんな無駄な構造にしたのか上司と衝突ばっかり起こしてて苦労が多そうな奴だなと思った
0485名前は開発中のものです。
2009/01/10(土) 23:58:22ID:GXwf3cbnC言語ではダメなやつは苦労してないの?
どう使えばよいか判らないといってると理解したけども、それでいいのかな?
ユーザーがアクセスできない関数や変数を構造体にもてるだけでも十分メリットだと思うけど。
仕事で頼まれているモノはそうやって制限されてない? 使う側の工夫って使われる側には
見えないものなのよね。
0486名前は開発中のものです。
2009/01/11(日) 00:05:02ID:ais0z/HYアセンブラに慣れてたら、Cを覚える必要ないわ。
0487名前は開発中のものです。
2009/01/11(日) 00:30:04ID:jCALDk/lなんの説明もしてないの自分でわかるよね?
他の奴等もだいたいこんな感じで逃げる
それかわけのわからんリンク貼って終了
書籍読んでもこれがこうよくなるって言ってもそのメリットがメリットに感じないし
C言語で書いたソースとC++で書いたソースを比べると
意外とC言語で書いたソースのほうがよく見えたりするよ
ていうかほとんどの場合、大して変わらない
0488名前は開発中のものです。
2009/01/11(日) 00:49:50ID:5Rm3xSEN例えばコールバックを多用するフレームワークを扱う場合はCでは面倒すぎる。
しかし昨今のコンシューマゲームでさえC++で開発が当たり前だ。
多分問題はオブジェクト指向原理主義的な野郎がいるってことだろう。
0489名前は開発中のものです。
2009/01/11(日) 01:30:49ID:dWwzUAmXアクセス制限とデザパタとは関係ないような。
簡単に構造が説明できる(直感的に理解出来る)、非常に良く使われる構造である、統一的に機能を追加できる(またはそのようにする、そして楽)
のうち最低でもいずれかが実現できてることがデザパタの意義・・・かな?
逆に、これがどれも実現できてないのにデザパタ使いました、では
たとえパターンの構造通りになっていたり、また適切にアクセス制限がされていても本質からずれてる。
>>484の>なんでそんな無駄な構造にしたのか上司と衝突ばっかり起こしてて苦労が多そうな奴だなと思った
ってのもなんか多そう。中途半端に理解したデザパタは一番の害悪。果たして他人にぱっと説明できるのかと。
と、中途半端にデザパタを読んだ自分が言ってみる。
0490名前は開発中のものです。
2009/01/11(日) 01:49:21ID:WvjcdK6Dstrategy? ああ、lambdaと高階関数に珍妙な名前つけた奴ね
って奴にはまあ要らねーのかもな
Cは面倒くさいだろ流石に
と思うが、C++はC++で別の意味で面倒くさいんだよな
大して表現力ねーくせに無駄に複雑でな
0491名前は開発中のものです。
2009/01/11(日) 09:05:10ID:9uopTdxy流用性の無い足手まといイベントハンドラが増えただけにしか見えない。
あと戻り値はグローバル変数で渡すの?
//もともと必要な処理(ゲームオブジェクトクラス1個分)
class PlayerCharacter {
public:
bool init(const Chara_t *);
void update_frame(const Key_t *);
Point_t get_position(void);
CharaType_e get_charatype(void);
void release(void);
};
//以下タスクシステム用追加記述
typedef struct {
EventType_e type;
union {
Chara_t *init;
Key_t *update;
};
} Event_t;
typedef enum {
EVT_INIT,
EVT_UPDATE,
EVT_GETPOS,
EVT_GETCHARATYPE,
EVT_RELEASE,
} EventType_e;
0492名前は開発中のものです。
2009/01/11(日) 14:05:48ID:JZO5iyFx>>2のサイト先だと単なる動的配列(リスト構造)。別に『優先順位つきリスト構造』で説明が事足りる。
(全体長を固定する・またはノード自体をnewすることストを抑えたいならリスト構造2つ。事実上メモリ監視がついて回るのでこうなるが。)
で、色々読んでるといわゆるタスクシステムでは構造自体が重要なのではなく、メモリ使用の監視が主題ってのはなんとなくわかった。
だからメモリ監視にかかわる構造が必要でリスト構造に比べ多少複雑になってる、と。
つまりタスクシステムは
・ゲームを管理する構造△
・メモリの使用量など監視する構造○
タスクシステム自体の話は以上で完結するのよね。
タスク同士間の情報のやり取りやイベントハンドラ云々ってのはタスクシステム自体の話じゃなくて、
リスト構造で管理したときそれぞれのノード間のやりとりをどう管理するかって話でしょ?ふと思った。
0493名前は開発中のものです。
2009/01/11(日) 17:12:30ID:9uopTdxyメモリ管理システムでは?
メモリ単位管理システムと処理単位管理システムがもともと癒着しているタスクシステムというものを選択した時点で、既にタスクとかノードという概念の使用を選択したことになっている。
ノードという概念の使用を強制されるならノード間のやりとりをどう管理するかの検討も必須の話かなぁとか。
0494名前は開発中のものです。
2009/01/11(日) 18:57:05ID:JZO5iyFxもちろん。
ただ、どうもこのスレはタスクシステムのどこの仕様決まりきってて、決まりきってないどこを議論すべきなのかが混沌としてるから。
例えばこのスレでもずっとタスクシステムはリスト構造じゃねぇ、という意見が殆どを占めていて俺リスト乙。的な流れが多い。
確かにタスクシステムはリスト構造ではない、は正しいが、
ノード間のやり取りを議論しようとしたら、リスト構造を踏まえて、というかハードを意識しなければリスト構造なのでそこで語るのは正解。
つまりその手の話は俺リストの話をするべき。
0495名前は開発中のものです。
2009/01/11(日) 22:14:53ID:9uopTdxy「ノード間のやり取りを議論しようとするならその前にまずは俺リストの話をするべき。」
と受け取ったけど、ノードから見た通信インタフェースなんて
1.グローバル変数直接アクセス
2.メッセージングとかイベントハンドラ的な仕組み
3.move, update, drawなど数を絞った仮想関数インタフェース
の3つ位しか思いつかない。しかも2, 3は表現が違うだけでやってることは等価だと思うので実質1もしくは2・3の2種類のみ。
グローバル変数を使用禁止とするなら2・3の手法一択。
乱暴に言えば、タスクシステムの意義は2・3をゲームオブジェクト単位に導入することを強制する意義と等価だとして話を絞ってしまえば
どのようななんちゃって俺タスクシステム・俺リストを使っていようが全く関係無く話できると思う。っていうか話終わると思う。
もっとおおざっぱに行こうじぇ
0496名前は開発中のものです。
2009/01/11(日) 23:18:26ID:JZO5iyFxうちら2人だけじゃいまいち不安だが、タスクシステムに関することってそんな感じだよね。
・タスクシステムはメモリ管理機能のある優先順位つきリスト構造
→メモリ管理およびリスト構造自体は決まりきった構造なので議論の余地なし。
→リスト構造のノード間のやり取りもメソッド等の使用であることは自明。
となるとかなりの部分はソースコードとして確定できそう。
で、まだでてきてない部分はこんなところか。
・具体的なメソッドややり取りはどのように管理するべきか。
煮詰めりゃ最適解は出せそう。
・タスクは別のタスクを追加しうる。生成したタスクはどうリスト構造に渡すか。
1、処理関数の戻り値として。追加の仕方はリスト構造自体を処理している誰かに委ねる。
2_A、リスト構造をタスク内でフィールドで保持。
2_B、処理関数がリスト構造自体を引数にとって内部で処理。
まぁ、2_Bが好きです、私は。
・タスクは例えばどんな塊なのか、どんなインタフェースを持つべきなのか。
これは色々考えられそう。
シーン管理はリスト構造の外側でしてるとして、他は全部リスト構造内で処理していると思いたい。優先順位機能搭載してるわけだし。
こっちも煮詰めりゃある程度解がでそう。
0497名前は開発中のものです。
2009/01/11(日) 23:41:44ID:KHFLxZhgもっと言うと、コンテナにする必要だって常にあるわけじゃない。
普通にメンバに持ってれば十分、っていうかそっちのほうがわかりやすいこともあるだろ。
そうでないなら、「タスクシステム」とやらで解決される問題を挙げてから話してくれないか?
0498名前は開発中のものです。
2009/01/12(月) 00:34:41ID:T/lMy2Ww俺はタスクシステムやめとけ派
タスク化をゲームオブジェクト単位に導入することを強制する意義は無いと思う。
メソッドの数を絞らなきゃいけないのがきつい。その最大最悪の制約の解消の目処も立ってないうちから
他の特徴を生かす方向を先に検討するとかは順序が違うと思う。
メモリ管理が重要じゃなくなったのならタスクシステムやめてそれ以前に戻るとか、
タスク化の適用対象をゲームオブジェクト以外にするとどうなるかとか考えて、まずは最大の制約を取り除くのが先じゃない?
ここがダメなら他の機能の利点なんて全部ふっとぶ凶悪な制約だと思うよ>通信の抽象化&全体共通化強制
例えばフレームワークの内部実装だけに適用する。
例えばもっとたくさん、座標管理(なんちゃって)タスクシステム、当たり判定管理(なんちゃって)タスクシステム、UI管理(なんちゃって)タスクシステム、...を作って組み合わせる。
例えばシーンと呼ばれる枠組みだけに適用してみるなどなど考えてくと、タスクシステムという形を残す必然性がなくなった。俺の場合。
0499名前は開発中のものです。
2009/01/12(月) 02:16:26ID:P3+dQgwK0500名前は開発中のものです。
2009/01/12(月) 03:55:30ID:xzGcGgfTタスクを管理するクラスからの呼び出しだけ同じにしておけば、
別にメソッドの数を絞る必要はないと思うけど。
0501名前は開発中のものです。
2009/01/12(月) 06:10:14ID:koxxWPGtそれをそのまま使ってる人はいないんじゃないの?
0502名前は開発中のものです。
2009/01/12(月) 12:58:51ID:YXD0YS+N>>498
色々勘違いしてるし、いってる意味がわからん部分がある。
1、タスクシステムの是非についてまったく話していない。結局タスクシステムの定番の形がどんな形なのかというのが知りたい。まだ定番の形は決定できる部分があるだろう。
2、順序が違う周りは何がどう違うのかさっぱりわからない。少なくともoopの設計の仕方ならば、オブジェクトを先になんとなくまとめ、メッセージを決めていくのもありなのだが。
それともいきなりソースコードレベルでびしっと決めるつもりだろうか?
3、ゲームオブジェクトでは抽象的過ぎる。それに含まれる具体例が最低3つぐらいあげてほしい。この定義により恐ろしいほど処理の範疇が変わる。
4、メモリ管理周りの話。何度もいうように、リスト構造のやり取りについて語ってる。タスクシステムについて語っていないと思う。まぁこちらの言い方も悪かったか。
それはそうとして、最後の話の構造、あれ思ったより拡張性低くね?仕様変更に迫られたときに耐えられないべ。
本来プログラムの構造はマトリョーシカ状にして、設計の修正が必要な場合の修正項目を最小限に抑えるべきだと思うんだが、ありゃ管理クラスが色々やりすぎてる気がする。
>>500
よくやる。つまりnode.run()みたいに一枚はさんでから、具体的な処理構造を実行するってことか。
>>501
多分この意見もかなりこのスレの流れでループしてるんじゃ無かろうか。だからもう少し話を進めて確定したい。
0503名前は開発中のものです。
2009/01/12(月) 20:03:59ID:a2k+/ICz>>492
>>>2のサイト先だと単なる動的配列(リスト構造)
どこが動的配列なのか分からない。インターフェースも実装も動的配列ではない。
>構造自体が重要なのではなく、メモリ使用の監視が主題ってのはなんとなくわかった。
>だからメモリ監視にかかわる構造が必要でリスト構造に比べ多少複雑になってる、と。
悪いが意味が分からない。何を読んでその結論に至ったのか、アンカーを全部列挙してくれ
>つまりタスクシステムは
>
>・ゲームを管理する構造△
>・メモリの使用量など監視する構造○
>
>タスクシステム自体の話は以上で完結するのよね。
ならばそれはただのメモリプールでありアロケータの一種であり、それ以上でもそれ以下でもなく
タスクシステムなどと名乗る理由は微塵もないわけだから、お前は速やかにタスクシステムという
呼称を使うのをやめたらどうなのか。なぜタスクシステムという何処の馬の骨かも分からない田舎侍の
ローカル用語に固執するのか理解できない
■ このスレッドは過去ログ倉庫に格納されています