[過去ログ] Delphiゲームプログラミング相談室 (976レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
829
(1): 名前は開発中のものです。 [] 2006/04/29(土) 13:48:10 ID:P3tEKmOP(1/4) AAS
「タイトル→ゲーム→ED」とかのシーン遷移ってどうやってる?
じゃんけんゲーみたいな単純なもんなら行き当たりばったりでなんとかなるけど、
それなりの規模のゲームを目指すなら、咄嗟の拡張に強いシステムを組まなくちゃいけないよな
やっぱりコーディング前に仕様書みたいなもの書いたりするんだろうか
どうよ?
832: 名前は開発中のものです。 [sage] 2006/04/29(土) 14:34:17 ID:P3tEKmOP(2/4) AAS
>>830
830(1): 名前は開発中のものです。 [sage] 2006/04/29(土) 14:07:38 ID:JeSIblMt(1/2) AAS
自分は各シーンクラスと
そのシーンを全て持たせた管理クラスを作ってる。

ループから呼び出すのは管理クラスで管理クラス内でシーンごとに分岐。
シーン内で違うシーンへの移行フラグが立ったら、
管理クラスがそれを受け取って…みたいな。

一般的なやり方だと思ってやってたんだけど違ったらスマン
>>831
831(1): 名前は開発中のものです。 [sage] 2006/04/29(土) 14:10:34 ID:p+54dQLt(1) AAS
おいらの場合は、Stateパターンで。
次の状態をクラス型で返して状態遷移。
次は、そのクラス型を元にStateを生成。
共用するデータは、管理クラスに持たせる。

でも、あまりスマートじゃない・・・
なるほど。
やっぱ管理クラス内でシーンクラスを遷移させるのが分かりやすいのかも。
拡張するのも簡単だし。
831氏の場合は、管理クラスがシーンクラスを直接見てるわけじゃなくて、
シーンクラスが廃棄されるときに次のシーンクラスを作成する、って感じかな。

おれは最近TListのタスクってやつを使い始めた。
例えばstgの弾とか爆発とか、ゲーム内で作成するオブジェクトの数が不定な場合は便利だー。
835: [sage] 2006/04/29(土) 18:16:22 ID:P3tEKmOP(3/4) AAS
みんなレスサンクスですよ。
やっぱそれぞれ一長一短があるし、作るもんによって実装方法は違うよなー

ところでQD使ってて、小数の割り算の精度が悪くなる原因がわかった。
DirectXの初期化部分でFPU設定が変わっちゃうからみたい。
CreateDeviceの呼び出し時にD3DCREATE_FPU_PRESERVEを加えたら直った。
QDのCreateDeviceはこれ付いてないみたいだから、小数の計算がなんかへんだなーと思ったら

っていうか既出ですか?
838: [sage] 2006/04/29(土) 23:30:37 ID:P3tEKmOP(4/4) AAS
GetPrecisionModeでFPUの精度を調べてみたら、

 DirectX初期化前 → pmExtended
 DirectX初期化後 → pmSingle

単精度になってた。

SetPrecisionMode(pmExtended);を実行したらまた拡張精度に戻せるけど、
戻しちゃうとDirect3Dのパフォーマンスが落ちるらしい。
どうしたらいいんだろう。

以下検証こーど。DGCaradをフォームに貼り付けてから実行。

uses Math;
procedure TForm1.FormCreate(Sender: TObject);
var
  i, j: Cardinal;
  s: Extended;
begin
  //コメントアウトすると計算結果が変わる?
  //SetPrecisionMode(pmExtended);

  i := 2;
  j := 5;
  s := i / j;

  Form1.caption := FloatToStr(s);
end;
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.035s