Zeitgesteuertes Programmieren

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Zeitgesteuertes Programmieren

Beitrag von a14xerus »

Es gibt schon viele Threads zu diesem Thema,doch alle waren für mich nicht so ergiebig
Ich möchte, dass... sagen wir mal ein ball, die strecke von 500 pixeln in 5 sekunden schafft, und zwar auf jedem pc gleich schnell.
Damit meine ich nicht, dass man ja die framerate setzen kann, oder am ende der schleife wartet bis eine bestimtme zeit abgelaufen ist,
Ich will, das auch auf PC's die sehr langsam sind, das ganze nur 5 sekunden dauert, dann ruckelt der ball eben und spring pro frame eben 20 pixel anstatt auf einem guten PC nur einen.
Ich will also nicht umbedingt die Framerate gleich haben, sondern die bewegungen auf den PC abstimmen, und hoffe, das ich mich klar genug ausdrücken konnte.
Falls es genau sowas gibt, gehen auch links, aber ich seler habe noch nichts gutes gefunden
Benutzeravatar
AndyX
Beiträge: 1272
Registriert: 17.12.2004 20:10
Wohnort: Niederösterreich
Kontaktdaten:

Beitrag von AndyX »

in der Hauptschleife:

Code: Alles auswählen

oldTime = time
time = ElapsedMilliseconds()
frameTime.f = (time - oldTime) / 1000.0
und dann einfach die Bewegungs-Geschwindigkeit deines Objekts mit frameTime.f multiplitizeren. Wenn dann die Frames/Sekunde wissen willst, brauchst du nur 1 / frameTime.f zu rechnen :allright:
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag von a14xerus »

ok sieht ganz gut aus
Benutzeravatar
AndyX
Beiträge: 1272
Registriert: 17.12.2004 20:10
Wohnort: Niederösterreich
Kontaktdaten:

Beitrag von AndyX »

ist auch gut, da es von mir ist :wink:

:roll:
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag von a14xerus »

:wink:
ja wars noch am testen
funktioniert bis hjetz so wie ichs will
THX
Hellhound66
Beiträge: 476
Registriert: 23.03.2005 23:19

Beitrag von Hellhound66 »

Hierbei sei noch folgendes erwähnt:
- Ease-In und Easy-Out Glättung/Kritisch gedämpfte Feder: Algorithmen zur weichen Anpassung von Lags oder sonstigen Unregelmäßigkeiten.

Zum Beispiel oben:
Besser ist es noch, mit ms zu rechnen und zwar generell alles. Also Bewegungen in Pixel/Einheiten pro ms angeben, usw... Dann immer die Delta-Zeit errechnen und daraus die Bewegung.
Optimismus ist ein Mangel an Information.
Benutzeravatar
dllfreak2001
Beiträge: 2925
Registriert: 07.09.2004 23:44
Wohnort: Bayern

Beitrag von dllfreak2001 »

problematisch wird es dann aber wenn man eine iterative Kollsionserkennung oder Ähnliches hat.
I´a dllfreak2001
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag von a14xerus »

ja weil dann durch zb ein lag das sprite das andere. mit dem es eigentlich collidiert und somit etwas auslöst, einfach überspringt
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

Jo deswegen solltest Du eher überprüfen, ob die Strecke beider Sprites (jeweils PunktA und PunktB) sich schneidet, und nicht, ob die Sprites sich überlappen.
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
Benutzeravatar
dllfreak2001
Beiträge: 2925
Registriert: 07.09.2004 23:44
Wohnort: Bayern

Beitrag von dllfreak2001 »

Ich würde eher bei einfachen Spielen eine Maximalgrenze für den zeitausgleich angeben. So das ab einer bestimmten grenze das game doch langsamer läuft. Denn irgendwann wird das sowieso unspielbar.
I´a dllfreak2001
Antworten