6 registered members (AndrewAMD, rki, Mino, Martin_HH, squik, Ayumi),
1,126
guests, and 7
spiders. |
Key:
Admin,
Global Mod,
Mod
|
|
|
Perfektes Timing
#445972
10/01/14 07:14
10/01/14 07:14
|
Joined: Oct 2007
Posts: 25
Yamm
OP
Newbie
|
OP
Newbie
Joined: Oct 2007
Posts: 25
|
Derzeit arbeite ich an einer kleinen Demo-Engine. Dabei ist es wichtig, dass Ereignisse in Echtzeit zu festgelegten Zeitpunkten gestartet und beendet werden, wie etwa ein bestimmtes Bild oder einen Text anzeigen. Momentan versuche ich alles mit einer while zu steuern. Dabei zähle ich die Variable "time" hoch, damit es auf allen PCs gleich ist, mit time_step. Zumindest für die ersten Sekunden gilt die Formel: Timer = Seconds * 32 + 32Allerdings stimmt dies mit fortschreiten der Zeit nicht mehr. Mache ich grundsätzlich etwas falsch? Hat dazu jemand gute Tipps?
|
|
|
Re: Perfektes Timing
[Re: Yamm]
#445973
10/01/14 07:32
10/01/14 07:32
|
Joined: Sep 2003
Posts: 6,861 Kiel (Germany)
Superku
Senior Expert
|
Senior Expert
Joined: Sep 2003
Posts: 6,861
Kiel (Germany)
|
Warum schreibst du nicht einfach time += time_step; und multiplizierst das stattdessen mit 4? Die zugrundeliegende Zeiteinheit der Engine sind ja bekanntlich Ticks, und 16 Ticks sind eine Sekunde, sprich time += time_step; erreicht in einer Sekunde, von 0 ausgehend, den Wert 16. Demnach Sekunden = time/16.0; // Minuten und ähnliches lassen sich natürlich nun leicht aus den Sekunden bestimmen
Da time_step aber gewissen Schwankungen (bzw. eben gerade nicht) und Glättung unterliegt, um unterschiedliche Frameraten auszugleichen, solltest du eher zu time_frame anstatt time_step greifen - aber nicht immer, sondern nur da, wo du wirklich Zeit zählen/ aufsummieren musst!
"Falls das Resultat nicht einfach nur dermassen gut aussieht, sollten Sie nochmal von vorn anfangen..." - Manual Check out my new game: Pogostuck: Rage With Your Friends
|
|
|
|