具体的なゲーム名を挙げて、
どのようにクラス設計をすればよいか、
継承・委譲関係はどのようにすればよいか、
使えそうなパターンは何かなど語るのもよし。
自作ゲームの内容とクラス図を書いて
改善案を聞くもよし。
設計に関して困ったことを質問するもよし。
関数の具体的な実装内容やゲーム内容に関しては他スレに譲る。
大いに語れ。
前スレ
http://pc11.2ch.net/test/read.cgi/gamedev/1155209226/
テンプレ追加事項あったらよろすく
探検
ゲームにおけるデータ構造・クラス設計・パターン2
■ このスレッドは過去ログ倉庫に格納されています
1名前は開発中のものです。
2008/05/23(金) 21:10:59ID:8M1gqhPX2008/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乙
一応デザパタ軽く。
必須ではないが用語として便利なのでしばしば話題に上がる
[参考サイト]
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乙
一応デザパタ軽く。
2008/05/24(土) 01:01:32ID:hwB5uNnT
3ゲトー1乙。ずっと待ってたぜ。
2008/05/24(土) 01:10:28ID:hwB5uNnT
・オブジェクト指向といったら特に指定しない限りクラスベース(所謂最も一般的なオブジェクト指向)
・インスタンスの方がより正しい場合は極力インスタンスという用語を使い、オブジェクトの使用は避ける。
とかスレの前提としてどうだろう。
・インスタンスの方がより正しい場合は極力インスタンスという用語を使い、オブジェクトの使用は避ける。
とかスレの前提としてどうだろう。
2008/05/24(土) 01:16:03ID:fCOY9f2q
インスタンスってつまりは実体のこと?
Foo foo = new Foo() とすると foo がインスタンス?
Foo foo = new Foo() とすると foo がインスタンス?
2008/05/24(土) 01:24:20ID:WrI+RE5A
デザインパターンとOpen-Closed Principle
http://www.morijp.com/masarl/homepage3.nifty.com/masarl/article/dp-ocp.html
これも
http://www.morijp.com/masarl/homepage3.nifty.com/masarl/article/dp-ocp.html
これも
2008/05/24(土) 02:07:45ID:hwB5uNnT
2008/05/24(土) 02:41:35ID:/DdfEDqz
「ゲームとはPrettyなインターフェースを備えたデータベースである」
っていう文言がどっかのペーパーに書いてあったけど、
スクリプト指向が進めば進むほど現実味を帯びてくるな
っていう文言がどっかのペーパーに書いてあったけど、
スクリプト指向が進めば進むほど現実味を帯びてくるな
2008/05/24(土) 16:24:52ID:WrI+RE5A
スクリプト指向の意味がさっぱりわからない
2008/05/24(土) 17:17:01ID:LLc7AXF7
今最高峰のプログラマって、全員WEB系じゃん?
WEB系ってぶっちゃけスクリプト志向なんだよね
これでわかるかな?
WEB系ってぶっちゃけスクリプト志向なんだよね
これでわかるかな?
2008/05/24(土) 17:53:41ID:hwB5uNnT
2008/05/24(土) 21:56:16ID:WrI+RE5A
メリットやデメリットを言えないくせに
「これはすごいんですよ、これを使えば安心です」って言ってるだけか
タスクシステム信者と同じだな
それで、教祖様は誰がなる予定なの?
「これはすごいんですよ、これを使えば安心です」って言ってるだけか
タスクシステム信者と同じだな
それで、教祖様は誰がなる予定なの?
2008/05/24(土) 23:02:12ID:zxthQanT
2008/05/24(土) 23:16:51ID:6QB8Oyw/
プ板から厨房誘致すればこのスレは盛り上がる。間違い無いw
2008/05/24(土) 23:28:05ID:PtHN405f
たてなきゃいいのに布教スレなんかたてるからこうなる
2008/05/25(日) 00:49:54ID:9gKbes0q
もう厨房が数匹住み着いたのか
2008/05/25(日) 10:55:20ID:9DfW5HgH
プ板?
ム板のことか?
ム板のことか?
2008/05/25(日) 11:05:10ID:93aOxetu
マ板じゃね?
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
やる夫で学ぶデザインパターン
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
2008/05/28(水) 00:17:53ID:EMOoLtkb
途中からゲーム関係なくね?
2008/05/28(水) 09:16:17ID:rm2+ecl2
俺には全部ゲームに関係した話に見えるけど?
サンプルコードもゲームだしわかりやすくていいと思うが
サンプルコードもゲームだしわかりやすくていいと思うが
2008/05/28(水) 10:19:46ID:jKXaFTfv
なんか、無理矢理ゲームに例えてる感がひしひしと。
2008/05/28(水) 12:07:15ID:yrY1wCou
日本語も満足に読めないのか
2008/05/28(水) 12:58:54ID:aV/WuK9Y
お、2スレ目立ってたのね。
なんだかんだで前スレは良スレだったと思っていたので嬉しいじゃない。
なんだかんだで前スレは良スレだったと思っていたので嬉しいじゃない。
2008/05/28(水) 19:17:39ID:rm2+ecl2
>>22
そりゃ「デザインパターン使えばこんなにゲーム作りやすいよ!」じゃなくて
「例としてゲーム使ってデザインパターン解説してみた」だからそんなもんだろ
無理に読めとは言わないが、全く関係ないって事は無い
そりゃ「デザインパターン使えばこんなにゲーム作りやすいよ!」じゃなくて
「例としてゲーム使ってデザインパターン解説してみた」だからそんなもんだろ
無理に読めとは言わないが、全く関係ないって事は無い
2008/06/01(日) 20:32:11ID:CN3GNXI+
俺のレベルではよくわからんが
ゲーム屋からみれば変な設計なん?
ゲーム屋からみれば変な設計なん?
2008/06/01(日) 20:35:37ID:9GWV5N72
デザインパターンを丸々入れ込むとゲームだと描画とかで
速度でないゴミになりそうな悪寒
速度でないゴミになりそうな悪寒
2008/06/01(日) 22:40:05ID:IjC+ZLNy
関数呼び出しとか仮想関数分のオーバーヘッドってそんなに響くか?
まぁ使い過ぎが良くないってのには同意だけど
まぁ使い過ぎが良くないってのには同意だけど
29名前は開発中のものです。
2008/06/02(月) 00:45:33ID:u3nq1AKu クラスというか、同じ関数名が増えまくるオブジェクト思考言語は、GTAGS使えないので嫌いです。継承構造とかも嫌い。
こんなんじゃ、ゲーム屋って無理?
こんなんじゃ、ゲーム屋って無理?
2008/06/03(火) 13:20:56ID:Up2rlfhT
2008/06/03(火) 13:37:21ID:60nvGBII
2008/06/03(火) 14:28:32ID:FP0Va/Ol
cscopeならglobalと同じような事をC++やjavaのコードに対してもできるぜ
2008/06/03(火) 18:34:30ID:R8vkDVly
CodeWarriorとか、OOPでもばんばんタグジャンプできるから問題ないのでは?
どうしてもGTAGSがいいの?GTAGSってGNU Tags?Google Tags?
どうしてもGTAGSがいいの?GTAGSってGNU Tags?Google Tags?
2008/06/04(水) 03:53:09ID:8a5x1JRq
35名前は開発中のものです。
2008/06/07(土) 05:38:48ID:PKYwPYRJ >>27
デザインパターンはシステムに応じて最適化することを前提としてる。
お前が考えているように、パターンを丸々適用するのは危険。
ただ、デザパタを適用する事による処理コストなんて大したことない。
物理演算や描画周りの重さに比べればメソッド呼び出しがちょっと増えるくらい誤差みたいなもん。
デザインパターンは省メモリプログラミング手法でもなければ、高速化手法でもない。
どのデータに対してどの処理を行うかを、継承と抽象化を使って示しているにすぎない。
皆がパターンやオブジェクト指向をありがたがるのはソースコードが肥大化しても
グダグダになりにくいという利点があるからであって、そこに処理速度の話を持ち込むのは
少々お門違いな気もする。
デザインパターンはシステムに応じて最適化することを前提としてる。
お前が考えているように、パターンを丸々適用するのは危険。
ただ、デザパタを適用する事による処理コストなんて大したことない。
物理演算や描画周りの重さに比べればメソッド呼び出しがちょっと増えるくらい誤差みたいなもん。
デザインパターンは省メモリプログラミング手法でもなければ、高速化手法でもない。
どのデータに対してどの処理を行うかを、継承と抽象化を使って示しているにすぎない。
皆がパターンやオブジェクト指向をありがたがるのはソースコードが肥大化しても
グダグダになりにくいという利点があるからであって、そこに処理速度の話を持ち込むのは
少々お門違いな気もする。
36名前は開発中のものです。
2008/06/08(日) 20:08:17ID:1W8n4o1x シューティング作っているんだけど
参考になるサイトでもある?
参考になるサイトでもある?
2008/06/08(日) 20:17:15ID:WckjqjCh
積み木ファイターのひととか
2008/06/10(火) 10:07:55ID:nTtkz+dw
ゲーム作るときってどうやってプログラム組んでいく?
全体構造を決めてから、トップダウンアプローチで作る
その場 その場で決めていき 作っていく スパイラルモデル
全体構造を決めてから、トップダウンアプローチで作る
その場 その場で決めていき 作っていく スパイラルモデル
2008/06/10(火) 10:18:30ID:XooPHqWt
>>38
その場その場で決まることを組み合わせて全体構造を決めていく。
都合が悪けりゃさっさと変える。
これじゃ毒にも薬にもならんかも。・・・トップダウンとかスパイラルとか、
アプローチの方向を固定化するのは良くない、って感じ?
その場その場で決まることを組み合わせて全体構造を決めていく。
都合が悪けりゃさっさと変える。
これじゃ毒にも薬にもならんかも。・・・トップダウンとかスパイラルとか、
アプローチの方向を固定化するのは良くない、って感じ?
2008/06/10(火) 11:31:11ID:K9Q1TpUp
2008/06/10(火) 12:26:21ID:hsBh970A
趣味で1人で作るのか、同人誌即売会狙いで数人で作るのか、会社の業務として作るのかで変わるとは思うけどな。
まあ、最後はありえねーとしてもw
まあ、最後はありえねーとしてもw
2008/06/10(火) 19:02:52ID:ZqBN8Kq4
>>38
どうしても単体テスト完了した部品を繋ぎ合わせる格好でやるので
最初は全体構造は無視
エンジン本体が部品の扱うデータ構造とズれる事はしょっちゅうなんで
ブリッジ用コードやデータの再パーサだらけになるorz
どうしても単体テスト完了した部品を繋ぎ合わせる格好でやるので
最初は全体構造は無視
エンジン本体が部品の扱うデータ構造とズれる事はしょっちゅうなんで
ブリッジ用コードやデータの再パーサだらけになるorz
2008/06/12(木) 08:01:35ID:IMyaUQnN
2008/06/14(土) 10:10:24ID:ITcMwq//
まずはトップダウンでモデル作って、作りながら問題があれば
モデルにフィードバック入れてくってやり方以外で
マトモなプログラムを作る方法はないだろ。
モデルにフィードバック入れてくってやり方以外で
マトモなプログラムを作る方法はないだろ。
2008/06/14(土) 14:13:33ID:GhaLcPKx
それができないから、他に方法が無いかと模索してるんでしょうね。お察しください。
2008/06/14(土) 15:55:22ID:vUcsb6CI
あのgoogleですらボトムアップだという
2008/06/14(土) 21:53:33ID:TLBVclDV
それはプロジェクト的な意味でだろ。
2008/06/23(月) 00:38:10ID:fMSgUVEh
デバイスへのポインタってグローバルにしたほうが明らかに管理しやすいよな
2008/06/23(月) 01:30:28ID:eCdVbunT
>>48 は?なんで?
2008/06/23(月) 01:34:12ID:pTJzzIh1
俺はどっかにまとめるなあ
グローバルとか、デバイス差の吸収とか必要になったとき困らね
グローバルとか、デバイス差の吸収とか必要になったとき困らね
2008/06/23(月) 02:05:44ID:NUHlpJuv
Direct3Dのデバイスの話とまず仮定。
そして、
・デバイスへアクセスする処理(関数)まで引数渡しでデバイスポインタを渡す
・どの処理(関数)からでもグローバルにアクセス出来るように保持する
との2択から、管理しやすさについて語っているのだと推測。
で、俺の意見は>>48と一緒。
理由は、引数で渡していくのは手間が増えるだけだと思うから。
引数で渡すのは、複数のデバイスを使う場合には意味を持つのかなと思うんだけど、
ゲームにおいて複数のデバイスを使う時って無いんじゃないだろうか。
そして、
・デバイスへアクセスする処理(関数)まで引数渡しでデバイスポインタを渡す
・どの処理(関数)からでもグローバルにアクセス出来るように保持する
との2択から、管理しやすさについて語っているのだと推測。
で、俺の意見は>>48と一緒。
理由は、引数で渡していくのは手間が増えるだけだと思うから。
引数で渡すのは、複数のデバイスを使う場合には意味を持つのかなと思うんだけど、
ゲームにおいて複数のデバイスを使う時って無いんじゃないだろうか。
2008/06/23(月) 02:31:28ID:/DBWn/TJ
ヘッダーが重たくなるから一部のソースでデバイス関連のインクルードして、
そのソースだけでインスタンスの管理やアクセスを許して、
他のソースではインスタンスのポインター保持だけできるようにしてる。
そのソースだけでインスタンスの管理やアクセスを許して、
他のソースではインスタンスのポインター保持だけできるようにしてる。
2008/06/23(月) 08:22:39ID:mKIom38M
オレはシングルトンクラスに持たせてそこからgetter呼ぶかなあ
2008/06/23(月) 14:04:29ID:/Ozl3kU4
レイヤスーパータイプじゃないの
シングルトンはインスタンス数の制限が目的だし、組み合わせて使うならいいけど
シングルトンはインスタンス数の制限が目的だし、組み合わせて使うならいいけど
2008/06/23(月) 22:16:08ID:T9NriNFy
デバイスを使うような処理は関数で囲っちゃって、
普段はデバイスに直接触りすらしないようにしちゃうのは異端かな?
普段はデバイスに直接触りすらしないようにしちゃうのは異端かな?
2008/06/23(月) 22:34:15ID:X6Q0hHes
>>55
俺もー
俺もー
5756
2008/06/23(月) 22:37:13ID:X6Q0hHes ↑でも、ビューアとかデバッグ系のプログラムは別だけどね。
2008/07/02(水) 02:46:33ID:Z7PtKJGp
お前らシーンの遷移ってどういう風に管理してる?
俺は最初、各シーンクラス内で次シーンオブジェクトを直接生成してたんだが、遷移の修正がし難くなるから止めた。
そこでより上位で、静的なシーン遷移管理クラスが現在シーンからイベントを受け取って、
現在の色々な状態をチェックして適切なシーン遷移を行うのを考えたんだが、
これでも、一定のまとまりのあるシーン遷移が積層した場合には泥臭いコードが増えると思ったんで止めた。
んで今やってみてるのは、先のシーン遷移管理クラスをオブジェクト化して、それらをスタック状に積み上げておいて、
現在シーンからのイベントを、処理できる奴まで上から順にたらい回しにしていく方法。
遷移管理オブジェクトのポップ忘れに注意が必要だけど、今のところそう悪くない構造だと思ってる。
他にはどういうやり方があるだろう。
俺は最初、各シーンクラス内で次シーンオブジェクトを直接生成してたんだが、遷移の修正がし難くなるから止めた。
そこでより上位で、静的なシーン遷移管理クラスが現在シーンからイベントを受け取って、
現在の色々な状態をチェックして適切なシーン遷移を行うのを考えたんだが、
これでも、一定のまとまりのあるシーン遷移が積層した場合には泥臭いコードが増えると思ったんで止めた。
んで今やってみてるのは、先のシーン遷移管理クラスをオブジェクト化して、それらをスタック状に積み上げておいて、
現在シーンからのイベントを、処理できる奴まで上から順にたらい回しにしていく方法。
遷移管理オブジェクトのポップ忘れに注意が必要だけど、今のところそう悪くない構造だと思ってる。
他にはどういうやり方があるだろう。
2008/07/02(水) 03:01:12ID:US3ampRT
シーンクラスじゃなくて管理クラスの方を積むの?
俺の鳥頭じゃちょっとイメージしにくい・・・
俺の鳥頭じゃちょっとイメージしにくい・・・
2008/07/02(水) 08:11:54ID:1rjp9Xph
シーンなぞ市販のゲームだって両手の指で足りるくらいしかないのに
なんでそんなものの遷移だけで無駄にコードをいじりまわすのか
現在アクティブな遷移管理オブジェクトを隠蔽してなにか楽しいことがあるの?
なんでそんなものの遷移だけで無駄にコードをいじりまわすのか
現在アクティブな遷移管理オブジェクトを隠蔽してなにか楽しいことがあるの?
2008/07/02(水) 10:15:59ID:25mPqNml
シーンねぇ
なんか適当な名前のグローバルな列挙定数でswitch文で制御しているけど駄目なんかなぁ。
なんか適当な名前のグローバルな列挙定数でswitch文で制御しているけど駄目なんかなぁ。
2008/07/02(水) 19:16:17ID:noQk3O5d
それで問題感じなきゃ無問題
設計次第だしね
抽象化次第では面白い構造になりそうかも
抽象化不要なゲームなら別にswitchでよくね
設計次第だしね
抽象化次第では面白い構造になりそうかも
抽象化不要なゲームなら別にswitchでよくね
2008/07/02(水) 22:59:17ID:zDJJl2HF
シーンの切替で驚いた事といえば、
RPGとかで、フィールドからダンジョンや町などに入る/出るときにシーンの切替をするって言うのを聞いた時。
何か自分とはシーンというものの大きさが著しく違うのか、それとも自分が思っているRPGとは違うものなのか。
RPGとかで、フィールドからダンジョンや町などに入る/出るときにシーンの切替をするって言うのを聞いた時。
何か自分とはシーンというものの大きさが著しく違うのか、それとも自分が思っているRPGとは違うものなのか。
2008/07/02(水) 23:04:11ID:surY1LL8
システムによっては、フィールドと町の中とではまるっきり違うやつもあるから、
そーゆーんじゃないのん?
そーゆーんじゃないのん?
2008/07/02(水) 23:06:33ID:25mPqNml
まぁドラクエ的な物なら自分もフィールド、街、ダンジョンは同列に扱うかな。
2008/07/02(水) 23:19:07ID:Z+lS9RAU
>>58
P of EAA Application Controller
というのがある、設計によっては使えるかもしれない
シーン遷移の追加よりも修正が多いのなら
可読性を重視して分散しないように書いた方が修正は楽になる、と思う
P of EAA Application Controller
というのがある、設計によっては使えるかもしれない
シーン遷移の追加よりも修正が多いのなら
可読性を重視して分散しないように書いた方が修正は楽になる、と思う
2008/07/02(水) 23:42:43ID:US3ampRT
俺はステータス画面の中の項目や、更に細かい項目もシーン扱いしちゃうなー
そこまで行くとシーンじゃなくてswitchレベルかもとは思うんだけど
そこまで行くとシーンじゃなくてswitchレベルかもとは思うんだけど
2008/07/02(水) 23:53:44ID:noQk3O5d
サブメニュー系は別で作ってhas関係にしてるな
シーン単一保持だと元シーン内のアニメも止める事になるし(※無論それが前提なら無問題だけど)
俺の手癖だと、シーンを同時に複数駆動できるようにするとこんがらがる。
結局多態やswitch、Cなら関数ポインタの嵐になって弄りにくくなる一方な感じ。
なんか下手なんだろな
シーン単一保持だと元シーン内のアニメも止める事になるし(※無論それが前提なら無問題だけど)
俺の手癖だと、シーンを同時に複数駆動できるようにするとこんがらがる。
結局多態やswitch、Cなら関数ポインタの嵐になって弄りにくくなる一方な感じ。
なんか下手なんだろな
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- NHKの災害情報、閲覧に「ユーザー登録必要」で批判の声多数 [少考さん★]
- 🇺🇸🇨🇳米中関係は「極めて強固」とトランプ氏… ★7 [BFU★]
- 性売買「買う側」処罰化と同時に「売る側は処罰せず、支援の対象に」Colabo主催の集会にて [パンナ・コッタ★]
- 〈NHK督促10倍に強化〉「カーナビも受信料いただきます」方針に自治体が悲鳴…“督促の基準”を大赤字のNHKにきいた [パンナ・コッタ★]
- 【北海道】「稀に見る大きな個体」 体長1.9m、体重400kg超の巨大グマを捕獲 苫前町 [煮卵★]
- SuicaとPASMOのコード決済「teppay(テッペイ)」26年秋開始 🐧🤖 [少考さん★]
- ATOK、サブスク料金を2倍に値上げ。330円/月👉660円/月 [838847604]
- 小林源文(74)「実際に日中戦争になったら先の大戦の沖縄、硫黄島での戦闘のように日本人の恐ろしさを教えてあげるよw」 [237216734]
- 【朗報】高市早苗、10代〜50代まで支持率80%超えwwww [279254606]
- 日本政府、「政府効率化省(DOGE)」を設置 租特・補助金の無駄点検 [377482965]
- 防衛省「台湾有事にロシア参戦するかも」 [177178129]
- 経済学者「高市が辞めることが最大の経済政策」 [743638351]
