OOとゲームプログラミング
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
01/11/07 23:55ID:HnYWCQK1行うことが出来るのか語り合うスレです。
0240名無しさん@お腹いっぱい。
01/11/13 22:00ID:???#define VX (p->vx)
みたいな真似をしたりするのもどうも気が引けるとゆーか・・・。
0241名無しさん@お腹いっぱい。
01/11/14 12:35ID:???多少高かろうが低かろうが屁みたいなもんじゃん。
描画エンジンの都合で……ならわかるけど。
0242名無しさん@お腹いっぱい。
01/11/14 12:52ID:???文句言っている人は、たぶんコストが無視できないプラットフォームで作ってるんですよ・・・。
0243名無しさん@お腹いっぱい。
01/11/14 23:11ID:???0244名無しさん@お腹いっぱい。
01/11/15 00:27ID:rnP2aOWiんなことはない。
オブジェクト指向ヲタはSetPixel,GetPixelとかまで仮想関数
にしたがるから。
それにパフォーマンスが問題にならないような上位層はスクリプトにするのが普通だし。
0245名無しさん@お腹いっぱい。
01/11/15 00:36ID:???それ描画まわりじゃねえか
0246名無しさん@お腹いっぱい。
01/11/15 01:25ID:???そういう簡単な挙動しか実装しない場合は
オブジェクト指向化の恩恵も少ないと思われ。
0247名無しさん@お腹いっぱい。
01/11/15 02:14ID:???たぶんサンプルコードだからだと思うけど、
Task *taskArray[100]; とかがいや。std::list使おうよぅ
0248名無しさん@お腹いっぱい。
01/11/15 11:09ID:???禿同。
0249名無しさん@お腹いっぱい。
01/11/15 12:18ID:uH85Rn+sなんで?
パフォーマンスのため?
タスクシステムを忠実にC++で再現したいから?
CSomeTask::update ()
{
switch(this->mode){
case UPDAETMODE_DEFAULT:
this->do_default ();
break;
case UPDATEMODE_PAUSE:
this->do_pause ();
break;
case UPDATEMODE_DEBUG:
this->do_debug ();
break;
}
}
実際これでほぼ十分でしょ。
0250名無しさん@お腹いっぱい。
01/11/15 12:36ID:???>タスクシステムを忠実にC++で再現したいから?
それに加えて、激しく状態遷移するタスクのデバッグは
もうこりごりってのもあるです。
0251名無しさん@お腹いっぱい。
01/11/15 13:55ID:???ゲーム全体で擬似的なスレッド処理を実現させたいからだと思われ。
背景をスクロールさせながら、ウィンドウをアニメショーンさせつつ移動させたり
するのをスレッドで実装すると分かりやすいからでしょう。
普通に、ループのなかでやるとifの連発になりそうだし。
>std::list使おうよぅ
STLを使うとついてこれない人がいるから…。
という冗談はさておき、サンプルだからでしょう。
0252名無しさん@お腹いっぱい。
01/11/15 14:27ID:???0253名無しさん@お腹いっぱい。
01/11/15 15:05ID:???汎用性の問題。
関数ポインタの場合はswitchと違って、
機能を増やしても書き直す必要がない。
0254名無しさん@お腹いっぱい。
01/11/15 17:07ID:???C++のメンバ関数へのポインタでやると
関数1つ追加ごとにヘッダーへの変更が発生するのも問題。
privateな関数をどうしてヘッダーに書かねばならん!
0255名無しさん@お腹いっぱい。
01/11/15 17:56ID:???listは遅いのでvector使おう。
0256名無しさん@お腹いっぱい。
01/11/15 19:27ID:???オブジェクト志向っぽくない気がする。
0257名無しさん@お腹いっぱい。
01/11/16 00:18ID:RSv3E/5DC++は、クラス定義を見ただけで、だいたい何をやってるか分かって
便利だと思っていた俺は厨なのかしらん。
っていうか、みんなVC++のClassViewを使いませんか?
0258名無しさん@お腹いっぱい。
01/11/16 00:30ID:???何言ってるのよ
市販品かいとりますがな
0259名無しさん@お腹いっぱい。
01/11/16 00:31ID:qXQUQt+7MFCに不満が山ほどあるから、使ってない。
0260名無しさん@お腹いっぱい。
01/11/16 00:42ID:???あのコードだとタスクは死なないみたいだけど、
ふつー死ぬでしょ 順番かんけーなく
eraseのコスト考えたらlist
0261名無しさん@お腹いっぱい。
01/11/16 00:47ID:???>>259
SDKベースでもClassViewは使えるよ。コード補完も。
0262名無しさん@お腹いっぱい。
01/11/16 00:59ID:???あ、ClassViewか
スマソ、ClassWizardと勘違い
0263名無しさん@お腹いっぱい。
01/11/16 01:54ID:???enum{
WORK1,
WORK2,
WORK_MAX,
};
DWORD Work[WORK_MAX];
をグローバルで宣言して共用してます。
もっとスマートで近代的なやり方を教えてプリーズ。
OOと関係無い可能性があるので、sage
0264名無しさん@お腹いっぱい。
01/11/16 03:09ID:???0265254
01/11/16 06:16ID:???べつにヘッダーに書く手間が面倒なわけじゃない。
外部が使用するインターフェースに変更があるわけじゃないのに
内部に機能を追加するだけで、インターフェースを使用している
モジュールに再コンパイルがかかるのが嫌なだけ。
0266254
01/11/16 06:21ID:???0267名無しさん@お腹いっぱい。
01/11/16 15:25ID:???0268254
01/11/16 15:58ID:???まぁそのくらいはどうでもいいが、いちいち基底クラス作って
どうたらこうたらなんてやってられんと思うのだが…
0269名無しさん@お腹いっぱい。
01/11/16 18:20ID:???VC++使ってると全然気にならないんだけどな。
0270名無しさん@お腹いっぱい。
01/11/16 23:37ID:???0271名無しさん@お腹いっぱい。
01/11/17 00:32ID:9iW0SS+5こーゆー書き方なら、たまぁにする。
class CMain;
class CSub
{
public:
CSub(){}
virtual ~CSub(){}
virtual void FunkA(CMain*pMain) = 0;
virtual void FunkB(CMain*pMain) = 0;
};
class CSubNull : public CSub
{
public:
void FunkA(CMain*){}
void FunkB(CMain*){}
};
class CMain
{
CSub*m_pSub;
static CSubNull m_SubNull;
public:
CMain(){ m_pSub = &m_SubNull; }
virtual ~CMain(){}
void FunkA(){ m_pSub -> FunkA(this); }
void FunkB(){ m_pSub -> FunkB(this); }
void SetSub(CSub*pSub)
{
if(pSub == NULL)pSub = &m_SubNull;
m_pSub = pSub;
}
CSub*GetSub(){ return m_pSub; }
};
0272名無しさん@お腹いっぱい。
01/11/17 00:51ID:???0273名無しさん@お腹いっぱい。
01/11/17 13:55ID:???デザインパターン勉強すれば便利に使えるんだけど、使えるかどうか試してみるだけの人にデザパタ勉強しろとは言えないからなぁ。
0274名無しさん@お腹いっぱい。
01/11/17 18:20ID:???ボトルネックとか、無駄な継承等を最適化していったら、どっかで既に使われていたパターンの
亜流だったなんての事は、実際かなりあったよ・・・
0275名無しさん@お腹いっぱい。
01/11/17 19:25ID:???意味不明
0276名無しさん@お腹いっぱい。
01/11/18 02:39ID:???デザパタの学習をやり出せば解る。
デザパタはOOを十分理解してる事が前提で話を進めてるので。
0277ラム
01/11/18 09:59ID:m/JYi1e10278名無しさん@お腹いっぱい。
01/11/18 10:48ID:???違う、そういう意味じゃない。デザインパターンまで実務に使ってる。
キミの言ってることのつながりが全然わからないと言っている。
0279名無しさん@お腹いっぱい。
01/11/18 20:54ID:???0280名無しさん@お腹いっぱい。
01/11/18 21:18ID:???つかっててあたりまえだといいたいんだろう? >>279
0281名無しさん@お腹いっぱい。
01/11/18 22:29ID:???http://www.totempole.net/patterns/gamepatterns.html
こんな試みもあるがね。
0282名無しさん@お腹いっぱい。
01/11/19 22:42ID:???カードゲームを作ろうとしたときカード1枚1枚をクラスとして扱う?
カードの枚数だけクラスが出来るんかな…
0283名無しさん@お腹いっぱい。
01/11/19 23:38ID:???MT:G 系のカードごとにルールがあるカードゲーム?
カードクラスとルールクラスで構成するか、それぞれをクラスにするかだね。
Prototype や Flyweight パターンを参照してみて。
↓だけじゃ分からないと思うけど、参考までに。
http://www.ff.iij4u.or.jp/~ahirusan/Java/patterns/prototype.html
http://www.ff.iij4u.or.jp/~ahirusan/Java/patterns/flyweight.html
0284名無しさん@お腹いっぱい。
01/11/20 00:08ID:???Flyweight パターンが近そうなので
もうちょっと勉強してみます。
0285名無しさん@お腹いっぱい。
01/11/20 20:34ID:???オブジェクト志向してたんじゃないだろうか。
基底クラス武将を継承するプレイヤー武将クラス、大名武将クラス、一般武将クラス。
それらのオブジェクトが家臣団ツリー構造で管理され、
マルチスレッド処理で並列で動いてる。
当時これをつくったひとは本当に天才だとおもう。
ずっと後に出た、これと似たシステムのガンパレードマーチはさんざん自慢しまくってたが。
0286名無しさん@お腹いっぱい。
01/11/20 21:25ID:???本に出てるのは他人に教えても良いゴミテクと知れや。
0287名無しさん@お腹いっぱい。
01/11/20 23:36ID:2YNiudBT例えば、ゲームボーイとか、タイトなパフォーマンスが要求されるとことか、
まぁあったでしょうけど、やっぱ今後は開発効率の向上が必須項目。
例えば、全部組み込みJavaでゲームが書かれるようなことにも数年後にはなり
かねないしさ。
>101
モジュールやデータ構想の勉強っって何ですか?
0288名無しさん@お腹いっぱい。
01/11/20 23:43ID:???アマですか>287
0289名無しさん@お腹いっぱい。
01/11/21 07:35ID:???こういうやつよくいるわ。
0290名無しさん@お腹いっぱい。
01/11/21 11:44ID:kTxoHJqc理解してないのは分かるわねー。
0291名無しさん@お腹いっぱい。
01/11/21 12:33ID:???開発効率のほうが今後のネックだと思うが。
納期に追われたこと無いの?>288
0292名無しさん@お腹いっぱい。
01/11/21 17:02ID:???+→シーン+→キャラクタ→モーション
+→キャラクタ→モーション
なんて風にオブジェクトを階層構造にしてるとき
キャラクタの描画メッセージは、どいつがどのように送りますか?
それとも、こんな構造にはしませんか。
0293名無しさん@お腹いっぱい。
01/11/21 20:28ID:7vVUdWJ9確かにデザパタ厨房は、
今は物理シミュレーションの時代だとか言ってるゲーハー厨並に痛いけど
(そんなのファミコン時代からやってるって…)
デザインパターン自体には、
昔からの手法に共通の名前を与えるという意義はあると思う。
0294名無しさん@お腹いっぱい。
01/11/21 20:52ID:BPHGewxMプログラマ間の意思疎通がシャア並みに速くなる。
0295286
01/11/21 23:12ID:ukm0fF12逆に名前がついてないと頑なに認めないのが一杯居て困る事多し。
1)マルチスレッド的プログラム構造の実際。
2)外部からの通信でどのような状態にも自由に遷移できる構造
3)どのような状態でもメッセージを受け取れる構造
4)正規の処理以外のエラー処理への随時対応可能構造
といった事を教えても「スタイルの違い」と理解せず変更せず、
挙句の果てに人のバグだと言い始める逐次プログラマーの多いこと
多いこと。
0296名無しさん@お腹いっぱい。
01/11/21 23:16ID:zJxGH1jKGoFとかに載ってるのだけがすべてじゃないよ。
0297HN
01/11/21 23:22ID:qbFQMeve> オブジェクト指向を用いてぷよぷよを作る記事がある。
ウェブページだけ見ていて、ソースはそんなに真剣には見てはいなんだけど・・・。
これはこれで、イイっていえばイイのかもしれないんですけども。
オブジェクト指向の例題とするには納得しかねるなぁ〜。
1)
連鎖発生時の「ファイヤ〜」「ばよえ〜ん」とか、ここはキャラクター
が変わることによってメッセージが変わるわけだから、ここでこそ、
Character クラスでも作るのがイイのでは。
2)
Puyo クラスの中に座標を持っているんですけど、これは
明らかに無意味なような気が。
まぁもし、ぷよ一つ一つが、特別な性質を持っていて(例えば、
赤ぷよだけ5つ繋がらないと消えないとか、黄色ぷよを消すと
回りのぷよも変色するとか)そういうことなら、Puyo クラス
でも作って、自分が存在する座標とゲームフィールドの参照を
持って設計するのが、正しいと思うんですけど・・・、うーん、
ぷよぷよっていうゲームの場合、ルールは完全にゲームフィー
ルド毎に決められてるんだから、べつにint型の二次元配列
でやっても、一向にかまわないと思いますよ。
後は、MVC の分離をきっちりやるといいのかなぁ〜。でもこれも
単純なゲームにおいてはほとんど無意味だからやらなくていいか。
まぁ、ぷよぷよというゲームの本質とOOPはあまり関係ないやね。
0298HN
01/11/21 23:27ID:qbFQMeveView(表示する部分)の話でしたら、Puyo クラス書く意味は
大いにありますよね。消すときのエフェクトは、ぷよの色ごと
に違ったりしますから、その Puyo クラスごとに絵画方法を
定義すればラクチン。
0299HN
01/11/21 23:28ID:qbFQMeve0300マルチポストは止めよう
01/11/21 23:36ID:???0301名前は開発中のものです。
01/11/25 17:49ID:LE15OAAJ0302きえさっぱ
01/11/26 01:21ID:???分かるんだけど、ベーシックでもできるものなので、題材として
適切かどうかはちょっと疑問だと思うー
「再帰呼び出し学習材料」としてなら、ぷよぷよは好材料だと思うけど。
0303_
01/12/01 02:43ID:psjJyxPy結局、タスクマネージャC++版は、デキなんですかね?
0304名前は開発中のものです。
01/12/02 13:44ID:???どう言う意味ですか?
0305名前は開発中のものです。
01/12/12 13:09ID:T2PuoAFH0306名前は開発中のものです。
01/12/17 16:26ID:???正直ぷよぷよはOO向きではないよね。
0307名前は開発中のものです。
01/12/31 23:56ID:6Qd2dWNaやっぱり RPG 系こそOOの真価が発揮されると思うんだけど。
0308名前は開発中のものです。
02/01/01 12:43ID:YwsXNczBうまくいかないんだから
プログラムを全部OOでやろうってのがどだい間違いでは?
0309名前は開発中のものです。
02/01/01 14:59ID:7Da5Joztじゃあ何ならうまくできるの?
構造化言語?アセンブラ?
速度的な問題点っていうのは別として、
組み方としてうまくいかないって言う人は絶対 OO 解っていない人だよ。
0310名前は開発中のものです。
02/01/01 15:56ID:???0311名前は開発中のものです。
02/01/01 16:03ID:???そりゃもう大変。
0312名前は開発中のものです。
02/01/01 16:47ID:???もうアフォかヴァカかと。
0313名前は開発中のものです。
02/01/01 17:03ID:???0314名前は開発中のものです。
02/01/01 18:36ID:???そういう人のゲームにOOは(どういう理由で)向いてないっていう意見キボーン。
そうじゃないやつはOO理解できてないだけでしょ?
つまり銀行でCOBOL書いてるやつらと一緒。
やつらでさえ最近はJavaにお熱みたいだから、あと数年でCOBOLer以下になるね、君ら。
0315名前は開発中のものです。
02/01/01 18:43ID:J6apUrhiC言語はそこまでダメじゃないと思うよ。
単純に乗り換えるコストが見合わないってだけだろうね。
その人にとって。ボクにとって。(ぉ
そのうちやるさw
0316314
02/01/01 19:02ID:???(私以外の)OO派もきっとCとかアセンブラが駄目とは思っていないと思う。実際今までCでたくさんの名作が作られてきているから。
でも、そこには血もにじむような努力があったわけでしょう?
それこそ場合によっては発狂する人が出るくらいの。
そういうの、終わりにしませんか?っていう事です。
OOが解決策になりませんか?って言いたいんです。
みんなが幸せになる技術だと思うから、気づいて欲しい。
一番幸せになるのはプログラマーなのに、そのプログラマーに
「OO使えねぇ」とか、本当に使っても無いのに言われるのは悲しいんです。
でも、たしかに色々な意味で初期コストは高くつきますね…。
0317名前は開発中のものです。
02/01/01 19:06ID:???0318312
02/01/01 19:11ID:???>絶対 OO 解っていない人だよ。
なんて書いてる君こそ判っていない。
0319315
02/01/01 19:13ID:J6apUrhi移行したいとは思わない。必要な規模の仕事もあんまりないし・・・。
ウチでは使ってるヤツと使ってないやつが混在してるよ。
0320名前は開発中のものです。
02/01/01 19:17ID:???0322316
02/01/01 21:09ID:EjFgGjPu煽り…ですか?マジで言ってるの?
OO向きじゃない部分があるのは認めるけど…。
>OOはプログラム構造の一部しか記述できないんだよ。
これOOをC言語に置き換えて、アセンブラマンセーな人の発言だと思って読んでみるといいですよ。
0323名前は開発中のものです。
02/01/02 09:54ID:???そうそうアセンブラじゃないと記述できない部分があるよね。
フルアセンブラまんせー。
0324312
02/01/02 10:44ID:???アセンブラでもOOは出来るし。
0325312
02/01/02 10:47ID:???判ってない証拠だね。
OOは言語によらず使える。
戦略ゲームなんかはCでOO使ったけど?10年くらい前か 藁
あと、スプライトはOOだな。
でも全部をOO化するのはアフォです。
0326名前は開発中のものです。
02/01/02 11:55ID:???OO 言語派: C++ など OO をサポートした言語を使えば OO である
OO 戦術 派: オブジェクト(敵データ)管理などに OO の考えを使う
一般的 OO 派: OO サポート言語を使用。設計はどうあれ全面的にクラス/継承を使う
OOD 派: UML、デザパタ、RUP や XP の使用が前提
俺は OO をサポートしてない言語でわざわざ OOP する気にはならない。
けど速度がクリティカルじゃなきゃ VC++ で全部 OOP するよ。
その方が楽だからね。
クラス化するかグローバルで行くかは使い勝手しだい。
>全部OOPするよ。
無理。全部クラス化なら可能かもしれないが。
0328名前は開発中のものです。
02/01/02 16:54ID:dWsrnYIEちなみにゲームクリエイターズバイブルは
Game Architecture and Desing の日本語訳本ね。
ようするに漏れのいいたいことは…
・monostate の化け物みたいなクラスしか書いたことないのに「 OO 駄目」とか言わないように。
・80:20 の法則に基づいて、速度にクリティカルな所以外では関数呼び出しのコストを気にしすぎない。
って事かな?
まぁ、一番惜しいのは >> 326 の分類でいう「 OO 戦術派」の人達。
OO のよさが少しはわかっているのに OOPL による強力なサポートをパフォーマンスを理由に拒んでいる気がする。
反対に早く目を覚ませっ!って言いたいのは「 OO 言語派」だね、
漏れも始めはこのグループだったので、あんまり偉そうな事言えないけど、
OOPL 使うのと OOP するのは違うからね。
OOP のよさが始めに解ってくるのは 「インターフェイスに対するプログラミング」が理解できた所あたりかな?
このあたりからポリモーフィズムとか、有用な所が一気に身についてくると思うから。
そこらへんまでたどり着く前に OO 否定に回っちゃ駄目だと思うなぁ。
0329名前は開発中のものです。
02/01/02 17:02ID:539yM+fZOO … オブジェクト指向
OOP … オブジェクト指向プログラミング
OOPL… オブジェクト指向プログラミング言語
単にOOするのとOOPLでOOPするのとは格段に違うぞ。と言いたい。
>>328
現場の人間はそんな素人向けの本なぞ読まない。
それ以下の文章は意味不明だ。病院行け。
0331328
02/01/02 18:49ID:???あなた >>327 ?
>>327 の発言のがよっぽど意味不明なんだけど。
あなたは素人向けの本だと思ったのかもしれないけど、
本当はあなたみたいな頭の固い人の為の本だと思うよ。
と思ったけど、あんたはまずはじめに「達人プログラマー」から読みなさい。
つーかそれ以前に読んでもない本を初心者向けと言い切るあたりが
やってもない「本当の OOP 」を否定してるって態度をあらわしてるね。
0332315
02/01/02 20:11ID:???最終的にはお金になるんだけどもw
0334名前は開発中のものです。
02/01/02 20:46ID:???業界は頭の固い旧世代プログラマーに占拠され、発展の可能性を
失っている。
これら旧世代を駆逐し、OOPLを世に広めなければソフトウエア業界
に未来は無い。
立て。若者達よ。
立って諸君らの力でこれら旧世代を駆逐し、明るい未来を切り開くのだ。
日本の未来は諸君の双肩に掛かっている。
みたいなー。
まあ、判りやすくデフォルメするとこんな煽動が
OOPLやOOの解説で行われているわけだ。
んでもってアフォが飛びついて洗脳される。と。
0335名前は開発中のものです。
02/01/02 21:05ID:???みんな分かってるよね?ね?なら若い奴は必至こいて勉強しろって事だよ。
ただそれだけの事にこんなに議論しちゃって・・・。恥ずかしくない?
0336名前は開発中のものです。
02/01/02 21:22ID:???OOを嫌うのかわかったよ。
簡単になったら低脳なやつらはクビ切られるからね。
OOが普及するのが怖いんでしょ?
0337名前は開発中のものです。
02/01/02 21:37ID:???0338名前は開発中のものです。
02/01/02 21:38ID:???低脳かどうかはどうやって判断するの?
0339名前は開発中のものです。
02/01/02 21:38ID:???■ このスレッドは過去ログ倉庫に格納されています