タスクシステム総合スレ part4
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2009/02/01(日) 12:38:10ID:rVEgp4cMpart3 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/
0057名前は開発中のものです。
2009/02/05(木) 01:37:27ID:e5oU/vxX毎フレームcallが呼び出されるなら、結局呼び出し側(タスクシステム)からしてみれば、
単なるメソッド呼び出しなわけで、その実装の詳細(coroutineで書かれているか/いないか)は
どうでもいいのでは?
だから、(1)と(2)でinterfaceを変更する意味がわからない。
どう見ても共通のinterfaceで良いように思える。
0058名前は開発中のものです。
2009/02/05(木) 01:42:57ID:e5oU/vxX> 「タスク=フレームをまたいだ継続的処理の抽象化」という観点から同列に扱っている。
についてだけど、タスクはフレームをまたぐが、少なくとも1フレーム以内に制御はいったん呼び出し側に
戻ってこないと困ると思うのだが。
ID:9DTLfrVWは何かここを勘違いしているような気がする。
そもそもスレッドを割り当てるのは、呼び出し側で制御すべき問題であって、
スレッド一つ割り当てて実行させたいからと言って呼び出される側のタスクが勝手に
スレッドを作っていいわけではない。
ここまではわかってる?
0059名前は開発中のものです。
2009/02/05(木) 02:02:00ID:9DTLfrVWんー、古典タスクの定義にこだわりすぎだと思うんですが
あくまで近代的タスクという思考実験なので・・・
暇な時に簡単な参考実装でも作ってみようかな
>タスクは(略)1フレーム以内に制御はいったん呼び出し側に戻ってこないと困ると思うのだが。
1と2は戻ります
3は戻りませんが、ユーザプログラムはそれを分かって3を使うわけなので困らないと思いますよ
>そもそもスレッドを割り当てるのは、呼び出し側(タスクシステム)で制御すべき問題であって、
スレッドの割り当てはユーザプログラムが制御すべき問題であって、
呼び出し側(システムプログラム側)ではない、という考えでこうなっています。
MTフレームワークではシステム側で各スレッドにタスクを振り分けて負荷の分散を
行っているらしいのでそういう場合は仰るとおりですが、
それを前提にすると1と2も排他処理必須になるのでちょっと複雑になりすぎるかなと。
0060名前は開発中のものです。
2009/02/05(木) 02:11:55ID:e5oU/vxX> 3は戻りませんが、ユーザプログラムはそれを分かって3を使うわけなので困らないと思いますよ
戻らないということは、そのスレッドは呼び出し側で生成したスレッド
そのまま使い切ることになるのだから、「呼び出し側(システムプログラム側)では
ない、という考えでこうなっています」と明らかに矛盾してるんだが。
0061名前は開発中のものです。
2009/02/05(木) 02:23:22ID:9DTLfrVWそれはシステム側になると思いますけど、
作成タイミングもスタック容量もユーザプログラムが制御するのだから別に矛盾してないと思いますよう
それより、なんか疑問点を出されているというより粗探しをされている気がする
どうして突っかかられてるのかが分からないなあ
0062名前は開発中のものです。
2009/02/05(木) 02:38:16ID:e5oU/vxX粗探しをしているつもりはないので、疑似コードなり何なりを出してもらえれば
協力はさせてもらうが。
threadというのは生成に時間がかかるものであって事前に作ってpoolingして
おくのが普通であって、stack sizeなんか都度指定されたらpoolingしている
threadが使い回せない。
つまり、(3)でスレッドを割り当てて欲しいときにstack sizeの指定はいらない。
タスクシステムからのupdate呼び出しのなかでスレッドを割り当てて欲しいときに
threadPooler.Run(boost::function(&MyClass::Worker));
とするだけのことではないか?
だから、(3)を、普通のタスク(1),(2)と区別する意味が俺にはよくわからないのだが…。
0063名前は開発中のものです。
2009/02/05(木) 03:06:56ID:WlW8taMc0064名前は開発中のものです。
2009/02/05(木) 03:10:28ID:9DTLfrVWなる、プールされたスレッドってのは考えてなかったです
例に挙げられたコードも分かりやすいと思いますが、
とりあえず>>49の方向でそうした実装を取り入れるなら、
PreemptiveTask のコンストラクタがスタックサイズを引数に取らないようにして、
内部的にプールされたスレッドを使い回すようにすると良さげかもですね
それか、必ずプールされているのも都合が悪いことがありそうだから
PooledPreemptiveTask のような新しいクラスにそうした実装を組み込むか
とりあえず、その辺はより実装に近い部分なので、ゆっくり煮詰めていくたぐいの話ではないですかね
1、2、3をそれぞれ区別するのは、使い手側から見た時に混同せず
明確に区別すべきものだからです(コーディング方法もそれぞれ異なるし)
>>62はシステム側の都合から見てるから区別不要に思えるんじゃないかな
>>63
え、おれ?ごめん
ということですいませんが、そろそろ寝ます
敗北宣言
0065名前は開発中のものです。
2009/02/05(木) 03:50:41ID:MYSEarFYhttp://d.hatena.ne.jp/yaneurao/20090204
0066名前は開発中のものです。
2009/02/05(木) 04:12:57ID:Ib2V0W+Jまあ、ゲームオブジェクト管理周りをどうするかは作るもん次第、銀の弾丸なしってことで、
それはプログラマの仕事がなくならないってことで、いい話なんじゃね。
0067名前は開発中のものです。
2009/02/05(木) 07:42:18ID:V08fWeRa実は必要無いってもう気付いてるな
そもそもタスクシステム、コーティングの手間しか削らない割に記述の複雑さは一級品だからな
ベタガキで誰でも読めるソースになるならそのほうがいいだろ
長い期間強く組む為には構造は単純でないと駄目なんだよね
0068名前は開発中のものです。
2009/02/05(木) 07:42:24ID:/BuTmFOA1,2,3を混ぜて巡回呼び出ししたい場合というのが存在するから、同一I/Fから呼び出せないと困るぞ。
例えば、全てのtaskにコンテキスト保存が必要では無い場合に一部taskは1で作成するとかな。
0069名前は開発中のものです。
2009/02/05(木) 17:15:53ID:tABpRsfL現代じゃなくて近代なのか。ずいぶん遠慮がちに書くのだなぁ。最初から後退戦か
敗北主義を匂わせれば、相手は正面から斬り付けるのを躊躇うはず、という計算が
見え隠れすんなぁ
>いまの視点(2009年)で見たときに拙著(ASIN:4798006033)にて不足している部分を補足するため
今までは利得がどこにあるのかを決定的に見誤っていた、と白状したほうが高感度アップな
>成熟したタスクシステム(タスク自体のデバッグを支援するタスクデバッガのような環境を含めて
>「タスクフレームワーク」と呼ぶほうがふさわしいかも知れない)は、ゲーム開発において依然として有用であり
それにしてもタスクフレームワークとか鼻クソみたいな造語を作るの好きな人が多いな
ビデオゲーム開発のためのフレームワークなんだろ?
ビデオゲームというのは何かしらの時間ステップで何かしらの逐次処理(数値積分など)を
繰り返すもの。そしてその処理は複数。だから並行処理ないし並列処理することになる
どんなものであれ、その内部でジョブステップ(タスク)が駆動するなんて当たり前のこと
ありふれたこと。むしろないほうがおかしい
なのにビデオゲーム開発のためのフレームワークの看板にタスクを掲げる
つまり【タスク】が他のフレームワークには存在しない特徴でありウリだと思い込んでる
タスクというキーワードに何か特殊な意味・特定の実装(>>2とか)を連想し、それ以外は
タスクではない、という視野狭窄・自己中・ド田舎ルール・カルト信仰が見え隠れするね
つまりタスク厨
タスクというキーワードに対する思い入れの強さ。これは>>2、松浦本ベースの劣化
トンデモ情報による刷り込みがやねうらおにも及んでいた可能性を示唆する
0070名前は開発中のものです。
2009/02/05(木) 20:01:26ID:1mXFjsrF0071名前は開発中のものです。
2009/02/05(木) 20:05:59ID:tABpRsfL>現代において、タスクシステムを実装するなら、もう少しタスク間通信を抽象化してタスク側から
>タスクシステムが保持しているlistには直接触れないようにするべきだが
今度は近代じゃなくて現代なのか
はっきり言っちゃうよ。それは時代ではないんだよ。それは開発規模に応じた普遍的な要求なんだよ
例えば大所帯でRPG作るとき、みんながジョブエントリ・タスクエントリのコンテナに直接触れたらどうなる
わかるよな?
15年以上前にはビデオゲームの世界にさえジョブモニタやタスクモニタといったものが存在した
これは汎用機や組み込みシステムのモニタやOS(RTOS)が大昔に進んだ道を踏襲しているに過ぎない
32bit機が登場した頃には中堅どころでさえブクブクと膨れ上がるゲームのボリュームに汲々としており
ジョブを記述するユーザー(スクリプタ含む)にジョブエントリやタスクエントリのコンテナへの自由な
アクセスを許可するなんて蛮勇以外のなにものでもないケースは珍しくなくなっていた
一定以上の規模になればユーザーを中枢から隔離するなんて時代を問わず当たり前のこと
CだのC++だのアセンブリ言語だの関係ない
これを【現代】の流れというなら、それはやねうらおの内なる世界における歴史的系譜を辿る際に
現代の1ページに登場するとある事変に過ぎず。やねうらおの個人的出来事に過ぎない
『やねうらおの歴史 〜やねうらおの近代そして現代〜』というタイトルで出版したほうがいい
みんな買うよ
0072名前は開発中のものです。
2009/02/05(木) 21:33:53ID:HwyPz9yB0073名前は開発中のものです。
2009/02/05(木) 21:44:34ID:sYm6Gfdu0074名前は開発中のものです。
2009/02/05(木) 21:48:23ID:Kg6Z2A1Mそれがどういう規模のゲーム開発のお話なのか、という部分には
一切言及しなかったよな
この手のお話には必須の大前提なんだけどバサーリ省いた
あらゆる規模にタスクシステムとやらいうものが適用するメリットがあると
考えてるんだろうかね
もうこの時点で彼のタスクシステム(はぁ?)論は敗北確率急上昇だろ
とても残念だ
少人数・ないし一人のプログラマによる小規模開発ではベタ書きのがいい
彼の言うタスクフレームワーク(あ?)とかいうもの。こいつを構築するために
支払うイニシャルコストがペイできる分岐点ってもんがあるわけ
やねはここを見積もってないんだろうね
0075名前は開発中のものです。
2009/02/05(木) 21:56:59ID:Kg6Z2A1M開発機材は?既存のライブラリとかのリソースは?買っていいの?
こういうファクターを丸無視してコーディングスタイルとか設計の是非を語ろうったって
解なんて出やしない。だからやねがエロゲ作ってるならエロゲ話のことだと言えばいいんだよ
PC用3Dエロゲにおけるタスクシステムの有効性について
とかな。あ、3Dは駄目なんだっけこのオッサン
0076名前は開発中のものです。
2009/02/05(木) 22:06:28ID:Kri4Crxoあとゲーム専用ハードのゲーム開発経験もないんじゃないかな
0077名前は開発中のものです。
2009/02/05(木) 22:39:01ID:tABpRsfLDSで死にそうになってるフェードアウトハゲが10年単位の周回遅れで
発明した独自理論を得意げに語ってるのかと思ってた
エロゲの人ならこういう発見もアリなんじゃないかな。煉獄へようこそ
0078名前は開発中のものです。
2009/02/05(木) 23:02:22ID:AceVSe0N前々スレから散々におわせていたことをようやく認識した
ということだろうね
IDだのハンドル云々の話は10年近く前にファミベのよっしんが記事を書いてる
http://www2.tky.3web.ne.jp/~yosshin/memo/000213.html
アーケードやコンシューマと無縁なやねなら確実に読んでると思うんだけどね
参考リンクとして貼りゃいいのに
よっしん氏が呼んでるタスクシステムという代物と>>2は同一ではないよな
>>2はタスクリストとかいうものを周期的にナメまわしてバッチ処理するだけ
「はいこれでオシマーイ。あとはお前らにお任せだっよーん」みたいなゴミカス
最近じゃこれだけでタスクシステムってことで通用するんだから
タスクシステムはタスクの相互作用なんて気にする必要まったくないわけ
変な通信機能盛り込むなよ
0079名前は開発中のものです。
2009/02/05(木) 23:10:23ID:yvQde++7http://d.hatena.ne.jp/yaneurao/20090204
に
> すべてのゲームにタスクシステムが必要なのではない。
はっきりと書いてあるのに
> あらゆる規模にタスクシステムとやらいうものが適用するメリットがあると
> 考えてるんだろうかね
とは、とても残念な理解力ですね。
0080名前は開発中のものです。
2009/02/05(木) 23:15:47ID:/BuTmFOA> 彼の言うタスクフレームワーク(あ?)とかいうもの。こいつを構築するために
> 支払うイニシャルコストがペイできる分岐点ってもんがあるわけ
> やねはここを見積もってないんだろうね
逆に、一人で開発してるなら何やってもイイと思うけどね。
0081名前は開発中のものです。
2009/02/05(木) 23:45:46ID:/BuTmFOA> update();
> で動くのと
> update(jiki,teki,tama,unko);
> で動くのとじゃ
> プログラムとしては絶対に下のがいい
普通に考えると、visitorに共通コンテキストを持たせてコンテナ内のタスクを巡回処理させる。
引数で渡すなんて愚の骨頂。
0082名前は開発中のものです。
2009/02/06(金) 00:09:26ID:wGKtGJau>>12=スレ主=基地外が前スレで判明している。触るな危険。
0083名前は開発中のものです。
2009/02/06(金) 00:12:08ID:H1z7Q+5u引数のない関数ってどうよ?
お前、自分が使ってみろって言われたときのこと考えろよ
0084名前は開発中のものです。
2009/02/06(金) 00:15:46ID:4xm8YBEcおまえvisitorの意味判ってないだろ。
0085名前は開発中のものです。
2009/02/06(金) 00:18:56ID:H1z7Q+5u関係ないね
大事なのは引数で渡すことによって関数無いで変更される恐れのある
インスタンスを明確にすること
お前のような素人はデザパタの前にC言語でも勉強しろ
なにせ引数もよくわからずグローバル変数で渡してるぐらいの低知能なんだからなw
0086名前は開発中のものです。
2009/02/06(金) 00:19:44ID:4xm8YBEcやっぱり判ってないのかw
0087名前は開発中のものです。
2009/02/06(金) 00:20:01ID:1vVyPOFv0088名前は開発中のものです。
2009/02/06(金) 00:20:20ID:H1z7Q+5u引数の有効性はわかったかね?
0089名前は開発中のものです。
2009/02/06(金) 00:23:00ID:H1z7Q+5u前スレよろしく
今回も俺が特別に教えてあげよう
上のupdate()は関数内で何にアクセスしてるのかまったくわからないが
下のupdate(jiki・・・)はアクセスしてるインスタンスを引数に絞ることができる
(グローバル変数を使わないという規約を守れば)
これによってデータの安全性が保障されるというわけだよ
君のようにコーディングの効率ばっかりとって
引数もわからんような低知能は俺と話すようなレベルにないということがわかったかね?
0090名前は開発中のものです。
2009/02/06(金) 00:26:08ID:ux7UjNgYここまでムキになるということは、>12=スレ主ってヤツかwww
修正コストとか考えたこと無いんだろうなぁ。幸せなヤツw
0091名前は開発中のものです。
2009/02/06(金) 00:26:51ID:1vrKKSIM一人だけ極端にレベルが低いのにその自覚なし
0092名前は開発中のものです。
2009/02/06(金) 00:28:03ID:Cfc6lR6P0093名前は開発中のものです。
2009/02/06(金) 00:31:12ID:ux7UjNgY> 下のupdate(jiki・・・)はアクセスしてるインスタンスを引数に絞ることができる
笑っちゃうなwww
ということは、ID:H1z7Q+5uはtaskの種類によって引数が変わることが前提か。
もしかしてtask保持コンテナも別に持つ派なのか?
例えば敵タスクがあったとして、雑魚敵Aと雑魚敵Bが異なるコンテキストを必要とする場合とか
考えたこと無いのか? 雑魚敵Aと雑魚敵Bで最小公倍数的な引数を取るupdate関数をつくったら、
それはID:H1z7Q+5uが>89で言っていることと矛盾するって気づかないのか?
0094名前は開発中のものです。
2009/02/06(金) 00:34:26ID:1vVyPOFv0095名前は開発中のものです。
2009/02/06(金) 00:52:39ID:nWDkACnD0096名前は開発中のものです。
2009/02/06(金) 00:53:38ID:ZPF/rc3nその一人開発ってことは趣味の世界の話でいいよな?
プロの一人開発ったってフリーランスという名のプーでもなければ
自分一人の問題じゃねーし、他と折り合い付けないと会社つぶれるしな
>>2ベースのゲロゲロフレームワークなんて誰も使いたがらないから作らないよ
で、趣味野郎でオナニーフレームワーク?これもあんま意味ないよ女子高生
大多数のパンピースペックの趣味プログラマは無難にサクっとゲーム一本
作りあげる方法を模索する
パンピースペックの趣味野郎がオナニーフレームワークとかいうハマリ道に
進んだら大半は生きて還ってこれん。終わり無きライフワークになるだろ
まぁそれはそれで楽しい人生なのかもね。否定はしない
ゲームではなく部品を作ることに情熱燃やして技巧に走って茨の道へ突進して
何年もの歳月をかけて山篭りして誰にも使われないフレームワークを構築する人生
悪くない。でもその結果が>>2ベースのゲロゲロシステムじゃな。成仏できんの?w
0097名前は開発中のものです。
2009/02/06(金) 00:59:04ID:1vrKKSIM0098名前は開発中のものです。
2009/02/06(金) 01:00:52ID:ZPF/rc3n0099名前は開発中のものです。
2009/02/06(金) 01:05:33ID:1vrKKSIMじゃあ、この残念な引数君にも何か言ってやってくれ
0100名前は開発中のものです。
2009/02/06(金) 01:17:02ID:ZPF/rc3n議論の内容がよくわからん
俺は>>2=チンカスゴミカス だと思ってるが引数君とは批判のベクトルが違うようだ
彼は数種類のクラスに共通のインターフェースを与え、共通のコードから呼び出す
というメカニズムを全否定してるのだろうか?だとしたらそれは仮想関数の全否定であり
わけわからん
引数君の主張内容がよく分かってない
0101名前は開発中のものです。
2009/02/06(金) 01:25:06ID:1vrKKSIM>>12
0102名前は開発中のものです。
2009/02/06(金) 01:29:48ID:ZPF/rc3n0103名前は開発中のものです。
2009/02/06(金) 01:34:39ID:1vrKKSIMそれとも、あんたも日本語の残念な人か?
0104名前は開発中のものです。
2009/02/06(金) 01:39:11ID:ZPF/rc3n0105名前は開発中のものです。
2009/02/06(金) 01:43:50ID:OdnmQxD5もしかして彼はひらしょー氏の言うデータと処理の分離を
超まわりくどく主張しているのかな。
0106名前は開発中のものです。
2009/02/06(金) 01:50:49ID:1vrKKSIM前スレ823か。
引数君よりは能力的にマシだということはわかるが、説明がくどく、わかりにくい。
俺はこんな内容の薄い、回りくどい説明を読むのはまっぴらごめんなので、さいなら。
0107名前は開発中のものです。
2009/02/06(金) 02:08:15ID:EVIE955Wすべてのアンチタスクがスレ主に見える病気を克服するべき
0108名前は開発中のものです。
2009/02/06(金) 02:09:41ID:ZPF/rc3n0109名前は開発中のものです。
2009/02/06(金) 02:12:05ID:EVIE955W内容の薄い、回りくどい指摘を読むのはまっぴらごめんなので、さようなら
0110名前は開発中のものです。
2009/02/06(金) 07:38:45ID:RQ4iGJCoと聞かれてコーディングとは絶対に答えないくせに
コーディングの手間ばかり減らすことに執着している
なかなか読めないプログラムってなんだ?
構造が複雑なプログラムじゃないの?
お前等馬鹿は全く逆のことを自己満足のためにやっているオナニストだ
プログラマならせめて理詰めで動けよ
お前等凡人から理性まで抜いたら猿と変わらないだろ
0111名前は開発中のものです。
2009/02/06(金) 09:47:48ID:SpEabv2Cえーと、この人ってイイ歳した何者なの?プロ?パソゲー専門なんじゃない?
>ビデオゲーム黎明期においては、オールアセンブラで書くことが普通だったので、
>std::listのような便利なコンテナがあるわけでもなく、技巧的な方法でstd::list
>みたいなことを実現していただけ
えっえー?この人のいうビデオゲーム黎明期っていつごろのお話なのかな?
70年代?だったらまずZ80アセンブリで>>2を書いてみればいいのに。おかしな人だよ
16bit機時代?intrusiveなコンテナを使った理由がオールアセンブラだから?本当に?
最近は想像だけで昔話を書いても教科書になるのかしら?
どこのゲー専の子が犠牲になるのかしら。ちょっと可哀相ね
知らないことは知らないって言えばいいし、足を使って取材しに行けばいいと思う
んで、頭下げて監修してもらえばいいと思う。このままじゃあんまりだよ
>古典的なタスクシステムにおいてはタスクに番号(プライオリティ)が振られており
>番号を指定して特定のタスクのポインタを得ることが出来た
えっえー?つーか古典的タスクシステムってなんじゃい?ファンタジーゾーンなの?
0112名前は開発中のものです。
2009/02/06(金) 10:34:43ID:wGKtGJauあんた、何かがしゃべり方がキモイんだけど。
それはそうと、相手は年収何千万もある凄腕のプログラマらしいので、
技術的な反論は是非どこかのブログでやっちゃってください。
0113名前は開発中のものです。
2009/02/06(金) 21:26:12ID:+KF0MHRvでも見渡してみると、ウィンドウズのウィンドウだってそういうしくみだしなぁ。
0114名前は開発中のものです。
2009/02/06(金) 22:07:10ID:H/Ui7lv7http://d.hatena.ne.jp/yaneurao/searchdiary?word=%a5%a8%a5%ed%a5%b2%a1%bc%c0%bd%ba%ee
0115名前は開発中のものです。
2009/02/06(金) 22:31:40ID:RQ4iGJCoウィンドウ同士であまりやりとりしなくてもあの複雑さだぞ
リストコントロール2つを連動させるだけでもやばいくらいの手間
基本的にウィンドウズの作り自体関連がたくさん生まれる処理に向いてない
あくまでも独立した動作が前提
0116名前は開発中のものです。
2009/02/06(金) 22:36:12ID:nWDkACnDそう思ったのなら両方とも自分で実装してみて比較検討だ!
でも数千行レベルでは使いやすかったやり方が数万行レベルでも同じように使いやすいままかどうかはまた別問題だ!
そこは注意な! 王道はグローバル変数使わないことだぞ!
0117名前は開発中のものです。
2009/02/06(金) 23:12:31ID:ux7UjNgY>93について、具体例を挙げて答えてよ。
0118名前は開発中のものです。
2009/02/06(金) 23:44:30ID:H1z7Q+5uはぁ?何言ってるのかわからない
俺が言いたいのは関数に引数つけろってそんだけだけど?
コンテキスト?は?
そんなもん使った時点で負けだ馬鹿
設計死んでるんだよ
俺の価値観ではそんなもん使った時点で負け
void*となにも変わらない
0119名前は開発中のものです。
2009/02/06(金) 23:45:58ID:H1z7Q+5u俺の価値観からすると
0120名前は開発中のものです。
2009/02/06(金) 23:53:12ID:4xm8YBEc> はぁ?何言ってるのかわからない
じゃ、具体的に質問するけど、雑魚敵Aと雑魚敵Bに関係性が出てきたらどうするの?
例えば雑魚敵Aは雑魚敵Bを殺すことがある、となった場合に、雑魚敵Aのupdate関数の引数に
雑魚敵Bのリストを渡すの?
0121名前は開発中のものです。
2009/02/07(土) 00:21:27ID:lLkuERdr>雑魚敵Aのupdate関数の引数に雑魚敵Bのリストを渡すの?
それをやってはダメ
哲学的になるけど
基本的に雑魚敵Aが雑魚敵Bを殺す現象ってのは
雑魚敵Aの中の処理でも雑魚敵Bの中の処理でもないでしょ?
つまり雑魚敵ABに書くべき処理ではない
このアクションはあくまでも雑魚敵Aと雑魚敵Bが存在する空間で起こったことであって
それをシーンクラスとしたらそこに書くべき処理じゃねぇかな?
オブジェクト指向的にはよ
俺はオブジェクト指向原理主義者(テロリストではないw)だけど
基本的にオブジェクト指向を変な解釈をしないとしたら
種類の異なる(=クラスの違う)雑魚敵A、雑魚敵B、雑魚敵C、雑魚敵Dといたとして
それらの関連、つまりAxB、AxC、AxD、BxC、BxD、CxDの関連は全部シーンクラスに書くべきじゃないのかな?
そこはオブジェクト指向は手伝ってくれないと思うんだけどね(原理主義者的には)
昔ながらのC言語風味に書いたほうがうまくいくと思うよ
0122名前は開発中のものです。
2009/02/07(土) 00:23:19ID:UFXAc++2> 種類の異なる(=クラスの違う)雑魚敵A、雑魚敵B、雑魚敵C、雑魚敵Dといたとして
> それらの関連、つまりAxB、AxC、AxD、BxC、BxD、CxDの関連は全部シーンクラスに書くべきじゃないのかな?
> そこはオブジェクト指向は手伝ってくれないと思うんだけどね(原理主義者的には)
> 昔ながらのC言語風味に書いたほうがうまくいくと思うよ
今はっきりわかった。キサマはクズだ。
0123名前は開発中のものです。
2009/02/07(土) 00:30:10ID:lLkuERdrなんでだよ
いいこと教えてやったのに
何がどうダメなのか言ってみろ
勉強になるぞ
なにせ俺は10年以上もやってんだからな
0124名前は開発中のものです。
2009/02/07(土) 00:32:45ID:NuBn44S3ヒッキーニートで親のスネカジリ。楽しそうですねwww
0125名前は開発中のものです。
2009/02/07(土) 00:35:05ID:lLkuERdr不毛な会話したくないんだ
どこがどうダメなのか思ったこと言ってみろ
なんとなく漠然とある自分にとっての常識なんて大抵間違ってる場合が多いぞ
0126名前は開発中のものです。
2009/02/07(土) 00:38:14ID:NuBn44S3雑魚敵が20種類くらいいるとして、それが相互に関係しあうことを考えてみろよwww
20種類くらいなら、RTSとかだと当たり前にいるぞ。
0127名前は開発中のものです。
2009/02/07(土) 00:38:49ID:XPRCk6pDあっちのスレでも書いたんだけど、どの処理を誰が担当するかが難しいわけであって、
タスクシステム云々、グローバル変数云々はあんま関係ないと思うんだが。
たとえば、石クラスと、マップクラスと、それらを管理するシーンクラスがあったとして、
・石に重力を働かせる処理
・石と石の衝突処理
・石とマップの衝突処理
は、それぞれどのクラスが担当すべきだろうか。
0128名前は開発中のものです。
2009/02/07(土) 00:39:00ID:qvO9PNvj>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>(越えられない壁)>>>無能な社会人もどきヘタレグラマの妄言
それがここのルールだ。覚えておきな。
0129名前は開発中のものです。
2009/02/07(土) 00:39:49ID:lLkuERdrそりゃ当然それだけの処理が必要になるだろうね
仮にプログラムの組み方が変わったところで
その数が少なくなることは絶対にないからね
それを踏まえて何が問題?
0130名前は開発中のものです。
2009/02/07(土) 00:40:05ID:qe8S2N76>20種類くらいなら、RTSとかだと当たり前にいるぞ。
ダブルディスパッチ
0131名前は開発中のものです。
2009/02/07(土) 00:41:54ID:XPRCk6pDその莫大な組み合わせを纏めるかどうかは書く人の力量次第だが、
書く場所としてはシーンクラスが良いのでは?ってはなしだろ。
お前が読解力ないだけ。
0132名前は開発中のものです。
2009/02/07(土) 00:42:20ID:lLkuERdr全部シーンだろうな
0133名前は開発中のものです。
2009/02/07(土) 00:43:44ID:NuBn44S3ヒッキーで無能はどこにいるんだ?
0134名前は開発中のものです。
2009/02/07(土) 00:46:56ID:XPRCk6pDとなると、シーンクラスが肥え太って困る。
モジュール化する何かいい方法は無いですか?
オブジェクト指向ってのは、オブジェクト(リソース)の管理は上手いんだが、
オブジェクトとオブジェクトの関連の記述には向いていないんだよなぁ。
0135名前は開発中のものです。
2009/02/07(土) 00:48:05ID:qvO9PNvj居たら教えてくれ。
0136名前は開発中のものです。
2009/02/07(土) 00:48:40ID:cn84NiHOどうでもいいけど、やねうらおの文章の引用部分さ
> すべてのゲームにタスクシステムが必要なのではない。
これ文脈読めばわかると思うけど、規模じゃなくて種類の話だよね
あと、残念な○○っていう表現が大好きなブログがあるよね
0137名前は開発中のものです。
2009/02/07(土) 00:49:07ID:lLkuERdrないね
オブジェクト指向ではそこが限界
原理主義者の俺が言うんだから間違いない
後はC言語風味にうまく分離して書くしかない
0138名前は開発中のものです。
2009/02/07(土) 00:50:51ID:UFXAc++2> ないね
単にモノを知らないだけだな。
0139名前は開発中のものです。
2009/02/07(土) 00:51:10ID:e1gHG0fD衝突したかの判定はシーンクラスで、衝突に伴う処理は
オブジェクト同士のメッセージ交換ってのが俺のやり方だな。
0140名前は開発中のものです。
2009/02/07(土) 00:55:40ID:UFXAc++2物理エンジンで本物っぽく動かすつもり?
それとも2Dのマリオやソニックみたいに、それっぽく動けばいいの?
0141名前は開発中のものです。
2009/02/07(土) 00:55:51ID:lLkuERdr関連をオブジェクトに見立てて・・・とか馬鹿なこと始める気?
俺、そういうの読み手にわかりにくくなるだけであんまり意味ないと思うぜ
折角オブジェクトが誰にでもわかる表現にするためにオブジェクト指向を使ったのに
変にトリッキーな解釈(関連=オブジェクトだ!)してわかりにくくしたら
本末転倒じゃね?
って勝手に関連=オブジェクトの話するだけこいつ馬鹿だなー的
先読みをしてみたけど言いたいことあってる?
0142名前は開発中のものです。
2009/02/07(土) 00:56:33ID:XPRCk6pDこの流れでいくと、タスクシステムで行うべきことは、
・描画順序の管理
のみ、ということになるな。
その他の処理はすべてシーンクラスで行うと。
晴れて、タスクシステム=グラフィックエンジン
ということになり、みんな幸せになると。
0143名前は開発中のものです。
2009/02/07(土) 00:56:47ID:hO/vsQBF俺なら重力は重力クラスが担当、衝突は衝突クラスが担当するようにする。
重力に引かれたい奴は重力クラスに登録するように!
0144名前は開発中のものです。
2009/02/07(土) 00:56:49ID:vE7+xmqT0145名前は開発中のものです。
2009/02/07(土) 01:00:11ID:vE7+xmqT石に重力が働くというのなら地面みたいなものがあるはずだから、
石ー重力ー地面としてこの重力をクラスにすれば使いまわしも出来ていい
0146名前は開発中のものです。
2009/02/07(土) 01:03:06ID:UFXAc++2つ 【オールドタイプの魂】
0147名前は開発中のものです。
2009/02/07(土) 01:04:31ID:cn84NiHO>基本的に雑魚敵Aが雑魚敵Bを殺す現象ってのは
>雑魚敵Aの中の処理でも雑魚敵Bの中の処理でもないでしょ?
>つまり雑魚敵ABに書くべき処理ではない
YES
>それらの関連、つまりAxB、AxC、AxD、BxC、BxD、CxDの関連は全部シーンクラスに書くべきじゃないのかな?
シーンでも神でも何でもいいけど、ゲーム世界の物理現象の調停者wが
介在し、結果を双方(作用する2体)に通知するというのは全くもって普通
珍しくない
0148名前は開発中のものです。
2009/02/07(土) 01:06:44ID:lLkuERdrもしオブジェクトが20種類いてそれぞれが関連をもつとしたら
少なくとも
a=オブジェクトの状態の数の総和
aC2(aの中から2つ選んだときの重複のない組み合わせだっけ?)
の数だけ処理を書かなきゃいけないことには
どう組んであろうが変わりはないんだぞ
>>147
なんのメリットがあってそんなわかりにくい書き方をするんだ
無駄だろ
0149名前は開発中のものです。
2009/02/07(土) 01:09:32ID:lLkuERdr0150名前は開発中のものです。
2009/02/07(土) 01:10:08ID:XPRCk6pD重力をクラス化するのは個人の趣味だろうが、
使いまわせるかどうかは怪しいな。
細切れの小さなクラスが1000個ぐらいあって、
それぞれにそれぞれが関係しあって一つの生態系をなし、
結果としてゲームになっている・・・とか。
そういうのって想定外の仕様変更には弱いからなぁ。
まぁゲームの方向性にも寄るのだろうが。
0151名前は開発中のものです。
2009/02/07(土) 01:13:32ID:cn84NiHOゲームワールドをゲームエンジン内部で時間発展させてるからさ
衝突イベントでユーザー定義のコールバック関数が呼ばれるやつだ
0152名前は開発中のものです。
2009/02/07(土) 01:14:32ID:UFXAc++2普通に考えてそれか。
じゃ俺も普通に考えてみるかな。
雑魚敵Aが雑魚敵Bを攻撃して殺す場合、Aは攻撃判定用不可視オブジェクトXを作成する。
BにはXに対する応答のみ、つまりXに当たったら死ぬ、という処理を書く。
攻撃判定用不可視オブジェクトを必要に応じて複数作り、それぞれ攻撃する側はそれを作成し、
攻撃を受ける側はそれに対する応答処理を書く。
シーンクラスには、雑魚敵コンテナと同じレベルで攻撃判定用オブジェクトのコンテナを追加して、
そこで相互の判定をする。
0153名前は開発中のものです。
2009/02/07(土) 01:22:50ID:lLkuERdrいや、だから全然わかってねぇな
なんかお前等変な組み方してるけど
関連の処理を仕様である分、全部書かなきゃいけないことは変わらないんだろ
なんでわざわざ間になんか挟むの?
なんか得になんの?金もらえんの?
素直にシーンオブジェクトに必要な数だけ処理かけよw
何をどうしたくてそんな複雑な仕組みにするんだw
オブジェクトXなんていきなり見てお前のそれ誰が理解してくれるんだよ>152
どうせドキュメントもかかねぇしよまねぇだろ
っていうか手間増やしてるしw
0154名前は開発中のものです。
2009/02/07(土) 01:26:57ID:XPRCk6pD不可視オブジェクトXの受け渡しは誰が行うんだ?
0155名前は開発中のものです。
2009/02/07(土) 01:30:03ID:lLkuERdrC++をはじめとするオブジェクト指向言語が大嫌いなんだ
だってなんのメリットもねぇよこの言語ども・・・w
だってよ・・・処理が集中・複雑化するのってシーンクラスみたいなところであって
別に個々にオブジェクト単位にできる部分は誰も苦労してねぇよマジで
ってみんなにはないしょだよw
ってところで>>147につけたレスは内容まちがってたな俺
すまんこ
0156名前は開発中のものです。
2009/02/07(土) 01:30:17ID:NuBn44S3> なんでわざわざ間になんか挟むの?
雑魚敵が増えた時の修正が少なくてすむ。
攻撃判定オブジェクトを間に挟むことで、複数種の雑魚敵が同属性の攻撃だしても、一つの攻撃判定オブジェクトとの
関連処理に還元できる。
0157名前は開発中のものです。
2009/02/07(土) 01:32:09ID:vE7+xmqT使いまわすってのはコード的にって事ね
数が多い場合は面倒くさいけど一個一個やっていくしかないなぁ
上位概念のオブジェクトを作れるんであればいいけど
STGでいうなら弾 - 衝突 - 敵 では無くて 自機 - 弾判定 - 敵みたいに
■ このスレッドは過去ログ倉庫に格納されています