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

26.07.2015, 13:46

Wie unterteile ich mein Projekt am besten in verschiedene Klassen in Java?

Hi,

ich arbeite gerade mit libGDX an einem halbwegs simplen Spiel für Smartphones.
Es hat natürlich trotzdem mehrere Screens.
Jetzt bin ich mir nicht sicher, wie ich das Ganze angehen soll.
Ich habe eine Assets Klasse, in der ich den libGDX eigenen Asset Manager nutze, um Ressourcen nur einmal zu laden.
Meine Idee war nun, für jeden Screen eine eigene Klasse zu verwenden und zusätzlich noch eine Create Klasse zu schreiben, die aufgerufen wird, wenn der Screen das erste Mal erzeugt wird.
Allerdings stoße ich damit auf einige Probleme. Ich finde es schwer, "static" zu vermeiden, und ich weiß momentan nicht, wie ich dafür sorgen kann, aus dem Main Menu in den GameScreen zu kommen.
Das ist aber erstmal unwichtig. Zuerst würde ich gerne wissen, ob ihr diese Aufteilung für vernünftig haltet oder das irgendwie anders machen würdet?

MfG, Joshflux

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

26.07.2015, 13:51

Eine Aufteilung macht schon Sinn. Allerdings hast Du viel zu wenig Details verraten, als dass wir beurteilen könnten, ob Deine Aufteilung Sinn macht. Eine "Create"-Klasse klingt jedenfalls merkwürdig.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

3

26.07.2015, 14:21

Das "create" könnte eine Methode deiner Screen Klasse sein.
Für den Wechsel zwischen den Screens müsste man dann gucken. Z.B. könnte ein Screen den nachfolgenden kennen und bei einer bestimmten Aktion (Klick) wechseln.
Was ich gerne mache ist ein Manager der alle Screens (bei mir heißen die States) kennt und frei dazwischen wechseln kann. Dadurch kann man z.B. zwischen beliebigen Screens einen Ladescreen schalten usw.

Static zu vermeiden klappt ganz gut wenn man sich vor Augen hält wie die Verantwortlichkeiten verteilt sind.
Das heißt Methoden die mit den selben Daten arbeiten gehören wahrscheinlich in eine Klasse. Wer muss was wissen und welche Operationen können auf einem Objekt durchgeführt werden.

4

26.07.2015, 20:56

Danke für die Antworten :)!

@DeKugelschieber Das heißt, du hast eine Klasse, die nur als Manager fungiert, habe ich das richtig verstanden? Die Idee klingt wirklich gut, nur weiß ich nicht genau, wie ich dafür sorgen kann, dass der Manager die Screens alle "kennt". Und die "Create" Klasse werde ich wohl tatsächlich verwerfen und nur eine Methode schreiben, das scheint sinnvoller zu sein.

@LetsGo Auch du hast also einen extra Manager. Das werde ich wohl auch in Angriff nehmen. Mit FBOs habe ich noch nie gearbeitet, da fuchse ich mich dann auch mal rein. Und die Idee, je eine Stage für GUI und das Level zu benutzen, ist wirklich richtig gut, danke dafür :)!

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

5

26.07.2015, 22:12

Meinen Kram gibts häufig Opensource, du kannst hier mal ein wenig schauen wie ich mir das vorstelle.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

6

27.07.2015, 06:54

Welchen Grund und Sinn hat es, dass Dein System effektiv nicht viel mehr ist als ein Wrapper um einen Vector? Und warum haben alle Methoden das Entity suffix, ist das nicht ziemlich redundant? Was passiert, wenn man einen nullptr im Konstruktor übergibt? Falls das illegal ist, wieso kein Manager&? Spannend finde ich auch, dass Du Entities by value übergibst und fröhlich in "excluded" hinein kopierst. Ist das wirklich so gewollt? Aktuell ist Entity wohl nur ein unsigned int, aber soll das so bleiben? Falls ja, würde ich das wohl weniger "Entity" nennen, weil das sehr ulkige Verwirrungen gibt, sondern eher EntityID.
Neugierig bin ich zuletzt noch wie die "acceptEntity" Methode implementiert werden soll.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »BlueCobold« (27.07.2015, 06:59)


DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

7

27.07.2015, 08:45

Es ging um "Game" und "State".

Zitat

Und warum haben alle Methoden das Entity suffix, ist das nicht ziemlich redundant?

Geschmackssache.

Zitat

Was passiert, wenn man einen nullptr im Konstruktor übergibt?

Stürzt das Programm ab.

Zitat

Falls das illegal ist, wieso kein Manager&?

Gute Frage, weiß ich gerade auch nicht mehr.

Zitat

Aktuell ist Entity wohl nur ein unsigned int, aber soll das so bleiben?

Ja.

Zitat

Neugierig bin ich zuletzt noch wie die "acceptEntity" Methode implementiert werden soll.

Sagt doch der Name + Rückgabetyp. Wie man herausfindet ob ein Entity in ein System passt ist fast egal. In der Regel wird man prüfen ob alle nötigen Komponenten vorhanden sind.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

8

27.07.2015, 09:13

Sagt doch der Name + Rückgabetyp. Wie man herausfindet ob ein Entity in ein System passt ist fast egal. In der Regel wird man prüfen ob alle nötigen Komponenten vorhanden sind.
Njiaa, das is mir klar. Unklar ist mir aktuell wie das System das prüft. Aber ich glaub' wir gehen hier etwas offtopic. Wobei ein C++ Beispiel zur Klassenaufteilung in einer Java-Frage auch schon relativ offtopic ist.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

9

27.07.2015, 09:41

Hmm jain, so lange es nur um das System geht ist die Sprache ja recht egal.
Aber ja wird offtopic. Gerade noch weil du fragst: so könnte geprüft werden ob ein Entity in ein System gehört. Um ehrlich zu sein finde ich den Ansatz auch nicht mehr so super, aber ich wollte auch nicht einfach irgendwas klonen, sondern versuchen wie gut meine Ideen funktionieren. Aber dafür geht das eigentlich ganz gut von der Hand.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

10

27.07.2015, 09:51

Na ja, gut, gut. Ich würde dennoch davon abraten einem Neuling ein ECS vor die Nase zu setzen. Er soll ruhig mal lernen richtig OOP mit Java einzusetzen.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Werbeanzeige