Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Spiel - Ablaufsteuerung (https://www.delphipraxis.net/32713-spiel-ablaufsteuerung.html)

Sebastian Nintemann 27. Okt 2004 17:30


Spiel - Ablaufsteuerung
 
Hallo zusammen!

Ich möchte mit der Graphics32 Lib ein Spiel programmieren.
Nun steh ich vor einem wichtigen Grundsatzproblem, nämlich der Steuerung der Abläufe.

Es müssen einerseits Berechnungen vorgenommen werden (wie zum Beispiel das Bewegen der Charaktere und anderer Objekte, die aktiven Objekte sollen diese Berechnungen selbstständig durchführen), andererseits muss, nachdem alle Objekte mit ihren Berechnungen fertig sind, die graphische Darstellung neu gezeichnet werden.

Problem dabei ist: Zum Beispiel die Laufgeschwindigkeit eines Charakters sollte möglichst konstant sein, unabhängig von der Framerate. Es wäre unschön, wenn alle Charaktere plötzlich langsamer würden, weil gerade viele Berechnungen anstehen. Besser wäre es da, die Charaktere bekämen eine feste Geschwindigkeit (beispielsweise 30 Pixel pro Sekunde), bei hoher Auslastung müsste man dann das Wegfallen einiger Zwischenschritte in Kauf nehmen, was mir aber besser gefallen würde als eine starke Verlangsamung.

Wie wäre es sinnvoll das zu lösen?
Ein (Standard-) Timer ist vielleicht etwas zu ungenau.
Eine Endlosschleife wäre vielleicht eine Möglichkeit (eventuell mit sleep-Unterbrechung), dann müsste aber jedes Objekt selbstständig schauen, wann es zuletzt gezeichnet wurde, und wie weit es sich seit diesem Zeitpunkt bewegt hat. Die Auflösung von GetTickCount würde meiner Meinung nach hier ausreichen.

Wie seht ihr das, wie habt ihr soetwas gelöst?

Viele Grüße,
Sebastian (vorher Grotesquery, siehe Signatur!)

maximov 28. Okt 2004 11:14

Re: Spiel - Ablaufsteuerung
 
Moin,

ich weiss nicht ob graphics32 so prall für spiele ist. vielleicht für kleine sachen :wink: ..genau damit würde ich auch anfangen. Also erstmal kleine brötchen backen.

Was du haben willst ist eine kleine rudimentäre game-engine, die quasi nur aus einem renderloop besteht. oder was? am besten du ordnest deine game-objekt in einem baum an (da kannst du auch TComponent als infrastruktur benutzen) und schickst dann, vom root aus, events rekursiv durch den baum. zB. Move und Draw. Vielleicht kannste TObject.Dispatch dafür benutzen.

Damit sich alles gleich schnell bewegt, kannst zu du einen Highresolution Performance Counter einsetzen. Siehe zB. hier:

http://www.delphidx.de/index.php?action=1;&tut=hpc

ich wünsche viel spass!


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:47 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz