トップページgamedev
1001コメント529KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2009/02/01(日) 12:38:10ID:rVEgp4cM
タスクシステムについての議論、相談、質問、雑談などのスレです

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/
0082名前は開発中のものです。2009/02/06(金) 00:09:26ID:wGKtGJau
>>81
>>12=スレ主=基地外が前スレで判明している。触るな危険。
0083名前は開発中のものです。2009/02/06(金) 00:12:08ID:H1z7Q+5u
>>81
引数のない関数ってどうよ?
お前、自分が使ってみろって言われたときのこと考えろよ
0084名前は開発中のものです。2009/02/06(金) 00:15:46ID:4xm8YBEc
>83
おまえvisitorの意味判ってないだろ。
0085名前は開発中のものです。2009/02/06(金) 00:18:56ID:H1z7Q+5u
>>84
関係ないね
大事なのは引数で渡すことによって関数無いで変更される恐れのある
インスタンスを明確にすること
お前のような素人はデザパタの前にC言語でも勉強しろ
なにせ引数もよくわからずグローバル変数で渡してるぐらいの低知能なんだからなw
0086名前は開発中のものです。2009/02/06(金) 00:19:44ID:4xm8YBEc
>85
やっぱり判ってないのかw
0087名前は開発中のものです。2009/02/06(金) 00:20:01ID:1vVyPOFv
釣りにしか見えない
0088名前は開発中のものです。2009/02/06(金) 00:20:20ID:H1z7Q+5u
>>86
引数の有効性はわかったかね?
0089名前は開発中のものです。2009/02/06(金) 00:23:00ID:H1z7Q+5u
>>86
前スレよろしく
今回も俺が特別に教えてあげよう

上のupdate()は関数内で何にアクセスしてるのかまったくわからないが
下のupdate(jiki・・・)はアクセスしてるインスタンスを引数に絞ることができる
(グローバル変数を使わないという規約を守れば)
これによってデータの安全性が保障されるというわけだよ
君のようにコーディングの効率ばっかりとって
引数もわからんような低知能は俺と話すようなレベルにないということがわかったかね?
0090名前は開発中のものです。2009/02/06(金) 00:26:08ID:ux7UjNgY
>88
ここまでムキになるということは、>12=スレ主ってヤツかwww
修正コストとか考えたこと無いんだろうなぁ。幸せなヤツw
0091名前は開発中のものです。2009/02/06(金) 00:26:51ID:1vrKKSIM
ID:H1z7Q+5uが噂のスレ主だな
一人だけ極端にレベルが低いのにその自覚なし
0092名前は開発中のものです。2009/02/06(金) 00:28:03ID:Cfc6lR6P
こらこら、触るな危険といってるだろうに。
0093名前は開発中のものです。2009/02/06(金) 00:31:12ID:ux7UjNgY
>89
> 下のupdate(jiki・・・)はアクセスしてるインスタンスを引数に絞ることができる

笑っちゃうなwww
ということは、ID:H1z7Q+5uはtaskの種類によって引数が変わることが前提か。
もしかしてtask保持コンテナも別に持つ派なのか?

例えば敵タスクがあったとして、雑魚敵Aと雑魚敵Bが異なるコンテキストを必要とする場合とか
考えたこと無いのか? 雑魚敵Aと雑魚敵Bで最小公倍数的な引数を取るupdate関数をつくったら、
それはID:H1z7Q+5uが>89で言っていることと矛盾するって気づかないのか?
0094名前は開発中のものです。2009/02/06(金) 00:34:26ID:1vVyPOFv
残念なスレ主と遊ぼうのスレはここですか?
0095名前は開発中のものです。2009/02/06(金) 00:52:39ID:nWDkACnD
押すなよ! 絶対押すなよ!
0096名前は開発中のものです。2009/02/06(金) 00:53:38ID:ZPF/rc3n
>>80
その一人開発ってことは趣味の世界の話でいいよな?
プロの一人開発ったってフリーランスという名のプーでもなければ
自分一人の問題じゃねーし、他と折り合い付けないと会社つぶれるしな
>>2ベースのゲロゲロフレームワークなんて誰も使いたがらないから作らないよ

で、趣味野郎でオナニーフレームワーク?これもあんま意味ないよ女子高生
大多数のパンピースペックの趣味プログラマは無難にサクっとゲーム一本
作りあげる方法を模索する
パンピースペックの趣味野郎がオナニーフレームワークとかいうハマリ道に
進んだら大半は生きて還ってこれん。終わり無きライフワークになるだろ
まぁそれはそれで楽しい人生なのかもね。否定はしない

ゲームではなく部品を作ることに情熱燃やして技巧に走って茨の道へ突進して
何年もの歳月をかけて山篭りして誰にも使われないフレームワークを構築する人生
悪くない。でもその結果が>>2ベースのゲロゲロシステムじゃな。成仏できんの?w
0097名前は開発中のものです。2009/02/06(金) 00:59:04ID:1vrKKSIM
96もスレ主じゃね?こいつ本当に頭おかしいんだな。
0098名前は開発中のものです。2009/02/06(金) 01:00:52ID:ZPF/rc3n
引数君と一緒にすんなハゲ
0099名前は開発中のものです。2009/02/06(金) 01:05:33ID:1vrKKSIM
>>98
じゃあ、この残念な引数君にも何か言ってやってくれ
0100名前は開発中のものです。2009/02/06(金) 01:17:02ID:ZPF/rc3n
引数君がアンチタスクだということは知っているが、前スレ終わりごろの
議論の内容がよくわからん
俺は>>2=チンカスゴミカス だと思ってるが引数君とは批判のベクトルが違うようだ
彼は数種類のクラスに共通のインターフェースを与え、共通のコードから呼び出す
というメカニズムを全否定してるのだろうか?だとしたらそれは仮想関数の全否定であり
わけわからん

引数君の主張内容がよく分かってない
0101名前は開発中のものです。2009/02/06(金) 01:25:06ID:1vrKKSIM
>>100
>>12
0102名前は開発中のものです。2009/02/06(金) 01:29:48ID:ZPF/rc3n
あぁ?
0103名前は開発中のものです。2009/02/06(金) 01:34:39ID:1vrKKSIM
引数君の主張なら>>12のリンク先を見れば十分わかると思うんだが、わからないのか?

それとも、あんたも日本語の残念な人か?
0104名前は開発中のものです。2009/02/06(金) 01:39:11ID:ZPF/rc3n
俺は前スレの>>823だ。何なら他の発言も発掘してこようか?
0105名前は開発中のものです。2009/02/06(金) 01:43:50ID:OdnmQxD5
引数君の方がまだ技術に近い話をしてる分マシだな。
もしかして彼はひらしょー氏の言うデータと処理の分離を
超まわりくどく主張しているのかな。
0106名前は開発中のものです。2009/02/06(金) 01:50:49ID:1vrKKSIM
>>104
前スレ823か。

引数君よりは能力的にマシだということはわかるが、説明がくどく、わかりにくい。

俺はこんな内容の薄い、回りくどい説明を読むのはまっぴらごめんなので、さいなら。
0107名前は開発中のものです。2009/02/06(金) 02:08:15ID:EVIE955W
ESP能力に問題があるID:1vrKKSIM は
すべてのアンチタスクがスレ主に見える病気を克服するべき
0108名前は開発中のものです。2009/02/06(金) 02:09:41ID:ZPF/rc3n
超能力能力か
0109名前は開発中のものです。2009/02/06(金) 02:12:05ID:EVIE955W
くっ…。どうして「お前はバカを克服するべき」って言ってくれないの?
内容の薄い、回りくどい指摘を読むのはまっぴらごめんなので、さようなら
0110名前は開発中のものです。2009/02/06(金) 07:38:45ID:RQ4iGJCo
お前等馬鹿は、プログラミングで一番時間がかかるのはどこですか?
と聞かれてコーディングとは絶対に答えないくせに
コーディングの手間ばかり減らすことに執着している
なかなか読めないプログラムってなんだ?
構造が複雑なプログラムじゃないの?
お前等馬鹿は全く逆のことを自己満足のためにやっているオナニストだ
プログラマならせめて理詰めで動けよ
お前等凡人から理性まで抜いたら猿と変わらないだろ
0111名前は開発中のものです。2009/02/06(金) 09:47:48ID:SpEabv2C
>>32
えーと、この人ってイイ歳した何者なの?プロ?パソゲー専門なんじゃない?

>ビデオゲーム黎明期においては、オールアセンブラで書くことが普通だったので、
>std::listのような便利なコンテナがあるわけでもなく、技巧的な方法でstd::list
>みたいなことを実現していただけ

えっえー?この人のいうビデオゲーム黎明期っていつごろのお話なのかな?
70年代?だったらまずZ80アセンブリで>>2を書いてみればいいのに。おかしな人だよ
16bit機時代?intrusiveなコンテナを使った理由がオールアセンブラだから?本当に?

最近は想像だけで昔話を書いても教科書になるのかしら?
どこのゲー専の子が犠牲になるのかしら。ちょっと可哀相ね
知らないことは知らないって言えばいいし、足を使って取材しに行けばいいと思う
んで、頭下げて監修してもらえばいいと思う。このままじゃあんまりだよ

>古典的なタスクシステムにおいてはタスクに番号(プライオリティ)が振られており
>番号を指定して特定のタスクのポインタを得ることが出来た

えっえー?つーか古典的タスクシステムってなんじゃい?ファンタジーゾーンなの?

0112名前は開発中のものです。2009/02/06(金) 10:34:43ID:wGKtGJau
>>111
あんた、何かがしゃべり方がキモイんだけど。

それはそうと、相手は年収何千万もある凄腕のプログラマらしいので、
技術的な反論は是非どこかのブログでやっちゃってください。
0113名前は開発中のものです。2009/02/06(金) 21:26:12ID:+KF0MHRv
タスクシステムでグローバル変数使うから駄目だって意見が多いけど、
でも見渡してみると、ウィンドウズのウィンドウだってそういうしくみだしなぁ。
0114名前は開発中のものです。2009/02/06(金) 22:07:10ID:H/Ui7lv7
エロゲー製作は大変ナリよ
http://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
>>113
ウィンドウ同士であまりやりとりしなくてもあの複雑さだぞ
リストコントロール2つを連動させるだけでもやばいくらいの手間
基本的にウィンドウズの作り自体関連がたくさん生まれる処理に向いてない
あくまでも独立した動作が前提
0116名前は開発中のものです。2009/02/06(金) 22:36:12ID:nWDkACnD
>>113
そう思ったのなら両方とも自分で実装してみて比較検討だ!

でも数千行レベルでは使いやすかったやり方が数万行レベルでも同じように使いやすいままかどうかはまた別問題だ!
そこは注意な! 王道はグローバル変数使わないことだぞ!
0117名前は開発中のものです。2009/02/06(金) 23:12:31ID:ux7UjNgY
また引数クンの登場か。

>93について、具体例を挙げて答えてよ。
0118名前は開発中のものです。2009/02/06(金) 23:44:30ID:H1z7Q+5u
>>117
はぁ?何言ってるのかわからない
俺が言いたいのは関数に引数つけろってそんだけだけど?
コンテキスト?は?
そんなもん使った時点で負けだ馬鹿
設計死んでるんだよ
俺の価値観ではそんなもん使った時点で負け
void*となにも変わらない
0119名前は開発中のものです。2009/02/06(金) 23:45:58ID:H1z7Q+5u
まあ、用は固定でない引数に意味がないんだよね
俺の価値観からすると
0120名前は開発中のものです。2009/02/06(金) 23:53:12ID:4xm8YBEc
>118
> はぁ?何言ってるのかわからない

じゃ、具体的に質問するけど、雑魚敵Aと雑魚敵Bに関係性が出てきたらどうするの?
例えば雑魚敵Aは雑魚敵Bを殺すことがある、となった場合に、雑魚敵Aのupdate関数の引数に
雑魚敵Bのリストを渡すの?
0121名前は開発中のものです。2009/02/07(土) 00:21:27ID:lLkuERdr
>>120
>雑魚敵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
>121
> 種類の異なる(=クラスの違う)雑魚敵A、雑魚敵B、雑魚敵C、雑魚敵Dといたとして
> それらの関連、つまりAxB、AxC、AxD、BxC、BxD、CxDの関連は全部シーンクラスに書くべきじゃないのかな?
> そこはオブジェクト指向は手伝ってくれないと思うんだけどね(原理主義者的には)
> 昔ながらのC言語風味に書いたほうがうまくいくと思うよ

今はっきりわかった。キサマはクズだ。
0123名前は開発中のものです。2009/02/07(土) 00:30:10ID:lLkuERdr
>>122
なんでだよ
いいこと教えてやったのに
何がどうダメなのか言ってみろ
勉強になるぞ
なにせ俺は10年以上もやってんだからな
0124名前は開発中のものです。2009/02/07(土) 00:32:45ID:NuBn44S3
10年以上ワナビー君ですかwww
ヒッキーニートで親のスネカジリ。楽しそうですねwww
0125名前は開発中のものです。2009/02/07(土) 00:35:05ID:lLkuERdr
>>124
不毛な会話したくないんだ
どこがどうダメなのか思ったこと言ってみろ
なんとなく漠然とある自分にとっての常識なんて大抵間違ってる場合が多いぞ
0126名前は開発中のものです。2009/02/07(土) 00:38:14ID:NuBn44S3
>125
雑魚敵が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
>>126
そりゃ当然それだけの処理が必要になるだろうね
仮にプログラムの組み方が変わったところで
その数が少なくなることは絶対にないからね

それを踏まえて何が問題?
0130名前は開発中のものです。2009/02/07(土) 00:40:05ID:qe8S2N76
>雑魚敵が20種類くらいいるとして、それが相互に関係しあうことを考えてみろよwww
>20種類くらいなら、RTSとかだと当たり前にいるぞ。
ダブルディスパッチ
0131名前は開発中のものです。2009/02/07(土) 00:41:54ID:XPRCk6pD
>>126
その莫大な組み合わせを纏めるかどうかは書く人の力量次第だが、
書く場所としてはシーンクラスが良いのでは?ってはなしだろ。
お前が読解力ないだけ。
0132名前は開発中のものです。2009/02/07(土) 00:42:20ID:lLkuERdr
>>127
全部シーンだろうな
0133名前は開発中のものです。2009/02/07(土) 00:43:44ID:NuBn44S3
>128
ヒッキーで無能はどこにいるんだ?
0134名前は開発中のものです。2009/02/07(土) 00:46:56ID:XPRCk6pD
>>132
となると、シーンクラスが肥え太って困る。
モジュール化する何かいい方法は無いですか?

オブジェクト指向ってのは、オブジェクト(リソース)の管理は上手いんだが、
オブジェクトとオブジェクトの関連の記述には向いていないんだよなぁ。
0135名前は開発中のものです。2009/02/07(土) 00:48:05ID:qvO9PNvj
>>133
居たら教えてくれ。
0136名前は開発中のものです。2009/02/07(土) 00:48:40ID:cn84NiHO
>>79
どうでもいいけど、やねうらおの文章の引用部分さ

> すべてのゲームにタスクシステムが必要なのではない。

これ文脈読めばわかると思うけど、規模じゃなくて種類の話だよね
あと、残念な○○っていう表現が大好きなブログがあるよね
0137名前は開発中のものです。2009/02/07(土) 00:49:07ID:lLkuERdr
>>134
ないね
オブジェクト指向ではそこが限界
原理主義者の俺が言うんだから間違いない
後はC言語風味にうまく分離して書くしかない
0138名前は開発中のものです。2009/02/07(土) 00:50:51ID:UFXAc++2
>137
> ないね

単にモノを知らないだけだな。
0139名前は開発中のものです。2009/02/07(土) 00:51:10ID:e1gHG0fD
>>127
衝突したかの判定はシーンクラスで、衝突に伴う処理は
オブジェクト同士のメッセージ交換ってのが俺のやり方だな。
0140名前は開発中のものです。2009/02/07(土) 00:55:40ID:UFXAc++2
>127
物理エンジンで本物っぽく動かすつもり?
それとも2Dのマリオやソニックみたいに、それっぽく動けばいいの?
0141名前は開発中のものです。2009/02/07(土) 00:55:51ID:lLkuERdr
>>138
関連をオブジェクトに見立てて・・・とか馬鹿なこと始める気?
俺、そういうの読み手にわかりにくくなるだけであんまり意味ないと思うぜ
折角オブジェクトが誰にでもわかる表現にするためにオブジェクト指向を使ったのに
変にトリッキーな解釈(関連=オブジェクトだ!)してわかりにくくしたら
本末転倒じゃね?

って勝手に関連=オブジェクトの話するだけこいつ馬鹿だなー的
先読みをしてみたけど言いたいことあってる?
0142名前は開発中のものです。2009/02/07(土) 00:56:33ID:XPRCk6pD
でもちょっとまって。
この流れでいくと、タスクシステムで行うべきことは、
・描画順序の管理
のみ、ということになるな。
その他の処理はすべてシーンクラスで行うと。
晴れて、タスクシステム=グラフィックエンジン
ということになり、みんな幸せになると。
0143名前は開発中のものです。2009/02/07(土) 00:56:47ID:hO/vsQBF
>>127
俺なら重力は重力クラスが担当、衝突は衝突クラスが担当するようにする。

重力に引かれたい奴は重力クラスに登録するように!
0144名前は開発中のものです。2009/02/07(土) 00:56:49ID:vE7+xmqT
オブジェクト指向的には、当たり判定は関連をクラス化すればおk
0145名前は開発中のものです。2009/02/07(土) 01:00:11ID:vE7+xmqT
>>127
石に重力が働くというのなら地面みたいなものがあるはずだから、
石ー重力ー地面としてこの重力をクラスにすれば使いまわしも出来ていい
0146名前は開発中のものです。2009/02/07(土) 01:03:06ID:UFXAc++2
>143
つ 【オールドタイプの魂】
0147名前は開発中のものです。2009/02/07(土) 01:04:31ID:cn84NiHO
>>121
>基本的に雑魚敵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:lLkuERdr
あ、aC2じゃ同じオブジェクト同士が抜けてるなw
0150名前は開発中のものです。2009/02/07(土) 01:10:08ID:XPRCk6pD
>>145
重力をクラス化するのは個人の趣味だろうが、
使いまわせるかどうかは怪しいな。

細切れの小さなクラスが1000個ぐらいあって、
それぞれにそれぞれが関係しあって一つの生態系をなし、
結果としてゲームになっている・・・とか。
そういうのって想定外の仕様変更には弱いからなぁ。
まぁゲームの方向性にも寄るのだろうが。
0151名前は開発中のものです。2009/02/07(土) 01:13:32ID:cn84NiHO
>>148
ゲームワールドをゲームエンジン内部で時間発展させてるからさ
衝突イベントでユーザー定義のコールバック関数が呼ばれるやつだ
0152名前は開発中のものです。2009/02/07(土) 01:14:32ID:UFXAc++2
>147
普通に考えてそれか。

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

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

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

シーンクラスには、雑魚敵コンテナと同じレベルで攻撃判定用オブジェクトのコンテナを追加して、
そこで相互の判定をする。
0153名前は開発中のものです。2009/02/07(土) 01:22:50ID:lLkuERdr
>>151-152
いや、だから全然わかってねぇな
なんかお前等変な組み方してるけど
関連の処理を仕様である分、全部書かなきゃいけないことは変わらないんだろ

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

オブジェクトXなんていきなり見てお前のそれ誰が理解してくれるんだよ>152
どうせドキュメントもかかねぇしよまねぇだろ
っていうか手間増やしてるしw
0154名前は開発中のものです。2009/02/07(土) 01:26:57ID:XPRCk6pD
>>152
不可視オブジェクトXの受け渡しは誰が行うんだ?
0155名前は開発中のものです。2009/02/07(土) 01:30:03ID:lLkuERdr
ちなみに俺はオブジェクト指向原理主義者であると同時に
C++をはじめとするオブジェクト指向言語が大嫌いなんだ
だってなんのメリットもねぇよこの言語ども・・・w
だってよ・・・処理が集中・複雑化するのってシーンクラスみたいなところであって
別に個々にオブジェクト単位にできる部分は誰も苦労してねぇよマジで

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

ってところで>>147につけたレスは内容まちがってたな俺
すまんこ
0156名前は開発中のものです。2009/02/07(土) 01:30:17ID:NuBn44S3
>153
> なんでわざわざ間になんか挟むの?

雑魚敵が増えた時の修正が少なくてすむ。
攻撃判定オブジェクトを間に挟むことで、複数種の雑魚敵が同属性の攻撃だしても、一つの攻撃判定オブジェクトとの
関連処理に還元できる。
0157名前は開発中のものです。2009/02/07(土) 01:32:09ID:vE7+xmqT
>>150
使いまわすってのはコード的にって事ね

数が多い場合は面倒くさいけど一個一個やっていくしかないなぁ
上位概念のオブジェクトを作れるんであればいいけど
STGでいうなら弾 - 衝突 - 敵 では無くて 自機 - 弾判定 - 敵みたいに
0158名前は開発中のものです。2009/02/07(土) 01:36:16ID:cn84NiHO
>>152
>Aは攻撃判定用不可視オブジェクトXを作成する。

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

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

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

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

>使いまわすってのはコード的にって事ね
コード的なんて気にすんなマジで
関連がいっぱいになると無駄に共通化した処理が必ず邪魔になる
30回コピペして終わる程度の使いまわしなら30回コピペする気でいろ
そのぐらいでちょうどいい
0160名前は開発中のものです。2009/02/07(土) 01:38:36ID:XPRCk6pD
>>155
いや確かにそのとおりだと思う。
ただ、シーンクラスみたいなところに処理が集中するのは、
ゲームにオブジェクトとオブジェクトの関係が多いからだと思う。
一般アプリやツールは、リソースの管理がメインなので、
オブジェクト指向も役に立つのだろう。
0161名前は開発中のものです。2009/02/07(土) 01:39:17ID:dNGvkNLd
ID:lLkuERdrはド素人だろ。こんなクルクルパーは相手にするだけ無駄。
0162名前は開発中のものです。2009/02/07(土) 01:43:47ID:NuBn44S3
>159
> >雑魚敵が増えた時の修正が少なくてすむ。
> だからならないって
> 必ず仕様の分だけ処理かかなきゃならないんだよ

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

オマエのやりかただと、新規雑魚敵と既存雑魚敵全ての関係について処理を全て一つ一つ書くまで終わらない。
0163名前は開発中のものです。2009/02/07(土) 01:45:32ID:lLkuERdr
>>160
一般のアプリだって同じだよ〜w
絶対にボタンとかツールバーの処理なんてウンコぐれーだろ
メイン画面の処理の強烈さといったらない
メインに集中してなくても絶対にどっかに偏るw(ツールウィンドウとか・・・)
部品は平均200行程度しかないのにメインで10万越えで放置されてるソースとか多いぞw
0164名前は開発中のものです。2009/02/07(土) 01:48:10ID:hO/vsQBF
>>146
もれなくリストに登録しておいた。

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

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

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

なぜインターフェイスでやらないのか。攻撃判定用オブジェクトとか馬鹿げてるよ。
0166名前は開発中のものです。2009/02/07(土) 01:58:57ID: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
書き出してるっていってもそこまで明確でもないんだよね、それでも見える分ぐらいはやるべきだと思ってる
0167名前は開発中のものです。2009/02/07(土) 02:00:43ID:NuBn44S3
>165
不可視ってつけたのはちょっと余分だったかもな。別に可視でもいいんだ。STGの場合は、
弾という可視の攻撃判定オブジェクトを介して敵と自機が攻撃しあってるわけだ。

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

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

スクリューパイルドライバー(のような何か近接巻き込み方攻撃)なら、巻き込み範囲を持つ不可視の
攻撃判定オブジェを作って、それにそれぞれへのコールバックを持たせる。当たったらコールバックを
よんで攻撃側・被攻撃側それぞれに対してモーション発動なりなんなりをする。
0168名前は開発中のものです。2009/02/07(土) 02:00:43ID:cn84NiHO
>>165
>不可視

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

>>152は「一瞬で目標に到達するレーザーみたいな攻撃(視覚効果なし)」
を想定してたのかな
0169名前は開発中のものです。2009/02/07(土) 02:02:12ID:NuBn44S3
>166
ガンバレw
努力の人はさすがにすごいと思うよw

学習できない無能はもっとすごいと思うけどねw
0170名前は開発中のものです。2009/02/07(土) 02:03:15ID: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();
}

とかすれば処理は纏められるだろ。
で、どう纏めるかは問題ではなく、これをどこに書くかが問題なんだ。
0171名前は開発中のものです。2009/02/07(土) 02:04:03ID:cn84NiHO
>>167
格ゲのAABB当たり判定か。把握
0172名前は開発中のものです。2009/02/07(土) 02:06:52ID:NuBn44S3
>170
で、どこに書くの?

間にオブジェクトを介在させる場合は、書くべき場所はひとつしかないけどね。
0173名前は開発中のものです。2009/02/07(土) 02:15:06ID:cn84NiHO
>>166
>   B1 B2
>A1 S1 S2
>A2 X  X
>A3 X  X

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

あれ。当たり判定表はアリだと思うが…
0174名前は開発中のものです。2009/02/07(土) 02:26:27ID:XPRCk6pD
>>172
シーンクラスが良いのではないかということになってる。

>>167
オブジェクトを作るのは、インスタンスを複数にするためであって、
処理を纏めるためではないと思うぞ。
0175名前は開発中のものです。2009/02/07(土) 03:15:44ID:cn84NiHO
>>174
シーンが肥え太る?ゲームエンジン(神)が肥え太ってんだよ

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

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

あとおまえやねうらおじゃない?睡魔に耐えてたらESPが冴えてきたぞ
外れてたらごめんね。もし当たってたら一言言わせろ
あんたさー知りもしない昔の話を捏造してペラペラしゃべってる暇あんなら
一次情報にアクセスしてきっちり裏取れよな
あれじゃネット発のタスクシステム都市伝説の怪文書がまたひとつ増えただけじゃん
松○とドングリだろ。悔しくないのか?足使えよ足
ネットとか2ちゃんで怪情報かき集めて本書くな
0176名前は開発中のものです。2009/02/07(土) 03:17:17ID:cn84NiHO
アンカーミスだ。>>134
ばいばい
0177名前は開発中のものです。2009/02/07(土) 03:31:08ID:dNGvkNLd
>>175
横レスですまんが、やねうらおに関しては、
遠藤さんとも面識があるみたいだし、
http://d.hatena.ne.jp/yaneurao/20090108
吉村さんとも知り合いみたいだし、
http://d.hatena.ne.jp/yaneurao/20081004
岩谷さんが取り上げるぐらいだし、
http://d.hatena.ne.jp/yaneurao/20060212
彼は2chなんか端っから相手にもしてないだろう。

自分の説が正しいと思うなら是非どこかのブログで
今回の記事に反論してみてくれ。俺はそれを楽しみにしている。
0178名前は開発中のものです。2009/02/07(土) 03:42:55ID:lLkuERdr
今回の記事は魅力ないでしょうよw
前スレでタスク信者が詰まってたところ全部無視だものw
0179名前は開発中のものです。2009/02/07(土) 03:46:47ID:dNGvkNLd
俺はweak_ptr使って実装するっての一つにしても為になったがな
まあ、あの記事から何も学べない奴は学習能力がアレなんだろうな
0180名前は開発中のものです。2009/02/07(土) 03:56:42ID:zBw0rbcy
ID:lLkuERdrは10年以上プログラムやってて( >>123 )、
C++が使えない( >>125 )ってぐらいだから、まあ、本当にアレなんだろうけどな・・
0181名前は開発中のものです。2009/02/07(土) 04:20:56ID:lLkuERdr
>>179-180
あんたが複数IDを使えるのはもうわかってるよ
このスレのはじめのほうでもやってただろ?
でもいいの?
あんた自分より賢い人には絶対にたてつかないクズじゃん
俺なんかに噛み付くと反撃が痛いんじゃない?w
■ このスレッドは過去ログ倉庫に格納されています