[過去ログ] ゲームにおけるデータ構造・クラス設計・パターン2 (627レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1
(1): 2008/05/23(金)21:10 ID:8M1gqhPX(1) AAS
具体的なゲーム名を挙げて、
どのようにクラス設計をすればよいか、
継承・委譲関係はどのようにすればよいか、
使えそうなパターンは何かなど語るのもよし。
自作ゲームの内容とクラス図を書いて
改善案を聞くもよし。
設計に関して困ったことを質問するもよし。
省5
547: 2009/10/16(金)20:07 ID:eJ9LLkd5(1) AAS
アクセッサ経由だとバグっぽい動きも引っ掛けやすいが、
そうでないと大変そうだな。デバッグ一件で1時間とか悩みたくないし。
548: 2009/10/18(日)12:51 ID:Yr/zm5ey(1) AAS
>546
確かに使い方を間違えるってのはよく起こる
549: 2009/10/25(日)23:29 ID:tIk7fQwv(1) AAS
Compositeをゲームのシーン管理に使うのってどうやるんですか?
次に来るシーンを各クラスに設定しておいたりとか・・?
550: 2009/10/25(日)23:57 ID:6R6DoQXi(1) AAS
何を聞いてるかがちょいと分からないけど
Gems5巻にいいのが載ってたと思うよ。
とりあえず Google [スタックベースのシーン管理 gems]。
551: 2009/10/26(月)00:08 ID:PLlfj58P(1) AAS
というか前スレの260あたりか。Compositeかどうかも微妙だな。スマソ
552
(1): 2009/11/16(月)14:29 ID:FF5xAAX0(1) AAS
>>501
その後どうなった?
俺も今描画周りを考えてる
553: 2009/12/13(日)15:40 ID:Pf4hrG82(1) AAS
よく読んでないけどEmptyProject風に

void Create(LPDIRECT3DDEVICE9 lpD3DDEV)
{
jiki = new Jiki();
jiki->Create(lpD3DDEV);
}

void Draw(LPDIRECT3DDEVICE9 lpD3DDEV)
省4
554: 2009/12/14(月)01:36 ID:etpwNEHL(1/2) AAS
deviceの作成は一箇所のクラスでシングルトン
device呼び出しが長くなるが、面倒なら#define
俺はこんな感じ

無知なんだけど、デバイスて何個も必要になることあんの?
555: 2009/12/14(月)01:57 ID:ViaP5WDz(1/2) AAS
デバイスが複数あったら複数必要なんじゃね。
556: 2009/12/14(月)03:13 ID:etpwNEHL(2/2) AAS
その複数てのがさ、動的に管理しないといけないものなら複数個保持するクラスにすればいいし
そうでないなら同じようなクラスを用意するかな

便利だからグローバルにしてるわけだし
仕方ないとおもってる
必要な関数ごとにデバイス渡すとか面倒すぎる

まあ、何十個もデバイスがいるわけじゃないからできる荒い方法ではあるんだけどな
557: 2009/12/14(月)11:05 ID:QE4kvqHr(1) AAS
ボンバーマンを拡張して繋がれてるコントローラの数だけ
プレイヤーが増えるとかいった仕様にしたいなら
コントローラのデバイスは動的に管理した方がいいと思う。
558: 2009/12/14(月)14:08 ID:lLcah1pB(1) AAS
プレイヤが一人でも全てのコントローラで操作できるようにしているが
(左右同時に押された場合は後からの入力を優先)
コントローラが壊れて常に右側に入力があるみたいな状態になるとうざったそうだな
559: 2009/12/14(月)15:35 ID:ViaP5WDz(2/2) AAS
壊れたコントローラーはサポートしなくてもいいと思うよw
560
(2): 2009/12/21(月)22:25 ID:F5CW/HFF(1) AAS
sharedptrみたいなの実装したいのですが、
それらしいことがのってる
more effective c++と、Accelarated C++
のどちらの本が役立ちそうでしょうか?

boostソース読めってのは無しでお願いします。
561: 2009/12/21(月)23:10 ID:yYVJ9W7O(1) AAS
>>560
「スマートポインタ」でググれば解説もサンプルも見つかるよ。
562: 2009/12/22(火)01:26 ID:Q5u6VebD(1) AAS
>>560
なんで boost::shared_ptr 使わないの?
563
(1): 501 2009/12/30(水)05:37 ID:CHdRD74o(1/2) AAS
>>552
描画スクリプトっぽく進めてる。>>510 の言うとおりの方法。
>各オブジェクトには描画スクリプトみたいのを作らせておいて、draw()がそれを解釈して描画とか?
描画スクリプトみたいなのを作るほうがプログラム構造は単純になった。
>>511に書いたやり方は結局デバイスアクセス処理が分散していて大して煩雑さは改善されなかった。

簡単な2Dゲームだと描画は大部分が画像描画コマンドだけで構成されてた。思ってたより単純。
あとは少ないながらもカメラ位置変更コマンドと文字列描画コマンドも使った。
省6
564: 501 2009/12/30(水)22:40 ID:CHdRD74o(2/2) AAS
>>563を読み返したらちょっと違うところがあったので訂正。引用したこの文。
>各オブジェクトには描画スクリプトみたいのを作らせておいて、draw()がそれを解釈して描画とか?
自分の場合、描画スクリプトを作るのは「各オブジェクト」というより「各シーン管理オブジェクト」になった。

つまり
シーン管理オブジェクトが自身の所有する各オブジェクトの情報をアクセサ経由で読み取って
描画スクリプトみたいなものを組み立てる。

たくさんある細かい各オブジェクトに描画スクリプト的なものを作成させるのは責任というか依存性が散らばりすぎて複雑になる。
省1
565
(1): 2009/12/31(木)08:32 ID:QBEbvaiT(1) AAS
sqliteを組み込んで、画像やモデルを相互変換可能な名前/IDで管理するとか夢が広がるわな
内部で使うのは番号(ID)だとしても、人間にとっては名前の方が分かりやすいし
566: 2009/12/31(木)15:10 ID:wXwu3da7(1) AAS
>>565
Google App Engine+Flash(Flex)でノベルもどき作ってるけど、まさにそれやってるわ。
GaeなんでsqliteじゃなくてGoogle Big Table使ってるけどね。
スクリプトはForthベースの俺々スクリプトだけど、
SilverlightだとPythonやRubyエンジンが使えるので、
次作るときはそっち使おうかなと思ってる。
567: 2010/01/04(月)06:09 ID:JxRYn/a0(1/2) AAS
おおー、ゲームのバックエンドサーバーにもGAE使う時代かw

たしか、mixiアプリのモバイルゲームでGAE使った事例があったな。
3000万PV/月をかなり安価で乗りきれるとか

Togetter(トゥギャッター) - まとめ「100万PV/日のmixiアプリモバイルをGoogle App Engineで実装した@gclue_akira氏に直撃インタビュー」
外部リンク:togetter.com

すれ違いの話題になるが、昨今のネットが絡むゲームの場合バックエンドの技術も必要だけど、
そういう話題を扱ったスレってないものかな
省2
568: 2010/01/04(月)06:10 ID:JxRYn/a0(2/2) AAS
x 開発時代
o 開発自体
569: 2010/04/20(火)00:42 ID:pYU4LjYZ(1) AAS
前スレの最後のほうに出てた描画の話題って結局どうなりました?(928ぐらい)
570: 2010/05/11(火)16:43 ID:mK0DmPV5(1) AAS
画像リンク[jpg]:blog-imgs-27.fc2.com
571
(2): 2010/09/20(月)21:23 ID:Qy1aznUB(1) AAS
アクションゲーム作ってるんですが
どういう風にクラス分けすればいいか悩んでます

MAPクラス
Playerクラス
GameFrameクラスの3つがあって
mainループで

switch(MODE)
省16
572: 2010/09/21(火)03:43 ID:l4LB0P7i(1) AAS
STAGE01とSTAGE02を分ける必要は無いだろ。
ファミコンの「ドラえもん」みたいな、1面と2面で全く違うゲームになるなら別だけど。
573: 2010/09/23(木)17:38 ID:g80tUxgW(1) AAS
まずそのswitch文をなんとかしよう。
TitleクラスとMenuクラスとStageクラスを追加するとか。
その上で、StageをPlayerとMapのメディエータとして実装する、というのはどうだ?
574: 2010/12/04(土)11:15 ID:bbisnDl0(1) AAS
>>571
貴方は俺か
クラス名と悩みが殆ど同じとかw
575: 2010/12/04(土)14:39 ID:t6Qi73J8(1) AAS
>>571
ちょっと難しいかもしれないが
外部リンク[html]:marupeke296.com
ここはかなり参考になる気がするよ。サンプルもあるし。
その6とその7ね。
576: 2011/02/02(水)03:54 ID:uhRk4Rqb(1) AAS
保守
577: 2011/05/20(金)08:10 ID:PnmAmJ/W(1) AAS
良スレ保守
578: 2011/08/02(火)05:21 ID:jrRNxlOf(1) AAS
Android開発でのパフォーマンスTips
外部リンク:labs.techfirm.co.jp
外部リンク:labs.techfirm.co.jp

オブジェクト生成は避ける
インターフェースは使わない
スタティックメソッドを使う
クラス内部でgetter/setterは使わない
省5
579: 2011/08/02(火)12:43 ID:w6MyIbcF(1) AAS
iアプリを思い出すなーw
580
(1): 2011/08/04(木)13:31 ID:OiYK4POH(1) AAS
PS時代のゲーム開発みたいだなw
あの制限ばかりの時代を経験した世代の方が
開発に向いていたりしてw
581: 2011/08/09(火)01:57 ID:/4Pi5/Qb(1) AAS
処理能力を操作に割かせるためにメモリに読めるだけ読むのかな
582: 2011/08/09(火)20:19 ID:9GJ5MiVh(1) AAS
それやりすぎるとアプリの切り替えをすることが多いスマフォじゃ
面倒が起きやすいんじゃないか
583: 2011/08/15(月)07:32 ID:zPArLam8(1) AAS
>>19
消えてるみたい
どこか掲載されるサイトしらない?
584: 2011/08/21(日)15:33 ID:IUtyM1fd(1) AAS
こないだ色々探したんだけど、糞アフィブログのリンク記事しか見つからなかった
キャッシュとかも見たんだけどさ
585: 2011/09/04(日)02:30 ID:novGGJeq(1) AAS
>>580
そうかもしれない。
その世代が今のゲーム現場で老害化してるんでむしろ行って欲しい。
586: 2011/12/29(木)00:00 ID:hHcZWWbE(1/2) AAS
よさげなスレなのに、あまり話が盛り上がってないな・・・

RPGのクラス設計で、「CharacterがItem(複数)を持っている」
状態を表したい時、
昔の自分は、
class Character {
  List<Item> inventory;
}
省12
587: 2011/12/29(木)00:30 ID:8pF0f6jp(1/2) AAS
そこまでいったら、Interface抽出までやるかなー。
588
(1): 2011/12/29(木)11:43 ID:hHcZWWbE(2/2) AAS
インタフェース抽出・・・
こんな感じ?

interface IGameData<T> {
  int Count { get; }
  T this[int no] { get; }
  void Add(T arg);
  void Remove(T arg);
省8
589: 2011/12/29(木)15:58 ID:8pF0f6jp(2/2) AAS
たぶんそんな感じー
590
(1): 2012/01/09(月)19:11 ID:7/HYejXG(1) AAS
>>588
なんでitemList がstaticなんだ
591: 2012/01/10(火)01:04 ID:Lc/KjEb7(1/2) AAS
プログラム自体全くの素人なんで
取り敢えず3D空間上に地面を作ってその上をキャラクタが歩き回れるプログラムを作ったんだけど
地面を生成する際に必ず必要になる地面の各頂点の座標だけで1面につきfloat1つ分で4byte取られるんだよね
そこでふと思ったんだけど
エルダースクロール2ってどうやってそこらへんの情報を扱ってるんだろ
あのゲームのマップの大きさを計算してみたら一辺317Kmもあるみたい
1面を5m四方として扱ってもマップ全体を表すのに16078240000byteも必要
省4
592
(1): 2012/01/10(火)01:20 ID:rFVH40vL(1) AAS
常にそのデータをメモリ上に保持しておかなければいかんわけじゃないだろ……

100km先のデータなんて近づいてきたら読めばいいじゃない
593
(1): 2012/01/10(火)02:51 ID:tQJO4ffg(1) AAS
floatじゃなくてhalf floatなのかもしれん。これだけで半分になる。

あとは、エントロピー符号化の前に、
曲面補完とか使って圧縮かけてるのかもしれない。
ビットマップで曲線を保持すると解像度分のデータが必要だが、
ベジェ曲線なんかで表せば、上手くいけばハンドル数個分で済む。
FUELなんかはたぶんこういう方法使ってて、川が途中で途切れてたりするところが目立つのはそのためだと思う。

全部俺の勝手な予想だが、いろいろ工夫はしてると思うよ。
594: 2012/01/10(火)20:26 ID:Wi6HPUjx(1/3) AAS
AA省
595
(2): 2012/01/10(火)22:24 ID:Lc/KjEb7(2/2) AAS
>>592
そういう問題ではないんだけど、マップの構造設計を考えるとそこも考えなきゃいけないと思う

>>593
ベジェ曲線・・・確かに全く別のアプローチ方法で面白いかも・・・
ベジェ曲線を3次元で表現するのかX、Yどちらかに絞って高さだけを表現するのか
ただそうするとどのタイミングでどこの情報を取ってくるかが問題になるのかな
単純に複数の面(25個ずつくらい)をまとめた構造体で管理してたんじゃベジェ曲線の利点が薄まる?
省1
596
(1): 2012/01/10(火)23:12 ID:Wi6HPUjx(2/3) AAS
>>595
以前、フラクタルで地形を作成するプログラムを書いたことがあるけど、
動的にマップデータを生成するのはどうだろう?
ランダムシードを固定値で持っていれば、再現性もあるかと思うし。
597: 2012/01/10(火)23:17 ID:Wi6HPUjx(3/3) AAS
言葉足らずすぎる気がしたので補足w

広い領域を、例えば5キロ平方に区切って、
隣の領域と連続性を保つため外周だけはデータを保持。
その内側の凹凸は動的生成、って意味です。
598
(1): 2012/01/11(水)01:47 ID:dDo0BLDQ(1) AAS
>>596
それ単独では制御が難しいかも。町を作りたいのに平らな地形が得られない、とか。
平らな地形の部分だけ追加データで入れるとかするのかな。

>>595
線→面への拡張は、概念はそんなにフクザツじゃない。
補間方法はベジェじゃなくてもスプラインでもいいけど、単純にXY両方でデータの無いところを補間するだけだと思う。
ただ当然実行時計算量とデータサイズのトレードオフはある。
省5
599
(1): 2012/01/13(金)08:38 ID:q77afuhx(1) AAS
>>598
なるほど、ってことは、
街の地面:整地されてるから、メッシュを大きく平らに
平原とか砂漠とか:メッシュを大きく取って、細かい部分は補間なり動的生成なり
山岳みないな凹凸がある地形:メッシュを細かく
って感じに・・・
(と言っておいてなんですが、メッシュの大きさを変えるのは、プログラムが汚くなりそうw)
600: 2012/01/13(金)23:38 ID:sS8+h2Ga(1) AAS
>>599
偏った例で恐縮だけど、SourceEngineのディスプレースメントサーフェイスは
分割数は2,4,8とか2の倍数固定でそれほど柔軟ではないし、穴あけれないとか制約はある。
だからその辺はレベルデザイナーのほうで調節する感じ。
ただしスムージングはかけれるから、たぶん補間はしてる。
たぶんゲームエンジンはどれも似たような仕組みは実装してると思うよ。
ディスプレースメントなら頂点4つ(△ポリゴン2つ)+差分テクスチャマップをシェーダーにぶち込んで高速処理、とか
省2
601: 2012/06/10(日)17:27 ID:m7xNzVPO(1/2) AAS
特定の条件がなんなのか不明だけど、eventListenerとかgetInputとかで良いんじゃないの
設計としてはおかしくはない
602: 2012/06/10(日)17:28 ID:m7xNzVPO(2/2) AAS
誤爆失礼
603: 2012/10/13(土)15:00 ID:PbMUmxTV(1) AAS
保守
604: 2014/08/05(火)01:15 ID:6YHbcuwm(1) AAS
タイル形式の箱庭データ配置ってどう思う?
メモリーが少なかった頃の遺物?
高速化のために未だに使う事ってある?
605: 2014/08/05(火)12:28 ID:mp7VEmF3(1) AAS
良くも悪くもゲームが記号的になるね
606: 2014/08/18(月)17:56 ID:/xfKqDtl(1/2) AAS
Androidでゲームを作ってるんですが、クライアント・サーバー型のゲームのデータを
データベースで管理しようとすると武器の名前とかいらないと思って、端折りまくってたら
武器のIDだけのテーブルになってしまいました。(パラメータはクライアントで持ってます)

ここまでくるとテーブルとして参照するだけcpuの無駄だと思い、
テーブルを消していくと他のテーブルと全く関わり合いのないテーブルが出てきます。
(例えば武器を売った時にいくらお金が手に入るか?とか)

そうすると何か自分の考えてる構造に不安を覚えるのですが、これは正しいのでしょうか?
省1
607
(1): 2014/08/18(月)18:09 ID:/xfKqDtl(2/2) AAS
砂漠とか海の3D空間で遠景を表現するのってどうすればいいですか?

地平線とスカイドーム(スカイボックス?)の切れ目が不自然になって、
ちょっとでもカメラのY座標を高くすると地面の切れ目もはっきり目立ちます。
fogは遠くのオブジェクトも見たいのであまりしたくありません。

画像リンク[jpg]:livedoor.blogimg.jp
画像リンク[jpg]:yoda.dip.jp
↑こういうの
608: 2014/08/23(土)15:13 ID:yctiE/PZ(1) AAS
>>607
LOD(level of detail)を使って遠くまで描画すればいいと思う。
ちょっと古い記事だけど下記のサイトが参考になるんじゃね?

3Dゲームファンのための「ワンダと巨像」グラフィックス講座
外部リンク[htm]:game.watch.impress.co.jp
の「■地形のLODシステムと読み込み」の項目
609
(1): 2014/08/23(土)18:35 ID:w69tOcJ6(1) AAS
AA省
610: 2014/08/24(日)14:20 ID:AJZlAWRG(1) AAS
>>609
視点のY座標が高くなると、地平線と空の間に描画されない部分が出てきてしまいます・・
611: 2014/08/25(月)00:41 ID:2KTfo870(1) AAS
あぁXZ座標か。兎に角視点の高度はに角錐台は影響されない方向で。
612: 2014/08/26(火)13:52 ID:qHUiU/pW(1) AAS
いや、角錐台は影響されないんですけど、
aが立ってる地面とかは高度上げれば上げるほど離れていくわけじゃないですか
そうすると地面のポリゴンと角錐台がどんどん離れていって
地面のポリゴンの終端があらわになってしまいます。
街を探検するようなゲームなら全く問題ないんですが
海とか航空機とかで「地平線を表現したい」となった時にfogにも頼れず(霞ませたいわけじゃない)どうしたものかと・・・

LODで全力で軽量化しつつ、XZ座標1000000,1000000とかすごい桁のパラメータで遠くに設置してもいいんですが、
省4
613
(1): 2014/08/26(火)21:43 ID:HN5WQ9H7(1) AAS
AA省
614: 2014/08/27(水)17:08 ID:r0T91QdR(1) AAS
ぢめんをちきゅうみたいにまるくするのはどう?
615: 2014/08/28(木)17:39 ID:bFGeiPpW(1) AAS
>>613
ということは、607の下の画像みたいなのは建物を思いっきり縮小してるんですかね?
上の画像はすごいきれいに水平線が見えますけど
616
(1): 2014/08/28(木)21:14 ID:m/S7fPOm(1) AAS
上のは船上だから視点は高くても数十m。水平線は結構近いと思うよ。

下のは数kmとかじゃないかな。建物を縮小というか単純に距離が離れてると思うけど…
それでもフォグを使って描画範囲を制限して、描画対象を削減してる。
617
(1): 2014/08/29(金)17:47 ID:PQKddMMr(1) AAS
>>616
今実際に水平線を描画してみたんですが、遠くの船が空中に浮いてるように見えます
海面の描画外で船を描画するとスカイドームの背景が船底より下に描画されます

海面にかけるフォグ色とスカイドームに貼り付けるテクスチャの水平部分に
同じ色を使っていい感じにごまかせないか試してみたんですが、
海面の上から船底が描画されるのでやっぱり違和感があります
618
(1): 2014/08/29(金)22:39 ID:Me2CR80H(1) AAS
船を描画するときフォグは無効にしてるの?

船全体がフォグの終了の向こうに出るまでは、フォグを有効にして船を描画。
向こうに出たら描画そのものをスキップしないとダメだと思うよ。
619
(1): 2014/08/30(土)08:34 ID:RhmAUk4c(1) AAS
>>617
船のモデル側に海面ポリゴン(船底を隠す分だけ)をくっつけとけば、いいんじゃね?
620: 2014/08/30(土)11:22 ID:5AIFhixX(1) AAS
>>618
海面は有効にしてますが船は有効にしてません
そもそもフォグをかける理由はスカイドームに描かれた海面と同色にして
違和感なく水平線を再現したいって理由なので
ある距離で突然船が消えるようなのは無理です

>>619
それだと嵐とかの表現で大波とか拡張したくなった時とか、
省2
621: 2014/09/01(月)07:02 ID:raj97bmv(1/2) AAS
AA省
622: 2014/09/01(月)07:04 ID:raj97bmv(2/2) AAS
AA省
623
(1): 2014/09/06(土)11:55 ID:khJXlvEe(1) AAS
画像リンク[png]:i.gyazo.com
浮いて見える?
624: 2014/09/20(土)12:54 ID:aka1I6g9(1) AAS
>>623
海面のポリゴンより遠い所で船を描画すれば
船底が見えて海面から浮いて見えるね

洋ゲーとかの遠くに見える空母とか戦艦ってどうやって表現してんだろうね
625: 2015/03/16(月)18:52 ID:ELGRcANR(1) AAS
すごい大雑把な質問なんだけど
ゲーム設計において外部ライブラリの扱いってどうやるの?
ひとつだけならそれに従えばいいかもだけど複数になるとどうしても設計が汚くなってしまう
626: 2015/12/19(土)14:31 ID:uNL25Qjh(1) AAS
プログラマはMacを使ってるってマジ?
2chスレ:news
627: 2017/12/31(日)20:22 ID:/rN76OKL(1) AAS
簡単にお金が稼げる方法興味ある人だけ見てください。

グーグル検索⇒『来島のモノノリウエ』

A8RNONREKQ
1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.024s