![]() |
8Bit Game Engine
Liste der Anhänge anzeigen (Anzahl: 1)
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. :D 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 ^^ |
AW: 8Bit Game Engine
Schau dir mal das hier an
![]() ![]() Den Quelltext gibt es auch. Der ist zwar in DWScript aber passt fast 1:1 auf Delphi. Zudem geht es dir ja auch um die Game-Loop und dafür ist das ein gutes Beispiel. |
AW: 8Bit Game Engine
Die meisten Game-Loops haben, zumindest ganz aussen drum rum, in etwa diesen Aufbau:
Delphi-Quellcode:
Um die FPS zu zählen bietet es sich eher an die geschafften Frames in einer gewissen Zeitspanne zu zählen und auf eine Sekunde umzurechnen, da die Timer sonst dafür etwas ungenau werden können.
while true do
begin HandleUserInputs; ModifyWorldAccordingToInputsAndMechanics; DrawNextFrame; ShowFrame; end; Deine geringe Framerate würde ich weniger auf die verwendete Schleifenart noch auf Direct2D zurück führen. Ich vermute eher stark, dass deine eigentlichen Zeichenvorgänge da die Schhuldigen sind. (Die Art der Schleife macht praktisch gar keinen Unterschied - so lange man Timer mal aussen vor lässt, die dort eh nichts zu suchen haben, und D2D ist für sich genommen durchaus in der Lage dazu viele FPS zu zaubern.) |
AW: 8Bit Game Engine
Ok, danke für die hilfreichen antworten :)
Werde mir das spiel mal genauer ansehen, ist echt interessant interessant was der gemacht hat :D Werde mir auch mal meinen source genauer ansehen, vielleicht kriege ich die performance ja etwas verbessert ^^ MfG |
AW: 8Bit Game Engine
Habe ich was übersehen? Was ist eine 8Bit Engine ?
|
AW: 8Bit Game Engine
Zitat:
|
AW: 8Bit Game Engine
Zitat:
|
AW: 8Bit Game Engine
Zitat:
|
AW: 8Bit Game Engine
8Bit Engine.. auch unter dem Namen 1Byte Engine bekannt..
|
AW: 8Bit Game Engine
![]() Mein Ziel ist es halt eine (8Bit) Game Engine zu basteln mit der man ganz einfach so eine Grafik hinbekommt wie früher zu NES Zeiten. Es gibt immer noch Spiele die trotz so einer Grafik sehr bekannt geworden sind. z.B. ist zur Zeit Startbound in ziemlich grosser Titel. MfG Edit: Wollte noch erwähnen, dass ich bisher schon einige Sachen gefixt habe und in der Version die ich hier hochgeladen habe ist noch ein Fehler drin, der den Speicherbedarf auf über 1GB schiesst und das Programm dann anschliessend abstürzt. Ist mittlerweile aber behoben |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz