AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

8Bit Game Engine

Ein Thema von milos · begonnen am 11. Jan 2014 · letzter Beitrag vom 14. Jan 2014
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von milos
milos

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

8Bit Game Engine

  Alt 11. Jan 2014, 05: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 05:20 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: 8Bit Game Engine

  Alt 11. Jan 2014, 06:43
Schau dir mal das hier an

http://smartmobilestudio.com/Smartde...and/index.html

http://showcases.smartmobilestudio.c...ssile-command/

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.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von mkinzler (31. Jul 2016 um 10:45 Uhr) Grund: Link korrigiert
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.676 Beiträge
 
Delphi 2007 Enterprise
 
#3

AW: 8Bit Game Engine

  Alt 11. Jan 2014, 14:47
Die meisten Game-Loops haben, zumindest ganz aussen drum rum, in etwa diesen Aufbau:
Delphi-Quellcode:
while true do
begin
  HandleUserInputs;
  ModifyWorldAccordingToInputsAndMechanics;
  DrawNextFrame;
  ShowFrame;
end;
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.

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.)
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von milos
milos

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

AW: 8Bit Game Engine

  Alt 11. Jan 2014, 17:07
Ok, danke für die hilfreichen antworten

Werde mir das spiel mal genauer ansehen, ist echt interessant interessant was der gemacht hat

Werde mir auch mal meinen source genauer ansehen, vielleicht kriege ich die performance ja etwas verbessert ^^

MfG
Milos
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.076 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: 8Bit Game Engine

  Alt 11. Jan 2014, 17:54
Habe ich was übersehen? Was ist eine 8Bit Engine ?
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: 8Bit Game Engine

  Alt 11. Jan 2014, 17:56
Habe ich was übersehen? Was ist eine 8Bit Engine ?
Wer verliert muss sich besaufen
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.076 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: 8Bit Game Engine

  Alt 11. Jan 2014, 17:58
Habe ich was übersehen? Was ist eine 8Bit Engine ?
Wer verliert muss sich besaufen
Sorry für mich nur Bit-Drive ich muss noch fahren.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

AW: 8Bit Game Engine

  Alt 11. Jan 2014, 18:06
Habe ich was übersehen? Was ist eine 8Bit Engine ?
Wer verliert muss sich besaufen
Sorry für mich nur Bit-Drive ich muss noch fahren.
Hoffentlich nicht auch Bit-Drive (aus oder Vollgas)
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#9

AW: 8Bit Game Engine

  Alt 11. Jan 2014, 18:45
8Bit Engine.. auch unter dem Namen 1Byte Engine bekannt..
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
Benutzerbild von milos
milos

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

AW: 8Bit Game Engine

  Alt 11. Jan 2014, 19:11
Wikipedia

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
Milos

Geändert von milos (11. Jan 2014 um 19:23 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf