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

ゲームにおけるデータ構造・クラス設計・パターン

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2006/08/10(木) 20:27:06ID:BnvyxuCB
具体的なゲーム名を挙げて、
どのようにクラス設計をすればよいか、
継承・委譲関係はどのようにすればよいか、
使えそうなパターンは何かなど語るのもよし。
自作ゲームの内容とクラス図を書いて
改善案を聞くもよし。
設計に関して困ったことを質問するもよし。

関数の具体的な実装内容やゲーム内容に関しては他スレに譲る。
大いに語れ。
0286名前は開発中のものです。2007/04/10(火) 01:08:35ID:wXzQkwkx
マルチスレッドを実現する手段の一種ということ?
0287名前は開発中のものです。2007/04/10(火) 01:12:58ID:vYIHoF6r
>>285
>でスタックに積まれてるものは一通り処理する。
これ、厳密にはスタックって呼べなくね?
LIFO≠スタック
0288名前は開発中のものです。2007/04/10(火) 01:16:37ID:EIMh3HFt
なんだ、シーンの遷移がスタック的なのかと思ってた。
02892852007/04/10(火) 01:26:00ID:NhbAQuFj
>>287
上にシーンを積んだときにサスペンド処理(シーンクラスのメソッド)を呼ぶようにして
サスペンド中も実行したいシーンはその処理でサスペンド時も実行してねフラグを立てる
とかそんな処理になっていたと思うから 一応一番上に積まれているのが
現在のシーンってことになる。
立ち読みだから細かいことは忘れたw

スタック全体をなめるんだからスタックとは言わないと俺も思う。
02902772007/04/10(火) 01:59:26ID:9N2vtVIw
わかった。
かなり勘違いしていた・・・。

>>288
俺もそう思ってたww

0291名前は開発中のものです。2007/04/10(火) 09:19:06ID:xnqcZNCE
これ読んで、久々にパックマン作りたくなったな〜。
アクションゲームは、作ってないけど、デザインパターンを、正しく使うと、プログラムがスッキリするし、大好き。
デザインパターンって、しらない人多いのかな?
0292名前は開発中のものです。2007/04/10(火) 09:47:11ID:9N2vtVIw
Large-Scale Stack-Based State Machines
James Boer
Game Programming Gems 5, 2005.

0293名前は開発中のものです。2007/04/11(水) 01:26:38ID:hEaakUMM
>>291
> デザインパターンって、しらない人多いのかな?
んなわきゃない
0294名前は開発中のものです。2007/04/11(水) 05:40:08ID:6fD2+qm/
スタックベースのシーン管理、結局、状態遷移をスタックベースに作ってしまったw

これで、

 タイトル画面→(呼び出し)→ゲーム処理→(戻る)→タイトル画面

とか、
 タイトル画面→(呼び出し)→リプレイのメニュー→(呼び出し)→ゲーム処理→(戻る)→
 リプレイメニュー→(戻る)→タイトル画面
とかできるようになったw

スタックベースといったらやっぱりこっちだろw
0295名前は開発中のものです。2007/04/11(水) 05:56:16ID:M15Cgj6f
スタック的に自然な状態遷移しかしないのであれば役に立つだろうけど、
そうではない大部分のゲームにとっては役立たず以外の何物でもないと思う。
0296名前は開発中のものです。2007/04/11(水) 07:47:20ID:J6IpVt/X
スタックというデータ構造を状態遷移を表現するために利用するからには
・次のシーンに移る=push操作
・1つ前のシーンに戻る=pop操作
という対応関係が常に成り立っていて、この操作のみで完結すべきなんだが、
これだけの操作でOKなゲームがどれだけあるかっていうと、ぶっちゃけほとんどない。
スタックにこだわるあまり、データ構造を破壊したり
オブジェクトの役割を破壊したりするような例が後を絶たないのだが、
>>279>>281のようなやり取りが行われている現状では仕方がないか。
0297名前は開発中のものです。2007/04/12(木) 03:38:40ID:AG1SAh/k
実質が状態遷移ならstateパターンでいいやんって事ですか?
0298名前は開発中のものです。2007/04/12(木) 04:43:05ID:0Ip1HTkJ
>>297
Stateパターンとか全く関係ないよ。
シーンの遷移をうまく表現するためのデータ構造に関する話。

どこまで理解しているかわからないから基礎から説明する。
Stackというデータ構造は、
・オブジェクトを1つStackに積むpush操作
・最後にStackに入れたオブジェクトを1つ取り出して捨てるpop操作
・最後にStackに入れたオブジェクトを参照するtop操作
を持つ。ここで、
・push操作=次のシーンに移る
・pop操作=1つ前のシーンに戻る
・top操作=現在のシーンを取得する
と対応付けると、これはシーン管理に使えそうだぞってことになる。
これが、今話題に上がっているStackベースのシーン管理。

これをStateパターンにしたところで、Stackの中に入るオブジェクトが
シーンオブジェクトから状態オブジェクトに変わるだけで、
シーン遷移のための操作やベースとなるデータ構造は変化しないってのはわかる?
0299名前は開発中のものです。2007/04/12(木) 05:16:23ID:0Ip1HTkJ
(続き)
で、何故Stackベースのシーン管理に関して
>>295>>296(俺)のような批判が出るかって言うと、
>>298で挙げた3つの操作だけでうまく管理できるような
状態遷移になっているゲームが少ないから。

例えば、Stackの状態が
タイトル <- メニュー <- ゲーム処理 <-
だとして、ゲームオーバーシーンに移りたいとする。そうするとpush操作で
タイトル <- メニュー <- ゲーム処理 <- ゲームオーバー <-
となるが、次にタイトルシーンに移りたくなったときに、
これに対応する操作がない。あくまで与えられている操作は、
次のシーンに移るか、1つ前のシーンに戻るかだけだから。

"ゲームオーバーシーンから戻るときだけは
topがタイトルシーンになるまでpopする"というような特例を
不都合が生じる度に設けると、Stackベースにした意味がなくなる。
これが>>296で言った『データ構造の破壊』に相当する。

"Chain of Responsibilityパターンを使ってシーンオブジェクト間で
データをリレーしていけば実現できるよ"って意見をどこかで
見たことがあるのだが、そもそもシーンオブジェクトには
状態遷移を正しく行う責任はないので、オブジェクトの動作的に不自然。
これが>>296で言った『オブジェクトの役割の破壊』に相当する。

ここまで神経使うかよって思うのが普通だとは思うけど、
せっかくのデータ構造スレなので色々グダグダと言ってみた。
よさげなデータ構造があれば是非ともそれを利用したいし。
0300名前は開発中のものです。2007/04/12(木) 07:27:37ID:KA8mV/7R
Stackのシーン管理を、必要なところだけ使うようにすればいいんじゃないの。
セーブ画面とか、オプション画面とか。
0301名前は開発中のものです。2007/04/12(木) 11:44:45ID:dOVFJA3U
>>185-
ちょっと参考になるよ
0302名前は開発中のものです。2007/04/12(木) 18:19:58ID:sR+tFe8j
色々考えて、俺はスタック的な遷移も結構いいんじゃないかと思えてきた。

スタックだと、シーンの遷移の責任は全て親に任せることができる。
キャンペーンモードなのか、単独のマップを遊ぶだけのモードなのかは、自分は
知る必要もなく、遷移する理由(勝利、敗北、キャンセル…etc)だけを伝えれば
次にどのシーンになるかは親が決めてくれる。

各シーンが自分で次のシーンを選んでダイレクトに遷移していくよりは、
親に一任した方がすっきりするね。

スタックそのものでなくても、スタック的な遷移ができることは便利だと思う。
0303名前は開発中のものです。2007/04/12(木) 20:03:01ID:+rjgMuLJ
うむ、完全にpush/popに収める必要はないよな。
0304名前は開発中のものです。2007/04/12(木) 20:15:13ID:BUTEbHo0
素直に多方向リンクリストでやれよ。
0305名前は開発中のものです。2007/04/12(木) 20:25:07ID:+rjgMuLJ
それは実装・データ構造の話じゃん。
0306名前は開発中のものです。2007/04/12(木) 21:46:48ID:V5BuRGqQ
>>302
遷移する理由を伝えることによるシーン遷移ってのはいいね。
が、これは別にスタックに限った恩恵ではない
(っていうのは>>302もわかってると思うけど)。
>>304の言う多方向リストでも可能(っていうか本来はこっち)だし、
イテレータが指すシーンを現在のシーンとする双方向リストでも可能。

多方向リストで工夫して実装すれば、
リソースを食うシーンに移ったときに
前のシーンをいくつか解放するといった処理が行えるし、
シーンを激しく前後するような操作をしても
オーバーヘッドがかからないのでいいかも。
もっとも、ゲーム起動時にリソースを全部先読みしても
全く問題ないようなゲームだったら、
積みっぱなしのスタックで全く問題ないし、
これが一番簡単だと思うけど。
0307名前は開発中のものです。2007/04/12(木) 22:34:50ID:Yo7l8Dzb
"多方向リンクリスト"に該当するページが見つかりませんでした。
0308名前は開発中のものです。2007/04/13(金) 01:17:14ID:FDWvNnME
双方向リンクリストじゃない?
0309名前は開発中のものです。2007/04/13(金) 01:37:40ID:maKmelpg
色んな方向につながってるってことは…
vectorじゃねぇの?
0310名前は開発中のものです。2007/04/13(金) 02:13:59ID:ye+8qT/8
遷移元シーン番号と遷移事由コードで
テーブルから遷移先シーン番号(またはシーンオブジェクトの参照)を
引くだけというのはだめだろうか
0311名前は開発中のものです。2007/04/13(金) 04:18:27ID:VGgK68eb
ヒント:C言語などの関数
0312名前は開発中のものです。2007/04/13(金) 04:47:41ID:sVc4IdNT
>>311
エレガントじゃない気がする
0313名前は開発中のものです。2007/04/14(土) 05:39:36ID:0P7qLuwH
状態の保存方法なんて画面にあわせて stack なり queue なり
vector なり list なり、適当に作ったツリー構造なりを使えばいいよ。

コンテナ実装するのも一苦労だったアセンブラやCで組む時代じゃないんだから、
全体でどれに統一するか悩む必要なんて無いでしょ。
0314名前は開発中のものです。2007/04/15(日) 10:34:45ID:PbHNo8Qe
ログ
0315名前は開発中のものです。2007/04/15(日) 14:31:59ID:GX7kX5Cm
参照カウント付きスマートベクトルポインタ使ってシーンの遅延生成や破壊を自動管理したり
夢が広がりまくりんぐ
0316名前は開発中のものです。2007/04/19(木) 13:16:55ID:WPH1WRyj
シーン間の遷移(例えばクロスフェード)とかどうやってる?
0317名前は開発中のものです。2007/04/19(木) 13:42:33ID:1tbYRD5H
俺はシーン別に切り分けてバッファを持っている。
0318名前は開発中のものです。2007/04/19(木) 22:50:53ID:ofjIK8wt
自分は、Viewで処理してて、Modelでのシーン自体は完全に移行済みにしとく。

あくまで、表示(演出)は表示(演出)ときりわけやったほうがいいと思うし、
また、切り分けとくと変更も楽だし、テスト時とか演出要らん場合はさっさと飛ばせるし。
0319名前は開発中のものです。2007/04/20(金) 18:21:55ID:NDgAfFd0
やべ。意味が分からん^^
ちょっと確認させて欲しい。

class IScene {
  virtual void update(ISceneContext& ctx);
  virtual void draw(ISceneContext& ctx);
};
class SceneStack {
  void push(IScene *scene);
  void pop();
  void call(IScene *scene);
  void update(ISceneContext& ctx) { /*登録されたシーンの更新*/ }
  void draw(ISceneContext& ctx) { /*登録されたシーンの描画*/ }
};

自分の理解では、こんなのがシーン処理の実装なんだけど、
まずこの解釈はあってる?
当然、シーン変更時はscenestack.call(new_scene)とかやるわけね。

>>317
シーン別にバッファを持ってるってことは、
シーン遷移時の処理はSceneクラスで遷移を行うか、
他の遷移専用クラスがあるってことですか?

>>318
↑の例でいうと、ISceneまたはSceneStackのdraw内のみで
遷移処理を実行するということですか?


全然分かってないかもです。
理解が足りなくて申し訳ない。
03203162007/04/20(金) 18:22:39ID:NDgAfFd0
>>319も316です^^
0321名前は開発中のものです。2007/04/20(金) 23:58:50ID:jHP7m8qh
やねうら臭がする
0322名前は開発中のものです。2007/04/21(土) 04:53:19ID:upqCn/9t
>>319
俺もおおよそそんな感じ
0323名前は開発中のものです。2007/04/21(土) 09:13:46ID:jPfR3hGz
沖縄県の方へ(命に関わる注意事項です)

沖縄県での選挙ですが、どうか民主党だけは避けてください。県民の生命に関わる可能性があります。
民主党の最大の公約は一国二制度(※)ですが、一度「一国二制度 沖縄 三千万」等で検索をお願いします。
この際、民主党のHPで調べても良いです。以下の注釈↓と矛盾することは書いてないはずですから…

※一国二制度
 簡単に言えば沖縄を中国と日本の共有物にし、そこに3000万人の中国人を入植させます。
 (つまり沖縄人口の 96% を中国人にして、実質、沖縄を中国人の居住地とします。)
 さらに「自主」の名の下、沖縄で有事が起きても自衛隊は干渉できません。
 3000万人の中国人が、少数派となった130万人の日本人に何をしても、です。
 そして反日教育を受けた中国人の反日感情の強さは、ほとんどの日本人の理解を超えるものです。

今回の選挙で民主党が勝った場合、「自主」「発展」を連呼しつつ段階的に進めていくことになります。
自主と言っても、自主を認めるのが「住人の96%が中国人となった」後だということに気をつけてください。
発展と言っても、新沖縄の少数派となった「少数民族日本人」の発展ではないことに気をつけてください。
03243172007/04/23(月) 17:44:03ID:jyQ0IgwD
>>318とほぼ同じと思うけど
シーンに関してスタックは使ってないので、並列処理しているとき
それぞれのシーンが自分用の裏画面などを持ってないと都合が悪い

表示(演出)は別クラスにして任意シーンの裏画面を複数使って料理する
ぶっちゃけ、カメラを切り替えている感じ
0325名前は開発中のものです。2007/04/24(火) 20:58:04ID:LmvfBEf6
>>324
なーる。表示用クラスが裏画面(テクスチャだよね?)
を複数使って演出してるわけね。
ありがとう^^
0326名前は開発中のものです。2007/04/30(月) 13:33:52ID:rkXlhSNv
RPGでマップとかイベントはゲームスタート時に全部ファイルから読み込んでメモリに置いておくほうが普通でしょうか?
それともマップに入ったときにファイルからロードするほうがいいでしょうか?
0327名前は開発中のものです。2007/04/30(月) 13:38:16ID:Omqviadr
普通なら、使いもしないデータを主記憶に展開しておくのは無駄としか思えないが・・・
0328名前は開発中のものです。2007/04/30(月) 14:13:55ID:+32zYLn2
環境とか開発の容易性とかいろいろ考えた上で全部入れるのはべつにかまわん
重いのは画像や音声だったりするわけでそれがないので別に大丈夫かと

規模によっちゃそれすらもまるごといれてもかまわんけどな
1MBもあればFF4がまるごとはいるわけで
0329名前は開発中のものです。2007/04/30(月) 14:36:40ID:rkXlhSNv
動的に読み込むってなかなか難しくて・・・
FF4で1MBなら自分の程度なら全部読み込んでも大丈夫かも。
0330名前は開発中のものです。2007/04/30(月) 16:15:04ID:1Z2FVuUn
シームレスは少し難易度高いが、区画ごとに区切っていいなら難しくないんじゃ?
あっちこっちでグローバル変数使うような原人は知らん。
0331名前は開発中のものです。2007/04/30(月) 17:45:14ID:QczQVIdr
最初は難しいことに手を出すよりも、楽なほうでやったほうがいいよ。
後からだんだん発展させていけばいいと思う。
ぐちゃぐちゃになったらリファクタリングで。
0332名前は開発中のものです。2007/05/01(火) 07:32:01ID:n4UjW/KJ
クラスが多くなってぐちゃぐちゃになってきたorz
RPGって結構複雑ですぐ混乱してくる。
そろそろUMLとか勉強しないときついなと思ってきた。
0333名前は開発中のものです。2007/05/01(火) 10:50:48ID:TWHDSCbL
UMLは構成を抽象化して理解するためのものであって
おぬしの想像しているものとは用途が違うぞ
0334名前は開発中のものです。2007/05/01(火) 11:11:50ID:RvA2WJ3F
システムの規模が肥大して、クラスを整理するのが大変になってきたら
UMLなり何なり書いて一からやり直してもいいんじゃねぇの
0335名前は開発中のものです。2007/05/01(火) 11:14:53ID:TWHDSCbL
リファクタリングとデザインパターンおぼえておけばおけ
アクセサとしてpublicなメソッド用意してるだけだとあとでみなおすとききついから
フレームワークつくればよろしい
0336名前は開発中のものです。2007/05/01(火) 14:19:12ID:QizfdMH2
有名そうなライブラリをぱくるとかで
0337名前は開発中のものです。2007/05/02(水) 23:12:09ID:n6prPmTN
UMLからソースのスケルトンを自動生成する奴とか使って手抜きしたい
一応ヘッダから関数の定義のスケルトンや、標準関数やライブラリの関数のusing宣言を
自動化する程度のツールは自作して使ってるけど
0338名前は開発中のものです。2007/05/02(水) 23:15:54ID:waD0m0t1
今までいきなりコーディング始めてたんだけど大規模なゲーム作り始めて設計の重要性を痛感したorz
ただUML書いててもちっとも楽しくない。
0339名前は開発中のものです。2007/05/02(水) 23:53:12ID:HOIFQT1u
>>338
おやこんな所に俺がいるじゃないか

早く新人研修のJava教本を読む作業に戻るんだ・・・
0340名前は開発中のものです。2007/05/03(木) 03:33:21ID:aROKnpN+
俺はUML書いてるだけで楽しいけどなあ
0341名前は開発中のものです。2007/05/03(木) 04:46:21ID:PxIyx3hy
同意
コードに落とす方がかったるい
0342名前は開発中のものです。2007/05/03(木) 07:22:23ID:mjAAEilH
すげー、良く分かるw
コード打ってる時も、デバックしてる時はめんどい加減で止めたくなる。
0343名前は開発中のものです。2007/05/03(木) 10:26:46ID:ykGFiN+W
俺は未だに、コーディングするときは脳内麻薬出まくり。

分かりきった定型的なコードを書いてるときは退屈で死にそうだけど。
0344名前は開発中のものです。2007/05/03(木) 17:19:41ID:GHCrYaAw
人それぞれだなー
自分はキーボードかたかた叩いてちょっとずつ作っていく瞬間が楽しい

でも設計できないと先がなさそうorz
がんばってUML勉強しよう。
0345名前は開発中のものです。2007/05/03(木) 17:36:22ID:mjAAEilH
>>344
UMLはそういうものじゃないぞ。基本的にあれは知らなくても十分だし。
(あくまでも、設計の書き方・設計のための言語みたいなもん。
 個人か固定少人数でやるなら、適当でもなんとかなるし。)

設計を と思ってるなら、普通にオブジェクト指向系の本がいい。
自分が買って読んだ本で、お勧めは
 憂鬱なプログラマのためのオブジェクト指向開発講座―C++による実践的ソフトウェア構築入門
まぁ、あと定番ながら
 オブジェクト指向プログラミング入門 
 デザインパターンとともに学ぶオブジェクト指向のこころ
立ち読みで数ページしかみてないけど、入門の方はC++ 以外の言語(Object-C、Java、Delphi?)まで含めた本。

どれもこれも、値段も高いし・ページ数もやたらとあるしで
趣味でゲームを作るだけならちょっとオーバーワークっぽくも思えるけど、
Programmerとしての教養に読んでみては?
0346名前は開発中のものです。2007/05/03(木) 18:20:36ID:q0fI33vb
憂鬱本は読んでみたけれど全くオススメできない。
ゲームプログラマなら、遅くともインベーダゲームを例とした説明のところで
頓珍漢なことを言っているのに気づくべき。
0347名前は開発中のものです。2007/05/03(木) 18:36:59ID:l4cqkKLa
JAVAでもいいなら「オブジェクト脳のつくり方」がお勧めだぞ。
UMLの超簡単解説もあるし。
例題が業務システムなのがアレだが、
本質的な部分はC++も同じだから大丈夫かと。
0348名前は開発中のものです。2007/05/03(木) 19:06:09ID:aROKnpN+
アレコレ言ってもしょうがないんでとりあえずUMLに触れてみて
どうやってコレを使ったら自分の助けになるのか
自分なりに理解するのが大切だと思いますよ
0349名前は開発中のものです。2007/05/03(木) 21:21:39ID:ykGFiN+W
>>344
書籍で理論や共通知識を学ぶのも良いけど、ある程度コーディングできるように
なったら、「ホンモノ」のコードを読んでみるのも良い勉強になるよ。

個人的には UNIX V6 のソースコード読んで勉強したクチなんだが、いまどきの
人に薦められるかというと、ちょっと違う気がする。今だと Java, C++ あたりで
良い教材無いかねぇ…
0350名前は開発中のものです。2007/05/03(木) 21:26:04ID:t/pC1jsI
UMLといってもクラス図くらいしか描かねぇ
0351名前は開発中のものです。2007/05/03(木) 21:47:30ID:aROKnpN+
色んな図あるけど業務でやらない限りは
クラス図、アクティビティ図、シーケンス図あたりが限度かねぇ
0352名前は開発中のものです。2007/05/03(木) 21:53:36ID:ifdqR3nP
業務でもそれプラスユースケースくらい
0353名前は開発中のものです。2007/05/03(木) 22:57:52ID:ykGFiN+W
>>351
俺はアクティビティ図を抜いて、代わりにステートチャート図が追加って感じ。
0354名前は開発中のものです。2007/05/04(金) 13:14:26ID:ljy2orUl
> 憂鬱なプログラマのためのオブジェクト指向開発講座

これ、全然おもしろくなかた。
わかりにくい。
オブジェクト指向分かってる後によんだのに、わかりにくかった。

「プログラマのための 憂鬱なオブジェクト指向開発講座」に直すべき。
0355名前は開発中のものです。2007/05/04(金) 14:10:22ID:TiDrCtuu
そんな>>354のオススメ図書は?

いや、あおりでなしに、その本読んだけど分からなくて、今も分からないままなもんで。教えてくらさい orz
0356名前は開発中のものです。2007/05/04(金) 21:08:31ID:+e+/DrXO
シームレスってどうやんの?
例えば2DのRPGマップをスクロールさせる様なばやいとか
0357名前は開発中のものです。2007/05/04(金) 21:14:04ID:osoiCnRq
>>356
普通にやれば言いと思うが・・・
どんな状況を言ってるんだ?

0358名前は開発中のものです。2007/05/04(金) 21:44:45ID:7VEgWe3m
>>356
マップをエリアに分割して、自分が今いるエリアの周囲をメモリに読み込んでおく。
移動して自分がいるエリアが変わったら、不要になったエリアの情報を破棄して
必要なエリアの情報を非同期読み込み。

これだけだが、何か疑問が?
03593562007/05/04(金) 23:07:32ID:+e+/DrXO
わかったありがとちん。
作ってみるよ。
0360名前は開発中のものです。2007/05/05(土) 00:05:52ID:WcHz0Tx6
>>355
あー、俺は、Delphiを使っているうちに覚えてしまったたちでね・・・。
当時は、標準添付ライブラリのVCL使ったり、ソースとか読んだりして、オブジェクト指向を学んだな。

今なら、.NETのライブラリ使ったり、コンポーネント作って、覚えるようなもんだろうか。

習うより、慣れろって感じでスマソ。


あえて言うなら、実践的なオブジェクト指向ということで、
デザインパターンの言及しているwebページとか、本とかかな?
直接関係ないが、開発技法になっちゃうが、XP(エクストリームプログラミング)関連とかも、
OOP前提が多くて、実践的でためになる。
リファクタリング、ユニットテストなど。

あと、Javaでかかれた本とかページとかは、オブジェクト指向前提で参考になるよ。
0361名前は開発中のものです。2007/05/05(土) 01:04:52ID:EPC7H7SP
なんとなくだが、>>360は見栄を張ってる気がする。
“ためになる” “参考になる”とか言いつつも具体的な書籍やHPも挙げないし、
言ってる事も理解へ向けてと言うよりも言葉で煙に巻く感じで(・A・)イクナイ!!

自分なら>>355には、  オブジェクト指向プログラミング入門  を推す。
内容にがやや教科書的/板書的過ぎるから普通の読み方じゃなく
章単位の読み方とか多少英語論文的な読み方が求められるけどページ数に合った力がつくと思う。

あと、ここでなんか批判されまくってるが、「憂鬱な」はそんな悪い本じゃないと思うぞ。
まぁちらほら賛成できない部分や論理的におかしい部分は見受けるが、それでもなかなかの良書。
もう一度、読み直してみるのもいいと思うが。
0362名前は開発中のものです。2007/05/05(土) 02:25:29ID:WcHz0Tx6
アホか。見栄はりに2chに来てねーよ。
煙に巻くつもりなら、レスしなけりゃいい。

具体的なページを上げられないのは、当時のをブックマークしてないから。
第一、コード書いて、読んで、実地で学んだと言っているのに・・・。

ただ、「デザインパターン」とか「エクストリームプログラミング」とかキーワード上げてるんだからさ・・・
まあ、ググレカスと言いたいところなのだが・・・


■デザインパターン
サルでもわかる 逆引きデザインパターン 第1章 はじめてのデザインパターン はじめに
http://www.nulab.co.jp/designPatterns/designPatterns1/designPatterns1-1.html

Amazon.co.jp: オブジェクト指向における再利用のためのデザインパターン: 本: エリック ガンマ,ラルフ ジョンソン,リチャード ヘルム,ジョン ブリシディース,Erich Gamma,Ralph Johnson,Richard Helm,John Vlissides,本位田 真一,吉田 和樹
http://amazon.co.jp/o/ASIN/4797311126/
流行になった本だが、実例少なく今となっては読みにくい。CDの中身がまとまっていてよい。

Amazon.co.jp: デザインパターンとともに学ぶオブジェクト指向のこころ: 本: アラン・シャロウェイ,ジェームズ・R・トロット,村上 雅章
http://amazon.co.jp/o/ASIN/4894716844/

Amazon.co.jp: 増補改訂版Java言語で学ぶデザインパターン入門: 本: 結城 浩
http://amazon.co.jp/o/ASIN/4797327030/

0363名前は開発中のものです。2007/05/05(土) 02:26:17ID:WcHz0Tx6

■リファクタリング
オブジェクト指向は直接関係ないけど、おすすめだから読んどけ。

Amazon.co.jp: リファクタリング―プログラムの体質改善テクニック: 本: マーチン ファウラー,Martin Fowler,児玉 公信,平澤 章,友野 晶夫,梅沢 真史
http://amazon.co.jp/o/ASIN/4894712288/
プロでこれ読んでない奴いたら、殴っていい

Amazon.co.jp: Java言語で学ぶリファクタリング入門: 本: 結城 浩
http://amazon.co.jp/o/ASIN/4797337990/

ちなみに、コメントないのは、俺が読んでないものなので注意(わかりやすそうなのを上げといた)


長いURL書き込めなくて苦労したぜ・・・
0364名前は開発中のものです。2007/05/05(土) 02:33:04ID:WcHz0Tx6
あとは、OOPしてる読んでおきたいソース。

一応ゲーム制作技術板だから、ゲーム系のソースでも上げとこうか。

ABA Games
http://www.asahi-net.or.jp/~cs8k-cyu/

Titanion
http://www.asahi-net.or.jp/~cs8k-cyu/windows/ttn.html

とりあえず、ふつーに、OOPしとるんで読んで参考になること請け合い。
規模はでかくないが、ABA氏の一通り完成されたゲームばかりなので勧めやすい
あと、D言語やJavaばかりだから読みやすいよ。
0365名前は開発中のものです。2007/05/05(土) 04:41:51ID:nOa25t75
初心者ならオブジェクト指向狂詩曲がいい。
内容はたいしたことは無いが、OOPの作法みたいなものがわかる。
軽く読めるのでおすすめ。

ところでダックタイピング系の書物でおすすめない?
0366名前は開発中のものです。2007/05/05(土) 09:36:59ID:WcHz0Tx6
>>365
ダックタイピングって、Rubyとか、Pythonのアレですか?
C++とかで実装する方法とかってことですか?

そんな局所的な本なんてでてんのかなー。

0367名前は開発中のものです。2007/05/05(土) 12:08:35ID:+5LnnL0c
ェネリックプログラミング系の書物がそれにあたるような気が
0368名前は開発中のものです。2007/05/23(水) 19:36:40ID:yFXY+8Zs
たまにネタふり。

2Dゲームなどで使われる
オーダーリングテーブル(Ordering Table)は、すでに常識でしょうか。
たぶんローカル用語でしょうけど、大体用語がないので、これですませています。

おれは、弾幕ゲーム作ってるんだ!
いちいち、物体ごとに、Zソートしてたら遅くなる!そんな時に使用します。

z値ごとに、ArrayListをもって、バケットソート(バケツソート)するような感じです。
z値が広い場合は、z値を狭めるか(0〜100くらいの定数にしてもいい)、
z値を割って使用します。

図では、こんな感じ。

z値
0 →□→□
1
2 →□
3 →□→□ →□→□
4 →□→□

□は物体。
0369名前は開発中のものです。2007/05/23(水) 19:39:22ID:yFXY+8Zs
>大体用語
代替用語
0370名前は開発中のものです。2007/05/23(水) 20:10:55ID:yFXY+8Zs
>>368
登録するのを物体ではなく、メソッドポインタなどにすれば、より汎用性が高まると思います。
0371名前は開発中のものです。2007/05/23(水) 20:13:35ID:tJZKFF0H
久々に凄いネタ振りを見た
0372名前は開発中のものです。2007/05/23(水) 20:46:34ID:sQffGK0m
人いたんだこのスレ
0373名前は開発中のものです。2007/05/23(水) 21:17:01ID:h3A9cPXz
ぶっちゃけZソートで重いって8bitCPUかと
0374名前は開発中のものです。2007/05/23(水) 21:37:02ID:5lNumVZr
最近知って、自慢したくて仕方なかったのでしょうw

使いどころ違うしw
0375名前は開発中のものです。2007/05/24(木) 00:12:03ID:sQQ2EGyG
>>368
> 物体ごとに、Zソートしてたら遅くなる!
今ならZバッファ使えばいいじゃん。PlayStation じゃないんだし。
0376名前は開発中のものです。2007/05/24(木) 00:19:50ID:4PByfCCv
>>375
画像処理のことなのか?
まぁ、半透明使うならZソートしといたほうがいいけど

>>368はハッシュとかツリーとか勉強するといいかも
0377名前は開発中のものです。2007/05/24(木) 14:14:16ID:MN3OTeQA
>>375
3Dのシーンならそれでいいんですけど、
2D主体で、アルファ付きテクスチャ描画が標準、
アルファブレンドを使うのが当たり前、加算合成などが多めになると、
Zバッファが使えなくないですか?

俺、もしかしたら、基本的なところで、ミスってる?('A`)

>>373
毎フレーム、オブジェクトを数千個ソートするのもそんなには重くはないですけどね。

>>374
実は、昔から(DirectDrawの時代)から使ってるんですが、
使いどころ間違ってるのあk−−−−−マジ教えてくれ

>>376
そうです。半透明が多めなんです。

Hashとかツリーは普通に使います。OTの実装もHashと同じですし
0378名前は開発中のものです。2007/05/24(木) 15:21:37ID:4PByfCCv
hashとかわかってるならなんでそんなことをココに書き込むのだと小一時間問い詰めたい
0379名前は開発中のものです。2007/05/24(木) 15:43:03ID:a3uG9+mx
・2D主体かつαブレンドを多用
・z値が整数で適当な範囲に収まる場合
ならその方法がいいのかもね
でもゲームによってやり方を変えるのが一番賢いだろうね
0380名前は開発中のものです。2007/05/24(木) 16:17:32ID:aFaY4/D0
>378
最初にネタふりって書いてあるやん
0381名前は開発中のものです。2007/05/24(木) 16:34:16ID:uojugi7P
っていうか、2Dのスプライトの場合はZオーダーなんてそう頻繁に
入れ替わるものではないから、前フレームのソート結果を上手く利用すれば、
もっと軽くできると思う。
0382名前は開発中のものです。2007/05/24(木) 16:58:41ID:FtXKITOW
このスレの90%はネタを振る人間とそれにケチをつける人間でできています
0383名前は開発中のものです。2007/05/24(木) 20:02:03ID:K0O2WDIn
>>382
残りの10%は?
0384名前は開発中のものです。2007/05/24(木) 20:07:39ID:KUhBCX3E
ROM
0385名前は開発中のものです。2007/06/04(月) 17:52:58ID:wXEt1jZx
ROMはいくらいても0%だろう
■ このスレッドは過去ログ倉庫に格納されています