[GameLoop] DeltaTime & FPS ? (kein V-Sync/Framelimit)

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

[GameLoop] DeltaTime & FPS ? (kein V-Sync/Framelimit)

Beitrag von Mijikai »

Hat jemand ein Beispiel für einen GameLoop ohne V-Sync/Framelimit ? :shock:

- Wie kann man die Render-Funktion timen (FPS & Deltatime) ?
- Wie kann der Prozessor entlastet werden (Delay) ?
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: [GameLoop] DeltaTime & FPS ? (kein V-Sync/Framelimit)

Beitrag von RSBasic »

2D oder 3D?
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: [GameLoop] DeltaTime & FPS ? (kein V-Sync/Framelimit)

Beitrag von RSBasic »

Mijikai hat geschrieben:Hat jemand ein Beispiel für einen GameLoop ohne V-Sync/Framelimit ? :shock:

Code: Alles auswählen

EnableExplicit

InitSprite()
InitMouse()
InitKeyboard()
InitSound()

If OpenScreen(1920, 1080, 32, "Screen")
  
  ;SetFrameRate(60)
  
  Repeat
    FlipBuffers()
    ClearScreen(RGB(0, 0, 0))
    
    ExamineKeyboard()
    ExamineMouse()
    
    If KeyboardReleased(#PB_Key_Escape)
      End
    EndIf
    
  ForEver
EndIf
\\Edit:
Das war glaube ich mein schnellster Post. Nur in 11 Sekunden. :lol:

\\Edit2:
Mijikai hat geschrieben:- Wie kann man die Render-Funktion timen (FPS & Deltatime) ?
Ich glaube, es gab mal ein Beispielcode von STARGÅTE, um ohne SetFrameRate das Timing für die Animation und Spielwiedergabe zu steuern.
Mijikai hat geschrieben:- Wie kann der Prozessor entlastet werden (Delay) ?
Das brauchst du garnicht machen. Bei meinem Beispielcode gibt es 0 %-Prozessorauslastung.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

Re: [GameLoop] DeltaTime & FPS ? (kein V-Sync/Framelimit)

Beitrag von Mijikai »

SetFrameRate() hilft mir leider nicht da ich keinen Zugriff auf diese Funktion habe.
Ich suche eine Allgemeingültige Lösung.
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: [GameLoop] DeltaTime & FPS ? (kein V-Sync/Framelimit)

Beitrag von RSBasic »

Deshalb schrieb ich, es gibt einen Beispielcode von STARGÅTE. Such mal im Forum.
Ich kann später auch mal suchen.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: [GameLoop] DeltaTime & FPS ? (kein V-Sync/Framelimit)

Beitrag von RSBasic »

Hier wirst du fündig: http://www.purebasic.fr/german/viewtopi ... =4&t=30240
Da gibt es mehrere Lösungen. Einfach mal durchscrollen.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: [GameLoop] DeltaTime & FPS ? (kein V-Sync/Framelimit)

Beitrag von mk-soft »

Also 2D ohne Screen !?

Muss mal suchen
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

Re: [GameLoop] DeltaTime & FPS ? (kein V-Sync/Framelimit)

Beitrag von Mijikai »

RSBasic hat geschrieben:Deshalb schrieb ich, es gibt einen Beispielcode von STARGÅTE. Such mal im Forum.
Ich kann später auch mal suchen.
Hab ich gelesen :)

Wollte noch was zu meiner Antwort hinzufügen aber gegen deine Geschwindigkeit komme ich nicht an :o
Danke für die rasend schnelle Antwort/en <)
mk-soft hat geschrieben:Also 2D ohne Screen !?

Muss mal suchen
Genau :)

Ich versuch mal STARGÅTE's Code zu finden.

- Ok war wieder zu langsam :freak:

Danke ich schau mir den Link an.
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: [GameLoop] DeltaTime & FPS ? (kein V-Sync/Framelimit)

Beitrag von mk-soft »

Es ist besser mit Frames zu arbeiten um nicht die CPU Last zu hoch zu schrauben...

ACHTUNG! Nicht hypnotisieren lassen...
v2

Code: Alles auswählen

;-

Enumeration windows
  #Main
EndEnumeration

Enumeration gadgets
  #Canvas
EndEnumeration

Procedure MyDraw()
  Static r = 10, add = 10
  Protected dx = GadgetWidth(#Canvas)
  Protected dy = GadgetHeight(#Canvas)
  Protected x = dx >> 1
  Protected y = dy >> 1
  
  If StartDrawing(CanvasOutput(#Canvas))
    Box(0, 0, dx, dy, $FFFF00)
    r + add
    If r >= 200
      add = -10
    ElseIf r <= 10
      add = 10
    EndIf
    Circle(x, y, r, $0000FF)
    StopDrawing()
  EndIf
  
EndProcedure

Procedure Main()
  Protected event
  Protected frames, time, timer
  
  If OpenWindow(#Main, #PB_Ignore, #PB_Ignore, 800, 600, "MyDraw", #PB_Window_SystemMenu)
    CanvasGadget(#Canvas, 0, 0, WindowWidth(#Main), WindowHeight(#Main))  
  Else
    End -1
  EndIf
  
  frames = 30
  time = 1000 / frames
  timer = 1
  AddWindowTimer(#Main, timer, time)
  BindEvent(#PB_Event_Timer, @MyDraw(), #Main, timer)
  
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        Break
    EndSelect
  ForEver
  
EndProcedure : Main()

Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Antworten