ゲームにおけるデータ構造・クラス設計・パターン2
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2008/05/23(金) 21:10:59ID:8M1gqhPXどのようにクラス設計をすればよいか、
継承・委譲関係はどのようにすればよいか、
使えそうなパターンは何かなど語るのもよし。
自作ゲームの内容とクラス図を書いて
改善案を聞くもよし。
設計に関して困ったことを質問するもよし。
関数の具体的な実装内容やゲーム内容に関しては他スレに譲る。
大いに語れ。
前スレ
http://pc11.2ch.net/test/read.cgi/gamedev/1155209226/
テンプレ追加事項あったらよろすく
0002名前は開発中のものです。
2008/05/23(金) 22:15:47ID:KYZLgWWh必須ではないが用語として便利なのでしばしば話題に上がる
[参考サイト]
Gameつくろー! デザインパターン習得編
http://marupeke296.com/DP_main.html
サルでもわかる 逆引きデザインパターン
http://www.nulab.co.jp/designPatterns/designPatterns1/designPatterns1-1.html
[参考書籍(Amazonリンク)]
オブジェクト指向における再利用のためのデザインパターン
http://amazon.co.jp/o/ASIN/4797311126/
デザインパターンとともに学ぶオブジェクト指向のこころ
http://amazon.co.jp/o/ASIN/4894716844/
>>1乙
一応デザパタ軽く。
0003名前は開発中のものです。
2008/05/24(土) 01:01:32ID:hwB5uNnT0004名前は開発中のものです。
2008/05/24(土) 01:10:28ID:hwB5uNnT・インスタンスの方がより正しい場合は極力インスタンスという用語を使い、オブジェクトの使用は避ける。
とかスレの前提としてどうだろう。
0005名前は開発中のものです。
2008/05/24(土) 01:16:03ID:fCOY9f2qFoo foo = new Foo() とすると foo がインスタンス?
0006名前は開発中のものです。
2008/05/24(土) 01:24:20ID:WrI+RE5Ahttp://www.morijp.com/masarl/homepage3.nifty.com/masarl/article/dp-ocp.html
これも
0007名前は開発中のものです。
2008/05/24(土) 02:07:45ID:hwB5uNnT揚げ足取りな事はわかってるんだが一応。
fooは変数だから、fooが参照してる参照先の何か、がインスタンスじゃね?
文脈でわかるけど、ここら辺の表記も少し気をつけた方がいいかも。
0008名前は開発中のものです。
2008/05/24(土) 02:41:35ID:/DdfEDqzっていう文言がどっかのペーパーに書いてあったけど、
スクリプト指向が進めば進むほど現実味を帯びてくるな
0009名前は開発中のものです。
2008/05/24(土) 16:24:52ID:WrI+RE5A0010名前は開発中のものです。
2008/05/24(土) 17:17:01ID:LLc7AXF7WEB系ってぶっちゃけスクリプト志向なんだよね
これでわかるかな?
0011名前は開発中のものです。
2008/05/24(土) 17:53:41ID:hwB5uNnTゲームをやる側から見た場合のRPG、特にFFなんかは5辺りから
ある意味その言葉を既に体現してる気がする。
0012名前は開発中のものです。
2008/05/24(土) 21:56:16ID:WrI+RE5A「これはすごいんですよ、これを使えば安心です」って言ってるだけか
タスクシステム信者と同じだな
それで、教祖様は誰がなる予定なの?
0013名前は開発中のものです。
2008/05/24(土) 23:02:12ID:zxthQanT今出てるのってそんな話か?
俺には世間話に>>10が適当な横槍入れただけに見えるが
0014名前は開発中のものです。
2008/05/24(土) 23:16:51ID:6QB8Oyw/0015名前は開発中のものです。
2008/05/24(土) 23:28:05ID:PtHN405f0016名前は開発中のものです。
2008/05/25(日) 00:49:54ID:9gKbes0q0017名前は開発中のものです。
2008/05/25(日) 10:55:20ID:9DfW5HgHム板のことか?
0018名前は開発中のものです。
2008/05/25(日) 11:05:10ID:93aOxetu0019名前は開発中のものです。
2008/05/27(火) 12:06:43ID:NfKeIEM4やる夫で学ぶデザインパターン
ttp://mojalog.com/cgi/mt/mt-search.cgi?tag=%E3%82%84%E3%82%8B%E5%A4%AB%E3%81%A7%E5%AD%A6%E3%81%B6%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3&blog_id=1
0020名前は開発中のものです。
2008/05/28(水) 00:17:53ID:EMOoLtkb0021名前は開発中のものです。
2008/05/28(水) 09:16:17ID:rm2+ecl2サンプルコードもゲームだしわかりやすくていいと思うが
0022名前は開発中のものです。
2008/05/28(水) 10:19:46ID:jKXaFTfv0023名前は開発中のものです。
2008/05/28(水) 12:07:15ID:yrY1wCou0024名前は開発中のものです。
2008/05/28(水) 12:58:54ID:aV/WuK9Yなんだかんだで前スレは良スレだったと思っていたので嬉しいじゃない。
0025名前は開発中のものです。
2008/05/28(水) 19:17:39ID:rm2+ecl2そりゃ「デザインパターン使えばこんなにゲーム作りやすいよ!」じゃなくて
「例としてゲーム使ってデザインパターン解説してみた」だからそんなもんだろ
無理に読めとは言わないが、全く関係ないって事は無い
0026名前は開発中のものです。
2008/06/01(日) 20:32:11ID:CN3GNXI+ゲーム屋からみれば変な設計なん?
0027名前は開発中のものです。
2008/06/01(日) 20:35:37ID:9GWV5N72速度でないゴミになりそうな悪寒
0028名前は開発中のものです。
2008/06/01(日) 22:40:05ID:IjC+ZLNyまぁ使い過ぎが良くないってのには同意だけど
0029名前は開発中のものです。
2008/06/02(月) 00:45:33ID:u3nq1AKuこんなんじゃ、ゲーム屋って無理?
0030名前は開発中のものです。
2008/06/03(火) 13:20:56ID:Up2rlfhTマならどんな屑でもなれるし、無理じゃないよ
個人的には一緒に仕事したくないタイプだな
他社にいても移植とかサンプルとかでそういうコード渡ってきたらゲンナリする…
0031名前は開発中のものです。
2008/06/03(火) 13:37:21ID:60nvGBII利点理解した上で必要ないと言い切る奴は性質の悪い秀才
食わず嫌いで利点なしと判断してごねてるならただの馬鹿
環境によっては使わない方がいい事もあるかもしれんけど
0032名前は開発中のものです。
2008/06/03(火) 14:28:32ID:FP0Va/Ol0033名前は開発中のものです。
2008/06/03(火) 18:34:30ID:R8vkDVlyどうしてもGTAGSがいいの?GTAGSってGNU Tags?Google Tags?
0034名前は開発中のものです。
2008/06/04(水) 03:53:09ID:8a5x1JRq>GTAGSってGNU Tags?Google Tags?
カエレw
0035名前は開発中のものです。
2008/06/07(土) 05:38:48ID:PKYwPYRJデザインパターンはシステムに応じて最適化することを前提としてる。
お前が考えているように、パターンを丸々適用するのは危険。
ただ、デザパタを適用する事による処理コストなんて大したことない。
物理演算や描画周りの重さに比べればメソッド呼び出しがちょっと増えるくらい誤差みたいなもん。
デザインパターンは省メモリプログラミング手法でもなければ、高速化手法でもない。
どのデータに対してどの処理を行うかを、継承と抽象化を使って示しているにすぎない。
皆がパターンやオブジェクト指向をありがたがるのはソースコードが肥大化しても
グダグダになりにくいという利点があるからであって、そこに処理速度の話を持ち込むのは
少々お門違いな気もする。
0036名前は開発中のものです。
2008/06/08(日) 20:08:17ID:1W8n4o1x参考になるサイトでもある?
0037名前は開発中のものです。
2008/06/08(日) 20:17:15ID:WckjqjCh0038名前は開発中のものです。
2008/06/10(火) 10:07:55ID:nTtkz+dw全体構造を決めてから、トップダウンアプローチで作る
その場 その場で決めていき 作っていく スパイラルモデル
0039名前は開発中のものです。
2008/06/10(火) 10:18:30ID:XooPHqWtその場その場で決まることを組み合わせて全体構造を決めていく。
都合が悪けりゃさっさと変える。
これじゃ毒にも薬にもならんかも。・・・トップダウンとかスパイラルとか、
アプローチの方向を固定化するのは良くない、って感じ?
0040名前は開発中のものです。
2008/06/10(火) 11:31:11ID:K9Q1TpUpまず、誰にでも読める企画書とプレイマニュアルを作成する。
俺自身がどんなゲームを作る気なのかわかっていないことが多いから。
0041名前は開発中のものです。
2008/06/10(火) 12:26:21ID:hsBh970Aまあ、最後はありえねーとしてもw
0042名前は開発中のものです。
2008/06/10(火) 19:02:52ID:ZqBN8Kq4どうしても単体テスト完了した部品を繋ぎ合わせる格好でやるので
最初は全体構造は無視
エンジン本体が部品の扱うデータ構造とズれる事はしょっちゅうなんで
ブリッジ用コードやデータの再パーサだらけになるorz
0043名前は開発中のものです。
2008/06/12(木) 08:01:35ID:IMyaUQnNでも一番趣味でやる構築なら手ごろな手法っぽい。
ブリッジとアダプタさえあればドウトデモナルサー的な感じで。
0044名前は開発中のものです。
2008/06/14(土) 10:10:24ID:ITcMwq//モデルにフィードバック入れてくってやり方以外で
マトモなプログラムを作る方法はないだろ。
0045名前は開発中のものです。
2008/06/14(土) 14:13:33ID:GhaLcPKx0046名前は開発中のものです。
2008/06/14(土) 15:55:22ID:vUcsb6CI0047名前は開発中のものです。
2008/06/14(土) 21:53:33ID:TLBVclDV0048名前は開発中のものです。
2008/06/23(月) 00:38:10ID:fMSgUVEh0049名前は開発中のものです。
2008/06/23(月) 01:30:28ID:eCdVbunT0050名前は開発中のものです。
2008/06/23(月) 01:34:12ID:pTJzzIh1グローバルとか、デバイス差の吸収とか必要になったとき困らね
0051名前は開発中のものです。
2008/06/23(月) 02:05:44ID:NUHlpJuvそして、
・デバイスへアクセスする処理(関数)まで引数渡しでデバイスポインタを渡す
・どの処理(関数)からでもグローバルにアクセス出来るように保持する
との2択から、管理しやすさについて語っているのだと推測。
で、俺の意見は>>48と一緒。
理由は、引数で渡していくのは手間が増えるだけだと思うから。
引数で渡すのは、複数のデバイスを使う場合には意味を持つのかなと思うんだけど、
ゲームにおいて複数のデバイスを使う時って無いんじゃないだろうか。
0052名前は開発中のものです。
2008/06/23(月) 02:31:28ID:/DBWn/TJそのソースだけでインスタンスの管理やアクセスを許して、
他のソースではインスタンスのポインター保持だけできるようにしてる。
0053名前は開発中のものです。
2008/06/23(月) 08:22:39ID:mKIom38M0054名前は開発中のものです。
2008/06/23(月) 14:04:29ID:/Ozl3kU4シングルトンはインスタンス数の制限が目的だし、組み合わせて使うならいいけど
0055名前は開発中のものです。
2008/06/23(月) 22:16:08ID:T9NriNFy普段はデバイスに直接触りすらしないようにしちゃうのは異端かな?
0056名前は開発中のものです。
2008/06/23(月) 22:34:15ID:X6Q0hHes俺もー
005756
2008/06/23(月) 22:37:13ID:X6Q0hHes0058名前は開発中のものです。
2008/07/02(水) 02:46:33ID:Z7PtKJGp俺は最初、各シーンクラス内で次シーンオブジェクトを直接生成してたんだが、遷移の修正がし難くなるから止めた。
そこでより上位で、静的なシーン遷移管理クラスが現在シーンからイベントを受け取って、
現在の色々な状態をチェックして適切なシーン遷移を行うのを考えたんだが、
これでも、一定のまとまりのあるシーン遷移が積層した場合には泥臭いコードが増えると思ったんで止めた。
んで今やってみてるのは、先のシーン遷移管理クラスをオブジェクト化して、それらをスタック状に積み上げておいて、
現在シーンからのイベントを、処理できる奴まで上から順にたらい回しにしていく方法。
遷移管理オブジェクトのポップ忘れに注意が必要だけど、今のところそう悪くない構造だと思ってる。
他にはどういうやり方があるだろう。
0059名前は開発中のものです。
2008/07/02(水) 03:01:12ID:US3ampRT俺の鳥頭じゃちょっとイメージしにくい・・・
0060名前は開発中のものです。
2008/07/02(水) 08:11:54ID:1rjp9Xphなんでそんなものの遷移だけで無駄にコードをいじりまわすのか
現在アクティブな遷移管理オブジェクトを隠蔽してなにか楽しいことがあるの?
0061名前は開発中のものです。
2008/07/02(水) 10:15:59ID:25mPqNmlなんか適当な名前のグローバルな列挙定数でswitch文で制御しているけど駄目なんかなぁ。
0062名前は開発中のものです。
2008/07/02(水) 19:16:17ID:noQk3O5d設計次第だしね
抽象化次第では面白い構造になりそうかも
抽象化不要なゲームなら別にswitchでよくね
0063名前は開発中のものです。
2008/07/02(水) 22:59:17ID:zDJJl2HFRPGとかで、フィールドからダンジョンや町などに入る/出るときにシーンの切替をするって言うのを聞いた時。
何か自分とはシーンというものの大きさが著しく違うのか、それとも自分が思っているRPGとは違うものなのか。
0064名前は開発中のものです。
2008/07/02(水) 23:04:11ID:surY1LL8そーゆーんじゃないのん?
0065名前は開発中のものです。
2008/07/02(水) 23:06:33ID:25mPqNml0066名前は開発中のものです。
2008/07/02(水) 23:19:07ID:Z+lS9RAUP of EAA Application Controller
というのがある、設計によっては使えるかもしれない
シーン遷移の追加よりも修正が多いのなら
可読性を重視して分散しないように書いた方が修正は楽になる、と思う
0067名前は開発中のものです。
2008/07/02(水) 23:42:43ID:US3ampRTそこまで行くとシーンじゃなくてswitchレベルかもとは思うんだけど
0068名前は開発中のものです。
2008/07/02(水) 23:53:44ID:noQk3O5dシーン単一保持だと元シーン内のアニメも止める事になるし(※無論それが前提なら無問題だけど)
俺の手癖だと、シーンを同時に複数駆動できるようにするとこんがらがる。
結局多態やswitch、Cなら関数ポインタの嵐になって弄りにくくなる一方な感じ。
なんか下手なんだろな
0069名前は開発中のものです。
2008/07/02(水) 23:58:28ID:surY1LL8俺の中では、親/子シーンとか、大(メジャー)/小(マイナー)シーンとか呼んでたりする。あくまでも俺の中だけ。
■ このスレッドは過去ログ倉庫に格納されています