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

1

12.07.2012, 22:52

Aufbau/Strukturierung eines Spiels (C++ und SFML)

Hi,

ich beschäftige mich derzeit mit der Planung für mein erstes kleines Spiel. Nun kommt natürlich die Frage der Strukturierung auf: Welche Klassen benötige ich, wo und wie wird der Main-Loop angesetzt etc.
Wie seid ihr bei eurem ersten Spiel vorgegangen und habt ihr jetzt eine feste Struktur nach der ihr immer vor geht (z.B. folgende Klassen: main, Game, Player, Menu, Splashscreen...)?

Würde mich über eure Erfahrungen freuen!

Grüße

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Anom21« (13.07.2012, 00:54)


FSA

Community-Fossil

  • Private Nachricht senden

2

12.07.2012, 23:16

Ich habe folgende Struktur:
-Für jedes Objekt(Menu,Intro,...)eine Klasse
-Mainloop besteht aus 10 Zeilen: Render,Move von der Hauptklasse die wiederum die anderen Klassen je nach State updated.

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

3

12.07.2012, 23:26

Du hast nicht gesagt womit du entwickelst. Daher kann man nur "sowas" sagen:

1. Du legst dir ein paar Klassen zurecht die du für die Ausgabe/Eingabe usw. brauchst (z.B. eine Shader Klasse, eine für Matrizen...).
2. Man baut auf 1 auf und entwickelt sich Klassen mit denen man einfach(er) Dinge Beeinflussen (wie z.B. Positionieren oder Rotieren kann) kann. Dazu kommt dann auch sowas wie Kollisionserkennung (ein Beispiel wäre eine Sprite Klasse).
3. Man guckt welche Objekte es im Spiel gibt (Spielfigur, Gegner, Geschosse, ...) und schreibt diese auf Grundlage von 1 und 2. So kann man z.B. für ein Geschoss eine Klasse ableiten die von Sprite erbt und zusätzlich eine Geschwindigkeit hat.
4. Man führt alles zusammen. Dazu kann man z.B. Container verwenden oder auch eigene Resourcen Manager schreiben (um z.B. effektiver zu rendern oder für kompliziertere Kollisionserkennung).

Wo der main loop gesetzt wird spielt keine Rolle. Ich halte das im Moment so:

a. main() zum aufsetzen des Fensters sowie des render Kontextes.
b. eine "loop()" Funktion für den main loop.
c. in loop() werden dann verschiedene Funktionen aufgerufen, je nachdem was gebraucht wird (z.B. "render()", "logic()", ...).

Das meiste musst du selbst herausfinden. Das war bis jetzt mein Weg, grob gesagt. Aber niemand sagt das das optimal ist. Z. B. kann man auch alles in eine Klasse packen, also main loop und Co.

Viel Spaß beim Programmieren!

4

12.07.2012, 23:45

Ich programmiere C++ in Verbindung mit SFML.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

5

12.07.2012, 23:53

Ich kann dir nur raten, einfach zu experimentieren. Erfahrung ist das Allerwichtigste beim Programmieren...

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

6

13.07.2012, 16:02

Vergiss erstmal was FSA oder Kugelschreiber geschrieben haben und fang einfach in der Main mit deinem Spiel an.
Sobald du die Hauptschleife stehen hast kannst du ein paar Sprites zeichnen und sie Bewegen. Wird die Mainfunktion zu unübersichtlich versuchst du Teile der Funktion in eine andere Funktion zu schreiben. Wenn du das ein paar mal gemacht hast, es langsam zu viele Parameter werden oder mehrere gleiche Objekte hast(z.B. 4 Spielfiguren), die zwar verschiedene Daten aber gleiches Verhalten besitzen, kannst du versuchen einzelne Teile zu einer Klasse zusammen zu fügen.
Versuch besonders als Anfänger nicht zu viel zu planen. Du wirst sowieso falsch liegen. Gewöhn dir erstmal an abwechseln Funktionalitäten hinzuzufügen und aufzuräumen(nennt sich auch refaktorisieren). Versuch aber nie gleichzeitig eine weitere Funktionialität hinzuzufügen und aufzuräumen.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

FSA

Community-Fossil

  • Private Nachricht senden

7

13.07.2012, 16:34

Kugelschieber nicht schreiber :D

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

8

13.07.2012, 22:57

Zitat

Kugelschieber nicht schreiber :D


Ach das machen viele falsch ;)

Werbeanzeige