[過去ログ] Delphiゲームプログラミング相談室 (976レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
816
(2): [sage] 2006/04/20(木) 23:34:26 ID:ftoD76SU(1) AAS
>>815
815(2): 名前は開発中のものです。 [] 2006/04/20(木) 22:18:39 ID:10nxPwle(1) AAS
リアルタイムゲームは大抵、ファイル(F)等のMainMenuが開くとゲームが停止して
それが閉じるとまたゲームが動きますけど、どのイベントでゲームを停止したり
再開させているんでしょうか?
ゲームループの実装手法と Windows のメッセージ構造が関係しとる。

大抵そういうゲームは、アイドル時間を利用してゲームループ回してる。
アイドル( idle )ってのは車のアイドリング(空転)と同じで、いわゆる「暇」のこと。
ちなみに Delphi だと TApplication.OnIdle とかで簡単にアイドル状態をキャッチできる。
詳しい実装方法は Delphi ゲーム製作講座に書いてあるよ。

で、なんで止まってるように見えるかというと、
メニュー開いてるときとか、他にもウィンドウをドラッグしてる最中とかは、
そっちの処理のほうが忙しくなるので、ウィンドウ( TForm )の処理に構っていられなくなる。
暇( idle )じゃなくなるってことだな。
その結果ループが止まり、描画処理が行われず、画面が止まってるように見える。

つまり、プログラマが何らかのイベントを用いて意図的に停止?動作させているわけではなく、
勝手にそうなっちゃう、が正解。
もしそんな状況でも動作させつづけたいなら、スレッド( TThread )とか使えば良いんじゃないかな。

だめだ
死ぬ
820: 名前は開発中のものです。 [sage] 2006/04/21(金) 00:57:55 ID:gUMysWG3(1) AAS
>>816
いいたかったことを全部言ってくれた
825: 815 [sage] 2006/04/21(金) 21:56:53 ID:ASot9yYT(1) AAS
>>816

たいしたゲームじゃないんでTTimer使って速度調整していたんですが、
アドバイス通りOnIdle使ってみました。
たしかに勝手に止まりますね。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.030s