[過去ログ] Delphiゲームプログラミング相談室 (976レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
825: 815 [sage] 2006/04/21(金) 21:56:53 ID:ASot9yYT(1) AAS
>>816816(2): ぬ [sage] 2006/04/20(木) 23:34:26 ID:ftoD76SU(1) AAS
>>815
ゲームループの実装手法と Windows のメッセージ構造が関係しとる。
大抵そういうゲームは、アイドル時間を利用してゲームループ回してる。
アイドル( idle )ってのは車のアイドリング(空転)と同じで、いわゆる「暇」のこと。
ちなみに Delphi だと TApplication.OnIdle とかで簡単にアイドル状態をキャッチできる。
詳しい実装方法は Delphi ゲーム製作講座に書いてあるよ。
で、なんで止まってるように見えるかというと、
メニュー開いてるときとか、他にもウィンドウをドラッグしてる最中とかは、
そっちの処理のほうが忙しくなるので、ウィンドウ( TForm )の処理に構っていられなくなる。
暇( idle )じゃなくなるってことだな。
その結果ループが止まり、描画処理が行われず、画面が止まってるように見える。
つまり、プログラマが何らかのイベントを用いて意図的に停止?動作させているわけではなく、
勝手にそうなっちゃう、が正解。
もしそんな状況でも動作させつづけたいなら、スレッド( TThread )とか使えば良いんじゃないかな。
だめだ
死ぬ
たいしたゲームじゃないんでTTimer使って速度調整していたんですが、
アドバイス通りOnIdle使ってみました。
たしかに勝手に止まりますね。
826: 名前は開発中のものです。 [] 2006/04/22(土) 00:20:07 ID:xYKpdzLP(1) AAS
>>824824(1): ぬ [sage] 2006/04/21(金) 21:40:34 ID:19KokKEv(3/3) AAS
ただのゴバークです
大変失礼しました
〈 ドモッ、スミマセン....。 〈 スミマセンスミマセン...。 〈 コノトオリデス!
∨ ̄ ̄ ̄ ̄ ̄ ̄ ∨ ̄ ̄ ̄ ̄ ̄ ̄ ∨ ̄ ̄ ̄ ̄ ̄
(´Д`;)ヾ (;´Д`)
∨) ( 八) (´Д`;)、
(( 〉 〉 ノノZ乙
いや、むしろ>>818818(2): ぬ [sage] 2006/04/21(金) 00:31:26 ID:19KokKEv(1/3) AAS
ん、わからんが勝手にonG#にしてる
E --0--
B --3--
G --4--
D --2--
A --x--
E --4--
んでAsus4 → A
sus4は安易すぎるかも試練
は、本当にギターのことなのかが知りたい。
827: 名前は開発中のものです。 [sage] 2006/04/22(土) 20:14:23 ID:7H1cl+2D(1) AAS
一ヶ月前に一度もテストしないで作った
当たり判定統括ライブラリが、一発で動いたー いやっほー
828: 名前は開発中のものです。 [sage] 2006/04/26(水) 20:26:49 ID:TbDvNo5r(1) AAS
Virtual;
と
Virtual;Abstract;
の違いがわかったー!!!
829(1): 名前は開発中のものです。 [] 2006/04/29(土) 13:48:10 ID:P3tEKmOP(1/4) AAS
「タイトル→ゲーム→ED」とかのシーン遷移ってどうやってる?
じゃんけんゲーみたいな単純なもんなら行き当たりばったりでなんとかなるけど、
それなりの規模のゲームを目指すなら、咄嗟の拡張に強いシステムを組まなくちゃいけないよな
やっぱりコーディング前に仕様書みたいなもの書いたりするんだろうか
どうよ?
830(1): 名前は開発中のものです。 [sage] 2006/04/29(土) 14:07:38 ID:JeSIblMt(1/2) AAS
自分は各シーンクラスと
そのシーンを全て持たせた管理クラスを作ってる。
ループから呼び出すのは管理クラスで管理クラス内でシーンごとに分岐。
シーン内で違うシーンへの移行フラグが立ったら、
管理クラスがそれを受け取って…みたいな。
一般的なやり方だと思ってやってたんだけど違ったらスマン
831(1): 名前は開発中のものです。 [sage] 2006/04/29(土) 14:10:34 ID:p+54dQLt(1) AAS
おいらの場合は、Stateパターンで。
次の状態をクラス型で返して状態遷移。
次は、そのクラス型を元にStateを生成。
共用するデータは、管理クラスに持たせる。
でも、あまりスマートじゃない・・・
832: 名前は開発中のものです。 [sage] 2006/04/29(土) 14:34:17 ID:P3tEKmOP(2/4) AAS
>>830
>>831
なるほど。
やっぱ管理クラス内でシーンクラスを遷移させるのが分かりやすいのかも。
拡張するのも簡単だし。
831氏の場合は、管理クラスがシーンクラスを直接見てるわけじゃなくて、
シーンクラスが廃棄されるときに次のシーンクラスを作成する、って感じかな。
おれは最近TListのタスクってやつを使い始めた。
例えばstgの弾とか爆発とか、ゲーム内で作成するオブジェクトの数が不定な場合は便利だー。
833: 名前は開発中のものです。 [sage] 2006/04/29(土) 14:59:34 ID:WOc6+g6+(1) AAS
俺は、シーン自体を管理させるクラスとかは置いてないな
ただ、タイトル画面移行手続きに
全オブジェクト廃棄
オブジェクトA生成
オブジェクトB生成
オブジェクトC生成
ってやってるだけ
ABCはその画面を作る元になる粉みたいなキャラとか。
意外と扱いやすい
834: 名前は開発中のものです。 [] 2006/04/29(土) 15:52:47 ID:KY27NHQk(1/2) AAS
>>829
俺は普通にタスクシステムでやっている
835: ぬ [sage] 2006/04/29(土) 18:16:22 ID:P3tEKmOP(3/4) AAS
みんなレスサンクスですよ。
やっぱそれぞれ一長一短があるし、作るもんによって実装方法は違うよなー
ところでQD使ってて、小数の割り算の精度が悪くなる原因がわかった。
DirectXの初期化部分でFPU設定が変わっちゃうからみたい。
CreateDeviceの呼び出し時にD3DCREATE_FPU_PRESERVEを加えたら直った。
QDのCreateDeviceはこれ付いてないみたいだから、小数の計算がなんかへんだなーと思ったら
っていうか既出ですか?
836: 名前は開発中のものです。 [sage] 2006/04/29(土) 20:57:45 ID:JeSIblMt(2/2) AAS
知らなんだ
837: 名前は開発中のものです。 [] 2006/04/29(土) 22:28:02 ID:KY27NHQk(2/2) AAS
かなり昔に、
Set8087CW(Default8087CW);
を使わんと、QDでのフォント描画がおかしいという話があった気がしないでもない。
それも同じことなのかな。
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;
839(3): 名前は開発中のものです。 [sage] 2006/05/03(水) 11:21:30 ID:C+qvBRVh(1/2) AAS
QD3で使うsxファイルってテクスチャ読まないのですか?
Xファイルとbmpは同じフォルダに入ってる。
色付きオブジェクト以外真っ白・・・・
840: 名前は開発中のものです。 [] 2006/05/03(水) 11:34:15 ID:A5mWBe1p(1) AAS
志村ー、TSXFrame.texture
841: 839 [sage] 2006/05/03(水) 12:11:17 ID:C+qvBRVh(2/2) AAS
え?手動で読み込み?
まさか貼り付け座標も・・・?
急激にテンション低下orz
842(1): 名前は開発中のものです。 [] 2006/05/03(水) 19:30:19 ID:TKRZ+xS1(1) AAS
>>839
QD3の方のソースを書き換えちゃえば?
843(1): 839 [sage] 2006/05/03(水) 19:40:39 ID:QKQhcnIL(1) AAS
それってsxファイルの中に入ってるであろうテクスチャファイル名やUV値をGETして
TSXFrame.textureでセットすると言う事でしょうか?
それともハナからファイルをプログラム側で管理してセットするということでしょうか?
前者にしてもsxファイルのフォーマットやらなにやら不明だし・・・
後者・・・・って無いよね?
Xファイルビューワが相手のテクスチャ情報をあらかじめ知ってるわけないし。
QD3のソース書き換え出来るほどのスキルは無いっす。
つかこういう仕様なのQD3?
844(1): 名前は開発中のものです。 [] 2006/05/04(木) 00:28:29 ID:59sQee+g(1/2) AAS
あのなあ、文句ばかり言わず、頭使えよ
たとえば、メタセコでxファイル作って、その後sxに変換とかやるなら、
メタセコ上でUVを設定するんだよ
845(1): 名前は開発中のものです。 [] 2006/05/04(木) 00:37:57 ID:59sQee+g(2/2) AAS
つか、sxファイルにテクスチャファイル名なんて入っていないだろそもそも。
sxlib9.pasくらい、一度は自分で読んでみろよ。
わざわざソースが公開されてんだから。
846: 842 [] 2006/05/04(木) 01:34:20 ID:bLT7LC2U(1) AAS
>>844-845
俺のもやもやを全て言ってくれた
847: 名前は開発中のものです。 [sage] 2006/05/05(金) 00:27:40 ID:HrIbIgnJ(1) AAS
>>843
i _.,,,,.,..\ / リ,;;;;;;:: ;;;;;:: ;;;;; ::;;;;;; \ |! 人 从
i | .;';;;;゙;;゙;ミミ )ノ (彡ノり/リノ" ミ;;;;;;,,,.. ゝ |! ) あ (
i| |i i;;;;;;;;;;;;;rj );;; ヾ、;;;;...__,, );;;;;;;; ヾ ) お (
i| |.i ':;;;;;;;;;;' j. i:::) ` ;;ー--、` 〈;;;;;;;::;;; i ) お (
i| i i ;'.⌒''~゙,.. `⌒'ヽ.i i::/ ^:::::::.. i ,ll/ニi ;; l ) / (
l| | i ;i::! ..;ノ ::;.... i )i l ヾヽ'' ゚ ))ノ;; / ) っ (
l | i. `i ::: : .::: :| 'ノ | | iにニ`i, (_/i;;; | ) !! (
| i. | ::. .:: ::l / || ! `ー‐'" / ゞ:l つ (⌒
,-‐‐! ::;: ::|i_.,-||、 ! " ̄ ,,,. /,; ミi |l
. i, `';:〉 ....;:::::.. ..:::゙ |.|i ヾ二--;‐' ,;; ,; ミ ||i i|
\.i'´゙゙"' ;:: '''゙゙"'; ,,l | _|彡" ,' ; /' ̄^ ̄''''\||
ヾ_,;;;i!、._ _,;..-' .-'" 〈 ; /
848(1): 名前は開発中のものです。 [sage] 2006/05/05(金) 11:37:21 ID:dMG6Cjcw(1) AAS
テクスチャ1枚だけのデータだったら表示できた。
でも地形など複数のテクスチャを使ったデータでは無理だった。
QD3は2Pカラー仕様だったんだね。
普通に答えてくれる人がいなくて残念だ。
ソースいじるよりXファイルを普通に扱いたいんでdelphiとQD3を捨てる事にした。
849: 名前は開発中のものです。 [] 2006/05/05(金) 13:19:34 ID:uVTEszea(1) AAS
定期的に変な奴が現れるな
上下前次1-新書関写板覧索設栞歴
あと 127 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.024s