タスクシステム総合スレ part9
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2009/12/13(日) 18:11:06ID:ESt66YNzpart8 http://pc11.2ch.net/test/read.cgi/gamedev/1250678891/
part7 http://pc11.2ch.net/test/read.cgi/gamedev/1241670786/
part6 http://pc11.2ch.net/test/read.cgi/gamedev/1238725539/
part5 http://pc11.2ch.net/test/read.cgi/gamedev/1234977661/
part4 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」と明示してください
そうでない場合はカスタム版であることを明示してください
・人を憎んで言語を憎まず
0361名前は開発中のものです。
2010/01/31(日) 05:24:01ID:WDNFJ5/J0362名前は開発中のものです。
2010/01/31(日) 05:53:16ID:CeH4M0fLあと今まで古典タスクシステム無視してFSMでしかゲームくんでこなかったから
種類ごとの動作順序がバラバラなのが何だか気持ち悪いよ><
0363名前は開発中のものです。
2010/01/31(日) 05:56:28ID:98e6KIKRFSMって有限ステートマシンのこと?
>>FSMでしかゲームくんでこなかったから
具体的にどうやって組むのか教えて。初めて聞いたから知りたい。
0364名前は開発中のものです。
2010/01/31(日) 06:04:26ID:CeH4M0fLこれでゲームを組むっていうのは、大雑把に例えると
1) タイトル画面を管理するタスクが存在する
2) ゲーム本編を管理するタスクが存在する
3) ゲームオーバーエフェクトを管理するタスクが存在する
の時、タイトル画面からはゲーム開始できるから
(1)->(2)
(2)からはゲームオーバーとゲームリセットが考えられるから
(2)->(1), (2)->(3)
ゲームオーバーするとタイトルに戻されるから
(3)->(1)
こんなFSMができあがる。
ゲーム中の敵みたいなオブジェクトも
敵生成エフェクト->
敵が発生する->
敵が存在する(行動する事が閉じたFSMとして別に繋がっているが省略)->
敵が破壊される
な単純なFSMとして処理の流れを記述できる。
でも、これは一々タスクを4つ作らないといけないし、無理してタスクひとつに詰め込んでも
状態変数を持ってifやswitchなどで内部で分岐処理をしないといけない。
これは非直感的で避けたい。
0365名前は開発中のものです。
2010/01/31(日) 06:16:23ID:CeH4M0fL今はFSMの代わりにmicrothreadを使おうと調べているんだけど、
これはタスク中でyieldと言われている処理をする事でタスクの実行をプログラムのその行で中断し
次のタスクへ処理が委ねられる。
次回自分のタスクが回ってきた時、即ち次フレームになると
yieldの次のステートメントから処理を再開する仕組みっていう解釈でおk?
本質的には割り込みのないmulti threadと同じものだから各microthreadは動作順序が保証されない様に思えるんだけれど
どうなんだろう。
勿論動作順序の必要な箇所(描画など)は今までどおりFSMで組むけど、マルチスレッドなんて慣れてないから
「注意しておかないとバグや処理系依存になる」事がありそうで怖い。
0366名前は開発中のものです。
2010/01/31(日) 11:51:44ID:HU8XW/cO古典的タスクシステムの実装での話しなら
yieldで分割される単位で実行関数作って、状態が変わったら登録関数切り替え。
タスクを通して維持される情報はタスクのワークに、が古典的タスクシステムのやり方かと。
ちなみに古典的なリスト形式じゃなくてツリー構造にして子の生存管理を親に任せれば
上で言ってるタイトルとゲームオーバーと、みたいなシーンも君の言うFSMと同じように階層管理できる。
階層タスクはボス戦艦の船体の親タスクと砲台の子タスク、みたいな使い方でもよく使われる。
リストでも同じことできるけど、親の座標が子の座標に影響したり親がやられたら子も全滅、みたいなのは
ツリーで作った方が楽。
0367名前は開発中のものです。
2010/01/31(日) 12:17:25ID:QrJboi/QここでいうFSMってタイトルの選択とかタイトルローカルの情報はどこで持ってるんだ?
グローバル?タイトル関数のstatic変数?
メインループから呼ばれて毎フレーム抜けるんだよな
静的に関数コールでくっついてるってことはクラスのメソッドでもないんだよな
仮にクラスのメソッドだとしたらタイトルがゲームとかゲームオーバーとかのクラスを所有するのか?
なんか色々タスク方式よりずっと気持ち悪く見えるんだけど。
0368名前は開発中のものです。
2010/01/31(日) 14:39:09ID:3AvaezOmなんで先週の俺こんなに一所懸命カプセルかしてたんだっけ?
0369名前は開発中のものです。
2010/01/31(日) 14:55:48ID:CeH4M0fLなるほどー。
階層構造にしてしまうのもやり易そうですね。
今の機能と共存する形で実装できそうなので作ってみます。
>>367
うう、すみません。表現の仕方が悪かったみたいです。
タスクシステムを普通に作ったらタスクが状態としてFSMで記述され、
遷移がひたすらタスクの生成と破棄する処理として置き換わる事を言っています。
366さんも言っているように、microthread等を使わなければyieldで分割される単位でタスクを作って記述が分断されます。
タスク方式よりずっと気持ち悪く見えても、これはタスクシステムそのものなんです。
0370名前は開発中のものです。
2010/01/31(日) 15:01:40ID:CeH4M0fLタスクシステムそのものと言っても古典タスクシステムではありません。
実は僕は>>335で、そのレスにあるとおりの機能に依存して今まで開発しておりました・・・。
種類ごとの順序がない、定数時間で同じ種類のタスク全てに対する反復子取得できない、
データ構造がC++風のクラスという型レベルのものではなく処理関数と専用の構造体に分かれている、
汎用ワークエリアの容量が不足している事により起きるバグの回避が自動でできない、
そんな古典タスクシステムからできるだけオーバーヘッドを除きつつ逃げる為にいろいろやっております。
0371名前は開発中のものです。
2010/01/31(日) 15:43:20ID:PBTWOUVltask::exec() {
switch(state) {
case TITLE:
条件満たしたらstate=STAGE1;
case STAGE1:
case STAGE2:
}
}
こんなのでいいんじゃないの?
0372名前は開発中のものです。
2010/01/31(日) 16:32:55ID:oiLUSXKA使わなくても、じゃなく、使わない方が良いだろうね、大概の場合。
FSMでマイクロスレッド使う場合のディメリットは、
FSMのステートをスタックフレームのPCで「代用」するやり方では、
一種類のステートしか保存できない点。だって、PCは一個しかないからな。
だから、マイクロスレッドでFSMやってると、
複数のステートが絡み合うようになる段階で、逆に苦労する。
0373名前は開発中のものです。
2010/01/31(日) 16:43:00ID:CeH4M0fL何か勘違いしているみたいですが、マイクロスレッドはyieldが必要なタスクごとに作られます。
釣りな気もしますがマジレス。
0374名前は開発中のものです。
2010/01/31(日) 18:17:03ID:QrJboi/Q>タスクシステムそのものと言っても古典タスクシステムではありません。
君の頭の中にあるタスクシステムはずいぶん独特みたいだな。
古典的タスクシステムではタスクローカルのデータはタスクワークで持てるけど
今まで作ってたFSMではない静的な方法とやらではどこで持つの?
0375名前は開発中のものです。
2010/01/31(日) 18:23:01ID:CeH4M0fL> 静的に関数コールでくっついてるってことはクラスのメソッドでもないんだよな
クラスのメソッドだよ。型消去使ってるから呼び出せる。
http://codepad.org/OWiGW3X7
C++でタスクシステムするからにはこれくらいやるんではないでしょうか・・・。
0376名前は開発中のものです。
2010/01/31(日) 18:56:25ID:QrJboi/Q>クラスのメソッドだよ。型消去使ってるから呼び出せる。
それはC++でタスクシステムつかった時の作り方でしょ。
>あと今まで古典タスクシステム無視してFSMでしかゲームくんでこなかったから
何かしらんが、その非タスクシステムでゲーム作ってたときはシーンローカルのデータは
どこで持ってたの?
0377名前は開発中のものです。
2010/01/31(日) 19:09:56ID:CeH4M0fL> 何かしらんが、その非タスクシステムでゲーム作ってたときはシーンローカルのデータは
古典タスクシステムではないけど上のcodepadにあるtemplate classで
タスクをFSMとして扱っているから飽くまでもシーンローカルのデータはタスクとして機能している
C++のオブジェクトが持っています。
ここでいう古典とは、型レベルでの事前操作をしないC言語で書く事が可能な種類ごとの順序を保証しない
タスクシステムです。
C言語でもある程度のコンパイル時のプログラミングはできるんですがチューリング完全ではないので
高度な事はできず、古典タスクシステムしか組めません。
更に、古典タスクシステムを引き合いに出したのは
microthreadでタスクの順序が保証されない事と共通点があったからであって
シーン処理に関しての考察は不必要で的外れです。
0378名前は開発中のものです。
2010/01/31(日) 19:29:56ID:030VeqOoとりあえず定石として2つのものが互いに参照する可能性がある物体ってのは
正しくインスタンスを配置できたのなら必ず同じ階層に並ぶ
つまり、弾が地形のポインタをもつことはできないし
地形が弾のポインタをもつこともできない
グローバル変数や関数を使えばこういう設計ミスを回避することができてしまうが
これは正しい設計をぶち壊してとりあえずグローバル変数関数に頼るただの突貫工事でしかない
上記の場合は弾と地形の上にいるゲームならシーンクラスとかそういうのが弾と地形のつなぎ処理を
書く部分になるのが正しい
>>360
>寧ろグローバルのどこがあかんのですか
こういうの一度も考えたことないのが設計語ってる現実ってあるからなぁ
今後のためになんでダメなのかちょっとは考えたほうがいいよ
どうしてカプセル化するのか?ってのにその答えがある
0379名前は開発中のものです。
2010/01/31(日) 19:35:08ID:WDNFJ5/Jこれを理解して実装しているプログラマーがどのくらいいるだろうか。
グローバルをやたら非難するけどシングルトンをやたらめったら使う奴とかいるし。
あと、ポインタを渡したまま消去されてしまうことに関してなんら対策されてないコードもやたらある。
0380名前は開発中のものです。
2010/01/31(日) 19:41:42ID:PBTWOUVlシーンタスクが毎フレーム、弾タスクと地形タスクの衝突を判定して、衝突したら弾タスクと地形タスクに通知すればいいの?
0381名前は開発中のものです。
2010/01/31(日) 19:42:47ID:Di+guFUQ別に何でもかんでもグローバルに頼るとは言うてへんやろ
何でもかんでもグローバルあかんと抜かすほうが何も考えてへんのちゃうやろか
0382名前は開発中のものです。
2010/01/31(日) 19:55:10ID:WDNFJ5/Jグローバルなくてもコードはかけるよ。
グローバルを隠す(さらには静的変数をなくす)のは主に「状態の整合性」の維持かな。
グローバルはとりあえず実装するのには便利だけど、
そのままおいておくと拡張するときに、
状態の整合性の確認のためコードを何度も確認する必要がでてくる。
普通、他人のコードはもちろん自分のコードも細部まで覚えてないからね。
インターフェイスを減らして意味を持たせることによって確認の手間を減らす意味がある。
そういう意味ではこのメリットがほとんどない場合は
グローバルで実装したほうが得ということになる。
また、グローバルを使ってなくても上記のメリットがまったくないコードってのもたくさんある。
やたらメンバ変数の多いクラスとかやたらポインタをすべてにたらい回すとか。
細かく言えばグローバルはオーバーレイでも使わない限りメモリを占有するってのもあるが
これはターゲットによってほとんど無視できることもある。
0383名前は開発中のものです。
2010/01/31(日) 19:56:13ID:030VeqOoなんでもかんでもダメだね
ただ、君の方針がそうであるなら下手にカプセル化なんてしないほうがいいと思う
そういう方針であるならもう割り切るべき
設計なんて頭にいれないでデータすべてをエクセルに展開したみたいにすべて並べるように
プログラムを組んだほうがうまくいくと思う
0384名前は開発中のものです。
2010/01/31(日) 20:00:04ID:QrJboi/QFSMはタスクシステムじゃないけどタスクシステムそのもの・・・
なんだか禅問答みたいですな。
古典的タスクシステム≠FSM=何かの自己流C++タスクシステム
という意味なのかな?
>C言語でもある程度のコンパイル時のプログラミングはできるんですがチューリング完全ではないので
>高度な事はできず、古典タスクシステムしか組めません。
Cでは古典タスクシステムしか組めないとなる理由=Cがチューリング完全でないから?
すいませんがチューリング完全と古典的タスクシステムの関連性が見えません・・・
>microthreadでタスクの順序が保証されない事と共通点があったからであって
つまりタスクシステムというより並列処理の話なのかな?
順番の保証が必要な処理ならスレッドでもタスクシステムでも同期するなり
優先付けるなりする必要があるのでは、という話になるが。
0385名前は開発中のものです。
2010/01/31(日) 20:23:36ID:PBTWOUVl守秘義務ってそうとう厳しいのけ?
0386名前は開発中のものです。
2010/01/31(日) 20:30:57ID:SO046r6f0387名前は開発中のものです。
2010/01/31(日) 20:38:10ID:CeH4M0fL> という意味なのかな?
そうです。
> Cでは古典タスクシステムしか組めないとなる理由=Cがチューリング完全でないから?
Cは実行時のプログラミングに関してはチューング完全です。
しかし、コンパイル時ではチューリング完全ではありません。
型に順序を与えたりソートといった動作をするにはチューリング完全である必要があります。
コンパイル時に分かっている情報はその時に処理した方が実行時に処理に負担が掛からず利点があります。
具体的な例を挙げればリストに重複した種類のタスクを単一しか存在できないものとして入れてしまい
それをエラーとして扱いたい場合があります。
assertマクロを使えばその様な事態はとりあえず実行時にエラーが出る事によって検出できますが
設置したそのステートメントを実行するまで気付きませんし、動的にタスクに種類の情報を与える方法では
実行前に意図したものが原因か、あるいはロジックの不正でデータが書き換わったのか区別できません。
回避するにはそもそもコンパイルできない様にすればいいのですが、型の区別、重複検索はチューリング完全でなえれば実装できません。
他にも人間のミスを予め阻止する予防線を作る必要があります。(読み取り専用のメモリに対する不正な型変換など)
> つまりタスクシステムというより並列処理の話なのかな?
OSなどに並列の管理を依存するとゲームプログラム自体が同じ状態でも
ゲームが干渉できない部分が原因でタスクの前後関係が狂い、再現性がなくなってしまうのでは?といった
懸念がありました。
並列処理に関しては僕はまだ勉強不足な様です。
再現性があり予測が可能な並列動作やyieldの方法を探してきます。
0388名前は開発中のものです。
2010/01/31(日) 20:38:40ID:030VeqOo前に書いたんだけどなぁ
リンクとってないだろうなぁ
質問あるたびに上げるのも面倒臭いし
ただ、見て理解できるだろうか?
初心者って設計がどういうものか全くわかってないから
void*やグローバルでのアクセスを単純に技だと思っちゃうでしょ?
そういう勘違いから卒業してないと意味ないと思うんだよね
俺も駆け出しのころそうだったし
インクルードも神ヘッダ(総合ヘッダ)作って全部詰め込んでたよ
でもそれは一番やっちゃいけないことなんだよね
もちろん方針として割り切ってるならそれはアリ
ただ、あるところではカプセル化してあるところではグローバル使いまくりとか
するぐらいだったら設計なんて凝らないほうが吉
0389名前は開発中のものです。
2010/01/31(日) 21:19:15ID:QrJboi/Qチューリング完全というよりメタプログラミングのことを言ってるみたいだね。
古典的タスクシステム≠メタプログラミング=君のタスクシステム
C++はテンプレートメタプログラミングができるから君のタスクシステムが実装できて
Cはそれが無いから君のタスクシステムは実装できない。
ゆえにCは古典的タスクシステムしか実装できない、と・・・
集合論的に穴がありそうで突っ込みたくなるけど、まぁそこはいいか。
>ゲームが干渉できない部分が原因でタスクの前後関係が狂い、再現性がなくなってしまうのでは?といった
>懸念がありました。
やっぱり並列プログラミングの話題っぽいね。
ゲーム系でいえばカプコンの MT Framework あたりならネットでそこそこ情報集められて参考になりそう。
0390名前は開発中のものです。
2010/01/31(日) 22:28:33ID:6qSVPUGq弾が地形に当たったときの処理として
1. 弾が、地形との衝突を判定して自分で消滅する
2. 地形が、弾との衝突を判定して弾を消滅させる
3. お母さんが、弾と地形との衝突を判定して弾を消滅させる
のうちどれを使うか決めようぜ! ってこと?
3の場合、お母さんが概念的にグローバルな存在になるけど
0391名前は開発中のものです。
2010/01/31(日) 23:38:16ID:PJ5c0R9P実際に使ってるのをうpして社内の人間にバレたら給料に影響する
下手すりゃクビ。そこまでして説明したく無い
0392名前は開発中のものです。
2010/02/01(月) 00:40:11ID:1MBMZKlv会社の知的財産だからねぇ
会社によってはCEDECとか論文とかならいいよ、というのはあるだろうが
匿名掲示板にコードだしていいよという会社はさすがにないだろうね・・・
まぁ今さらタスクシステムをCEDECなりで発表する会社もないとは思うが。
0393名前は開発中のものです。
2010/02/01(月) 00:51:51ID:UISeaDQtならないよね?
まず、ならないってことに同意してもらわないとその先へ進めないよ
0394名前は開発中のものです。
2010/02/01(月) 00:52:59ID:hPvV+L+/0395名前は開発中のものです。
2010/02/01(月) 01:00:54ID:UISeaDQtそんなの誰も証明できないよね?
頭悪いなら2chやめたほうがいいんじゃない?
0396名前は開発中のものです。
2010/02/01(月) 01:20:11ID:1MBMZKlvなんだか極端にみえるんだけど・・・
C言語の標準出力とかヒープとかはどう考えてるんだろう。
stdoutとかmallocやnewで取るヒープとかはグローバル扱いからは除外?
ANSIで規定されてるからOKとかかな?
0397名前は開発中のものです。
2010/02/01(月) 01:24:10ID:ozNWjQIiまじで?どうやってお母さんとお話しするの?お手紙?
0398名前は開発中のものです。
2010/02/01(月) 01:26:24ID:hPvV+L+/全タスクはお母さんを知ってるとか?
0399名前は開発中のものです。
2010/02/01(月) 01:28:32ID:UISeaDQtちょっと上のレスすら読まないの?
シーンに持たせるって書いたじゃん
馬鹿にレスつけたくないな
話わからないなら入ってくるなっての
0400名前は開発中のものです。
2010/02/01(月) 01:33:39ID:s6RwCqE5顔も素性も知らん人間にいきなり「タスクシステム作ってテー」「古典タスクシステムでー」
とか言われてもそれは何の理解の補助にも説明の補足にもならんのよな
顔も素性も知らん人間同士ではエターナルフォースブリザードシステムと等価だ
0401名前は開発中のものです。
2010/02/01(月) 01:38:54ID:s6RwCqE50402名前は開発中のものです。
2010/02/01(月) 01:43:43ID:ozNWjQIiそのとおり。
>>399
シーンタスクが持つ設計ってダメじゃね? シーンが切り替わるとき
面クリアしたりワープしたりするときに弾はどうなるの?消えるの?
ワープアニメ中に回復アイテム消えたら子供泣くよ?
0403名前は開発中のものです。
2010/02/01(月) 01:51:18ID:s6RwCqE50404名前は開発中のものです。
2010/02/01(月) 01:52:47ID:BehLiNNh0405名前は開発中のものです。
2010/02/01(月) 01:57:45ID:1MBMZKlv特定のシーンでしか使わないイベント情報とか、そーいうのがグローバルなのは許せんけど・・・
そのゲームの固有のシステム、として一貫性があればグローバルでも悪い設計とは思わん。
特定のゲーム用に作ったゲームオブジェのタスクを別のゲームに使うことなんて・・・
現実問題、続編作るときぐらいしかありえないし。
0406名前は開発中のものです。
2010/02/01(月) 02:02:07ID:UISeaDQtは?お前の中でシーンがどう定義されてるのか知らないけど
シーンの状態の変化レベルの内容で消えられても困る
ワープだってシーンの1状態でしかないだろ
そしたらワープしても弾消えないよな
そもそもお前、会話がおかしい
思い込みが専攻してて他人の話をまともに聞いてない証拠だろ
俺はこの場では弾と地形が存在するクラスをシーンって話の都合上定義しただけで
このときはどうする?このときはどうする?って逐一状態を定義したわけではない
けどお前はかってに自分の中にあるシーンを俺が言ったシーンだと決め付けて
まず、俺にかってに否定意見を押し付けてるけど
正直それはお前が勝手に定義したシーンであって
俺がいったのは弾と地形を包括するもの程度の意味しかもってないんだけど?
それに実際ゲーム作るとなったらシーンは単体再生だけで済むようなゲーム少ないし
ここでその詳しい仕組みまでもってくることないだろ?
話に関係ないから省いたのに無駄なことするよね君
しかも君の指摘した内容いまの話題に関係あるかね?会社でも君みたいな
話題と全然関係ないこと突然言い出す子がいるけどもっと言動考えてしたらどうなの?小学生じゃないんでしょ?
0407名前は開発中のものです。
2010/02/01(月) 02:07:22ID:ozNWjQIiつまり「シーン」がお母さんね。了解しました。
それなら何の矛盾も齟齬も無いので大丈夫。
0408名前は開発中のものです。
2010/02/01(月) 02:16:37ID:UISeaDQtほら、また、勝手に決めた
君のお母さんってのはグローバルじゃないの?
違うじゃない?なんで同じっていうの?
違うって
なんでそうやって勝手に思い込みで話進めるの?
0409名前は開発中のものです。
2010/02/01(月) 02:33:20ID:ozNWjQIi概念的にグローバルであればよくて、弾や地形がそれぞれ一意の
お母さんポインタを持ってるってことで、実装の話ではないですよ。
弾や地形のお母さんにもお母さんがいたって不思議じゃないし。
0410名前は開発中のものです。
2010/02/01(月) 02:34:28ID:ozNWjQIi0411名前は開発中のものです。
2010/02/01(月) 02:35:45ID:s6RwCqE5つーことなんでねーの。たぶん
国境を越えて存在するもの。長命インスタンス。
例えばハードウェアリソースの制御・分配を行う低層の色々。
ブート→電源断の間、ずっと生き続ける実行待ちキュー。
0412名前は開発中のものです。
2010/02/01(月) 02:40:14ID:s6RwCqE5長命インスタンス → 相対的に長命な存在
0413名前は開発中のものです。
2010/02/01(月) 06:35:15ID:UISeaDQtはぁ?逃げるなよ
自分で決めた言葉もう一度定義しなおしたいなら
せめて前にした定義をどう変更するのか明確にしろよ
勝手に会話の中で都合いいように変化させてんじゃねーよ
しかも違うし
違うだろ?
>弾や地形のお母さんにもお母さんがいたって不思議じゃないし。
なんだよ
グローバルなんだろ?
グローバルのグローバルってなんだよ
全然わけわかんねんだよ!
お前技術者やめろよ
0414名前は開発中のものです。
2010/02/01(月) 07:09:25ID:UISeaDQt弾クラスや地形クラスでグローバル的にアクセスできるもんなんてないじゃんw
いつまで自分の世界で話してるんだって思うw
0415名前は開発中のものです。
2010/02/01(月) 10:19:55ID:nwK15Q3Zメタプログラミングとやらに馴染みがないので、
ものすごく、いや、有り得ないほどにウザく感じるんだが。
率直な感想を聞きたいね。
みんな、あんなのを保守していきたいと思う?
0416名前は開発中のものです。
2010/02/01(月) 10:36:30ID:hPvV+L+/なにこれ。コード読めません。。。。。何をしてるんでしょうか
0417名前は開発中のものです。
2010/02/01(月) 15:07:54ID:HQnFS7op0418ハードの人
2010/02/01(月) 22:41:56ID:+pYkEDb4てか、こんなことしてるからオナニーとか言われるんだろ。
技術屋ってのは、お山に登っても駄目なんだよ。山を崩すから金になるんだ。
登るべき山と崩すべき山を見定めなきゃ
0419名前は開発中のものです。
2010/02/01(月) 23:14:31ID:rIxdeolPmultisetに識別子とタスクのポインタを格納すればいいかな。
0420名前は開発中のものです。
2010/02/01(月) 23:43:47ID:SNXwDB5Tハード君は素人オジサンだから子供相手にも余裕が無いよね
0421名前は開発中のものです。
2010/02/01(月) 23:45:37ID:+pYkEDb4もし、ダウンキャストを嫌うのなら、型ごとにリスト持つしかないよ。
0422名前は開発中のものです。
2010/02/01(月) 23:53:00ID:rIxdeolPあーそうか。
0423名前は開発中のものです。
2010/02/01(月) 23:54:05ID:+pYkEDb4つーか、年寄りは良いよなー。
日本経済の先行きが不安すぎて死ねる。40年持ってくれるだろうか。
あーー高度経済成長期を体験してぇ。
0424名前は開発中のものです。
2010/02/02(火) 00:05:31ID:TvvdBrjj「1タスク = 1オブジェクト」だの「タスク = オブジェクト」といったような
固定観念に縛られた自称タスクシステムは単なるオブジェクトのコントローラだよ
別の言い方をすれば「1タスク = 1オブジェクト」「タスク = オブジェクト」限定で
構わないならばタスク(処理単位)という汎化された概念にスポットライトは当たりようが無いし
意識する必要も無い。ただ単にオブジェクトをタスク言いたいだけちゃうんかとというのが
例えばCodezineのそれ
タスクはあくまでも処理単位、処理ステップ。別に上記の(ゲーム)オブジェクトとは
限らないし型があるとも限らない。何らかの理由でそこにある処理の一塊・切り身であり
機械的に演算器に割り当て流し込む存在でしかない
0425名前は開発中のものです。
2010/02/02(火) 00:08:19ID:MKh+klkFむずかしくよくわからない。
別に議論したくない
0426名前は開発中のものです。
2010/02/02(火) 00:13:16ID:TvvdBrjj>>2のLogicianLordとCodezineの差異
0427名前は開発中のものです。
2010/02/02(火) 00:18:45ID:b//H5lcG0428名前は開発中のものです。
2010/02/02(火) 00:29:42ID:TvvdBrjjcase1) an entity is treated by a task
case2) an entity is treated by multiple tasks
case3) a task treats multiple entities
case3 は普通にある
0429名前は開発中のものです。
2010/02/02(火) 00:38:39ID:TvvdBrjj例
・敵を倒したらその敵の撒いた弾も消滅するケース
・多段式誘導弾、MIRV弾頭、散弾、同時消滅あり
皆親子
0430名前は開発中のものです。
2010/02/02(火) 00:42:56ID:TvvdBrjjさっさとゲーム作れるようになりなさい
0431名前は開発中のものです。
2010/02/02(火) 00:43:21ID:MKh+klkF0432名前は開発中のものです。
2010/02/02(火) 00:53:37ID:A9NMST/q0433名前は開発中のものです。
2010/02/02(火) 01:24:32ID:j3kKEgDiそれも親子だろ。子→親の片方向の接続情報というだけの話。
親の認知がないと法的には親子とは認められない(怒)とか
そういう眠たいお話になるなら退散するが
0434名前は開発中のものです。
2010/02/02(火) 01:29:58ID:MKh+klkFいや、タスクシステム自体には必要ないという意味で。。。
0435ハ(ry
2010/02/02(火) 01:34:02ID:iDWjAt2lデータに知ってるも糞もあるかよ。
データはデータ。そこに転がってるだけの単なるメモリブロック以上の解釈は必要ないだろ。
データに命を吹き込むのが制御構造、つまりプログラムなわけで、
プログラム中の自機と自弾を制御している箇所にそれぞれの在り処が分かればそれでよい。
自弾に自機のポインタを突っ込むことはあるだろうが、
それはそれらを処理するプログラム(関数)から、どの弾がどの機体のものか判別できるように、
便宜上突っ込んだってだけで、単に「そう実装した」っていう以上の意味は無い。手抜き実装。
別に別途、機体と弾の紐付けを管理するテーブルを用意したとしても、それはそれでかまわないわけで。
プログラムが自弾と自機のことを知ることが出来ればなんでも良い。
つまり、自機と自弾を知っているべき者はプログラムで、
自弾も自機も各々を知っている必要は無い。
0436名前は開発中のものです。
2010/02/02(火) 01:37:00ID:zzoDV2n30437名前は開発中のものです。
2010/02/02(火) 13:36:47ID:TD3K/R3K恥ずかしいから出てくるなよ
0438名前は開発中のものです。
2010/02/02(火) 13:54:24ID:mL4O4dASと思ってたけどただの基地外隔離スレだったのか。
0439名前は開発中のものです。
2010/02/02(火) 14:13:33ID:TD3K/R3K関係なくね?
0440名前は開発中のものです。
2010/02/02(火) 14:22:46ID:jC7RnYPZ曖昧な名前しか付かない単位でやりくりするのはいつでも糞仕様。
0441名前は開発中のものです。
2010/02/02(火) 15:20:03ID:TD3K/R3KさすがOOPを否定する超人だけあって凡人には理解できない
0442名前は開発中のものです。
2010/02/02(火) 16:26:13ID:zzoDV2n30443名前は開発中のものです。
2010/02/02(火) 18:55:31ID:bErugn9a凄腕のアンチさんでしょ。どう見ても彼は引数君クラスだね
0444名前は開発中のものです。
2010/02/02(火) 19:29:20ID:bErugn9a>俺の場合自弾は自機から離れた瞬間自機とは赤の他人としてたわ
え?赤の他人って具体的にどういう状態なのそれ?
いくらなんでも弾の出自・所属を知る手段がないなんて話じゃないよね?
0445名前は開発中のものです。
2010/02/02(火) 20:04:09ID:jC7RnYPZ>>442
____
/∵∴∵∴\
/∵∴∵∴∵∴\
/∵∴∴,(・)(・)∴|
|∵∵/ ○ \|
|∵ / 三 | 三 | / ̄ ̄ ̄ ̄ ̄
|∵ | __|__ | < うるせー馬鹿!
\| \_/ / \_____
\____/
0446名前は開発中のものです。
2010/02/02(火) 20:05:13ID:zzoDV2n3自弾リストが出自・所属の代わりになるのかな
0447名前は開発中のものです。
2010/02/02(火) 20:24:48ID:bErugn9aそのリストの全要素は出自・所属がコード上で決定してるから
各要素が出自・所属情報を持つ必要が無いというだけの話で
コード上では親子として扱われてる
0448名前は開発中のものです。
2010/02/02(火) 20:52:49ID:rRkqKnAN0449名前は開発中のものです。
2010/02/02(火) 21:15:54ID:bErugn9a>>447続き
だから親子関係も糞もないという話にはならねーだろっつーこと。
例えばツリー状コンテナ(内部収納でも外部収納でも可)内の配置で
(動的な)親子関係を表現されてなくとも、コード上で記述された
(静的な)親子関係というものがそこにはあるでしょと
0450名前は開発中のものです。
2010/02/02(火) 22:47:32ID:b//H5lcGありがとう。
でも、グループで管理されてる弾は、ひとつひとつは単発の弾として扱いたいので
普通の弾クラスを継承して、グループ管理者への参照を持つ弾とするのかな。
いいのかなこういうの。
ていうか、弾ごときにクラスとか作ったりするのって普通?
何が普通かももうわからんくなってきた
0451名前は開発中のものです。
2010/02/02(火) 23:21:35ID:rRkqKnANは?なにをいっているのか本当にわからない
0452名前は開発中のものです。
2010/02/02(火) 23:30:21ID:PKtd/uOj付ける薬ねーな
0453名前は開発中のものです。
2010/02/02(火) 23:33:54ID:PKtd/uOj>>450
それでいいんじゃね?
0454名前は開発中のものです。
2010/02/02(火) 23:35:18ID:rRkqKnAN弾の発射にどうやったら自機と弾とで親子関係なんてできんだよ
マジで意味不明w
ためしに聞いてみるけど
自機からシーンの弾発射クラスに弾発射のリクエストもらうような実装だと
親子関係ってできるの?これだとできない?
それともこの実装でもできることなの?
0455名前は開発中のものです。
2010/02/02(火) 23:43:27ID:PKtd/uOj>出自・所属
とやらが表現されてるって>>446は言ってんだろ?
出自・所属とやらが表現されてて親子関係も糞ねーってどんな状況だよ
論理的におかしいだろ。おかしくねーってんなら説明してみ?
0456名前は開発中のものです。
2010/02/02(火) 23:57:10ID:rRkqKnANコードの親子関係はあるってどういう意味なん?
0457名前は開発中のものです。
2010/02/02(火) 23:58:53ID:TvvdBrjj0458名前は開発中のものです。
2010/02/03(水) 00:01:09ID:TvvdBrjjロジックの中で親子関係が表現されてるか
というだけのような
0459名前は開発中のものです。
2010/02/03(水) 00:03:10ID:rRkqKnANいや親子関係なんてまったくねーの
まったくねーのにあるとか言い出してる人がいるから
なんで?って聞いてるのがいまの俺の状況
なんでもインスタンスのことじゃなくてコード(?)のことらしい
0460名前は開発中のものです。
2010/02/03(水) 00:07:25ID:U22bVF1zID:rRkqKnAN
この人誰?ID:zzoDV2n3と同一人物なの?怖い
■ このスレッドは過去ログ倉庫に格納されています