Aktuelle Zeit: 29.03.2024, 07:10

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
BeitragVerfasst: 09.03.2010, 07:11 
Offline
Benutzeravatar

Registriert: 17.04.2007, 08:42
Beiträge: 460
Wohnort: Willich, NRW
Hey,

ich hab mal eine ähnliche Frage gestellt, aber die kam nicht ganz auf das was ich jez wollte. Und zwar ist es möglich, und falls ja, Irrlicht mitzuteilen, dass ich lediglich 30 fps haben möchte.

Mein Problem ist an der Stelle folgendes: Bei Bewegung eines Spielers, muss er die Kollision gegen einiger 2D-Objekte (Sprites, Rectangles) testen. Und das gibt teils einen Framdrop, bei ziemlich vielen Objekten. Und das wollte ich umgehen, indem ich eben auf ein Minimum reduziere, da es dort konstant gehalten werden kann.

Es sei denn ich schaffe es meinen Kollisionsalgorithmus zu optimieren. Derzeit wird lediglich ein Feld von vorne nach hinten durchgegangen. Weiß auch zufällig einer ob die Durchsuchzeit mit Suchbäumen, Hashsets o.ä. so drastig verbessert wird?

mfg heck

_________________
Bild

Irrlicht - From Noob To Pro A Guideline

--

Sonstige Projekte, Blog : http://www.rpdev.net


Nach oben
 Profil  
 
BeitragVerfasst: 09.03.2010, 07:36 
Offline
Benutzeravatar

Registriert: 16.10.2007, 07:56
Beiträge: 229
Wohnort: Regensburg
Warum willst du die Framerate der Engine reduzieren? Ich benutz OpenDE, und bei den meisten Physik-Engines ist es am Besten, wenn man die mit fester Stepgröße laufen lässt (60 fps in meinem Fall). Ich mach das ungefähr so (hab den Code gerade nicht zu Hand):

Code:
u32 iDiffTime=<Zeit seit dem letzten Frame>,iTimeBuffer=<Variable für "krumme" Zeitwerte>;

[...]

iTimeBuffer+=iDiffTime;
while (iTimeBuffer>=16) {
  <step you physics here>();
  iTimeBuffer-=16;
}



Damit krieg ich immer meine 60 fps. Wenn die Engine langsamer rendert, dann werden mehrere Schritte auf einmal ausgeführt, wenn die Engine schneller ist, dann wir ein paarmal kein Physik-Step gemacht. Funktioniert prima. Kannst dir das Ganze in meinem IrrOde Wrapper anschauen, wenn mein Pseudo-Code nicht weiterhilft.

_________________
Bild


Nach oben
 Profil  
 
BeitragVerfasst: 09.03.2010, 07:40 
Offline
Benutzeravatar

Registriert: 17.04.2007, 08:42
Beiträge: 460
Wohnort: Willich, NRW
Das wird glaube ich bei mir nicht ganz klappen, da meine Kollisionsberechnung mehr eine Abfrage ist, von daher an den EventHandler gekoppelt ist:

Code:
Player::OnInput()
{
//Tastatur:
  if(KEY_A)
  {
    if(keineKollisionbeiSchrittNachLinks())
    { 
      tueSchritt();
    }
  }
}

_________________
Bild

Irrlicht - From Noob To Pro A Guideline

--

Sonstige Projekte, Blog : http://www.rpdev.net


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de