Thema: Delphi 8Bit Game Engine

Einzelnen Beitrag anzeigen

Benutzerbild von milos
milos
Online

Registriert seit: 14. Jul 2008
Ort: Bern (CH)
508 Beiträge
 
Delphi 11 Alexandria
 
#1

8Bit Game Engine

  Alt 11. Jan 2014, 04:18
Hallo DPler

Ich habe mich nach einer kurzen Planung mal an den versuch gemacht meine eigene kleine 8Bit Game Engine zu programmieren.
Um zu zeichnen benutze ich vorerst Direct2D. Wenn ich mich jedoch genug in die Materie einer Game Engine eingearbeitet habe, werde ich wohl auf Lazarus und OpenGL zurückgreifen, da multiplatform

Ich habe schon etwas kleines hingekriegt und zwar habe ich mehrere Klassen erstellt die ich später für das Spiel brauchen werde wie Gameobjekte, Sprites usw. jedoch sind sie nicht ausgereift und 100% abgeschlossen.

Ich habe nun einige Fragen, zu Sachen, bei denen ich mir nicht sicher bin wie ich sie lösen sollte.

Mein grösstes Problem ist wohl die Game-Loop.
Wie soll ich diese entwickeln? Momentan habe ich einfach eine while Runtime.IsRunning do loop genommen und es funktioniert auch, jedoch denke ich, dass es dafür bessere Lösungen gibt oder etwa nicht?

Die Performance ist auch nicht gerade die beste. Als Test habe ich 128x72 gerendert und auf 1280x720 gestreckt und bekomme ca. nur 20 FPS mit der while schleife. Habe auch Timer versucht, jedoch sind diese bei zu niedrigen Intervallen buggy.

Ab und zu (vorallem wenn man viel mit der Fenstergrösse spielt) kommen Exceptions aber leider, kann ich mit diesen nicht wirklich was anfangen. Beim debuggen kommen aber die Exceptions komischerweise selten bis nie.

Wie kann ich am besten die FPS zählen? Die generierungszeit eines Frames nehmen und auf eine Sekunde rechnen oder doch lieber die Frames zählen?

Ich wäre froh wenn sich mal einer den Code anschauen könnte, und mir sagen könnte was es zu verbessern gibt und wenn einer ne Lösung für eins meiner Probleme hätte wäre ich auch sehr dankbar dafür. Wie gesagt, bin totaler neuling in dem gebiet

Im Anhang ist der Source Code und das Kompilat zu finden. Der Fenstertitel ist die Frameanzahl die seit start gezeichnet wurden. Die Runtime kann man bisher nur mit Escape beenden.

Ich bedanke mich schon mal im vorraus für nützliche tipps

MfG

Edit: Ach ja der Code ist hässlich, aber ich kenne ihn wengistens ziemlich gut, auch wenn ds projekt nicht gerade gross ist ^^
Angehängte Dateien
Dateityp: rar PixelFrost.rar (2,25 MB, 33x aufgerufen)
Milos

Geändert von milos (11. Jan 2014 um 04:20 Uhr)
  Mit Zitat antworten Zitat