Ich möchte ein Wirtschaftsspiel erstellen, das auf einer alten Zivilisation basiert. Ich bin mir nicht sicher, wie ich es gestalten soll. Wenn ich an einem kleineren Spiel wie einer Kopie von "Space Invaders" arbeiten würde, hätte ich kein Problem damit, es so zu strukturieren:
- Hauptkontrollklasse
- Grafikklasse
- Spielerklasse
- Feindliche Klasse
Ich verstehe nicht, wie ich das für größere Projekte wie mein Wirtschaftsspiel machen würde. Erstelle ich eine Länderklasse, die eine Reihe von Städten enthält? Enthalten die Städte viele Bauklassen, die meisten Klassen von Menschen? Mache ich eine Pfadfindungsklasse, auf die der Spieler zugreifen kann, um sich fortzubewegen?
java
architecture
Matthew G.
quelle
quelle
Antworten:
Sicher.
Sicher.
Sicher.
Alles, was Sie oben vorgeschlagen haben, scheint vernünftig. Auf lange Sicht ist es vielleicht nicht der beste Weg für Sie, aber das ist in Ordnung. Es ist für Sie offensichtlich sinnvoll zu wissen, da es das Organisationsmodell ist, das Ihnen zuerst einfiel. Es ist wichtig, dass Sie das nehmen und eine Implementierung daraus beginnen. Es wird Ihnen beide den Einstieg erleichtern und Sie über diese anfängliche "Design-Lähmung" hinwegbringen, die Entwickler zu Beginn einer Aufgabe häufig plagt, und Ihnen (wenn es sich in irgendeiner Weise als fehlerhaft herausstellt) ein oder zwei Dinge über die Vor- und Nachteile beibringen dieser besonderen Herangehensweise an Design.
Sie haben die Konzepte natürlich in Ihren Kopf genommen und sie nach einfachen Regeln in Code gruppiert:
Person
Klasse, aber wenn sich das Spiel nur um sie insgesamt kümmert, wie in früheren Versionen von SimCity, Sie Möglicherweise werden dieser Typ oder Instanzen dieses Typs nicht benötigt, um eine 1: 1-Zuordnung der Bevölkerung einer Stadt zu erstellenint populationCount
.Die Beantwortung dieser Fragen ist zwar einfach, kann Ihnen jedoch bei der Entscheidung, ob und wie ein mentales Konzept in Quellcode umgewandelt werden soll, sehr zugute kommen. Vielleicht möchten Sie sich auch über die SOLID-Prinzipien des objektorientierten Designs informieren .
Beachten Sie, dass der in den Kommentaren gemachte Vorschlag eines Entitäts- / Komponentensystems ebenfalls ein gültiger Ansatz ist, obwohl ich ihn hier vermeiden würde, es sei denn, Sie planen Ihr Projekt kleiner ein (einfach, weil Sie möglicherweise zwei neue, große Herausforderungen in einem Projekt annehmen zu entmutigend sein und den Bildungsnutzen verwässern, den Sie sonst erhalten würden, wenn Sie sich nur auf einen konzentrieren). In einem komponentenorientierten Modell wird der "Typ" in den obigen Fragen impliziter: nicht der konkrete Typ im Code, sondern der implizite Typ, der durch die Sammlung von Komponenten definiert wird, die eine Entität bilden. Es können die gleichen Leitprinzipien gelten.
quelle
Was Sie beschrieben haben (eine Klasse für jeden Haupttyp eines logischen Spielobjekts), ist für ein so einfaches Spiel durchaus sinnvoll. Wenn Sie zum ersten Mal ein Spiel dieser Art schreiben, würde ich vorschlagen, es auf diese Weise zu tun.
Nur ein paar Tipps:
In komplexeren Spielen gibt es fortgeschrittenere Techniken, die Sie verwenden können. Ich empfehle jedoch , diese erst zu verwenden, wenn Sie mit dem grundlegenden OOP-Ansatz sehr vertraut sind (dh einige abgeschlossene Spiele erfolgreich abgeschlossen haben). Fortgeschrittenere Ansätze könnten Folgendes umfassen:
quelle
Es gibt nur wenige Methoden, mit denen Sie Ihre Entitäten und Datensätze organisieren können. Ich schreibe lieber ein Tabellenkalkulationsdokument und teste Daten, die sich hin und her bewegen, um sicherzustellen, dass ich effizient bin. Wenn Sie das Spiel selbst machen, denken Sie daran, dass es für Sie Sinn machen muss. Manchmal ist es am effizientesten, den Code etwas weniger effizient zu gestalten, um das Projekt zu vereinfachen.
Wenn Sie weitere Hilfe bei der Strukturierung Ihrer Inhalte benötigen, suchen Sie einen alten Spielquellcode, der eine ähnliche Struktur oder einen ähnlichen Stil verwendet, und finden Sie dessen Lösung. Dann verfeinern Sie es und reparieren Sie es nach Ihren Wünschen.
quelle