Frage

Ich fange wieder Spiele-Programmierung. Vor 10 Jahren war ich mache Spiele in qbasic und ich dieses Thema keine Spiele-Programmierung durchgeführt, da, so dass ich bin ziemlich rostig. Ich habe alle obwohl die Zeit wurde die Programmierung, ich bin Web-Entwickler / DBA / admin jetzt. Ich habe mehrere Fragen, aber ich werde es eine per Post begrenzen.

Das Spiel an dem ich arbeite wird groß, sehr große Welt. Es wird sein, ein wenig wie URW , aber eine noch größere Welt und mehr wie ein 'RPG'.

Was habe ich zu entscheiden versucht, ist das, was der beste Weg, das Layout ist die Karte, speichern und darauf zugreifen. Ich dachte, bis die Idee der SQLite die Daten zu speichern. Ich konnte dann auch die sqlite db verwenden, da die Datei für das Spiel, schön und einfach speichern.

Wer irgendwelche Tipps, wie ich über diese oder Idee für andere Speichermethoden gehen?

Hier sind die Voraussetzungen für mein Spiel:

  • Ich brauche vollen Direktzugriff in der Spielwelt zu entdecken (die NPCs, Monster, Tiere werden alle die ganze Zeit aktiv sein).
  • Ich verwende Stackless Python 3.1, Optionen sind sehr begrenzt, es sei denn ich eine Menge Arbeit zu tun.
  • braucht eine sehr große Welt zu handhaben zu können.
  • Concurrency Unterstützung wäre ein Plus, aber ich glaube nicht, dass ich es brauchen.
War es hilfreich?

Lösung

Verwirren Sie nicht mit relationalen Datenbanken, wenn Sie sie durch externe Faktoren gezwungen sind, zu verwenden.

Sehen Sie in Python pickle, shelve .

Shelve ist schnell und skaliert gut. Es beseitigt chaotisch Konvertierung zwischen Python und nicht-Python-Darstellung.


Bearbeiten.

Weitere wichtige Hinweise. Versteh in Technologie seiner Wahl nicht verzetteln. Holen Sie sich die Orte, Gegenstände, Zeichen, Regeln, etc. Arbeit . In Python. Wie einfach und korrekt wie möglich.

Sie ein einzelnes Gehirn Kalorien auf alles andere als Core-Modell nicht brennen, Richtigkeit und den grundlegenden Funktionen Dinge zu beweisen Arbeit .

Wenn Sie ein Modell haben, dass tatsächlich funktioniert , und Sie können mit einigen anspruchsvollen Unit-Tests ausüben, dann können Sie Technologie Entscheidungen treffen.

Wenn Sie ein Modell haben, können Sie es sinnvoll skalieren bis zu Millionen von Standorten und sehen, welche Art von Lagerung erforderlich ist. Das Modell kann sich nicht ändern - es ist das Wesen der Anwendung ist. Nur die Zugriffsschicht und Persistenz-Schicht ändern Leistung anzupassen.

Andere Tipps

Es klingt wie das, was Sie für Fragen ist eine Art von räumlichen Index . Für ein sehr großes 2D-Spiel würde ich ein Quadtree empfehlen. Quadtree funktioniert gut, wenn Sie eine große Fläche haben und Aktivität neigt dazu, in lokalisierten Bereichen des Gebiets zu geschehen, was der Fall ist für die meisten RPG-ähnliche Spiele. Es wird Ihre Speicheranforderungen niedrig halten und hoffentlich auch Kollisionserkennung beschleunigen.

Wie für das Spiel zu speichern, Dinge wie Spieler und Monster Statistiken können in eine Datenbank gehen, wenn Sie diejenigen Sorgen machen zu ändern häufig. Für das eigentliche Level-Layout würde ich empfehlen, ein binäres Dateiformat speziell für Ihr Spiel verwenden. Es gibt nicht viele Datenbank-Abfragen vom Typ Sie in der Regel auf der Ebene Layout ausführen müssen, und Sie können große Optimierungen mit Ihrem eigenen Format machen. Ich weiß nicht, wie du anfangen soll ein Quadtree-ähnliches Format in einer Datenbank gespeichert werden (obwohl ich bin sicher, dass seine möglich).

Ich bin mit nicht-relationnal Datenbank große Mengen an Daten zu speichern. Wenn Sie auf einem 64-Bit-Hardware arbeiten, MongoDB mit Python-Treiber ist wirklich sehr gut. Ich weiß nicht, ob dies mit Stackless in Ordnung ist, aber es ist eine Möglichkeit.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top