Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

xxendlessxx

Treue Seele

  • »xxendlessxx« ist der Autor dieses Themas

Beiträge: 230

Wohnort: Bad Schussenried

Beruf: Full Stack Developer

  • Private Nachricht senden

1

18.10.2009, 19:48

Gamestates

Nabend Leute,
ich wollte mal fragen was es noch für "Techniken" oder Designs gibt um Gamestates zu verwalten.
Immoment kenne ich nur die Technik mit den Enums, man lässt eine große schleife laufen und in dieser sind mehrere Schleifen die dann nur abgearbeitet werden wenn die Gamestate gewählt wurde.

Ich benutze immoment ein anderes Design. Und zwar das von dieser Seite http://gamedevgeek.com/tutorials/managing-game-states-in-c/

Gibt es noch andere Möglichkeiten, Designs oder Techniken um das Grundgerüst eines Spiels am laufen zuhalten?

gruß michi

2

18.10.2009, 20:38

Virtuelle Klassen könnte man benutzen.

Ansich ist das eine Sache, die 20 Zeilen Code in einer einzigen Datei betreffen sollte, nix worüber man sich Sorgen machen muss und nix, was man nicht notfalls an einem Tag 5 mal komplett anders machen könnte.
Lieber dumm fragen, als dumm bleiben!

the[V]oid

Alter Hase

Beiträge: 775

Wohnort: Aachen

  • Private Nachricht senden

3

18.10.2009, 22:05

Du könntest natürlich das Ganze natürlich auch über Funktionspointer realisieren :P
Hätte, so wie ich das sehe, den Vorteil, dass man:

- nicht bei jedem Schleifendurchlauf zu prüfen braucht, welcher State grade aktiv ist
- trotzdem auf eine vtable verzichtet, was zu einer Beschleunigung führen dürfte
<< an dieser Stelle ist eine Signatur verstorben >>

4

18.10.2009, 22:29

Zitat von »"the[V«

oid"]Du könntest natürlich das Ganze natürlich auch über Funktionspointer realisieren :P
Hätte, so wie ich das sehe, den Vorteil, dass man:

- nicht bei jedem Schleifendurchlauf zu prüfen braucht, welcher State grade aktiv ist
- trotzdem auf eine vtable verzichtet, was zu einer Beschleunigung führen dürfte

In der vtable stehen Funktionspointer, es kommt also genau aufs gleiche heraus.
Lieber dumm fragen, als dumm bleiben!

the[V]oid

Alter Hase

Beiträge: 775

Wohnort: Aachen

  • Private Nachricht senden

5

18.10.2009, 23:10

Damn.
<< an dieser Stelle ist eine Signatur verstorben >>

Das Gurke

Community-Fossil

Beiträge: 1 996

Wohnort: Pinneberg

Beruf: Schüler

  • Private Nachricht senden

6

19.10.2009, 10:19

Zumal das selten mehr als 10 "vtable lookups" pro frame werden dürften. Da würde ich lieber anderswo optimieren ...

Gon

Treue Seele

Beiträge: 262

Wohnort: Nahe München

Beruf: Schüler (9. Klasse Gymnasium)

  • Private Nachricht senden

7

19.10.2009, 17:15

Also ich mach das immer so:
In der main-Funktion wird nur eine Instanz von CMenu erstellt und eine Funktion aufgerufen, die die Menü-Schleife enthält. In dieser Menüschleife gibt es widerum eine Funktion, die die Eingaben des Spielers verwaltet. Wenn der Spieler z.B. Return drückt, wird geprüft, welcher Menüeintrag markiert ist, wenn es z.B. "Start" ist, wird eine Instanz von CGame erstellt und dann wiederum eine Funktion aufgerufen, die die Spiel-Schleife enthält.
Wenn nun das Spiel beendet wird, landet man also wieder in der Menü-Schleife, was ja auch so sein soll (außer es gibt irgendwelche Highscore-Listen oder so, die werden dann aber widerum aus der Spiel-Schleife heraus gestartet)

Das ist meiner Meinung nach die einfachste Variante, aber vielleicht liegt das auch daran, dass ich keine Ahnung habe, wie man das mit Gamestates realisiert. :D

mfg Gon

xardias

Community-Fossil

Beiträge: 2 731

Wohnort: Santa Clara, CA

Beruf: Software Engineer

  • Private Nachricht senden

8

19.10.2009, 18:13

Zitat von »"Gon"«


Das ist meiner Meinung nach die einfachste Variante, aber vielleicht liegt das auch daran, dass ich keine Ahnung habe, wie man das mit Gamestates realisiert. :D

mfg Gon

Das ist für ein einfaches Spiel mit eben nur diesen zwei States durchaus in Ordnung. Wenn das ganze etwas komplexer wird, bieten einem Gamestates da eine sehr schöne Möglichkeit zur Strukturierung.

Werbeanzeige