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


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

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



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

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/

147 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 01:04:31 ID:cn84NiHO]
>>121
>基本的に雑魚敵Aが雑魚敵Bを殺す現象ってのは
>雑魚敵Aの中の処理でも雑魚敵Bの中の処理でもないでしょ?
>つまり雑魚敵ABに書くべき処理ではない

YES

>それらの関連、つまりAxB、AxC、AxD、BxC、BxD、CxDの関連は全部シーンクラスに書くべきじゃないのかな?

シーンでも神でも何でもいいけど、ゲーム世界の物理現象の調停者wが
介在し、結果を双方(作用する2体)に通知するというのは全くもって普通
珍しくない

148 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 01:06:44 ID:lLkuERdr]
ていうか目をさませ
もしオブジェクトが20種類いてそれぞれが関連をもつとしたら
少なくとも
a=オブジェクトの状態の数の総和
aC2(aの中から2つ選んだときの重複のない組み合わせだっけ?)
の数だけ処理を書かなきゃいけないことには
どう組んであろうが変わりはないんだぞ

>>147
なんのメリットがあってそんなわかりにくい書き方をするんだ
無駄だろ

149 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 01:09:32 ID:lLkuERdr]
あ、aC2じゃ同じオブジェクト同士が抜けてるなw

150 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 01:10:08 ID:XPRCk6pD]
>>145
重力をクラス化するのは個人の趣味だろうが、
使いまわせるかどうかは怪しいな。

細切れの小さなクラスが1000個ぐらいあって、
それぞれにそれぞれが関係しあって一つの生態系をなし、
結果としてゲームになっている・・・とか。
そういうのって想定外の仕様変更には弱いからなぁ。
まぁゲームの方向性にも寄るのだろうが。

151 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 01:13:32 ID:cn84NiHO]
>>148
ゲームワールドをゲームエンジン内部で時間発展させてるからさ
衝突イベントでユーザー定義のコールバック関数が呼ばれるやつだ

152 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 01:14:32 ID:UFXAc++2]
>147
普通に考えてそれか。

じゃ俺も普通に考えてみるかな。

雑魚敵Aが雑魚敵Bを攻撃して殺す場合、Aは攻撃判定用不可視オブジェクトXを作成する。
BにはXに対する応答のみ、つまりXに当たったら死ぬ、という処理を書く。

攻撃判定用不可視オブジェクトを必要に応じて複数作り、それぞれ攻撃する側はそれを作成し、
攻撃を受ける側はそれに対する応答処理を書く。

シーンクラスには、雑魚敵コンテナと同じレベルで攻撃判定用オブジェクトのコンテナを追加して、
そこで相互の判定をする。

153 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 01:22:50 ID:lLkuERdr]
>>151-152
いや、だから全然わかってねぇな
なんかお前等変な組み方してるけど
関連の処理を仕様である分、全部書かなきゃいけないことは変わらないんだろ

なんでわざわざ間になんか挟むの?
なんか得になんの?金もらえんの?
素直にシーンオブジェクトに必要な数だけ処理かけよw
何をどうしたくてそんな複雑な仕組みにするんだw

オブジェクトXなんていきなり見てお前のそれ誰が理解してくれるんだよ>152
どうせドキュメントもかかねぇしよまねぇだろ
っていうか手間増やしてるしw

154 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 01:26:57 ID:XPRCk6pD]
>>152
不可視オブジェクトXの受け渡しは誰が行うんだ?

155 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 01:30:03 ID:lLkuERdr]
ちなみに俺はオブジェクト指向原理主義者であると同時に
C++をはじめとするオブジェクト指向言語が大嫌いなんだ
だってなんのメリットもねぇよこの言語ども・・・w
だってよ・・・処理が集中・複雑化するのってシーンクラスみたいなところであって
別に個々にオブジェクト単位にできる部分は誰も苦労してねぇよマジで

ってみんなにはないしょだよw

ってところで>>147につけたレスは内容まちがってたな俺
すまんこ



156 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 01:30:17 ID:NuBn44S3]
>153
> なんでわざわざ間になんか挟むの?

雑魚敵が増えた時の修正が少なくてすむ。
攻撃判定オブジェクトを間に挟むことで、複数種の雑魚敵が同属性の攻撃だしても、一つの攻撃判定オブジェクトとの
関連処理に還元できる。


157 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 01:32:09 ID:vE7+xmqT]
>>150
使いまわすってのはコード的にって事ね

数が多い場合は面倒くさいけど一個一個やっていくしかないなぁ
上位概念のオブジェクトを作れるんであればいいけど
STGでいうなら弾 - 衝突 - 敵 では無くて 自機 - 弾判定 - 敵みたいに

158 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 01:36:16 ID:cn84NiHO]
>>152
>Aは攻撃判定用不可視オブジェクトXを作成する。

そう。AABBとか、高速飛翔するならカプセル、線分を空間上に射出するわけだ
Xがそのうちどっかのバカに命中(得点ゲット)したときの通知が欲しけりゃ
おまえらの大好きなオブジャーバーパティャーンでXにAを登録するやつだ
subjectはX。observerはA

>BにはXに対する応答のみ、つまりXに当たったら死ぬ、という処理を書く。

まぁ、何かが自分に衝突したら呼ばれるコールバック関数(オブジェクト)を
登録してるわけだから、その中でユーザー独自の死ぬ処理を入れるわけだ

炎を吹いて墜落するなり、爆発四散するなり好きに振舞え

159 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 01:37:24 ID:lLkuERdr]
>>156-157
>雑魚敵が増えた時の修正が少なくてすむ。
だからならないって
必ず仕様の分だけ処理かかなきゃならないんだよ
(それが汎用デフォルト処理に挿げ替えられるかどうかは別として)

>使いまわすってのはコード的にって事ね
コード的なんて気にすんなマジで
関連がいっぱいになると無駄に共通化した処理が必ず邪魔になる
30回コピペして終わる程度の使いまわしなら30回コピペする気でいろ
そのぐらいでちょうどいい

160 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 01:38:36 ID:XPRCk6pD]
>>155
いや確かにそのとおりだと思う。
ただ、シーンクラスみたいなところに処理が集中するのは、
ゲームにオブジェクトとオブジェクトの関係が多いからだと思う。
一般アプリやツールは、リソースの管理がメインなので、
オブジェクト指向も役に立つのだろう。

161 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 01:39:17 ID:dNGvkNLd]
ID:lLkuERdrはド素人だろ。こんなクルクルパーは相手にするだけ無駄。

162 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 01:43:47 ID:NuBn44S3]
>159
> >雑魚敵が増えた時の修正が少なくてすむ。
> だからならないって
> 必ず仕様の分だけ処理かかなきゃならないんだよ

新規雑魚敵が今までの他の雑魚敵と同じ攻撃を出すのなら、それと同種の攻撃判定オブジェクトを
作成するだけで終了。

オマエのやりかただと、新規雑魚敵と既存雑魚敵全ての関係について処理を全て一つ一つ書くまで終わらない。

163 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 01:45:32 ID:lLkuERdr]
>>160
一般のアプリだって同じだよ〜w
絶対にボタンとかツールバーの処理なんてウンコぐれーだろ
メイン画面の処理の強烈さといったらない
メインに集中してなくても絶対にどっかに偏るw(ツールウィンドウとか・・・)
部品は平均200行程度しかないのにメインで10万越えで放置されてるソースとか多いぞw

164 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 01:48:10 ID:hO/vsQBF]
>>146
もれなくリストに登録しておいた。

>>121
もしBがAに殺された時、「うわああああ!」って悲鳴を上げるなら、
その悲鳴を上げる動作はBでやるべきだと思う。
AがBを殺した時、「やっほお!!」って喚声を上げるとしたら、それはAが行うべき内容だろう。

シーン(あるいは調停者)がやるべきことと言ったら、Bに対して「お前はAに殺された」ってメッセージを送ることと
Aに対して「お前はBを殺した」ってメッセージを送ること。

なんかややこしくなってきた。
皆えらいわ。


165 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 01:48:40 ID:XPRCk6pD]
>>158
今、攻撃判定用「不可視」オブジェクトXって言ってるのだから、
弾をXにしてしまうと、弾が不可視になって困る。
弾が飛ぶってのなら、弾は普通のクラスにすべきだろう。
で、弾と雑魚敵Bの間で攻撃判定用不可視オブジェクトXをやり取りする・・・と。

なぜインターフェイスでやらないのか。攻撃判定用オブジェクトとか馬鹿げてるよ。



166 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 01:58:57 ID:lLkuERdr]
>>162
>オマエのやりかただと、新規雑魚敵と既存雑魚敵全ての関係について処理を全て一つ一つ書くまで終わらない。
基本的にはそうだと思ってるし、そうでなければおかしいと思ってる
第一、お前が書かない処理はどうなるんだ?
プログラマならこれが答えられなければダメだろ?

それとお前がしてるのはあくまで仕様の話であって設計の話ではない
決まっていない仕様をむりやりプログラムの仕組みで解決しようとしている
必ずすべての組み合わせ分の関連を把握するべき
その上で共通な処理を共通であるように書いたらいい
(デフォルトを「何もおきない」としたら何も書かなければいい)

ちなみに俺はオブジェクトごと必ず関連をすべて書き出している
雑魚敵Ax雑魚敵BがいたとしてAのステータスが3種類、Bのステータスが2種類だとしたら

   B1 B2
A1 S1 S2
A2 X  X
A3 X  X

X はなにもおきない
S1は爆発
S2は押される

とかねw地道にw実際はもっとでかくて多いぞwゾッとするぐらいな
例えばステータス1から2にうつるときのステータス1−2が問題になったりねw
書き出してるっていってもそこまで明確でもないんだよね、それでも見える分ぐらいはやるべきだと思ってる

167 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 02:00:43 ID:NuBn44S3]
>165
不可視ってつけたのはちょっと余分だったかもな。別に可視でもいいんだ。STGの場合は、
弾という可視の攻撃判定オブジェクトを介して敵と自機が攻撃しあってるわけだ。

例えば格闘ゲームでパンチなりキックなりするばあい、攻撃判定の瞬間だけ拳や足先に
不可視の攻撃判定オブジェクトを作るというのはよくやること。この場合は、その攻撃判定
オブジェクトに『威力』なり『方向』なりの属性を与える。攻撃を受ける側は、その『威力』なり
『方向』なりを攻撃判定オブジェクトが当たった位置と一緒に見て、それぞれのダメージモーションを
再生したりダメージ処理に移行する。

波動拳(のような何か飛び道具)なら、可視の攻撃判定オブジェクトになるだけ。

スクリューパイルドライバー(のような何か近接巻き込み方攻撃)なら、巻き込み範囲を持つ不可視の
攻撃判定オブジェを作って、それにそれぞれへのコールバックを持たせる。当たったらコールバックを
よんで攻撃側・被攻撃側それぞれに対してモーション発動なりなんなりをする。


168 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 02:00:43 ID:cn84NiHO]
>>165
>不可視

あ、この部分は見落としていた

>>152は「一瞬で目標に到達するレーザーみたいな攻撃(視覚効果なし)」
を想定してたのかな

169 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 02:02:12 ID:NuBn44S3]
>166
ガンバレw
努力の人はさすがにすごいと思うよw

学習できない無能はもっとすごいと思うけどねw

170 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 02:03:15 ID:XPRCk6pD]
>>162
だから処理纏めたいときは普通はインターフェイスとか使うの。
オブジェクトのやり取りなんかしない。

class X{ public: virtual void hoge()=0; };
class A : public X{ public: void hoge(){} };
class B : public X{ public: void hoge(){} };

for(int i=0; i<tasks.size(); ++i){
X *x = dynamic_cast<X *>(tasks[i]);
if(!x){ continue; }
x->hoge();
}

とかすれば処理は纏められるだろ。
で、どう纏めるかは問題ではなく、これをどこに書くかが問題なんだ。

171 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 02:04:03 ID:cn84NiHO]
>>167
格ゲのAABB当たり判定か。把握

172 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 02:06:52 ID:NuBn44S3]
>170
で、どこに書くの?

間にオブジェクトを介在させる場合は、書くべき場所はひとつしかないけどね。

173 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 02:15:06 ID:cn84NiHO]
>>166
>   B1 B2
>A1 S1 S2
>A2 X  X
>A3 X  X

>X はなにもおきない
>S1は爆発
>S2は押される

あれ。当たり判定表はアリだと思うが…


174 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 02:26:27 ID:XPRCk6pD]
>>172
シーンクラスが良いのではないかということになってる。

>>167
オブジェクトを作るのは、インスタンスを複数にするためであって、
処理を纏めるためではないと思うぞ。

175 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 03:15:44 ID:cn84NiHO]
>>174
シーンが肥え太る?ゲームエンジン(神)が肥え太ってんだよ

肥え太ったゲームエンジン(神)が作りしシーン
その中での現象に関して肥えた神にお願い・お祈り・お伺いするためのインターフェース
これをシーンが提供してる。それだけのことだ

神と交信するためのインターフェース(シャーマン、イタコ)は色々ある
物理エンジンにしかアクセスできないインターフェースとか
どのインターフェースを使えるかはゲームオブジェクト(アクター)によりけり

あとおまえやねうらおじゃない?睡魔に耐えてたらESPが冴えてきたぞ
外れてたらごめんね。もし当たってたら一言言わせろ
あんたさー知りもしない昔の話を捏造してペラペラしゃべってる暇あんなら
一次情報にアクセスしてきっちり裏取れよな
あれじゃネット発のタスクシステム都市伝説の怪文書がまたひとつ増えただけじゃん
松○とドングリだろ。悔しくないのか?足使えよ足
ネットとか2ちゃんで怪情報かき集めて本書くな



176 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 03:17:17 ID:cn84NiHO]
アンカーミスだ。>>134
ばいばい

177 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 03:31:08 ID:dNGvkNLd]
>>175
横レスですまんが、やねうらおに関しては、
遠藤さんとも面識があるみたいだし、
d.hatena.ne.jp/yaneurao/20090108
吉村さんとも知り合いみたいだし、
d.hatena.ne.jp/yaneurao/20081004
岩谷さんが取り上げるぐらいだし、
d.hatena.ne.jp/yaneurao/20060212
彼は2chなんか端っから相手にもしてないだろう。

自分の説が正しいと思うなら是非どこかのブログで
今回の記事に反論してみてくれ。俺はそれを楽しみにしている。

178 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 03:42:55 ID:lLkuERdr]
今回の記事は魅力ないでしょうよw
前スレでタスク信者が詰まってたところ全部無視だものw

179 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 03:46:47 ID:dNGvkNLd]
俺はweak_ptr使って実装するっての一つにしても為になったがな
まあ、あの記事から何も学べない奴は学習能力がアレなんだろうな

180 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 03:56:42 ID:zBw0rbcy]
ID:lLkuERdrは10年以上プログラムやってて( >>123 )、
C++が使えない( >>125 )ってぐらいだから、まあ、本当にアレなんだろうけどな・・

181 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 04:20:56 ID:lLkuERdr]
>>179-180
あんたが複数IDを使えるのはもうわかってるよ
このスレのはじめのほうでもやってただろ?
でもいいの?
あんた自分より賢い人には絶対にたてつかないクズじゃん
俺なんかに噛み付くと反撃が痛いんじゃない?w

182 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 04:26:54 ID:XPRCk6pD]
weak_ptr とかはもうすでにみんなやってるでしょ。
そこはそんなに。本質とは違うというか。
別にタスクが死ぬごとに各タスクのOnDeleteTask(Task *)がコールされるとか言う実装でもかまわないわけで。
全般にわたって高速化のことしか書かれていないが、そんなの正直どうでも良い。
ってのが感想。

183 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 04:52:05 ID:dNGvkNLd]
>>182
> 別にタスクが死ぬごとに各タスクのOnDeleteTask(Task *)がコールされるとか言う実装でもかまわないわけで。

それは、何かweak_ptrを勘違いしてそうだな・・。

OnDeleteTaskのときに、被参照ポインタをどうやって無効にするんだ?

184 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 04:55:04 ID:dNGvkNLd]
>>181
> あんた自分より賢い人には絶対にたてつかないクズじゃん

それは、俺を他の誰かと勘違いしてねーか

俺はC++わからないとか、デザパタわからないとか、
そんなド素人と話しても得ることがないから、そういう奴とは話さないだけだよ

185 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 05:10:37 ID:XPRCk6pD]
>>183

class my_task : public task
{

task *m_ptask1;

public:

virtual void OnDeleteTask(task *ptask)
{
if(m_ptask1==ptask){ m_ptask1=NULL; }
}

};



186 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 05:15:04 ID:dNGvkNLd]
>>185
ああ、言わんとしていることはわかったし、あんたはまともなプログラマに属すると言えるとは思うが、
そのコードだとオブジェクトの削除はO(N^2)になるよな。

俺の現場ではそんなコードは全然現実的じゃないんだが。
あんたは本当に数万オブジェクトの出てくる規模のゲーム書いたことあるの?

187 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 05:18:34 ID:XPRCk6pD]
ただ、これらの話題で絶対出てくるのが、
オブジェクトのdeleteが、他のオブジェクトの何かの処理の引き金になるのは変だって話。

188 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 05:20:49 ID:dNGvkNLd]
もちろん185の実装は別に間違っちゃいないので、俺の183は発言を撤回する。
185があまり良くない実装だと理解した上で確信犯的にやっているんだろうから。

189 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 05:24:50 ID:dNGvkNLd]
>>187
> オブジェクトのdeleteが、他のオブジェクトの何かの処理の引き金になるのは変だって話。

(そういう議論が発生するのはわかるが)それは、変じゃないだろう。
被参照ポインタの無効化というのは、そもそもそういうものだから。

190 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 05:43:13 ID:XPRCk6pD]
>>186
まぁ10000も出すとなぁ・・・
ともかく、weak_ptrぐらい自前で書けるし、他の方法もあると言いたかった。
つーか、10000もオブジェクト出すって、何のゲームよ。

191 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 05:54:06 ID:dNGvkNLd]
>>190
> ともかく、weak_ptrぐらい自前で書けるし、他の方法もあると言いたかった。

weak_ptrと同性能のものを自前で書くだけでも結構大変だと思うがな。
少なくとも現場のプログラマがやるのは時間の無駄で車輪の再発明以外の何物でもないと思うのだが。

> つーか、10000もオブジェクト出すって、何のゲームよ。

いまどきの3Dのゲームでは、足や手のパーツごとに接触判定を持っていて、それぞれのパーツが
独立していて、それぞれがC++のオブジェクトになってたりするのだが。

192 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 06:30:12 ID:XPRCk6pD]
いや、ま、どういうか。
再発明だろうがなんだろうが、あまりどうでもよくて、
要するに、そういうところで困ってる人はいないだろうと。

余談だが、
そもそも、不正なポインタをオブジェクトが抱え込んでしまっているような状況事態がバグに近いわけで。
昔weak_ptrのようなものを使ったコードも書いたことがあるが、釈然としなかった。
だって、lock出来るときと出来ないときでコードが分岐するなんて、変だ。
そういう仕組みに頼ってると、オブジェクトの所有権がどこにあるのかわからないコードになりがち。
オブジェクトは作ったやつが削除すべきという結論に達したが。。

193 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 06:46:43 ID:dNGvkNLd]
>>192
> そもそも、不正なポインタをオブジェクトが抱え込んでしまっているような状況事態がバグに近いわけで。

そんなことはない。

シューティングで、子分より親分が先に倒されることは普通にありえるだろ?
子分は親分のポインタを保持していてはいけないのか?違うだろ?

そういうとき、どういうコードを書くつもりでいるんだ?コードで示してくれ。

194 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 06:49:26 ID:dNGvkNLd]
>>192
> オブジェクトは作ったやつが削除すべきという結論に達したが。。

これも全くのでたらめ。

シューティングでボスがザコをどんどん生成するときのことを考えてみてくれ。
ボスはザコより先に逝っちまうことがあるだろ。

ザコから参照されているからボスはいつまでもオブジェクトを解放しないのか?違うだろ。

オブジェクトの所有者は、そのオブジェクトを生成した奴(ボス)にあってはいけないんだ。
もしそう設計しているならそれは設計上の誤り。



195 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 07:11:16 ID:XPRCk6pD]
>>193
>シューティングで、子分より親分が先に倒されることは普通にありえるだろ?
>子分は親分のポインタを保持していてはいけないのか?違うだろ?

>そういうとき、どういうコードを書くつもりでいるんだ?コードで示してくれ。

親分も子分も、シーンクラスが管理すればよい。

>シューティングでボスがザコをどんどん生成するときのことを考えてみてくれ。
>ボスはザコより先に逝っちまうことがあるだろ。

なぜボスがザコを生成する必要がある?
シーンクラスがザコを生成、削除すればよい。

Cのmallocにはweak_ptrのような仕組みは用意されていないが、世のプログラムはちゃんと動いている。
windowsのウィンドウハンドルにもweak_ptrのような仕組みは用意されていないが、ちゃんと動いている。
なのにゲームではweak_ptrに頼らざる得ない状況になるというのなら、それは設計が悪いからだろう。
だけど止めはしない。weak_ptrをつかってゲームを書いてみるといい。きっと後悔するから。



196 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 07:23:17 ID:dNGvkNLd]
>>195
> 親分も子分も、シーンクラスが管理すればよい。

うわ。それはひどい。なんか、またド素人と話している予感。

子分を生成したくなるタイミングは親分が親分のロジックにおいて決定するのだから、
あんたの作りでは、親分がシーンクラスに対して子分の生成を依頼するコードが必要になる。
どんな依頼コードを書くの?それ書いて見せてくれないか。

> windowsのウィンドウハンドルにもweak_ptrのような仕組みは用意されていないが、ちゃんと動いている。

何を勘違いしているのか知らないが、WindowsのHANDLEもweak_ptrも目的は全く同じなんだが。

197 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 07:27:41 ID:Smy/5DJP]
シューティングでボスとザコが居て、ボスとザコが何故か紐で繋がってたとする。
紐の管理はボスとザコのどちらですべきか?

答えはどちらでもなく、
ボスとザコと紐を管理するボス戦クラスを作って、全部纏めてそっちで管理すべき。

198 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 07:28:38 ID:dNGvkNLd]
>>195
> ゲームではweak_ptrに頼らざる得ない状況になるというのなら、それは設計が悪いからだろう。

「ゲームではweak_ptrに頼らざる得ない」なんて俺は言ってないからな。

weak_ptrを使えば簡単に書けるものを、馬鹿が車輪の再発明したり、weak_ptrを知らないがために
複雑な設計になっていたりすると言ってるだけなんだが。

199 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 07:37:27 ID:dNGvkNLd]
>>197
> ボスとザコと紐を管理するボス戦クラスを作って、全部纏めてそっちで管理すべき。

まあ、それは否定しないが、「そっちで管理すべき」の「管理」の方法は?

200 名前:ID:XPRCk6pD mailto:sage [2009/02/07(土) 07:40:43 ID:Smy/5DJP]
ID変わってしまったけど、俺がID:XPRCk6pDな。

>>子分を生成したくなるタイミングは親分が親分のロジックにおいて決定するのだから、
>>あんたの作りでは、親分がシーンクラスに対して子分の生成を依頼するコードが必要になる。
>>どんな依頼コードを書くの?それ書いて見せてくれないか。

依頼などしない。直接シーンクラスに書く。直接がいやなら、子分と親分を管理する大親分クラスを作って
そっちで管理する。

>>何を勘違いしているのか知らないが、WindowsのHANDLEもweak_ptrも目的は全く同じなんだが。
ハンドルは同じ値が再利用される可能性もあるわけで。

201 名前:ID:XPRCk6pD mailto:sage [2009/02/07(土) 07:50:35 ID:Smy/5DJP]
>>199
>まあ、それは否定しないが、「そっちで管理すべき」の「管理」の方法は?
好きにすれば?
複数のクラス同士が双方向にコミュニケートするような状況さえ回避できれば、
あとは考えることなんてないね。

202 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 07:55:22 ID:dNGvkNLd]
>>200
> 依頼などしない。直接シーンクラスに書く。直接がいやなら、子分と親分を管理する大> 親分クラスを作ってそっちで管理する。

まあ、それでも組めなくはないのであんたが実際にゲームを書けないとは
言うつもりはないが、しかし、あんたは、大きなゲームを作ったことがなさそうだな。

オブジェクトが無数に出てきて広大なフィールドを歩けるタイプの
汎用的な3Dエンジンなんかを作れば俺が言ってる意味がわかると思うんだが。

まあいいや。お互い意見が対立しているわけでもなさそうなので、俺はもう寝る。

203 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 08:17:52 ID:lLkuERdr]
>>200
俺もシーンクラスに書く
その設計でいいと思うぜ

ID:dNGvkNLdは普通に頭悪いだろw
質問攻めしてるけど明らかに予想外の答えにうろたえてるだろw

204 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 08:28:02 ID:dNGvkNLd]
>>203
C++すら使いこなせないド素人は黙ってな

205 名前:ID:XPRCk6pD mailto:sage [2009/02/07(土) 08:57:06 ID:Smy/5DJP]
>>202
そういうコテコテしたプログラムも書いたことがあるが、今では間違いだったと考えている。
少し前までは私も「オブジェクトは自立しているべきであり、周りの状況を判断し、自分で行動すべきだ」、
と考えていた。私もまだ若かったし、C++がそういう設計思想であることも手伝って、そういう勘違いをした。
作ってみたらうまくいかず、考えてみたら、オブジェクト同士の関係を見落としていることに気がついた。
ゲームはオブジェクト同士が関係しあって初めてゲームになる。
そこを重点的に記述できないことには楽しいゲームを作ることは難しい。
昨今の大作ゲームがどことなく味気ないのもそのあたりが原因では?



206 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 09:17:54 ID:dNGvkNLd]
>>205
> 昨今の大作ゲームがどことなく味気ないのもそのあたりが原因では?

それは、全然的外れだろう。

本当に現場のことは何も知らないんだな。

せいぜい同人ゲーでも作ってなよ。

207 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 09:21:58 ID:lLkuERdr]
>>206
苦しくなると話の趣旨と違うところだけつまんで
人格批判からレスの全部否定に入るっておきまりのパターンなのなw

208 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 09:29:38 ID:dNGvkNLd]
>>207
C++すら使いこなせないド素人はこなくていいよ

209 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 10:06:26 ID:iAQtrtU5]
c++使わなければどうでもいい話題ばっかだな


210 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 10:18:48 ID:hO/vsQBF]
>>192
deleteされたポインタを直接参照しているオブジェクト全てにその旨通知するように設計したいと思った。

>>193
子分::親分からの指令(親分へのポインタ) みたいなメソッド作って、
子分は親分からの指令があった時だけ、親分へのポインタを参照しながら協調動作すればいいんじゃね。
子分が親分のポインタを持つ必要は無いよ。


>>197
ボスと雑魚は紐なんか無視して、それぞれ独立に動いていい。
紐は自分のグラフィックを表示しつつ、ボスと雑魚に対して「これいじょう伸びないよ」的な力(or メッセージ)を与える。
それ以外の点では、紐は普通の登場キャラと同じような扱いで良いと思う
シーンクラスに何か特別なことを書く必要なんて無いよ。


211 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 10:51:31 ID:lLkuERdr]
>>210
どっちにしてもシーンみたいなクラスあったほうがいいじゃん

212 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 11:11:23 ID:lLkuERdr]
>子分は親分からの指令があった時だけ、親分へのポインタを参照しながら
子分のクラスなんだから子分の処理だけで完結したいと思わないんか?
カプセル化っていうの?

213 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 11:13:45 ID:hO/vsQBF]
>>211
うん、あった方が良いと思う。
実際にシーンクラスが何を担当するのかはここに居る人それぞれが全く違うイメージを持ってそうだけど。

214 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 11:47:33 ID:hO/vsQBF]
>>212
子分は親分と協調し、親分は子分と協調するのだから、
お互いに通信しあう仕組みは必要で、完全に分離するのは不可能だと思う。

ふと思えば、俺の方法だと、子分が死んだことを親分はどうやって感知するんだって思ったw


215 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 15:40:54 ID:NuBn44S3]
>174
おまえはタスク=ゲームオブジェクト派か。
プログラミングなんて、正しく動くなら何やったっていいんだよ。くだらない価値にこだわってると
伸びないぞ。



216 名前:名前は開発中のものです。 [2009/02/07(土) 16:25:49 ID:21jTa7Aw]
シーンクラスって作る価値があるのかね
シーンってメニューやスコアやRGPならフィールドや戦闘なんかのことだろ
一つのゲームに必要なシーンなんて十もないんじゃないか
そしてそれぞれのシーンに共通点なんてほとんどない
共通しているのはデータ取得メソッドみたいなのだけ
各シーンは遷移するけどstateパターンを適用しても
メリットはほとんどない
そんなどうでもいい部分を考えている暇があるなら
うんこでもして寝てしまえ
このうんこ野郎ども

217 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 18:36:36 ID:vE7+xmqT]
>>216
2個以上なら作る価値はあると思うがね

218 名前:名前は開発中のものです。 [2009/02/07(土) 19:39:16 ID:21jTa7Aw]
なんでもできちゃうクラスみたいなのを作るからバカになる
つけちゃえばぱわーあっぷみたいなガキの発想じゃあるまいし
なんでも作ればいいってもんじゃない
二つしかないクラスに親クラス作ってクラスが三つになって
すごいんだぞーとかバカじゃねーの
ばーかばーかしんじゃえ
そんなとこに柔軟性持たせる暇があったらうんこでもしてろ
うんこうんこ

219 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 19:48:57 ID:B+kDbAoq]
なんでもできちゃうクラスみたいなのを作るからバカになる
つけちゃえばぱわーあっぷみたいなガキの発想じゃあるまいし
なんでも作ればいいってもんじゃない
三つしかないクラスを統合してクラスが二つになって
すごいんだぞーとかバカじゃねーの
ばーかばーかしんじゃえ
そんなとこに柔軟性持たせる暇があったらうんこでもしてろ
うんこうんこ

220 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 20:03:53 ID:lLkuERdr]
>>214
だからシーンに書けよw

221 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 20:08:26 ID:VeizsAKm]
シーン。。。

222 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 20:10:02 ID:qvO9PNvj]
>>219
でもよ、
「あれもしなきゃ、これもしなきゃ」って状況で、修正作業が発生して、
2回だけでも同じ修正作業をやるのって、憤慨「ウガアーゥアーッ!!」状態にならね?
C++使ってるなら、template(汎用クラス)の親クラスは使わな損々。

223 名前:名前は開発中のものです。 [2009/02/07(土) 20:22:54 ID:21jTa7Aw]
シーンをまたがって修正しなければならない項目なんてほとんどないから
考えるだけ無駄
メニューと戦闘のシーンでの共通項目なんてあるのかよ
メニューと戦闘で使う共通キャラのモーションがおかしいから修正だぜ
サブクラスにしておいてよかった俺天才超天才
なんて場面は百年に一度しかねーよ
どうしても作りたければ似たようなシーンで共通の親クラス持てばいい
何度も言う、そんなくだらないコードを書く暇があるなら
うんこしているほうがまし
うんこをしていると新しいアイデアが生まれると過去の偉人も言ってた

224 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 20:43:13 ID:hO/vsQBF]
>>223
>共通項目
それはつまり、タスクシステムのことだと思うよ!

225 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 20:47:22 ID:B+kDbAoq]
>>222

親分クラスと子分クラス間の通信をシーンクラスが受け持つなら
シーンクラス1箇所で修正済むんじゃない?

>>223
シーンクラス否定したり肯定したり、立場がワカンネ
もしかして否定したいのって「シーンクラス」じゃなくて
「抽象化されたシーンを統一的に管理するクラス」?



226 名前:名前は開発中のものです。 [2009/02/07(土) 20:47:40 ID:21jTa7Aw]
すげぇぜタスコシステム
共通項目がない、なんの関係もなかった複数のオブジェクトを
無理やり関連付けやがった
やべぇな、俺には真似できねぇぜ

227 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 20:48:43 ID:qvO9PNvj]
「シーン=メニューと戦闘」の入出力の具体が不明だが、
ウンウンきばっている段階(=設計の段階)で、
なんであれ抽象化できる部分はなるべく抽象化しておくんじゃねえの?

期限が決まっている状況であれば、なおのこと、それくらいの安全策は取るよな。

228 名前:名前は開発中のものです。 [2009/02/07(土) 21:01:07 ID:21jTa7Aw]
>>227
一気に食おうとするな分けろ
夏休みの宿題なんてものは毎日少しずつやるもんだ
共通点なんて無理に抽出してもそれはオナニーだ
シーンごとに分けろ、目標を分けろ
メニューだけ作って完成させろ
戦闘だけ作って完成させろ
最後に適当にくっつければいいだけだ
全部同時に作って完成させる能力もないくせに
一度に全てをこなそうとするな
俺らは凡人だから、凡人にふさわしいやり方がある

規模の増大が複雑さのインフレを招くのは常識
それを回避するためにそれぞれの規模を抑えて
できるだけ分離して開発するんじゃねーか
完成した複数のシステムをできるだけ触らないようにしてくっつければ
それでいいんだよ
俺らは天才じゃねーから
スーパー天才のやねうらお連中の言うことなんて聞かなくてもいいんだよ
俺らは凡人だ、凡人には凡人にふさわしいやり方がある

そして余った時間を使って
スーパーウンコタイムを楽しもうじゃないか
存分に

229 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 21:01:45 ID:B+kDbAoq]
>>227
そして実装も終盤に差し掛かった段階で唐突に仕様変更が入り
抽象化して見えなくしておいた情報を使うために苦しむんですね
わかります

230 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 21:05:45 ID:qvO9PNvj]
>>229
仕様変更に柔軟に対応できるような抽象化を見極めるのもワザのうち。

231 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 21:09:34 ID:lLkuERdr]
そんなのするから無駄に時間がかかるんだよ
って俺の10年以上の経験が言ってる

232 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 21:13:12 ID:B+kDbAoq]
>>229
そう、ワザ要るよね
初めてのゲームジャンルとかだとまだワザが足りないから完全には見極め切れない
全く抽象化しないか本当にかるーくしとく位でちょうどいい

233 名前:232 mailto:sage [2009/02/07(土) 21:14:49 ID:B+kDbAoq]
まちがえた
>>230

234 名前:名前は開発中のものです。 [2009/02/07(土) 21:22:28 ID:21jTa7Aw]
どこにでもいるんだよ
将棋やってるのに穴熊を囲うことだけを考えて
大局を見ずに
穴熊が出来たと思ったら既に敗戦濃厚な戦局になっていたという
そういうおばかさんが

タスクシステムにこだわったところで
3Dを出来るようになるというわけではないということを
超天才が身を持って教えてくれた
この教訓を未来に生かそうではないか諸君
そしてうんこを私に

235 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 21:25:18 ID:qvO9PNvj]
亀レスだが・・・

>>159

俺も、タスク間通信は、独立した当たり判定モジュール(クラスで実装)に任せている。
でもなあ・・・。

>関連がいっぱいになると無駄に共通化した処理が必ず邪魔になる
>30回コピペして終わる程度の使いまわしなら30回コピペする気でいろ
>そのぐらいでちょうどいい

言っていることはすごく分かるんだが、俺の場合、共通化する努力は続けているって感じだな。
ゲーム中のキャラの相互作用なんて、大体が抽象レベルでは、似通ったプリミティブな交差判定に落ち着くから、
共通化できるところは共通化しておくと、使い回しが利くんだよな。もちろんキャラの魅力は半減するが。
未出のメンバ構成のプロパティを持つキャラを追加する場合は、新規に作らざるを得ないよね。

当たり判定の共通化を突き詰めたゲームってなんだろな?
一昔前に乱発されたベルトコンベアアクションみたいなものか?
最終成果品としては、単調な作業を強いられるゲームだったよな。
最近の3Dゲーも、相互に影響しあうロジックが単調なのが多いな。



236 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 21:54:35 ID:WyIbglrc]
綺麗だと思ったタスクシステムの実装って関数型言語で作られたプログラムくらいしかないな
現行のC++やJavaは言語そのものがスマートじゃないもの…
いくら頑張っても泥臭さは残るし、作った本人が胸を張ってもやっぱり泥臭さは残ってる

アンチがいるのは理想論に近い良い手本がそこらに転がってないせいもあると思うし、あまり邪険にしないでやってほしい

237 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 23:03:54 ID:36NfOdFl]
クックック。世の中には手段の為なら目的を選ばないどうしようもない奴がいるんだよ。

諸君。私はタスクシステムが好きだ。
(以下略)

238 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 23:10:25 ID:B+kDbAoq]
話題循環に飽きた俺が勝手に今後のスレ行き先予想

1.現状維持
 アンチタスクシステム派がタスクシステム派の不備を指摘し続ける。
 ずっとアンチのターン。あと10〜15年位?(根拠は無い)
2.タスクシステム派勝利
 タスクシステムをそのまま維持した上で弱点を補強するような改善策が
 どっかからか出てきてアンチタスクシステム派が納得してスレから去る。多分無い。
3.「タスクフレームワーク総合part5」になる
 タスクシステムの利点?であるデバッガ等々の外部ツールを必須装備とし、
 その作り方を初心者に優しく指南。
 利点強化によるごり押しでアンチを一掃。多分無い。
4.「タスク系総合part5」になる
 アンチ勝利。part1から欠陥があると指摘され続けても「そこはお前の技術力が足りないせいだ」
 的なコメントばっかり続くのを見て初心者が冷めた。
 ただ、既存のタスクシステムは捨てるものの、

   「タスクシステムもタスクフレームワークもだめぽorz
    でもMTフレームワークがあるさ!」
   「タスクシステム総合=task system総合=タスク系総合だ。文句あっか」

 みたいな流れで「タスク」という概念の在り方・使い道を模索する方向に。
 マルチコアCPU当たり前になってきてるしね。
5.スレから人がいなくなる
 不況で、、、とか、
 ゲーム製作より動画製作のがおもしれぇw、とか

いちアンチとしては4あたりに行ってくれると気兼ねなく去れるんだ。
っていうかむしろその辺議論したいんだ。

239 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 23:16:17 ID:Smy/5DJP]
しかし、タスクシステム自体は描画順の管理という大仕事があるから必要だよなぁ。

240 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 23:22:01 ID:Smy/5DJP]
というか、アンチ派はどうやって描画順を管理しているのか。

241 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 23:23:10 ID:Qq/VuJ9k]
描画順って何だ
3DならZバッファで終了とかじゃねえの

242 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 23:24:20 ID:dNGvkNLd]
>>241
3Dでもエフェクトや半透明は描画順が必要だよ。
あんた、3Dのまともなプログラム、やったことなさそうだな…。

243 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 23:27:28 ID:Qq/VuJ9k]
>>242
なるほど把握した
トン

244 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 23:35:33 ID:UFXAc++2]
>238
> いちアンチとしては4あたりに行ってくれると気兼ねなく去れるんだ。

素直に『アンチタスクシステム総合スレ』でも立てたらイイジャナイか。

245 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 23:38:11 ID:UFXAc++2]
>240
その辺は描画エンジンが描画順を制御するようにしてる。
タスク(というかゲーム内の各要素)の更新順と、それらの描画順は正直関係ない。



246 名前:名前は開発中のものです。 mailto:sage [2009/02/08(日) 00:29:39 ID:+GgCMkwp]
>>245
タスク(というかゲーム内の各要素)と描画エンジンが扱う各要素のクラスは共有?

247 名前:名前は開発中のものです。 mailto:sage [2009/02/08(日) 00:48:21 ID:9yKZ63FM]
>>246
>>245ではないがそんな無駄な仕組みにはしないほうがいいだろ






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

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

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