AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Mini-Flugzeugsimulator

Ein Thema von Crocotronic · begonnen am 24. Mär 2015 · letzter Beitrag vom 25. Mär 2015
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.340 Beiträge
 
Delphi 12 Athens
 
#1

AW: Mini-Flugzeugsimulator

  Alt 25. Mär 2015, 01:27
normalerweise misst man, wie viel Zeit seit dem letzten Frame vergangen ist. Und diese gemessene Zeit geht dann in die Berechnung ein. Die Darstellung ist dann nur wenig davon abhängig, wie schnell der PC rechnen kann.
Nicht nur wie schnell der PC ist ... auch TTimer wird niemals die gewollte Auflösung von 1ms hinbekommen
und da nebenbei auch noch andere Programme und das eigene Programm die Ausführng des Timerevents verzägern können, wird es je nach CPU-Auslastung noch "schlimmer".

Einfach mal ausprobieren und sich freuen, wie schon ohne viel Code der Timer (Count links) der echten Zeit (rechts) hinterherläuft.
Delphi-Quellcode:
var
  Count, Start: Cardinal;

procedure TForm3.FormCreate(Sender: TObject);
begin
  Start := GetTickCount;
end;

procedure TForm3.Timer1Timer(Sender: TObject);
begin
  Inc(Count);
  Caption := Format('%d %d', [Count, GetTickCount - Start]);
end;
bzw. (z.B. für FMX)
Delphi-Quellcode:
var
  Count: Cardinal;
  Start: TDateTime;

procedure TForm3.FormCreate(Sender: TObject);
begin
  Start := Now;
end;

procedure TForm3.Timer1Timer(Sender: TObject);
begin
  Inc(Count);
  Caption := Format('%.0n %.0n', [Count/1, MilliSecondSpan(Now, Start)]);
end;
PS: Wert2 durch Wert1 = das, was dein PC gerade jetzt für ein Timer1.Interval "wirklich" hinbekommt.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (25. Mär 2015 um 01:30 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.154 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Mini-Flugzeugsimulator

  Alt 25. Mär 2015, 10:10
normalerweise misst man, wie viel Zeit seit dem letzten Frame vergangen ist. Und diese gemessene Zeit geht dann in die Berechnung ein. Die Darstellung ist dann nur wenig davon abhängig, wie schnell der PC rechnen kann.
Nicht nur wie schnell der PC ist ... auch TTimer wird niemals die gewollte Auflösung von 1ms hinbekommen
1ms macht ja sowieso keinen Sinn.. weil 1000 Frames geht eh nicht...

So lange meine Berechnung und der Grafikaufbau schneller sind als 16,6 ms ist alle schick... Dann komme ich auf die 60 Frames die i.d.R. die heutiges Monitore machen... Schneller lohnt nicht...
  Mit Zitat antworten Zitat
Caps

Registriert seit: 23. Mär 2006
Ort: Leipzig
299 Beiträge
 
#3

AW: Mini-Flugzeugsimulator

  Alt 25. Mär 2015, 10:17
Das mit dem Messen der Zeit, die seit dem letzten Frame vergangen ist, geht nur, wenn die Funktion der Flugbahn bekannt ist. Denn diese Funktion muss man dann integrieren. Das ist aber wohl selten der Fall. Ich würde es umgekehrt machen:

- in der Schleife die Werte korrekt berechnen (Ort, Geschwindigkeit, Beschleunigung)
- das Bild rendern; wenn die GraKa/ Prozessor nicht schnell genug ist -> Frame verwerfen

Auf diese Weise "hackt" das Bild genau wie im anderen Fall, aber die Flugbahn ist wenigstens korrekt.

lg Caps
"Der Mode cmCFS8 ist prohibitär und von mir entwickelt."
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.154 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Mini-Flugzeugsimulator

  Alt 25. Mär 2015, 10:39
- in der Schleife die Werte korrekt berechnen (Ort, Geschwindigkeit, Beschleunigung)
- das Bild rendern; wenn die GraKa/ Prozessor nicht schnell genug ist -> Frame verwerfen
Bei komplexen Spielen kannst Du dir das nicht leisten Frames zu verwerfen...

Wenn Du nicht auf einem anderen Core die Sachen berechnest, hast Du dafür sowieso keine Möglichkeit...

Wenn das letzte Frame angezeigt wurde, kommst Du in Deine Berechnung ggf. hängst Du sowieso schon wieder hinterher...
Also kannst Du nur die Zwischenrechnungen vergessen und Dein Object gemäß vergangener Zeit an der richtigen Stelle anzeigen.

Mavarik
  Mit Zitat antworten Zitat
Caps

Registriert seit: 23. Mär 2006
Ort: Leipzig
299 Beiträge
 
#5

AW: Mini-Flugzeugsimulator

  Alt 25. Mär 2015, 12:04
Wenn Du nicht auf einem anderen Core die Sachen berechnest, hast Du dafür sowieso keine Möglichkeit...
In einem Thread?

Wenn das letzte Frame angezeigt wurde, kommst Du in Deine Berechnung ggf. hängst Du sowieso schon wieder hinterher...
Also kannst Du nur die Zwischenrechnungen vergessen und Dein Object gemäß vergangener Zeit an der richtigen Stelle anzeigen.
Aber die Berechnungen können leicht so komplex werden, dass es nicht möglich ist, zu integrieren. Man denke nur an Kollisionen...

lg Caps
"Der Mode cmCFS8 ist prohibitär und von mir entwickelt."
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.154 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: Mini-Flugzeugsimulator

  Alt 25. Mär 2015, 12:09
Aber die Berechnungen können leicht so komplex werden, dass es nicht möglich ist, zu integrieren. Man denke nur an Kollisionen...
Naja egal wie komplex... Du kannst nur so viele Frames anzeigen wie Du auch pro Sekunde berechnen kannst...
  Mit Zitat antworten Zitat
Caps

Registriert seit: 23. Mär 2006
Ort: Leipzig
299 Beiträge
 
#7

AW: Mini-Flugzeugsimulator

  Alt 25. Mär 2015, 12:10
Ja, freilich; ich wollte ja welche wegwerfen, wenn sie nicht schnell genug gerendert werden können, weiter nüschde
"Der Mode cmCFS8 ist prohibitär und von mir entwickelt."
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:50 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-2025 by Thomas Breitkreuz