Frameunabhängiges Problem ^^

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Schrolli

Betreff: Frameunabhängiges Problem ^^

BeitragSa, Jan 22, 2011 16:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Forum,

follgendes Problem quält mich gerade ein mal wieder. Ich habe mir Das Tut hier in der Tut Sektion zum Thema frameunabhängiges Programmieren durchgelesn und wende dies auf meine Bewegungen an.
Funktioniert auch ganz gut nur ein Problem habe ich noch und weis nicht wie ich es umsetzen soll.

Kommt ein Gegner in den Angriffs Radius eines anderen wird er angegriffen. Um das ganze auch "relativ" frameunabhängig zu machen.

BlitzBasic: [AUSKLAPPEN]
	
If dmg_count+15 < MilliSecs() Then
dmg_count = MilliSecs()

;Abstand checken und Angreifen

EndIf


Bei 15 msec sollten ja 66,67 Frames reichen um ausreichend oft an dieser Stelle vorbei zukommen.
Komischerweise hab ich einen extremen unterschied wenn viele Einheiten auf dem Feld sind (150FPS) oder wenn wenige da sind (300FPS)

Wie könnte ich diesen Abschnitt WIRKLICH Frameunabhängig ausführen?

Gruß und schönes Wochenende,
Basti Smile
 

Schrolli

BeitragSa, Jan 22, 2011 18:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Achaje... Kommando Zurück Very Happy
Tut mir fürchterlich Leid, hab leider einen sehr dummen Fehler gemacht...

Habe übersehen das diese Abfrage schon in einer For Each Schleife steht und die count variable aber nur einfach global war und somit alle gegner auf der selben var gezählt haben, so hat es nur geschossen wenn das spiel quasi mal ein paar ms gehangen hat damit der counter nicht schnell genug resetet werden konnte..

Basti

Ana

BeitragSa, Jan 22, 2011 18:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du eine konstante Framerate hast könntest du es dann nicht auch alles mit 1/Framerate multipizieren und hast dann auch ohne den millisecs-kram einen konstanten pro Sekunde Wert?
Don't only practice your art,
but force your way into its secrets,
for it and knowledge
can raise human to divine

hazumu-kun

BeitragSo, Jan 23, 2011 0:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Es geht ja darum den Code für jeden Rechner gleich funktionieren zu lassen, da scheitert Frameabhängig sobald man unter die vorgegebene Taktrate fällt (wenn ein Rechner z.b. keine 60fps packt).
durch frame-unabhängiges Coden steuert man dem entgegen.
Warum kann es keine omnipotente Macht geben?
Weil diese omnipotente Macht in der Lage sein müsste, einen so schweren Stein zu schaffen, dass sie ihn nicht heben kann
-> nicht omnipotent

Ana

BeitragSo, Jan 23, 2011 0:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Jaja, das hab ich schon verstanden Very Happy

aber wenn du sagen wir mal 60 Frames hast und willst das etwas um 1 verändert wird pro sekunde und du den 1/Frame-pro-Sekunde-Wert damit multiplizierst verändert es sich also um 1/60 pro Frame. Sollte dein Frame dann eventuell auf 30 fallen so verändert sich dein Wert zu 1/30 pro Frame. Also um doppelt soviel bei halber Framerate.
Sollte nun mal für ein oder 2 Sekunden geladen werden, müsstest du ja eine 0 Rate haben und es springt nicht alles sofort los weil die Zeit überschritten ist, oder Pausefunktionen lassen sich sinnvoller Umsetzen etc. von daher bin ich keine Freundin des Millisecsabhänigen proggens (klar ein wenig muss man es noch benutzen wenn man überhaupt eine Framerate bestimmen will), ich weiß das da viele anderer Meinung sind, aber bisher hab ich den Vorteil nicht gesehen.

Das mit konstanter Framerate war natürlich relativ gemeint, wenn sie völlig willkürlich springt. kann der Wert natürlich nicht richtig funktionieren, da ja nicht klar ist wie lange der aktuelle Schritt brauchen wird, sondern nur wie lange der letzte brauchte.
Don't only practice your art,
but force your way into its secrets,
for it and knowledge
can raise human to divine

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group