09/04/06 01:59:15 iTEC611J
一応書いとくと並列さんの味方したいわけじゃなくて
並列さんの主張は独善的で視野が狭いと思う。
# 技術的な話を盛り上げるためにつっこみどころ満載の
# ネタを意図的に投下してるのかもしれんけど
101:名前は開発中のものです。
09/04/06 02:07:50 B8zjnpJZ
>>98
>タスクシステムを実装する人=それを使う人
だったとしても、
>ゲームの仕様を知れないタスクシステム側
であることには変わりないわけで。
どうであれ、キャッシュヒット率まで考えたデータの配置を考えると言うのなら、
(タスクシステムを実装する人=それを使う人、で有ろうが無かろうが)
タスクシステムの外から行う方が話が早い。
102:98
09/04/06 02:44:56 H9N6h/U7
>>101
ごめん。ゲームの仕様に合わせて毎回設計するという仮定をしてることに
101で気がついた。書かなきゃわからないのに話があうわけないよね。
話に参加できるほど賢くないとわかったので観客に戻ります。
103:並列さん ◆dPfetnROQg
09/04/06 02:57:00 yXbkibtb
>>93
> 最適なデータ配置はゲームの仕様によりけりで、
> ゲームの仕様を知れないタスクシステム側からデータ配置の最適化をする事は無意味だ> と言うのに。
違うね。タスクシステムであるからには、タスクプライオリティに従って
タスクが呼び出されることは保証されるわけで、呼び出し順がわかっているので
それに従ってGCするときに配置換えすることは出来る。
> 型ごとに配列で保持してコンパクションかければ良いだけのものを、
これも違うね。型ごとに集めればworking setは小さくなるが、
その集合に対してメモリの先頭から逐次的にアクセスしていく
保証はされない。
104:並列さん ◆dPfetnROQg
09/04/06 03:00:20 yXbkibtb
>>95
> ゲームの仕様によって変わるものをその下の層に
> 無理やりねじ込もうとしてる時点でもうダメなんだよ
これも違うね。
GCはどんなゲームを作る場合でもあって困るということはあまりない。
GC環境下(例えばXNAでも.NET Framework + WPFでも)で
プログラムをすればその便利さがわかると思うのだが。
GCを否定する馬鹿がこんなにいるんだな。このスレ阿呆の集まりか?
>>96
馬鹿はあんただろろ。ろくにプログラミング経験もないなら
口出ししてくるなよ。
105:並列さん ◆dPfetnROQg
09/04/06 03:10:23 yXbkibtb
>>97
> プライオリティーの変更があれば、
> その都度vector<T>内の該当要素を挿入しなおす実装で問題ない。
「挿入しなおす」って、removeしてinsertするって意味?
プライオリティが変わるごとにstd::vectorに対してそんなことしたら
重くて仕方ないんだけど。
何がどう問題ないと思えるの?頭大丈夫?
> hoge_task *p = New< hoge_task >();
> お前本当にソフト屋か?
それnewしたときに型がわかっていて、その型のvectorに
突っ込んでるだけじゃん。>>92のBじゃなく、Aでしょうに。
あと「その参照を書き換えたりする」必要があると俺は書いてるが、
それはどうやって解決するつもり?
106:並列さん ◆dPfetnROQg
09/04/06 03:13:17 yXbkibtb
>>99
> 現実逃避目的にプログラム書くのなら、もうプロ辞めろ。
あんたが俺が言ってる内容を何も理解してないだけじゃん。
あんたは日本語の勉強しなおしてきたほうがいいよ。
107:並列さん ◆dPfetnROQg
09/04/06 03:14:58 yXbkibtb
>>101
> どうであれ、キャッシュヒット率まで考えたデータの配置を考えると言うのなら、
> タスクシステムの外から行う方が話が早い。
わかっちゃいると思うが、俺の言っている
GCは実際はタスクシステムの"外"に実装されているよ。
GCにタスクの呼び出し順というヒントを与えて、それを利用して
うまくオブジェクトをアレンジメントできるかということを
問題にしているだけなんだが。
108:名前は開発中のものです。
09/04/06 03:20:24 B8zjnpJZ
>違うね。タスクシステムであるからには、タスクプライオリティに従って
>タスクが呼び出されることは保証されるわけで、
>>42 を見る限り、型ごとにcollectionを持っているようだが。
どの型のcollectionのupdateから実行していくかは、for_eachを記述した順に決定されるわけで、
プライオリティーによらないと考えるが。
>その集合に対してメモリの先頭から逐次的にアクセスしていく
>保証はされない。
だったら並べ替えればよい。要は最適化する順番が逆。
まず型ごとに集めることを考えて、それから並べ替えることを考える。
まぁそれすら意味がないどころか余計なことだと思うがな。
どうせやるならということで。
>GCはどんなゲームを作る場合でもあって困るということはあまりない。
だから、いつからGCの話になったんだ?
109:名前は開発中のものです。
09/04/06 03:33:51 B8zjnpJZ
>プライオリティが変わるごとにstd::vectorに対してそんなことしたら
>重くて仕方ないんだけど。
プライオリティーなんて滅多に変わらないだろうし、現実問題として、それで問題ないだろう。
付け加えて、俺はそもそもコンパクションなんて要らないといってるわけで。
それにはコンパクションが重い処理だからという理由も含まれている。
>それnewしたときに型がわかっていて、その型のvectorに
>突っ込んでるだけじゃん。>>92のBじゃなく、Aでしょうに。
お前の日本語が分かりにくいんだよ。自分の世界の定義で言葉使うから。
>B. 動的にオブジェクトを移動させvector<T>に入れる
の意味が謎。型なんて生まれてから死ぬまで変わらないんだから動的に管理する意味なんてないだろ。
>あと「その参照を書き換えたりする」必要があると俺は書いてるが、
>それはどうやって解決するつもり?
好きな方法でやれば?これはお前の言うところのコンパクションでも同じ問題が発生するでしょ。
110:並列さん ◆dPfetnROQg
09/04/06 03:36:49 yXbkibtb
>>108
> >>42 を見る限り、型ごとにcollectionを持っているようだが。
> どの型のcollectionのupdateから実行していくかは、for_eachを記述した順に決定され> るわけで、
それは、俺がGC側でcompactionを行なうときにタスクを並び替えて、
並び変わったあとのcollectionを返しているからそうなっている。
あんたが、自前でcompactionを行なうなら、自分でタスクプライオリティに
従って並び替えをしないといけないし、並び替えをした上で同じ型のcollection同士を
集めたものを用意してからupdate(vector<T>)のような関数を呼び出す必要がある。
> まず型ごとに集めることを考えて、それから並べ替えることを考える。
「型ごとに集めることを考えて、それから並べ替える」ほうが、
「並べ替えてから型ごとに集める」だとか「その二つを同時に行なう」より速いとは限らないんだが。
そんな自分のやりやすい方法を言われても。
111:名前は開発中のものです。
09/04/06 03:38:52 B8zjnpJZ
>>107
タスクシステムの外と言う言葉を使ったが、下位層は含まず、上位層という意味で使った。
ごめんね、そこまで細かく言ってあげなきゃ分からないよね。
それとも、下位とか上位という概念がなく、内か外でしか物事を考えられないのかな?
まぁ、GCにタスクの呼び出し順を食わせようとしている時点で既にアレなのだが。
112:並列さん ◆dPfetnROQg
09/04/06 03:41:43 yXbkibtb
>>109
>>B. 動的にオブジェクトを移動させvector<T>に入れる
>の意味が謎。型なんて生まれてから死ぬまで変わらないんだから動的に管理する意味なんてないだろ。
確かに上の(俺の)日本語、わかりにくいな。それはすまんかった。
生成時にいったんvector<T>に入れてオブジェクトが死ぬまで
アドレスの変更などが発生しないのがA。
それに対して、描画フレーム毎に、オブジェクトを移動させ
compactionを行なうという意味がB。
113:並列さん ◆dPfetnROQg
09/04/06 03:45:41 yXbkibtb
>>109
>>プライオリティが変わるごとにstd::vectorに対してそんなことしたら
> プライオリティーなんて滅多に変わらないだろうし、現実問題として、
> それで問題ないだろう。
あんたの実装、vector<T*>ではなく、vector<T>だよな?
オブジェクトが死ぬごとにremoveが発生してそこ以降のオブジェクト全部
コピーすることになるんだが、これ、いつ後始末するつもりだ?
また死んだオブジェクト(タスク)はどうやって判定するつもりだ?
オブジェクトひとつずつにデリートマークがあって、foreachのときに
デリートマークをチェックしながらiterationを行なうのか?
それともどこかで死んだオブジェクトを詰める(removeする)作業をするのか?
そのときにそこ以降のオブジェクトのアドレスが書き換わるから、
それを参照しているポインタ全部書き換えなきゃならんのだが。
本当にそんな実装が速いと思うのか?
114:名前は開発中のものです。
09/04/06 03:53:18 B8zjnpJZ
>あんたが、自前でcompactionを行なうなら、自分でタスクプライオリティに
>従って並び替えをしないといけないし、並び替えをした上で同じ型のcollection同士を
>集めたものを用意してからupdate(vector<T>)のような関数を呼び出す必要がある。
型ごとにheapを持つようにすれば同じ型同士を集める必要はないし、
タスクプライオリティーも、変更されるその都度挿入し直せば、並べ替えを行う必要もなくなる。
当たり前だが、挿入と並べ替えだと、並べ替えの方が重い。
>「型ごとに集めることを考えて、それから並べ替える」ほうが、
>「並べ替えてから型ごとに集める」だとか「その二つを同時に行なう」より速いとは限らないんだが。
>そんな自分のやりやすい方法を言われても。
後者よりも前者の方が常に速い。
前者だと、
1.型ごとに集める処理を端折れる。
2.型ごとに並べ替えた方が速い。なぜなら並べ替えの計算量はO(n*logn)だから。
115:並列さん ◆dPfetnROQg
09/04/06 04:00:55 yXbkibtb
>>114
> タスクプライオリティーも、変更されるその都度挿入し直せば、
> 並べ替えを行う必要もなくなる。
> 当たり前だが、挿入と並べ替えだと、並べ替えの方が重い。
並べ替えは毎フレームしなくとも良いが(GCが走るのはときどきなわけだし)、
タスクプライオリティは変更と同時に挿入しなおさなければならないから
その比較はおかしい。
まあ、タスクプライオリティを頻繁に変更するかと言われれば
確かに普通はノーだと思うんだが、生成は頻繁に行なうわけで、生成時にタスク
プライオリティが与えられていてその適切なところにinsertする
コストはとても無視できない。
116:ID:B8zjnpJZ
09/04/06 04:01:06 RuQXDnG2
>>113
それは好きにすればよいと思うが。
>それを参照しているポインタ全部書き換えなきゃならんのだが。
オブジェクトに不変なハンドルつけて間接参照にしたり、
ポインタをラップしてリストアップしたり。
>本当にそんな実装が速いと思うのか?
コンパクションを行うということはそういうことだろうに。(だから要らないと言ってるのだが)
つーか、並列さん ◆dPfetnROQg はコンパクションを何だと思ってるんだ?
117:名前は開発中のものです。
09/04/06 04:09:51 RuQXDnG2
>生成は頻繁に行なうわけで、生成時にタスク
>プライオリティが与えられていてその適切なところにinsertする
>コストはとても無視できない。
型ごとにheapを持ってればそんなむちゃくちゃな事にはならないし、
どちらかというと、不定期にGCが発動して、そのフレームだけ局所的に負荷が高くなる方が困る。
ゲームでGC使うのが嫌われる理由と同じだな。
118:名前は開発中のものです。
09/04/06 04:13:47 RuQXDnG2
>並べ替えは毎フレームしなくとも良いが(GCが走るのはときどきなわけだし)、
>タスクプライオリティは変更と同時に挿入しなおさなければならないから
>その比較はおかしい。
リアルタイム処理では一番負荷の高い瞬間で比較しなければならないので、
その比較であってる。いわゆるボトルネックという奴。
119:並列さん ◆dPfetnROQg
09/04/06 04:19:36 yXbkibtb
>>114
>>「型ごとに集めることを考えて、それから並べ替える」ほうが、
>>「並べ替えてから型ごとに集める」だとか「その二つを同時に行なう」より速いとは
>> 限らないんだが。
>> そんな自分のやりやすい方法を言われても。
>後者よりも前者の方が常に速い。
>前者だと、
>1.型ごとに集める処理を端折れる。
>2.型ごとに並べ替えた方が速い。なぜなら並べ替えの計算量はO(n*logn)だから。
1.は、意味不明。「型ごとに集めることを考えて」なのだから、端折れてないと
思うんだが。
2.は、どうもあんたはまだ話がわかっちゃいないと思う。
120:並列さん ◆dPfetnROQg
09/04/06 04:22:45 yXbkibtb
>>114
次の4つのインスタンスがあるとしよう。
Task A : プライオリティ = 1
Task A : プライオリティ = 4
Task B : プライオリティ = 2
Task B : プライオリティ = 3
Task A,BはTaskという基底クラスの派生型でvector<Task*>にぶち込まれていて
これをいま呼び出し順を考慮しながら型ごとに分類しないといけないとしよう。
collection I.
Task A : プライオリティ = 1
collection II.
Task B : プライオリティ = 2
Task B : プライオリティ = 3
collection III.
Task A : プライオリティ = 4
呼び出し順を考慮して、上のように分類されてcollectionが
生成されなければならない。
「型ごとに集めることを考えて、それから並べ替える」ほうが速いか?
それに同じ型に対するcollectionは上のように複数いるぞ。
この意味で、>>97のような実装は不可だ。
121:並列さん ◆dPfetnROQg
09/04/06 04:32:06 yXbkibtb
>>116
> オブジェクトに不変なハンドルつけて間接参照にしたり、
> ポインタをラップしてリストアップしたり。
だから、そんなプログラムが速いわけないだろ。
ハンドルに対する実アドレスのテーブルをcompactionのときに
更新しないといけないぞ。
他のタスクオブジェクトを参照するごとに
TaskA taskA= dynamic_cast<TaskA*>HandleToPtr(taskA_handle);
みたいに書く必要が出てくる。
プログラムが汚い上にハンドルだから型が不明になってしまう。
これひどくないか?
> コンパクションを行うということはそういうことだろうに。
それは、全然違うと思うぞ…。
少なくとも俺のシステムにあんたの実装のような欠陥はないな。
122:並列さん ◆dPfetnROQg
09/04/06 04:33:07 yXbkibtb
>>116
> 型ごとにheapを持ってればそんなむちゃくちゃな事にはならないし、
(一般的には)型ごとにheapを持てない。理由 >>120。
123:名前は開発中のものです。
09/04/06 04:35:38 RuQXDnG2
>>119
型ごとに既に集まってるんだから、型ごとに集め直す必要はないだろ。
例えば、林檎と蜜柑と梨が何個かずつ有って、それぞれ種類別に箱に入ってるとする。
それぞれの果物には賞味期限があり、売れ残りを防ぐため、古いもが手前に来るように陳列したい。
A:林檎と蜜柑と梨をごちゃまぜにして、賞味期限順に並べ替えてから、改めて種類別に分け直す。
B:単にそれぞれの種類内で賞味期限順に並べ替える。
どっちが早いか。
124:並列さん ◆dPfetnROQg
09/04/06 04:38:38 yXbkibtb
>>117
> どちらかというと、不定期にGCが発動して、そのフレームだけ局所的に負荷が高くなる方が困る。
さすがにそんなことは普通はない。
いや、あるにはあるが、そうならないように気をつけてコーディングする。
それすら出来ないなら、そもそもXNAでゲームプログラムなんて出来ないわけで…。
>>118
> リアルタイム処理では一番負荷の高い瞬間で比較しなければならないので、
> その比較であってる。いわゆるボトルネックという奴。
ボトルネックがコマ落ちしたりするほど大きくないなら、全体的なスループットのほうが大切。
125:並列さん ◆dPfetnROQg
09/04/06 04:39:51 yXbkibtb
>>123は>>120を読む前に書かれたものだと思うので無視する。
126:名前は開発中のものです。
09/04/06 04:46:06 gHjH+Kkr
もうね、
タスクシステムありきでいろんな問題(コンパクション・キャッシュヒット)に対処していくと、
最終的にはこんなことになってしまうかもしれないという悲劇の具体例にしか見えない。
127:並列さん ◆dPfetnROQg
09/04/06 04:50:53 yXbkibtb
このスレではなんかメモリのコンパクション不要論を唱えてる
馬鹿ばっかりなんだが実際「ワンダと巨像」でもメモリの
コンパクションは、行なっている。
しかも「ワンダと巨像」ではテクスチャ、地形データのみならず、
プログラムコード自体も再配置の対象となっている。
ある程度の規模のゲームなら、やらざるを得ないと思うんだが。
お前たちは、本当にゲームを作っているのか?
夢のなかで作ってるだけなんじゃね?
プログラミング見習いとか、同人ゲー作ってますとか
サブプログラマーとしてスプライト処理手伝いましたとか
そんなゴミクズみたいな奴ばっかり出てくんなよ。
俺はもう寝るぞ。明日も早いからな。おやすみ。
128:名前は開発中のものです。
09/04/06 04:55:46 RuQXDnG2
>>120
後出しじゃんけんのごとく次から次へと変な実装例を出してくるなよ。
プライオリティーも型として扱えば?まぁプライオリティー固定になるが。
template < class t, int priority > とかして。
>>121
>プログラムが汚い上にハンドルだから型が不明になってしまう。
>これひどくないか?
そう思うのならラップすればよいだろ。本質的には同じこと。
129:名前は開発中のものです。
09/04/06 05:18:01 WGJzP9Yk
>プログラミング見習いとか、同人ゲー作ってますとか
いや、そもそもここはそういう人のための場だろ。
メイン張ってるプロ中のプロがこんな場所に出てくるんだったら、
そういう人たちに分かるように説明すべきじゃないのか?
つか、場当たり的に情報小出しにするより、ちゃんとまとめて本でも書いてくれ。
次のやねう本より先に出せば結構売れるんじゃないか。
130:名前は開発中のものです。
09/04/06 05:24:15 B8zjnpJZ
>>124
>そうならないように気をつけてコーディングする。
だったら、普通にメモリプールで十分なわけで。
>ボトルネックがコマ落ちしたりするほど大きくないなら、全体的なスループットのほうが大切。
意味不明。コマ落ちしないなら、既に仕様を満たしているわけで、スループットも糞もないだろ。
>>127
ほとんどのゲームでは行ってないだろ。でもちゃんと動いている。それが現実。
一部の例外だけ取り上げて、さも当たり前かのように言うな。
131:名前は開発中のものです。
09/04/06 05:40:29 FyQkrEyW
横からだけど、ID:B8zjnpJZさんはちょっと素人っぽいよね。
私から見てても、なんか言ってることのレベルが低いというか。
実際に商用である程度の規模のゲームを作った経験のある人が
もっと並列さんに質問してほしいな。
132:名前は開発中のものです。
09/04/06 06:20:06 /+Me6qfs
まだ、やってんの?
あったまわるい
話受けるほうも相手にするなよ
133:名前は開発中のものです。
09/04/06 06:43:47 VcqDZA+W
夜を徹して生産性を下げる工作が成功してるようだな
しかしまともな議論をするなら情報後出しと言われないように議論命題に関する
クラス図なり、シーケンス図(サンプルシナリオ)なりを先に明示すべきだと思う
土台が無い状態で前提の違う俺言語同士の闘いをしてて不毛すぎる
134:名前は開発中のものです。
09/04/06 07:10:15 QqdC07mx
>103
> これも違うね。型ごとに集めればworking setは小さくなるが、
> その集合に対してメモリの先頭から逐次的にアクセスしていく
> 保証はされない。
アクセスループに入る前にキャッシュの先読みくらいしとけよ。
135:名前は開発中のものです。
09/04/06 07:24:50 QqdC07mx
>127
> ある程度の規模のゲームなら、やらざるを得ないと思うんだが。
フリーラン系でも無い限り、プレイ中にコンパクションなんてやらない。
シーン切り替えのタイミングでコンパクションすることはあるけどもね。
それよりも、シーンごとに破棄できるデータと常駐データを幾つかのレベルに分けて管理したほうが
楽だよ。
136:並列さん ◆dPfetnROQg
09/04/06 09:03:31 yXbkibtb
>>128
> そう思うのならラップすればよいだろ。本質的には同じこと。
全然同じじゃない。
>>133
> しかしまともな議論をするなら情報後出しと言われないように議論命題に関する
そんなもん誰が読むんだ?悪いけど俺はそんなもの作成するのは嫌だ。
>>134
> アクセスループに入る前にキャッシュの先読みくらいしとけよ。
そんなことで解決する問題じゃない。
一般的に言って、L1に相当するメモリは極端に小さいからループに入る前に読み込んでも無駄だし、
指定しなくともどこか1バイトを読み込んだら、次のalignmentまで自動的に読み込む設計になってるのが
普通だから、いまどきのCPUアーキテクチャはランダムアクセスに対してはすこぶる弱い。
だから、先読みでは解決しない。
137:並列さん ◆dPfetnROQg
09/04/06 09:06:56 yXbkibtb
>>135
> それよりも、シーンごとに破棄できるデータと常駐データを幾つかのレベルに分けて管理したほうが楽だよ。
そりゃ、仕様が事前にわかっていればそりゃそうしたほうが楽だろう。
しかし、いまどきのゲーム、シーン切り替えなんてほとんどなくてシームレスにつながっていることが多いから、
そういうケースに備えて、ライブラリ的なものを準備するのが俺の仕事。
138:並列さん ◆dPfetnROQg
09/04/06 09:14:12 yXbkibtb
>>129
> メイン張ってるプロ中のプロがこんな場所に出てくるんだったら、
> そういう人たちに分かるように説明すべきじゃないのか?
そんな面倒な説明、俺は嫌だ。
少なくとも商用ゲーム開発してるプログラマだけ俺に質問してくれ。
それ未満の見習い君は黙ってROMってて欲しい。
>>131
確かにID:B8zjnpJZは素人っぽいではある。>128,130とかひどすぎて答える気にもならん。もうスルーしとく。
そもそもGC環境下でゲームプログラムを書くメリットとか、俺がこのスレで説明するこっちゃないと思うんだ。
実際に自分でXNAとかで開発して理解するか、もっとお偉方に聞いて欲しいなぁ。
139:名前は開発中のものです。
09/04/06 09:49:19 ptgzTYVC
アンチの中に配列好きの厨が混じってて吹いたw
140:名前は開発中のものです。
09/04/06 09:58:39 LCTic4Nk
つーかこの分量になると流し読みすらせずに流しちゃうな
141:名前は開発中のものです。
09/04/06 12:07:22 10SNKjhU
アンチかつプロの人はステージとかシーンでゲームをくぎって、その場面に必要な物だけをハードコーディングするような昭和ゲームつくってるんだろ
now loadingとかやめろよwww
142:名前は開発中のものです。
09/04/06 12:13:20 2tToa48s
本当に叩きたい人に当たるようにブーメラン投げてるんですね。
わかります。よくある手ですから。
143:名前は開発中のものです。
09/04/06 18:50:33 EhlRmjEd
速度の話に区切り付けてから次の話題振れよ
144:名前は開発中のものです。
09/04/06 19:12:19 /+Me6qfs
>並列さん
根幹がズレてるのに
まだ、長々と話してるの?
自分のはじめた話のケツぐらいふけるようになってから議論しろよ
理論的にはじめの一歩目ですでにダメなのにそこには目を瞑って
オレオレシステムのいいとこ探しなんてはじめた時点で
お前はもう技術者でもなんでもねぇ
ただのクズだ
145:名前は開発中のものです。
09/04/06 19:25:58 TigQ7s0b
まだ続けるつもりか
いいぞもっとやれ
146:名前は開発中のものです。
09/04/06 19:30:18 YVQYCAyD
古典タスクシステムとそうでないのとの違いを教えてください。
比較があるHPが有りましたら教えてください。
147:名前は開発中のものです。
09/04/06 19:36:40 /+Me6qfs
>>146
そんな受身で技術なんか見に付くわけない
やめちゃえ
148:名前は開発中のものです。
09/04/06 19:39:57 VcqDZA+W
つかえない子が頑張ってるのがたのしいな
まともに説明できてない時点で自分の脳内でしか認められないものだと気付かないの?
149:名前は開発中のものです。
09/04/06 19:52:04 kenh3Yca
ワンだと虚像って前評判ほど面白くなかったな。
見た目が派手なだけでパターン憶えゲーの中でも平凡なゲーム。
150:名前は開発中のものです。
09/04/06 20:15:34 uIjIdPYQ
面白さがタスクシステムと関係あるの?
151:名前は開発中のものです。
09/04/06 21:21:10 B8zjnpJZ
ゲーム業界VSアマチュアという構図が出来つつなるな。
ゲーム業界でがんばって来た人には、それなりにプライドもあるだろうし、触れられたくないこともあるのだろうな。
すべてが無駄だと薄々感づいてはいるのだろうが、気づかないふりをして毎日がんばってるのだろう。
152:名前は開発中のものです。
09/04/06 21:23:11 QqdC07mx
>136
> そんなことで解決する問題じゃない。
> 一般的に言って、L1に相当するメモリは極端に小さいからループに入る前に読み込んでも無駄だし、
> 指定しなくともどこか1バイトを読み込んだら、次のalignmentまで自動的に読み込む設計になってるのが
> 普通だから、いまどきのCPUアーキテクチャはランダムアクセスに対してはすこぶる弱い。
> だから、先読みでは解決しない。
コンシューマ触ったこと無いのバレバレだな。
153:名前は開発中のものです。
09/04/06 22:20:23 kRCgeJ2q
XNAで開発された商用ゲームってあるのかなぁ?今のところ国内メーカーはネイティブで作ってるみたいだけど。
カンファレンスでもXNAはホビーユース向けって感じだったし。
まぁそもそもMSと心中するつもりがなきゃMS縛りのXNAで開発なんてしたくないけどな。
154:名前は開発中のものです。
09/04/06 23:13:38 lXwqXQrR
>>153
黙ってろ
155:名前は開発中のものです。
09/04/06 23:17:12 /+Me6qfs
>>154
MS社員m9(^Д^)プギャー
156:ID:EEKBitmg ◆HSP4mee/SU
09/04/07 00:14:39 lzvNjqQS
ガキの直感だけど
並列君ってやねうらおさんの臭いがする
157:ID:EEKBitmg ◆HSP4mee/SU
09/04/07 00:44:42 lzvNjqQS
>>10
(;・∀・)えー、なにそれ。そんなむつかしーこと考えたことないよ厨房だから
ぜーんぶダイレクトエックスにお任せだよ
テクスチャは基本的にD3DPOOL_MANAGEDでロードしてる
(ポストエフェクト用のバッファとかはD3DPOOL_DEFAULTだけど)
>一括解放するタイミングは存在せず、仕様切りなおしもできないとして
ナニそれよくわかんない。どんなゲームなの。
厨房はレベルデータをロードするときにテクスチャも何もかもまとめて
ガバーって読み込んじゃってるけど
数GBのメインメモリに数百MBのオンボードメモリを使い放題のやりたい放題だし
メモリ足りないド貧乏PCユーザーはHDDにスワップでジリジリやってろってかんじ
>使用期間不定の大量のサイズ不定テクスチャをコンパクションを使わずにどう管理する?
寿命がわかんねー大量のサイズ不定テクスチャがあるってどんな状況なの?
厨房が作るゲームはリソースの寿命が明らかだから、よくわからない
158:名前は開発中のものです。
09/04/07 00:46:51 chqHE1jh
並列さんはポリアンナ症候群だろ
159:名前は開発中のものです。
09/04/07 01:22:29 TxMcBONy
>>155
本当に知ったかウザい
心中云々言ってたらBrewもiPhoneもDirectXもやってられません
160:名前は開発中のものです。
09/04/07 02:06:38 6TbCKYIt
HSPにXNA…
このスレにはマイナー言語に命かけてる人たちがいるねぇ
どっちもタスクシステム向きでないけど
161:名前は開発中のものです。
09/04/07 02:23:02 5k9r+ezc
HSPはともかくXNAをマイナー言語扱いするのはどうだろう
162:名前は開発中のものです。
09/04/07 03:00:31 7U5MSg6Z
>>159
任天堂系もSCE系もダメですね・・・
163:名前は開発中のものです。
09/04/07 12:38:34 d98F5Avl
>>156
あんたそのレベルの人なのか
164:名前は開発中のものです。
09/04/07 13:00:48 t5WTHMua
なんとかシステムとかつけるなら
スクラッチパッドみたいな局所メモリを活用するとか
ある程度ハード特化した実装にするのも手なのかな
GDC2009のGOW3の解説がなんというか燃える内容だったんだけど
URLリンク(game.watch.impress.co.jp)
これはもはやなんとかシステムとか呼ぶ範疇を超えてる気がするけど
将来はこういうのがなんとかシステムとか呼ばれるようになるのかね
165:名前は開発中のものです。
09/04/07 17:07:05 CbUdK8rx
確かにワンダつまんなかった。
ムービー見て終わり。
メタルギア4もそう。
166:名前は開発中のものです。
09/04/07 17:28:04 rVXLClOu
で?
技術批判できなくなったら今度はゲームそのものに攻撃か。
あたたかい頭してるな。
167:名前は開発中のものです。
09/04/07 19:14:31 1GDmqaJq
タスクシステム関係無いじゃん
168:名前は開発中のものです。
09/04/07 19:21:43 1GDmqaJq
タスクシステムもメリット挙げてみろって言われると
途端にはぐらかすからな
いろいろ虎の威を借るなんとやらで参考文献および資料ばっかりもってくるけど
そういうの自分の言葉で説明できるようになってからやらないと説得力ないよね
引用レスも引用したものがメインじゃ誰も相手にしないって
169:名前は開発中のものです。
09/04/07 19:25:38 CBx7pnt0
だからメリットはリンスインシャンプーだっての!
170:名前は開発中のものです。
09/04/07 20:08:43 WMY4fAPQ
お金稼げてるからいいんじゃね?
それを否定するともっとお金稼げるなら俺もアンチになる
171:名前は開発中のものです。
09/04/07 20:20:07 chqHE1jh
>>170
金がほしいならゲーム会社なんて辞めたほうがいいぞ
かなりマジで
業務系いけば、ゲーム系で月14~5万でこき使われてる人ならいきなり給料倍とかある
172:名前は開発中のものです。
09/04/07 21:33:44 ulVvxTge
ID:EEKBitmgはもうあまりにレベルが低すぎて、みんなスルー状態だな。
173:名前は開発中のものです。
09/04/07 23:00:06 chqHE1jh
>>172
俺は並列のがうぜぇ
174:名前は開発中のものです。
09/04/07 23:06:56 2stCxtH4
まあフェードアウトオヤジ臭という意味では
並列さんとやね先生は同じ体臭を放ってるけどな
175:名前は開発中のものです。
09/04/07 23:23:22 wsnDcgD2
だいたい、アタマがまともな本職やセミプロは、こんなところで『オレ様スゲーだろwww』とか
書き散らかさないって。
176:名前は開発中のものです。
09/04/08 00:39:13 DU4wvLd/
本人も、今頃しまったと思ってるころだろ。
177:名前は開発中のものです。
09/04/08 01:29:22 9bhojcbs
てゆーかここ
どんだけ偉人ばっかりなんですかw
みんなめちゃくちゃ上から目線なんですけどwwww
178:名前は開発中のものです。
09/04/08 07:38:26 uu59oW9Z
別にそんな感じはしないけど
何か気に入らないレスが付いちゃった?
179:名前は開発中のものです。
09/04/08 09:16:12 Ju8SopqO
並列擁護は「第三者の"人達"から見て」 的なレスが多くてうんざりだな
国際社会とか地球市民とかそういう匂いがする
語ってる内容はどっちも滅茶苦茶なのでもうどうでもいいんだが
まあ勘違い分裂君劇場みたいなノリでヲチしようや
180:名前は開発中のものです。
09/04/08 09:18:37 0OsF5j6c
ワンダつまらんかったな。初日にクリアしてすぐ売った。
181:名前は開発中のものです。
09/04/08 10:02:02 DTjWnb4t
じゃ、そろそろタスクシステムについて議論していこうか。
182:名前は開発中のものです。
09/04/08 11:29:12 ZcZVPfWq
タスクシステムの主な役割
・単位時間内に1回何かを実行する為の窓口
・生存管理
・依存の管理
こんなものかな?
183:名前は開発中のものです。
09/04/08 12:10:26 6q9I65fW
タスクシステムはそこにある、ただそれだけだ
184:名前は開発中のものです。
09/04/08 20:23:55 uu59oW9Z
メリットやデメリットのあるタスクシステムなんてタスクシステムとは言えない
女子供は黙ってみてろ?
185:名前は開発中のものです。
09/04/08 23:24:44 Ju8SopqO
その疑問符は何だ?
186:名前は開発中のものです。
09/04/08 23:41:33 P81F6nRk
語尾上げで、柳原可奈子的可愛さを演出してみたんじゃないか?
187:名前は開発中のものです。
09/04/09 00:22:04 q+cTqKgL
むしろ姫ちゃん的な~?
188:名前は開発中のものです。
09/04/09 01:27:01 FGj8z8j8
そういう使い方にしても間違ってるような
189:名前は開発中のものです。
09/04/09 05:09:42 0O2qwazX
雑談ストップ?
190:名前は開発中のものです。
09/04/09 18:55:18 /k3TfSjT
タスクってCしかできない人のための技法?
191:名前は開発中のものです。
09/04/09 19:04:45 trH83J91
あまねく言語でタスクパターンは実装可能ですよ。
192:名前は開発中のものです。
09/04/09 20:14:35 /k3TfSjT
非常にサラッと内容をチラ見してきたけど、まあ特に議論するべきことでもないな
193:名前は開発中のものです。
09/04/09 22:57:42 n4y/QroV
FlashのSTGで、EntityとかActorとか作ってやってるのを見たことがあるな。
194:ID:EEKBitmg ◆HSP4mee/SU
09/04/09 23:40:00 vLLC2UDG
バカにつける薬は無いと言われることもあるけれど厨房は今日も元気です
さて、そんな厨房でもタスクシステムとかいう怪しげなものに取り憑かれる
人々というのが、なーんか筋の悪そうな人が多そうだなーということに気付く
筋が悪いというのは、ガラが悪いという意味では区、頭が鈍いというかバカ
というか、一から十まで具体的に作り方を手解きしてもらわないとなーんにも
動かすことができないセンスの悪そうな人、という意味
こういう生意気書くとまたボコられるわけですが、この直感は当たってると思う
>>128
例えばこういうの。もう何言ってるのかサッパリ分からない。思考が腐臭を放ってる。
>・単位時間内に1回何かを実行する為の窓口
なにそれ。役立たずの糞みたいな仕掛けをねじ込もうとしてるだけじゃん。
居るだけ詐欺の盲腸の無駄飯食らいの穀潰しのないほうがマシな無駄な機構を
何故かゲームプログラムの中に噛ませたがるタスクバカの香りを放ってる
>・生存管理
なにそれ。something managerなの?生存管理?何してくれるの?
タスクディスパッチャーが何で生死を司るの?ゲームのシミュレーション結果で
決定されることを、なぜタスクディスパッチャーごときが口を挟むの?設計腐ってない?
余計なお節介をして茶々を入れてくる強烈にウザイものにしか見えない。吐き気がする
>・依存の管理
なにそれ。またsomething manager?依存の管理?何してくれるの?
タスクディスパッチャーに把握させる依存関係って具体的に何?それをどうしてくれるの?
なんか臭そう。
195:ID:EEKBitmg ◆HSP4mee/SU
09/04/09 23:43:36 vLLC2UDG
>>193
EntityやらActorやらいう要素があるのはごく自然なことだよね
でも、このスレのタスクバカに言わせれば、それはタスクシステムらしいよ。
バッチイからあっち行けって思う
196:名前は開発中のものです。
09/04/10 00:22:24 1GdYQJdO
なんで>>128が叩かれてるんだろうと思ったら>>182か
2chブラウザとか使ってないのかな
197:名前は開発中のものです。
09/04/10 00:25:41 4YdM/w1Y
関数インポがメインのタスクシステムを使わずにC++の仮想関数でやるのは速度不足か?
CPU400MHZのPDA用に上記の方法で作ったことあるがとても快適に動作したがなあ。
携帯ならともかく今のハイスペックのマシンでタスクシステムいらんだろ
198:ID:EEKBitmg ◆HSP4mee/SU
09/04/10 00:33:26 FNQAiqo/
>>194
間違えた!>>182だった。>>128ごめんなさい><
まぁ別に>>182にしても恨みはないからごめんなさい
199:名前は開発中のものです。
09/04/10 00:38:46 RpmvrcVd
>>197
関数いんぽとC++の仮想関数なら(規格には無いけど)同じ仕組みだから
もともと差はないはずだよ。
まあ、ろくに定義されてない言葉でループ必至のネタに
自転車置場の議論を楽しんでるだけなんでそういう真面目な話いらんねん。
200:ID:EEKBitmg ◆HSP4mee/SU
09/04/10 00:39:22 FNQAiqo/
>>197
別に関数アドレスや仮想関数が絶対悪だと言ってるわけじゃない
使い方の問題。使いどころの問題
わけも分からず処理を細切れにバラしてごちゃ混ぜ連結リストにぶち込んでなめて
スバラシーデース。自動デース。窓口デース。とか寝言ほざいてる間抜けが嫌いなんだ
201:名前は開発中のものです。
09/04/10 00:59:03 zmUDuwgv
>>199
C++の仮想関数は、関数ポインタからの関数呼び出しと比べると
普通の実装なら間接参照が1回増えるんじゃない?
差は無いってことは無いと思うよ。まぁ大した差じゃないと思うけど。
あとタスクシステムの場合の関数ポインタの使い方は、仮想関数の代わりというよりは
状態に合わせた処理に直接ジャンプする(状態による場合分けをなくす)という
意味合いが大きいんではなかろうか。
これもまぁテーブルジャンプを一段挟めばいいだけではあるけれど。
202:ID:EEKBitmg ◆HSP4mee/SU
09/04/10 01:21:33 FNQAiqo/
タスクバカのことだからvptrを書き換えて関数セットを丸ごと取り替えて喜んでそうだけどな
タスクバカって脳みそが中二のオジチャンだからさ、クラス図を完全無視して自在に変化する
オブジェクト、とかにワクワクするんじゃないかな
203:名前は開発中のものです。
09/04/10 01:34:48 zmUDuwgv
>>202
だからなんだよ。
うぜぇ。
204:名前は開発中のものです。
09/04/10 07:27:26 fVKjkvAM
まあ、要は退化してるってことだな
205:名前は開発中のものです。
09/04/10 08:01:06 Enyn0370
小沢 「外食しないと言ったんだから、チャーハン作れ」
麻生 「じゃあまずご飯炊かないと・・・・・」
小沢 「なぜご飯を炊くんだ!ご飯を炊く暇があったらチャーハン作れよ!」
麻生 「ご飯を炊かなきゃチャーハン作れないよ。お米研いだだけだし」
小沢 「そんなことは聞いていない。今すぐチャーハンは作れるのか」
麻生 「(まずご飯炊かないといけないから)今すぐには作れない」
小沢 「外食止めたんだぞ、今すぐに作るのが筋じゃないか!」
麻生 「お米研ぐ→ご飯炊く→チャーハン作る、なのわかる?三・段・階。わかる?」
小沢 「とにかく、すぐチャーハン作れ!」
206:名前は開発中のものです。
09/04/10 09:36:54 yz3HG861
>>205 +民は巣でやってろ
207:名前は開発中のものです。
09/04/10 11:21:34 BJAImmDI
ID:EEKBitmg ◆HSP4mee/SU は
メモリ何ギガもあるマシンだけを対象にしたゲームをシコシコ作ってなさい。
208:名前は開発中のものです。
09/04/10 12:00:12 GpZ/KC5r
なんか面白そうな話題だったのにHSPしか使えない馬鹿が
暴れたせいで途端にスレのレベルが下がったな
こいつ、いい加減、いなくならねーかな
209:名前は開発中のものです。
09/04/10 12:54:33 Y8VaBVxa
このお題(タスクシステムの是非)に関しては、アンチ側が中東の米軍並みに有利なはずなのに
なんで互角以下の劣勢なんだ?
210:名前は開発中のものです。
09/04/10 13:04:18 ytUDTzAB
コテつけてまで自己顕示するほどのアンチってタスクバカよりたちわるいね
211:名前は開発中のものです。
09/04/10 13:05:59 ytUDTzAB
クラス図とか、オブジェクト指向言語、オブジェクト指向プログラミングはこうあるべしという強迫観念の最たるものだよね
212:名前は開発中のものです。
09/04/10 17:33:29 1zCtaiSY
>面白そうな話題
kwsk
213:名前は開発中のものです。
09/04/10 18:30:28 LKxV/Lgc
誰でもいいからそろそろ、
タスクシステムはこうこうこういうところがダメだから
これからはこうこうこういうものを使うべきだ!
って主張してくれねーかな。
ちなみにタスクシステムを実際に使ったことなかったりするのは論外。
説得力がまるで無いし、比較しないと意味が無い。
あと、机上の理論を聞いてもしょうがないので、
こういうものに移行したらこういうメリットがあったって話も聞きたい。
喧嘩したいだけのお子様や
妄想たっぷりのニートはもうお腹いっぱいです。
214:名前は開発中のものです。
09/04/10 19:08:05 KfvFah+k
実際にお仕事してきてるなら、タスクシステムは経験してるはずだよね
215:名前は開発中のものです。
09/04/10 19:56:07 fVKjkvAM
ダメだの前にメリットをあげてくれよ
話を元に戻そうか?(笑)
タスクシステムのメリットってなんですか?
216:名前は開発中のものです。
09/04/10 20:02:44 sH8kBZbv
本職の人は守秘義務とかあるし、具体的な話はできないんじゃない?
217:名前は開発中のものです。
09/04/10 20:06:05 0HZaI+RC
タスク厨:デメリットあげろ
アンチタスク:メリットあげろ
どっちも説明するつもりないんだな
まぁ面倒なのはよくわかるけど
218:名前は開発中のものです。
09/04/10 20:52:43 GZm91cCj
タスクシステム派に足りないのは
「大規模C++ソフトウェアデザイン」の「5.2 昇位(escalation)」の概念。
上位レベルコンポーネントの存在を軽視しすぎ。
そして巡回依存性、相互依存性の怖さを軽視しすぎ。
5ページだけ、立ち読みでいいから1度読むといい
219:名前は開発中のものです。
09/04/10 21:03:03 KfvFah+k
教えてもらったとおりの発想とスタイルでしかプログラミングできないんすなぁ
220:名前は開発中のものです。
09/04/10 21:07:37 GZm91cCj
>>219
お仕事でタスクシステムを教わったんですね
分かります
221:名前は開発中のものです。
09/04/10 21:13:36 9juAqapQ
タスクシステムを使った イコール 相互依存性があがる
というわけではないしなぁ。
222:名前は開発中のものです。
09/04/10 21:19:09 I/tIMbxt
俺良く分らんながら考えてたんだがC++でタスクシステム実装しようとすると面倒にならないか
Cのが合うんじゃないの
223:名前は開発中のものです。
09/04/10 21:22:56 o/eQJnMQ
もともとCやアセンブラで考え出されたものだからね
224:名前は開発中のものです。
09/04/10 21:26:49 o/eQJnMQ
Windowsプログラムのカーネルはタスク処理だが、(イメージが違うけど)
窓AP作成のユーザーから見れば、イベントドリブンのシステムだから。
タスク部分はフレームワークに吸収してもいいかもしれん。
225:名前は開発中のものです。
09/04/10 22:34:08 GZm91cCj
>>221
そこでもう一押し、「相互依存性を完全除去」まで行くと違いが見える。
10から1にするのはどっちもできるが、1から0にできるのは片方だけ。
0にすると設計の見通しが利く。小さいようで大切なこと。
226:名前は開発中のものです。
09/04/10 23:09:59 GZm91cCj
具体的に脱タスクシステムでやることは単純、・・・でもないけど下記の通り。
もし相互依存性があるオブジェクト群があったら、
1、オブジェクト群の上位に親クラスを作成する
2、オブジェクト群の相互依存箇所を抽出して親クラスのメソッドにまとめる
これを相互依存性が無くなるまで繰り返す。(相互依存性の多さにあらビックリ)
同位のオブジェクト間の相互依存性は上位に丸投げして解決してもらう。
1アンチとしてはこれお勧め。
227:名前は開発中のものです。
09/04/11 02:21:52 GEBPDovg
タスクにはデメリットになりうる注意点が多々あると思うが、利用者側が注意してタスク実装していけば回避できる箇所も多い
あと、汎用的なタスク設計は存在しなくて、作るゲームによってその都度チューニングしてる
なんだかんだ言ってもタスクは便利なんだよね
228:名前は開発中のものです。
09/04/11 02:23:50 pUi3qAut
汎用部分はベースクラスにして継承して振る舞いを実装するとおもうのだが・・・
229:名前は開発中のものです。
09/04/11 02:30:57 FAassbBg
とりあえず確認させてくれ
おまえらバズワードって言葉知ってるか?
230:名前は開発中のものです。
09/04/11 02:36:07 pR/Rfe6E
「>>2」のことか?
231:名前は開発中のものです。
09/04/11 02:39:50 GEBPDovg
勿論継承するのがいいんだけど、色々と制限厳しい開発なんで、タスク周りはプロジェクト毎に直すようにしてる
タスクは総じて癖が強いが、扱い慣れるとごりごり書けるのがいいよね。プロジェクト終盤のデスマで有用だった。
232:名前は開発中のものです。
09/04/11 07:11:31 JQKbxyD0
スレッドでいいじゃん
233:名前は開発中のものです。
09/04/11 08:44:55 VwbI10yZ
並列はもう出てこれないだろうな
234:名前は開発中のものです。
09/04/11 09:54:27 BwFqfbII
>>225
別に相互に依存する必要がないならば、
タスクシステムでも相互依存性は0にできると思うけど。
235:名前は開発中のものです。
09/04/11 12:09:00 shgrRKkW
>>226
結局コードが膨れ上がるだけじゃないすか
本人は奇麗にまとめ上げた気分で気持ちいいかもしれないけど、無駄な作業すなぁ
236:名前は開発中のものです。
09/04/11 12:10:53 shgrRKkW
アンチの意見で、なるほどコレは参考になるっていうのが無いのう
まだ並列さんのが実際の現場の実装の片鱗を語ってるだけあってよかった
237:名前は開発中のものです。
09/04/11 12:13:12 lG5C2wBT
>>234
相互依存性が 0 ならプロジェクト毎に直すなんてことにはならない。
238:名前は開発中のものです。
09/04/11 12:17:32 FPJVr62U
>>237
相互依存性が 0でもジャンルとかプラットフォームの世代が
異なればそれにあったものに変更すると思うが。
239:名前は開発中のものです。
09/04/11 12:18:00 lG5C2wBT
>>235
依存性を排除してモジュール化を進めていけば再利用可能なコードができる。
「再利用」っていうのはプロジェクト毎にコピーしていじるってことじゃないよ。
同時に、既存のコード( C++ 標準ライブラリや Boost など含む)と組み合わせることが
やりやすくなる。そうなれば理解しやすい形に近づくことにもなる。
お釣りがくるよ。
240:名前は開発中のものです。
09/04/11 12:19:09 shgrRKkW
所詮開発厨なんだから、はりきる必要はないべ
形にさえなればオケオケ
どんなに奇麗に実装したところで、厨にミソカスに言われるだけなのにね
241:名前は開発中のものです。
09/04/11 12:21:46 lG5C2wBT
>>238
それは「変更する」部分がジャンルとかプラットフォーム世代に依存してる状態だろ。明らかに。
242:名前は開発中のものです。
09/04/11 12:25:31 FPJVr62U
>>241
それらに一切依存しない、なんてシステムが現実的に使い物になるのかね。
なんか机上の理屈をこねてるだけのような感じがするな。
243:名前は開発中のものです。
09/04/11 12:27:26 lG5C2wBT
>>236,240
並列さんの話が「現場の~」だと信じられるのに、依存性の排除は主観で拒絶か。
自分の考えに近いかどうかが判断基準なんだろうな。おめでてーな。
244:名前は開発中のものです。
09/04/11 12:31:13 hS6DOynO
>>237, 243
ジャンルやプラットフォームに依存しないタスクシステムは作れるし、
それでやってるところはあるよ。
ただ、そういうのって汎用的になりすぎてむしろ使いづらいから
ジャンル毎にカスタマイズするところもあるってだけの話。
>自分の考えに近いかどうかが判断基準なんだろうな。おめでてーな。
でた!自己PR!
245:名前は開発中のものです。
09/04/11 12:32:24 lG5C2wBT
>>242
たとえば C++ 標準ライブラリはゲームのジャンルやプラットフォームの世代に
一切依存しないが、現実のゲーム開発でもとても有用だ。わかりやすい話だろ。
246:名前は開発中のものです。
09/04/11 12:35:37 FPJVr62U
PS1世代は完全にC++使えなかったし、PS2でもローンチではSCEはC++を非推奨にしてたけど…
C++標準ライブラリがゲーム機で普通に使えるようになったのってXBOX/PS3/360からだよ。
これほどプラットフォームの世代に依存してるものを「一切依存しない」って…
247:名前は開発中のものです。
09/04/11 12:37:34 VwbI10yZ
C++標準ライブラリでゲームで便利なものって何かあったっけ?
248:名前は開発中のものです。
09/04/11 12:37:59 lG5C2wBT
>>244
その「カスタマイズ」というのがコードを変更することではなく、ジャンルに合わせて
使い方を変えるということなら問題ない。そうではなくてプロジェクト内にコードを
コピーしていじる必要があるのなら、それはまだ依存性の問題が残っているということ。
要するに "Open-Closed Principle" というやつ。
URLリンク(www.morijp.com)
「モジュールは拡張に対して開いて (Open) おり,修正に対して閉じて (Closed) いなければならない」
249:名前は開発中のものです。
09/04/11 12:42:39 VwbI10yZ
>>248
タスクシステムはライブラリではなくフレームワークだからコピーでよい。
コピーしない方針なら、継承使って拡張していくことになるが、
コピーできる環境なら継承よりコピーの方が良い。
250:名前は開発中のものです。
09/04/11 12:43:36 hS6DOynO
完全にライブラリ化してるタスクシステムあるけど。
というわけで、依存性の話はタスクと関係ないってことで
じゃ、依存性がどーたらという話はこれで終ね。
251:名前は開発中のものです。
09/04/11 12:48:00 lG5C2wBT
>>246
それらの制限は当時のコンパイラやライブラリ実装の問題のせい。依存性の問題じゃない。
たとえば同じ仕様の標準ライブラリが、新しい gcc のレベルならそれらのプラットフォームでも
余裕で使えるだろう。
例が理解しにくかったのなら「C 標準ライブラリ」に置き換えて読み直してみるといい。同じ話だ。
252:名前は開発中のものです。
09/04/11 12:48:57 VwbI10yZ
だから、タスクシステムはライブラリというよりはむしろフレームワークだ。
頭の悪い奴だな。
253:名前は開発中のものです。
09/04/11 12:52:12 FPJVr62U
>>251
>それらの制限は当時のコンパイラやライブラリ実装の問題のせい。依存性の問題じゃない。
プラットフォームの性能からくる制約を一切無視してるなぁ…
gcc自体は当時でも余裕でC++対応してたのに、なんでPS1で使えないようにしてたか、考えてみた方がいいかも。
それに「C標準ライブラリ」だってSFC時代のゲーム中動的にmalloc使うなんて考えられない、というハード世代を考えると同じこと。
254:名前は開発中のものです。
09/04/11 12:55:32 lG5C2wBT
>>249
> コピーできる環境なら継承よりコピーの方が良い。
コードをコピーしたほうが良い?最悪だろ、常識的に考えて。
コピー元がバグってたらいっこずつ直して回るはめになるんだぞ?
それに対して、何が「良い」というの?
「ライブラリではなくフレームワークだからコピーでよい」というのも理屈がわからんな。
ライブラリとフレームワークとのどういう違いからそういう話になるの?
とりあえず Wikipedia 見てみたが、「コピーでよい」となるような話は見当たらなかった。
URLリンク(ja.wikipedia.org)
255:名前は開発中のものです。
09/04/11 12:56:31 hS6DOynO
↑依存君と名付けよう
256:名前は開発中のものです。
09/04/11 13:00:19 FPJVr62U
5年周期でハードが一新されて、そのハードをどこまで使い切るかが
売り上げに影響するゲームプログラムというジャンルで、
どこかの本にのっていた「再利用性」って教義を原理主義者みたいに唱えて
「8bitのハードでも64bitのハードでも変更無く使えるプログラムが正しい。」
なんて、頭がお花畑のゆとり発想だよ…
こーゆー分野ではタスクみたいにハード世代にあわせて、動的メモリ確保しない、とか
リスト+ポインタ、とか仮想関数で、とか、環境にあった実装を別にした方がいい。
257:名前は開発中のものです。
09/04/11 13:04:37 VwbI10yZ
>>254
頭悪いんだったら黙ってろよ。
>コードをコピーしたほうが良い?最悪だろ、常識的に考えて。
>コピー元がバグってたらいっこずつ直して回るはめになるんだぞ?
逆に色んなプロジェクトから参照されまくってたら、
もはやバグを直すタイミングすらないのだが。
258:名前は開発中のものです。
09/04/11 13:42:34 GEBPDovg
>>256
共感できるわ。
自分も再利用性などを考慮していたらいつまで経っても終わらないし、無駄に肥大になったり使い勝手が悪いので、
とりあえずタスクベースとなるコードをコピーしてきてゲーム毎にカスタマイズして使うことにしてる。
259:名前は開発中のものです。
09/04/11 13:53:14 lG5C2wBT
>>253
んー。そういう性能の要求っていう依存があることも確かにあるねぇ。
じゃぁ >245 の例を qsort() なり std::sort() なりに置き換えて読み直してみてもらえると
言いたかったことは伝わってくれないだろうか?
260:名前は開発中のものです。
09/04/11 13:59:34 hS6DOynO
>>259
アホ、依存性を無くした方がいいっつーことはみんなわかってんの。
でも、完全に無くすなんてのは現実的に難しいし、
そうするべきでもないことがあんの。
理想と現実っての知れよ。
最近本で読んで嬉しくて触れ回りたいんだろうけど、
アホみたいに理想論言ってないで現実を見ろ。
261:名前は開発中のものです。
09/04/11 14:11:22 lG5C2wBT
>>256
> 「8bitのハードでも64bitのハードでも変更無く使えるプログラムが正しい。」
そのほうがいいのは確かだろ?
で、今は全体的なスペックの向上やコンパイラの進歩によって移植性の高い、
再利用性の高いプログラムを書くことはかなり現実的になってきている。
今時、動的確保しないとか仮想関数使うかどうか、とか、そんなところの違いで
「ハードをどこまで使い切るか」というような差が出るなんて考えられないでしょ。
262:名前は開発中のものです。
09/04/11 14:14:18 lG5C2wBT
>>257
> 逆に色んなプロジェクトから参照されまくってたら、
> もはやバグを直すタイミングすらないのだが。
バージョン管理ツール使ってればそんなことにはならない。
テスト段階に入っていて最新のバグ修正を入れることが得策でないプロジェクトは
バージョン固定するなりブランチ作るなりすればいいよ。
263:名前は開発中のものです。
09/04/11 14:19:50 lG5C2wBT
>>258,260
完全に依存をなくせとは言わないけど、せめてプロジェクト毎にコピーしていじるとか
恐ろしいことを堂々と言わない程度にはモジュール化できるだろってこと。
そんなに本質的に切り離しが難しい依存関係ってどんなのがあるの?
そういう例を挙げてもらえると話がわかるかもしれない。
264:名前は開発中のものです。
09/04/11 14:24:42 hS6DOynO
「完全に依存をなくせとは言わない」とか寝ぼけてんのか…?
お前が「完全に依存をなくせ」って言ったからこの議論が発生したのに。
221 名前:名前は開発中のものです。[sage] 投稿日:2009/04/10(金) 21:13:36 ID:9juAqapQ
タスクシステムを使った イコール 相互依存性があがる
というわけではないしなぁ。
225 名前:名前は開発中のものです。[sage] 投稿日:2009/04/10(金) 22:34:08 ID:GZm91cCj
>>221
そこでもう一押し、「相互依存性を完全除去」まで行くと違いが見える。
10から1にするのはどっちもできるが、1から0にできるのは片方だけ。
0にすると設計の見通しが利く。小さいようで大切なこと。
265:名前は開発中のものです。
09/04/11 14:37:57 VwbI10yZ
>>262
バージョン管理ツールが各プロジェクト責任者に自動で了承取ってくれるのか?
266:名前は開発中のものです。
09/04/11 14:39:53 lG5C2wBT
>>264
ごめん、それ、違う人。
あぁ、「最近本で読んで」とか言われてたのはそのせいか。 >218 の本も読んだこと無いよ。
まぁ基本的にその人と考えてることは同じなんだろうけど、「依存」の中に大昔の
ハードの制約とかも入るような話になっちゃったら 0 にしろとは言い切れないねぇ。
267:名前は開発中のものです。
09/04/11 14:44:16 hS6DOynO
結局タクスシステムとは関係ない話ということでよろしいか?
268:名前は開発中のものです。
09/04/11 14:47:58 VwbI10yZ
いやあるね。
基本的にタスクシステム自体がゲーム仕様に「依存」するからこういう展開になるわけで。
269:名前は開発中のものです。
09/04/11 14:50:55 lG5C2wBT
>>267
依存関係の切り離しも含めてモジュール分割やコード再利用の努力をすれば、
すぐにタスクシステムなんてものは標準コンテナや仮想関数を持った
インターフェースクラスなどに分解され、残るのはゲーム依存部分となり
システムと呼ぶほどのものは残らなくなるだろう、と考えている。
そういう意味でも >263 の質問に答えが欲しい。あと >254 も、かなぁ。
270:名前は開発中のものです。
09/04/11 14:51:36 FPJVr62U
>>266
ハードの制約は大昔も未来も変わらんよ。
非対称マルチコアに最適なタスク管理とか、最近はそっちの方面に流れてるし
実行環境を一切考慮しない唯一の最適なシステムなんてハードが進化し続ける限り不可能。
271:名前は開発中のものです。
09/04/11 14:58:23 VwbI10yZ
>>269
答えがほしいってなんだよ。
自分でやってみればよいだろ。すぐに問題に気が付くから。
272:名前は開発中のものです。
09/04/11 14:58:59 lG5C2wBT
>>270
唯一最適である必要は無い。適切に分割され、要求に応じて組み合わせられるように
なっていればいい。
それなりのサイズの例としては、 C++ 標準ライブラリとか、 C++0x の
乱数発生器フレームワークとか、 shared_ptr, weak_ptr などのスマートポインタ郡とかね。
273:名前は開発中のものです。
09/04/11 15:10:54 VwbI10yZ
だからフレームワークとライブラリは違うってのに。
274:名前は開発中のものです。
09/04/11 15:34:22 62IWIIqa
開発者のオナヌーか
マルチに使えるライブラリうんまーとかは開発者の自己満足
環境に応じて、ゴリゴリに書け
275:名前は開発中のものです。
09/04/11 16:07:14 FPJVr62U
再利用性とか保守性とか、プログラムの一般論としては良いこと、なんだけど
ゲームでそれをするコストに見合うケースは少ないからね…
MMOのクライアントや定番スポーツゲームとか一部の例外を除く
大部分のゲームは再利用も保守も必要ないケースがほとんど。
続編でも旧プラットフォームで作ったチープな仕様のものを再利用して
現行機にもってくる、なんてことはまず無いし。
276:名前は開発中のものです。
09/04/11 16:13:26 hS6DOynO
>>269
>すぐにタスクシステムなんてものは標準コンテナや仮想関数を持った
>インターフェースクラスなどに分解され、残るのはゲーム依存部分となり
>システムと呼ぶほどのものは残らなくなるだろう、
何いってんの?
あらゆるシステムは分解すればシステムと呼ぶものは残らないのは当たり前。
それら使いを組み立てたものをシステムと呼ぶんだろ。
>>272
>それなりのサイズの例としては、 C++ 標準ライブラリとか、 C++0x の
>乱数発生器フレームワークとか、 shared_ptr, weak_ptr などのスマートポインタ郡とかね。
それらを使ってシステムを構築するんだろ。
277:名前は開発中のものです。
09/04/11 16:56:46 xXQkL000
タスクシステムとフレームワーク関係なくね?
フレームワークってハードウェアの差異を抽象化するためのものでしょ。
つまりゲームに特化したOSでしょ。
タスクシステムってハードウェアの差異を抽象化する機能あったか?
単なる自作マルチスレッドライブラリっていう位置づけがせいぜいじゃね。
278:名前は開発中のものです。
09/04/11 18:20:01 pUi3qAut
タスクシステムはゲーム用フレームワークで重要な位置にいるのがわからんのかね。
279:名前は開発中のものです。
09/04/11 19:04:53 si1b3yop
ハリウッドの法則とかしらんのかな
280:名前は開発中のものです。
09/04/11 20:03:09 H/Wfcxcz
このスレのアンチタスク派、頭が悪すぎるだろ。
ろくに実務経験が無いのか、下っ端すぎてゲームライブラリやシステム部分
の製作に参加させてもらえていないのかは知らないが、ゲームの仕様が完全に
決まるまで1行もコード書かない(書けない)とか、いくらなんでもひどいすぎる。
281:名前は開発中のものです。
09/04/11 21:11:36 FAassbBg
都合の良いレス以外は読めないんですね
282:名前は開発中のものです。
09/04/11 21:22:43 FAassbBg
いくつもタスクシステムと称するものを使ったソースを読んでるけど(学生レベルのカスレベルのプログラマ作のものもあれば、ファミコン時代から今までやってるベテランのも)
経験の差、思想の違いだけじゃなく
同じ人でもプラットフォームや言語が違うだけで
タスクシステムの役割や意味するもの、形態が違ってた。
タスクシステムはバズワードでしかない
メリットデメリット云々言うのは野暮
あとプロジェクトを特定せずタスクシステムって言葉を使うのは悪だと思う
283:名前は開発中のものです。
09/04/11 21:25:34 xh1QSD+J
つーかアンチは喧嘩したいだけで
真面目に議論する気がないんだから決着着くわけ無いじゃん。
284:名前は開発中のものです。
09/04/11 21:32:27 xQkqf/c4
にしても、前スレだか前々スレだかに居た引数クンのやり方は無い。
あれはキチガイ。
285:名前は開発中のものです。
09/04/12 00:09:59 dmMqUOrY
タスクと聞くとVOWの渡辺タスクを思い出して笑ってしまう
286:名前は開発中のものです。
09/04/12 12:42:11 BK6ZAbdT
>>284
やってないからそう思えるだけ
実は引数を通したほうがバグ数も格段に低くなって結果的に楽
オブジェクト指向なんて役に立たないもの理解してる暇があったら
まずは引数をキチンと通す組み方を学ぶべき
簡単なプログラムから「グローバル変数・関数を一切使わない」ルールで
一度組んでみて徐々に仕事でも自分の担当するところだけでも
グローバル変数・関数の影響をなるべくうけないように組んでいく
これができるだけでプログラマとしてのレベルはそこらにいる奴等とは
比べ物にならないぐらい上がる
これができるようになることで汎用化できるものと汎用化できないものの判断ができるようになる
(お前等はクズだからこの「汎用化『できないもの』」の判断ってのが苦手っていうかできないだろ?)
287:名前は開発中のものです。
09/04/12 12:47:22 zCE7iHyh
じゃあ、グローバル変数はともかく、
グローバル関数を使わない理由を説明してみ?
288:名前は開発中のものです。
09/04/12 12:52:49 kray0MQN
>>286
>オブジェクト指向なんて役に立たないもの理解してる暇があったら
わぉ
構造化プログラム時代のまま20年間時間が止まったままの人がいるよ
80年代のプログラマが現代にタイムスリップですか?
289:名前は開発中のものです。
09/04/12 13:01:05 dWUYp7ZA
>>286
オブジェクトで渡した方がいいじゃん。
どうせアクセサ経由だし、バラバラに引数渡すよりもバグが入らないね。
290:名前は開発中のものです。
09/04/12 13:26:34 vw2uNoL2
スパゲティプログラムをずるずる書くようなレベルの奴が、
オブジェクト指向なんぞに手を出すのは早すぎ、ということを
言い損なってるだけだろ。
291:名前は開発中のものです。
09/04/12 13:59:53 bCeAm0TS
グローバル関数使わない利点が真面目に分からないのだが。
グローバル変数使うなってのは聞いたことあるが。
というか、Cだと基本的にグローバル関数だよな。
てことはC++でメソッドのみで書けってことなんだろうけど、
C++のメンバ変数ってある意味クラス内でのグローバル変数だから、
グローバルがダメならメンバ変数もダメだよな。
てことは一体・・・。
struct hoge
{
int x, y, z;
};
class hoge_funcs
{
public:
static void func1(int &x, int &y, int &z){}
static void func2(int &x, int &y, int &z){}
};
int main()
{
hoge h;
hoge_funcs::func1( h.x, h.y, h.z );
hoge_funcs::func1( h.x, h.y, h.z );
}
こういうことですね、分かります。
292:名前は開発中のものです。
09/04/12 14:10:03 fR0Z14QS
>>288
オブジェクト指向アンチ=構造化プログラミング派ってのは短絡的すぎる
それどころかむしろ遅れているよ
最近日本でも関数型言語が注目されるようになってきたけど、
オブジェクト指向もサポートしている関数型言語(ocaml等)でオブジェクト指向を多用されない理由は型システムとの相性だけじゃないんだぜ
293:名前は開発中のものです。
09/04/12 14:13:21 dWUYp7ZA
>>292
CやC++が関数型言語なら話は分かる。
294:名前は開発中のものです。
09/04/12 14:19:15 fR0Z14QS
>>293
違う違う。
何も理解してないから言語にこだわってCやC++が関数型言語ならとか言い出しちゃうんだよ
295:名前は開発中のものです。
09/04/12 14:27:39 u3tKtjJi
>>292
またそのパターンか
296:名前は開発中のものです。
09/04/12 15:02:02 fR0Z14QS
入力と出力が一致することは大切。
確かにC++では引数ベースで書くとタルいかもしれんが
自動テストとの相性がいいし、メモリ破壊のチェックも楽になる。
あと>>286と他のレスで、
namespace内の関数やstatic関数はグローバル関数か否かの認識がズレてると思われ
297:名前は開発中のものです。
09/04/12 18:59:10 YzcSj6gj
>286
バカだな。
read onlyなら、引数で渡そうがグローバルに置いてあろうが何も変わらない。
その辺のアクセス制御が出来ない無能は、センス無いとしか言いようが無い。
298:名前は開発中のものです。
09/04/12 19:10:15 kray0MQN
その素晴らしいグローバル関数を一切使わない引数方式とやらで作られた商用ゲーム、
今まで見たこと無いので一本でもあれば教えてくれないかなぁ
タスク使って作られたゲームはたくさん見たけど、そんな素晴らしい方式が
あるなら何で誰も使わないんだろうね。
世界中のゲームプログラマのレベルが君に比べてあまりに低すぎるのかなぁ?
299:名前は開発中のものです。
09/04/12 19:10:50 p1GdMo7J
結局アクセス制御の概念をもってCでライブラリとか組むとさ、
オブジェクト指向言語を使用して組むのと殆ど変わらない
考え方で組むことになると思うのですが・・・。
300:名前は開発中のものです。
09/04/12 21:26:04 dWUYp7ZA
>>294
言ってる事はカプセル化にしか見えないんだけど.。俺には。
301:名前は開発中のものです。
09/04/13 01:03:42 UjZc2s3x
>>298
そういるルールだからです。
「ぬーやる」バーガーはしってますか?
302:名前は開発中のものです。
09/04/13 01:07:48 UcN+s1G8
グーバル関数使わない君はマダかね?
303:名前は開発中のものです。
09/04/13 01:54:53 JXX1juts
悪いw
グローバル関数は間違いだなw
ただ、ヘッダを一括インクルードして
関数をどこでも使えるようにしてしまう組み方がダメだって話
関数を使う箇所だけでヘッダを呼ぶときと
関数を使わない箇所でもヘッダを呼んでしまうのの違い
これに名前ってついてないので説明しにくいが
必要な箇所で必要な分だけインクルードして関数を呼べってこと
簡単に言えばマスターヘッダを作るなってこと
がいいたかったw
304:名前は開発中のものです。
09/04/13 01:59:44 8k8BQB+C
そんな当たり前のことを今更自分が発見したように言われてもなぁ…。
305:名前は開発中のものです。
09/04/13 02:08:23 JXX1juts
>>304
じゃ、俺のいう組み方は普通にわかる?
306:名前は開発中のものです。
09/04/13 02:58:53 ZjFryAkH
Cだったらそんなの当たり前なことだと思うけど。
それタスクシステムと関係ないし。
307:名前は開発中のものです。
09/04/13 05:55:56 JkeYci9k
「俺の組み方」とやらが見えないわけだが
いままでの質疑応答をふまえて一旦書き直してもらえないか
308:名前は開発中のものです。
09/04/13 06:20:42 JXX1juts
>>307
グローバル関数の内容が>>303になるだけ
309:名前は開発中のものです。
09/04/13 06:23:07 cdFbiK2J
グローバル関数禁止でも一括インクルード禁止でもいいけど、
引数云々の話とはどう繋がるんだ?
必要なものだけインクルードしようが、一括でインクルードしようが、
引数の数や種類は一切変わらないと思うんだが。
310:名前は開発中のものです。
09/04/13 06:35:40 JXX1juts
>>309
引数にきちんと渡すことと一括インクルード禁止は両方同時に守らないと
アクセスを制限できない
311:名前は開発中のものです。
09/04/13 06:36:49 JXX1juts
もちろんグローバル変数は当然禁止な
312:名前は開発中のものです。
09/04/13 06:37:56 yXP78EaC
結局C++でやるなら std::list<Task*> とかで充分だしこの方が簡単じゃないか
313:名前は開発中のものです。
09/04/13 06:41:27 JkeYci9k
>>303
そんな2、3スレ前に原型がでたものは今更たどれないし、
当時から見えていても他人は正確に覚えてないだろうから改めてって意味も含めて
314:名前は開発中のものです。
09/04/13 07:02:40 JXX1juts
>>313
いやいや、>>286な
315:名前は開発中のものです。
09/04/13 07:12:03 JkeYci9k
引数君じゃないの? 引数君の由来になった話が見えないので分からなかった
>>286レベルの話で「グローバル関数使うなは間違いでした」じゃ今更話すべき内容はないな
今時の言語はネームスペースなりパッケージなりあるし、Cは同一関数名のオーバーロードできないだろ
316:名前は開発中のものです。
09/04/13 09:19:54 7048f93j
>>294
そんなことどこにも書いてねーだろw
>>310
意味がわからない。
引数ベースでやることによってどういうアクセス制限を実現できるの?
317:名前は開発中のものです。
09/04/13 09:21:42 7048f93j
>>294
そんなことどこにも書いてねーだろw
>>310
意味がわからない。
引数ベースでやることによってどういうアクセス制限を実現できるの?
318:名前は開発中のものです。
09/04/13 09:26:59 7048f93j
二重レススマソ
319:名前は開発中のものです。
09/04/13 09:37:44 bAffG5gQ
>>303
お前の想定しているレベルが低すぎる。
わかりやすく言うと、
高校生相手に、小学生のお前が、幼稚園児で習うことを
さも他の奴らがわかってないかのように、
低い説明力で、知識を披露している寒い状況。
320:名前は開発中のものです。
09/04/13 12:56:31 kqYtrvhC
わかってないじゃん
わかってないからグローバル変数使ったり、一括インクルードなんてしちゃうんでしょ?
321:名前は開発中のものです。
09/04/13 13:17:25 ml16oMx+
名前空間って知ってるか?
322:名前は開発中のものです。
09/04/13 13:18:02 oo7V00gn
はいはい、してねーよカス
323:名前は開発中のものです。
09/04/13 13:32:50 SRe2zDAR
>>319
同意。ちょっと低いと思う。
分割インクルードによるアクセス制限なんて、誰でもやってることでしょ。何をいまさら。
未だ並列君や高専君の方が議論は面白かったぞ。
324:名前は開発中のものです。
09/04/13 15:24:05 7048f93j
>>323
突っ込み所が違う気ガス
分割インクルードをアクセス制限だなんて言い出すのはマズいよ
325:名前は開発中のものです。
09/04/13 17:02:17 SRe2zDAR
>>323
まぁね。分割インクルードの一番の目的は単体テストができるように癒着を無くす事だもんね。
ヘッダ分割することでアクセス制限を掛ける効果もあるが、あまりに当たり前すぎる事を>>303がさも自分流だと語りだしたのでびっくりしたんさ。
326:名前は開発中のものです。
09/04/13 20:04:51 kqYtrvhC
それならそれがとても大事なことだってのはわかるよね?
このルールを破ってはいけないんだ
windows.hを作った人はボケだったけどまねしちゃ駄目なんだ
必要なところで必要なものだけ呼ぶんだ
327:名前は開発中のものです。
09/04/13 20:15:21 kqYtrvhC
まあ、あんまりないとは思うけど
必要なものが呼べてないソースも駄目だぞ
さらにこれから必要かもしれない希望的観測も駄目だ
キッチリ必要なもののみな
言うのは楽だけどできるかい?
328:名前は開発中のものです。
09/04/13 20:26:29 JkeYci9k
>>319をもう一回読もうか
329:名前は開発中のものです。
09/04/13 21:22:47 BT19AMT2
引数がどうの言ってるキチガイと
HSPしか使えないゲームも作ったことないド素人は
どっか行ってくんねえかな
330:名前は開発中のものです。
09/04/13 21:33:38 JXX1juts
>>328
いや、お前は知ってるだけ
理解してるとは天と地の差がある
だからタスクシステムなんて使うんだ
331:名前は開発中のものです。
09/04/13 21:48:38 oo7V00gn
タスクシステムとどういう関係があるんだ?
332:名前は開発中のものです。
09/04/13 21:56:36 ZjFryAkH
>>330
どこかのサンプルでタスクシステムって紹介されてるものを、
グローバル変数、一括インクルードなしに改良してみろよ。
できるから。
333:名前は開発中のものです。
09/04/13 22:00:08 oo7V00gn
>>330
がんばれよ
334:名前は開発中のものです。
09/04/13 22:07:18 SRe2zDAR
ID:JXX1jutsは凄いのぅ。きめつけで知ってるだけとかどんだけ上からなんだよ。
PG歴と過去にどんな環境でのPGを経験しているのか是非知りたいぜ。
で、このスレの住人スキルレベルをどう想定しているのかを挙げてもらってから、また>>319を読んでくれ。
335:名前は開発中のものです。
09/04/13 22:18:46 JXX1juts
じゃあ、みんな引数はちゃんと使うしグローバル変数も
一括インクルードも無しで組めてるんだね?
シングルトンとか意味不明なこと言い出すのもダメだぞ
336:名前は開発中のものです。
09/04/13 22:35:00 Q6R94BGZ
C言語前提だけど、グローバル変数はまったくなくても大丈夫だな。
モジュール内で共通して使用するステータスはstaticで作り、
ヘッダには記載しないことによりカプセル化する。
一括インクルードはアプリケーション向けには作ると便利。
テストは個別にテストできるようにモジュール毎に分けておく。
337:名前は開発中のものです。
09/04/13 22:37:14 Q6R94BGZ
追記
どこのモジュールからも参照できるグローバル変数は作らないという観点で書きました。
338:名前は開発中のものです。
09/04/13 22:41:33 GUql8Y/z
引数をちゃんと使うってのがどんなのかわからんな
全ての関数はリエントラントじゃなきゃ駄目とかか?
339:名前は開発中のものです。
09/04/13 22:46:11 JXX1juts
>>338
何?リエ・・・?
あんまり横に長い言葉使うと俺に伝わらないぞ
340:名前は開発中のものです。
09/04/13 22:46:47 8k8BQB+C
>335
自分が出来ていないことを、それとなく出来ているのかどうか周りに確認してる小心者乙www
341:名前は開発中のものです。
09/04/13 22:50:41 JXX1juts
>>340
お前みたいにやりもしないではじめから舐めてかかってる奴に限って
早々に妥協して一生理解することないんだよねw
342:名前は開発中のものです。
09/04/13 22:55:12 8k8BQB+C
>341
『オレさまスゲー』とか思っちゃってるんですねwww
ハイハイw、ID:JXX1jutsサマはすごい才能の持ち主で努力家でもありますデスよwww
343:名前は開発中のものです。
09/04/13 23:17:49 ml16oMx+
ID:JXX1juts 議論は出尽くしたな。
ハイ次の方どぞー。
344:名前は開発中のものです。
09/04/13 23:24:55 SoFywSmj
HSP使いは厨房っぽかったけど、こんどの引数君は
おっさんの中に小学生がまじってる、みたいな格差を感じる…
345:名前は開発中のものです。
09/04/13 23:28:22 JXX1juts
技術的なことなにも答えないで煽りだけして終わり?
っていうか俺のいうことくだらないと思ってるとマジで伸びないぞ
引数も使いこなせない奴にオブジェクト指向触らせるなと言いたい
意味ないからホント自分の組んでるものが意味あるのか?
無いのか判断つかない状態でプログラム組んでる奴マジで多いだろ?
346:名前は開発中のものです。
09/04/13 23:40:24 GUql8Y/z
>>345
じゃあ横に長いとか言ってないで答えてくれ
つかシングルトンと長さ変わらないし。カタカナでも一文字差だし
347:名前は開発中のものです。
09/04/13 23:45:51 SoFywSmj
あまりにレベル格差があるから小学生かと思ったけど
もしかしたらBASICが行番号使ってたころの時代錯誤のロートルかな?
まぁ20年ぐらい昔はBASICとかFORTRANからCに移行したプログラマで
引数使わずにグローバル変数使ってるのが居るって噂を聞いたことがあるが…
いまどきそんな化石プログラマ探しても見つからんよ。
348:名前は開発中のものです。
09/04/13 23:53:17 SRe2zDAR
俺も昔Cしか使えないコンシューマでOOPもどきで書いたなぁ。あれは正直時間の無駄だ。
C++使えば継承・派生・仮想関数使えるから、コードの記述量が3倍ぐらいに膨れ上がる
349:名前は開発中のものです。
09/04/13 23:54:21 JXX1juts
>>348
はい、嘘
書き比べたことないだろ?
350:名前は開発中のものです。
09/04/13 23:54:32 SRe2zDAR
あ、書き途中でゴメン。
C++使えば継承・派生・仮想関数使えるのに、それでもカプセル化にこだわってCのみで書こうとしたら
コードの記述量が3倍ぐらいに膨れ上がったわ。
初心者にはオススメできないぜ。
351:名前は開発中のものです。
09/04/13 23:58:40 SRe2zDAR
そうだね。書き比べたことはない。そんな無駄な手間はしない。
コード量は3倍にもならないかも知れないが、2倍にはなってたと思うぞ。
ただ、体感で保守量が3倍以上にはなってた。同じコードは2度書くなとはよく言ったものな~。
あれは地獄だった。
352:名前は開発中のものです。
09/04/13 23:59:45 8k8BQB+C
>345
> っていうか俺のいうことくだらないと思ってるとマジで伸びないぞ
当たり前のことをさも自分が発見したように語られてもなぁ…www
353:名前は開発中のものです。
09/04/14 00:02:46 S7vD9cWE
CでOOPもどきのソース見たときあるが、関数名が長かったな。
354:名前は開発中のものです。
09/04/14 00:10:09 EDBoOJMk
>>351
アレアレ?
数字が変わってきちゃったよ?w
実際やってみりゃわかるがほとんど差はでない
っていうか全く差がでない
355:名前は開発中のものです。
09/04/14 00:13:01 3FXKgyjE
>それでもカプセル化にこだわってCのみで書こうとしたら
と書いてるんだが・・・。
この意図が読めてないん?
356:名前は開発中のものです。
09/04/14 00:42:01 Xd02NGTo
もう何でもいいから、軽くその引数とカプセル化使った
弾幕かなんかのソース出したら話が早いじゃん。
ソース見たら一発だろ。こいつがなに言いたいのかさっぱり分からんし。
357:名前は開発中のものです。
09/04/14 00:46:32 Xd02NGTo
上のは >>345 へのレスね。
358:名前は開発中のものです。
09/04/14 00:47:45 S7vD9cWE
Cでカプセル化するとこんな感じか?
// h
struct player_t;
extern void player_construct(struct player_t*);
extern void player_set_x(struct player_t*,int);
extern void player_set_y(struct player_t*,int);
extern int player_get_x(struct player_t*);
extern int player_get_y(struct player_t*);
extern void player_move(struct player_t*);
359:名前は開発中のものです。
09/04/14 00:48:50 S7vD9cWE
// c
struct player_t
{
void (*move)(player_t*);
int x;
int y;
};
void player_construct(struct player_t* player)
{
player->move = &player_move00;
}
void player_set_x(player_t* player,int x)
{
player->x = x;
}
void player_set_y(player_t* player,int y)
{
player->y = y;
}
int player_get_x(player_t* player)
{
return player->x;
}
int player_get_y(player_t* player)
{
return player->y;
}
void player_move(player_t* player)
{
(*player->move)(player);
}
360:名前は開発中のものです。
09/04/14 01:17:30 X5T3ILnL
>>358
例ならこれでいいんじゃね。使ったことないけど。
URLリンク(www.sage-p.com)
他にはDirectXでおなじみのCOM。
361:名前は開発中のものです。
09/04/14 03:21:18 2Zsr/zIR
>>354
おいカス。お前がCで
C++と同様の効率が良い仕組みのポリモフィズムを書いてみて
差が出るのを実感しろバカが。
362:309
09/04/14 05:42:07 H+OqGA0n
>>310
一括インクルードとアクセス制限がどう関係するんだ?
必要かどうかを判断してインクルードするのは、そのヘッダ(のクラスや関数)を使う側なんだから、
インクルードするヘッダによってアクセスを制限するのは無理がある。
一々使用者のソースを確認して「このヘッダはインクルードしないでください」と言って回るのか?
アクセスされたら困る関数や変数は最初から公開しない。それだけの話だろ。
一括インクルードを避けることと、アクセス制限とでは、話のレイヤが違うと思うが。
一応確認しておくけど、もともと非公開のプライベートヘッダを取り込むような
マスターヘッダを想定してるわけじゃないよな?
363:名前は開発中のものです。
09/04/14 07:07:31 EDBoOJMk
>>362
頭悪いなお前
364:名前は開発中のものです。
09/04/14 07:22:56 qdpCjwYR
>362
なんでそんな、一括インクルードしてナンデモカンデモやろうとするようなコードを書くのかね?
365:名前は開発中のものです。
09/04/14 07:26:47 0xCIIVMv
ドキュメントも読んだこと無さそうだよね
使うクラスや関数のヘルプに必要なヘッダ書いてあるだろ
366:名前は開発中のものです。
09/04/14 07:35:20 0xCIIVMv
>>361
差なんかでないっていってんだろクソが
そんなもんいくら使ったって実装しなきゃいけない機能は変わらないんだよ
余計なコード増やしてんじゃねぇよ
367:名前は開発中のものです。
09/04/14 07:43:22 6uoqgqQs
マジキチっぽいからスルー推奨
ここまでレベル下がるとどうしようもない
368:名前は開発中のものです。
09/04/14 08:39:45 0xCIIVMv
そうやって自分に説明できないことをキチガイ扱いばかりしてると
なんも見えてこないぞ
実はオブジェクト指向はなんの役にも立たない
369:名前は開発中のものです。
09/04/14 08:41:50 royMBBy8
>>367
俺なんかスルーされちゃったから絡みたくても絡めないぜ
370:名前は開発中のものです。
09/04/14 09:00:22 3ekdPJzf
>>368
>実はオブジェクト指向はなんの役にも立たない
世界中のオブジェクト指向を使ってるプログラマより
君の方が正しい、とはどー考えても思えないなぁ
単に君の技術レベルが低すぎるだけにしか見えない。
371:名前は開発中のものです。
09/04/14 09:10:50 iyZDY9B2
>>364
分割ヘッダとアクセス制限との関わりをうまく説明してくれないか?
俺も分割ヘッダはアクセス制限になりえない派なんだが、
だからといって一括インクルード派なんだろと言い出すのは話をそらしてるとしか思えん(何も言わずとも1ソース1ヘッダにするのが一般的だし)
そもそもヘッダに書くものを最小限に抑えてないのでは?
372:名前は開発中のものです。
09/04/14 09:16:14 iyZDY9B2
>>370
使われていることと有用かは別な話だろう
C++やJavaは不人気という調査結果が出る割に仕事減らんし…w
つか罵りあいは他所でやりなよ
373:名前は開発中のものです。
09/04/14 09:31:52 6ZdJwzLX
君達、タスクシステムの話をしろー!
374:名前は開発中のものです。
09/04/14 11:20:30 u94rSKDb
>>370
LinuxのリーナスさんはC++のくそったれ!
オブジェクト指向のバーカって言ってるよw
おれはオブジェクト指向は考えて使えば、
それなりに便利だよ派なんだけどね。
375:名前は開発中のものです。
09/04/14 11:36:32 kpDDfzsv
>>366
やっぱりカスだなお前。出るつってんだろバカが。
376:名前は開発中のものです。
09/04/14 11:44:28 Xd02NGTo
何だ単なるC++アンチか。
こっちいけこっち。
C++ に未来はあるか??? そんなものはない!!!
スレリンク(tech板)
377:名前は開発中のものです。
09/04/14 12:46:06 wvZJED/j
>>374 Linus は暴言家として有名なのを知らないのかコイツはw
378:名前は開発中のものです。
09/04/14 12:50:02 0xCIIVMv
無駄無駄
だってオブジェクト単位でまとめることにメリットなんかねーもん
誰かメリットを説明できるもんならやってみろって感じ
どうせ効果も検証せず雑誌でいいっていうから使ってる的な
脳みそにカビが生えてる奴しかいないだろここ
頭悪い(笑)
379:名前は開発中のものです。
09/04/14 12:56:31 0xCIIVMv
そもそもオブジェクト指向や周辺技術を使っても
仕様書のたかが一項目すら削ることはできない
絶対に組まなければならないんだ
組み方で省略できるとか物理的にないから(笑)
380:名前は開発中のものです。
09/04/14 13:05:13 u94rSKDb
>>377
で?なにが言いたいのこのバカはw
381:名前は開発中のものです。
09/04/14 13:26:27 Xd02NGTo
88BASICあたりからCに移行して
「引数スゲー!」
って浮かれてるように見えるな。
382:名前は開発中のものです。
09/04/14 13:29:00 3FXKgyjE
俺にはCからC++に移行して
「OOPが理解できないので叩きます」
ってロートルにも見えるよ!
383:名前は開発中のものです。
09/04/14 13:31:06 ljxC4tV2
何かここのところスレのレベルが異様に低いと思ったら
OOPのメリットすら理解できないクルクルパーがわめいてただけか
こんな低脳とまともな議論が出来るわけがないな
並列さん、戻ってこねえかな
384:名前は開発中のものです。
09/04/14 13:32:45 Qf8B6wwZ
殆ど派生しない根底クラスと、用途が2・3種類のテンプレートクラス
コード量逆に増えてね?
385:名前は開発中のものです。
09/04/14 13:46:26 u94rSKDb
・オブジェクト多体性
・カプセル化
をベースに考えると・・・
OOP言語は依存性をなくすためにインターフェースと、
疎結合にするために包含を徹底するとコードが、
肥大化する傾向があるかな。
C言語はカプセル化はちゃんと考えれば出来る。
逆にOOPを模倣しようとするとコードが肥大化する。
ここらのいいとこ取りをしてるのがプロトタイプベースのOOP言語になるってわけだよね。
386:名前は開発中のものです。
09/04/14 14:10:25 wvZJED/j
暴言家の引用をする馬鹿さ加減すら自覚できない馬鹿とはなw
387:名前は開発中のものです。
09/04/14 14:20:49 u94rSKDb
>>386は馬鹿さ加減すら自覚できない本当の馬鹿。
388:名前は開発中のものです。
09/04/14 14:54:28 Qf8B6wwZ
暴言家というレッテルは信じれるんだな
389:名前は開発中のものです。
09/04/14 15:25:36 Xd02NGTo
往々にして偉い人が言う言葉は
一部の人たちが極解して妙な方向に走る傾向にある。
例:戦争はいけません→ノーガード戦法
390:名前は開発中のものです。
09/04/14 15:45:42 J883penL
例:タスクシステムはいけません→低レベルすぎ、スルー推奨
・・・あれー?
391:名前は開発中のものです。
09/04/14 15:56:43 Xd02NGTo
例:タスクシステムは良いです→高レベルすぎ、全力でシステム擁護
・・・こうだろう?JK
392:名前は開発中のものです。
09/04/14 16:35:26 Qf8B6wwZ
もうスクリプト以外は触りたくない
システムは固定化してデータだけでゲーム作らせてくれ
393:名前は開発中のものです。
09/04/14 16:39:56 u94rSKDb
そういうのは売れたゲームの続編だけに許される特権だぞw
394:名前は開発中のものです。
09/04/14 16:42:47 Qf8B6wwZ
なんで続編はグラなりシステムなりが向上してないの文句いうの?
別にいいじゃんねー、内容さえ変われば…
ああ、ナンバリングするから文句でるのかな?なら、1.1とかで出すといいのかも
395:名前は開発中のものです。
09/04/14 19:06:44 0xCIIVMv
いま、いるようなのは馬鹿ばかりで反論できないか・・・
396:名前は開発中のものです。
09/04/14 19:12:51 0xCIIVMv
そもそもちょっとでも検証したことあるんだろか?
まあ、俺の言うことは信じなくとも学校の教科書じゃねーんだから
どんな馬鹿がどんな目的で出版してるかわからんぞ
少なくともお前等のためでは決して無い
本に書いてあることを盲目的に信じてしまうような出来の悪い脳みそなら捨てちまえ
397:名前は開発中のものです。
09/04/14 19:47:34 8dpJLo2L
>>396
反論が欲しいならとりあえずコテつけて
398:名前は開発中のものです。
09/04/14 19:57:44 J883penL
>>394
追加ディスクとか追加シナリオのダウンロード配信とか?
どっちもタスクシステム関係なく実装できそうだけど
399:名前は開発中のものです。
09/04/14 19:57:53 EDBoOJMk
>>397
お前のはいらないからいいよ
400:名前は開発中のものです。
09/04/14 20:14:57 Xd02NGTo
なんに対しての反論がほしいんだ?
カプセル化→クラスにしたら楽
一括インクルード→してねーよ
って事で何も話す必要性無いはずだが。
ちょっと聞きたいんだけど、文字列処理とかSTLつかってんの?
文字列処理に限らず、回り見るとC++でクラスライブラリがいっぱいあるけど、
使っていたら、オブジェクト指向の恩恵受けてるよね。
401:名前は開発中のものです。
09/04/14 20:17:39 Q9A4KvpX
ライブラリの恩恵だろ、それ
402:名前は開発中のものです。
09/04/14 20:24:37 EDBoOJMk
>>401
なぁどうみてもライブラリの恩恵だよなぁ
これが区別できない状態でよく
こんな議論に入ってくる気になったよね
403:名前は開発中のものです。
09/04/14 20:28:13 ljxC4tV2
>>401-402
お前、死ね
お前が一人でこのスレのレベルを下げてる
404:名前は開発中のものです。
09/04/14 20:29:06 u94rSKDb
「クラス」ライブラリなんじゃね?
405:名前は開発中のものです。
09/04/14 20:30:23 J883penL
物事の区別がつくならそもそもタスクシステム自体に疑問を持つ件
406:名前は開発中のものです。
09/04/14 20:39:15 J883penL
>>403
今までのタスクシステムスレを「死ね」で検索してみ
自分のレスばっかりで愕然とすると思うぞ
あんまりかっかしなさんな
技術板なんだから「議論」か「スルー」の2択でおk
407:名前は開発中のものです。
09/04/14 20:59:35 iyZDY9B2
>>383
メリットだけ見てデメリットを一切見ないのは危険なこと
まぁ…仕事で使ってるとoopは下っ端プログラマを操作するためのものって意識になってくるがね
408:名前は開発中のものです。
09/04/14 21:26:05 qdpCjwYR
>371
コンシューマの開発環境なんかは、普通にimpl用非公開ヘッダとユーザー用公開ヘッダと
使い分けてるけど。
409:名前は開発中のものです。
09/04/14 21:48:56 EDBoOJMk
タスカーはポリアンナ症候群だからしょうがないな
410:名前は開発中のものです。
09/04/14 21:55:17 qdpCjwYR
下請けにこっちのコードを晒す気が無いから、1フレームに一回呼び出すのを最低限保証して、
タスクっぽいもの(>2のとはかなり違う)を強制的に使わせることはあるよ。
面倒だからオープンにすればいいとか言ってるんだが、どうもエライ人がそれを気に食わないらしい。
昔、下請けに裏切られタコとがあるとか言う話。
411:名前は開発中のものです。
09/04/14 22:34:29 Xd02NGTo
.(≧◎≦) <裏切られタコー!!
∪∪∪∪
いや、すまん。おかげで和んだ。
412:名前は開発中のものです。
09/04/14 22:57:28 iyZDY9B2
>>408
どこからライブラリの話になったの?
413:名前は開発中のものです。
09/04/14 23:16:41 qdpCjwYR
>411
タコじゃねぇ…、タコじゃねぇンだ……orz
414:名前は開発中のものです。
09/04/15 02:50:51 Rd3JLCwV
>>408
dllやlib、so etcではごくフツーの話なのをあえてコンシューマ云々?なんか臭うんだけどww
いちいち内部のモジュールを外部ライブラリに切り出して、見た目ogreみたいに見苦しい形にすることを意図して話してるんじゃねえだろうに(ogreは基本的に逆で、寄せ集めだが)
415:名前は開発中のものです。
09/04/15 11:13:08 JfRQH2ry
dll、lib、soでもそれらの形式のちょっとした知識があれば、
バイナリエディターで中身見るだけでメソッド情報とか参照できちゃうけどな。
416:名前は開発中のものです。
09/04/15 13:01:14 kEONjAxT
デバッガさえあれば自由自在だろう
417:名前は開発中のものです。
09/04/15 13:32:13 Doj+9B8N
エクスポートされてないコード情報を取得してどうしようっての
くだらない知識披露はしらけるだけなのでやめてくれ
418:名前は開発中のものです。
09/04/15 15:45:16 kEONjAxT
呼び出し時のスタックみて引数を推測、活用するんだろうが
419:名前は開発中のものです。
09/04/15 20:31:51 2KAWGTwu
メーカーチェック通らないよ、それじゃw
420:ID:EEKBitmg ◆HSP4mee/SU
09/04/15 21:48:48 h/hIihCF
>>415=>>418か?
くはは。あまりにもくだんな過ぎて屁をこいちゃった。要するにお前が言ってること
・『バイナリリリースの静的・動的リンクライブラリはリバースエンジニアリングできます』
・『だからヘッダーにない非公開なファンクションも呼び出すことはできます』
でっていう
だいたいさ、他人のものパクって逃げるようなコンプライアンスまるで駄目の
底辺ゴミ下っ端零細ブラック企業がそんなことする余裕あんのかね?
たかがタスクコントローラさえ自前で作れないザコなんだろ?
おまけにゲームエンジンも買うことできないド底辺の貧乏会社がさ
パクってきたライブラリの非公開ファンクションを使えるようにするコストを
支払う余裕あんの?というかそのコストに見合う利得は得られるの?
厨房の俺でも鼻で笑いたくなるくらいくだんねーお話だね。ケラケラケラ
421:ID:EEKBitmg ◆HSP4mee/SU
09/04/15 21:53:04 h/hIihCF
それにしても、数日放置してたらこのレベルの低い流れに愕然とした
HSPしか使えない厨房って言われるボクでもこれはちょっとどうかと思うよ
422:名前は開発中のものです。
09/04/15 22:37:21 o79Bx7vZ
またバカが来た
423:名前は開発中のものです。
09/04/15 23:05:22 cFJF598Z
バカがきたぞーーー
424:名前は開発中のものです。
09/04/15 23:18:35 2KAWGTwu
HSPerって、みんながこんなにも自分の身の丈も知らないほどのバカなの?
425:名前は開発中のものです。
09/04/15 23:27:21 LBIGpgUA
HSPって引数あるの?
426:名前は開発中のものです。
09/04/15 23:35:24 fWmttKCU
>>415は俺だけど、>>418はおれじゃねーよw
かってに屁こくな。
427:名前は開発中のものです。
09/04/15 23:58:00 nOUKGSdb
口が悪いのはいただけないがお子様が言ってることはわりと当たってるから困る
ただお子様は少々甘いというか、心に留めといて欲しいのは、ゲーム関連の場合
往々にしてヤクザでデタラメでDQNで始末に負えないのは零細ソフトハウスよりも
むしろパブリッシャーだよ、ということ
NDAとか結んでもバレなきゃいいだろ的な発想でこっそり破るとこあんのよ。こっちが
小さくて立場弱いからナメてんだよね。「法令遵守?コーポレートガバナンス?ナニそれ美味しいの?」という低レベルな
トコがでかい面してたりする世界なの
428:名前は開発中のものです。
09/04/16 00:19:32 JTi+immg
あと、試作品を作らせるためにフルソースを与えないで
リリースビルドのバイナリのみでおまけに機能制限版(評価版)の
ゲームエンジンを供与することはある
機能制限されてておまけにソースも付いてない、おまけにサポートも
得られないようなサブシステムやらコンポーネントなんざ持ってても
商売できねーからな
プロテクトの強度としてはこれで十分だったりする
429:名前は開発中のものです。
09/04/16 12:15:54 4DGJHGiF
なんつーか雑談に噛み付かれてもなぁ
430:名前は開発中のものです。
09/04/17 03:59:56 LuxFFDMm
前に継承の話出てたけど継承使ったアプローチについては
「Techniques and Strategies for Data-driven design in Game Development」
でググってSchumaker.pdfっていうのを読むと、
・クラスベースの階層化によるアプローチは規模に関して深刻な問題を抱えてる
・Very複雑
・頑健じゃない
・貧弱な拡張性
とか欠点指摘されまくってる(48ページ目、和訳は適当)
C++版タスクシステム+継承使いまくりとかやってると
そのうち手に負えなくなってコード捨てることになるぞ。
431:名前は開発中のものです。
09/04/17 04:15:45 gUi0fQGL
>>430
それ、タスクシステム関係ないんじゃね?
前に話出てたっていうならアンカーも付けて欲しいな。
432:名前は開発中のものです。
09/04/17 06:02:10 JobhowDP
今時は純粋な継承じゃなくて文脈毎のストラテジークラス集合で作ると思うが
多重継承や深すぎる継承が云々なんて15年前に議論されていた内容だろ
433:名前は開発中のものです。
09/04/17 08:38:14 ReAVM84L
継承なんてしないにこしたことないよ
ただmfcとか継承前提で作られてると使うしかない
434:名前は開発中のものです。
09/04/17 21:55:12 LuxFFDMm
>>431
タスクシステムあんまり関係ないねw
なんか議論がずれてってるから話明確にしようと思って書いてみた
前に話出たのはこの辺 >>350 >>360 で、
「カプセル化=継承使うこと」と思ってる。これ間違い。
Cでカプセル化するのに継承とか必要ない。
これは既に >>358-359 でコードで示されてる。
この間違いに気づいてる人と気づいてない人がすれちがって
OOPとかC++とかクラスがどうだとかの話に入っていったのかなと。
多分、継承大好きな人=タスクシステム大好きな人でしょ。
継承に疑いを持とうぜ。あとタスクシステムにも。
435:名前は開発中のものです。
09/04/17 22:01:50 3nGp6wqB
>434
オマエのようなバカには『適材適所』の言葉を贈ろう。
継承は、使わなくても問題ない場面で無理して使うことはない。
必要であれば使えばいい。
『使うな』とか『必要ない』とか言い切るヤツは、『使え』とか『絶対必要』とか叫んでる
バカと大差ない。方向性が逆なだけで。
436:名前は開発中のものです。
09/04/17 22:42:15 LuxFFDMm
>>435
言い切り型がダメなのか。じゃあ書き直すよww
オマエのようなバカかもしれないヤツには『適材適所』の言葉を贈らせていただいてもよろしいでしょうか。
継承は、もしかすると使わなくても問題ないかもしれない場面で無理して使うことはないかと思います。
もし必要そうであれば使ってみるのもよろしいかと。
ことによると『使うな』とか『必要ない』とか言い切っているように思われるヤツは、『使え』とか『絶対必要』とかもしかしたら画面の向こうで叫んでるかもしれない
バカかもしれないヤツと大差ないのかもしれません。もしかすると方向性が逆なだけなのかも。
内容については同意。
必要であれば使えばいい。使うなとは言わないし、俺も継承使う。
目的はカプセル化じゃないけど。