Datenbank Speichermethode |
Der_HOmer[DE]
Quasselstrippe Threadstarter
Beiträge: 239 |
Hallo,
Ich möchte die Karte für ein Spiel auf einem Internetserver mit SQL speichern. Die Karte ist 2D und soll ständig in alle Richtungen erweiterbar sein. Die Karte besteht aus quadratischen Kacheln. So kann ich eine große Karte speichern und brauche nur Zahlen zu speichern. Dabei steht z.B. eine 0 für Wasser-, 1 für Wüsten- und 2 für Waldkachel. Naja, ich denke das Prinzip ist bekannt.
Normalerweise würde ich das ja mit einem zweidimensionalen Array machen. Zumindest in C++ aber die Karte soll in einer SQL-Datenbank gespeichert sein. Deshalb frage ich mich, wie ich so eine Datenbank für sagen wir mal 1.000.000 x 1.000.000 Felder auslegen müsste und wo da eigentlich die Obergranze ist.
Mein zweites Problem ist, dass die Karte wie gesagt ständig erweiterbar sein soll und die Startkachel nicht bei x=0, y=0 sondern irgendwo in der Mitte der Karte liegt. Oder muss ich da dann den negativen Bereich benutzen?
|
 Profil
Editieren
Zitieren
|
HoRnominatoR
Mausakrobat
Beiträge: 161 |
eine datenbank ist ja nichts weiter als eine tabelle, sprich ein zweidimensionales array. deine daten passen in ein dreidimensionales array, also eine tabelle in der jede zelle noch eine tiefeninformation hat. mysql zB hat eine maximalgroessen von 4GB pro tabelle. erweiter kannst du die tabelle einfach, indem du eine neue zeile anhaengst.
---
get OPERA for free
|
 Profil
E-Mail
Website
Editieren
Zitieren
|
Herr_Zatacke
Otto-Normal-Poster
Beiträge: 90 |
ähnliche gedanken hab ich mir auch mal machen müssen
ich rate dir dazu die karte als png datei auf dem server zu speichern (oder wenn sie grösser wird, eben in mehreren aneinandergestückten png's)
mit imagecreatefrompng() kannst du so ziemlich einfach auf die verschiedenen farbwerte (=kacheltypen) zugreifen.
und deine karte nimmt auf dem server wesentlich weniger Platz ein. (am besten verwendest du ein palettenbild mit ebensovielen farben wie kacheltypen)
ausserdem kannst du so auf einfache Art die Karte im spiel sichtbar machen - muss ja dann nur ein bild angezeigt werden.
---
wer and'ren eine bratwurst brät, der hat ein bratwurstbratgerät...
|
 Profil
Editieren
Zitieren
|
Der_HOmer[DE]
Quasselstrippe Threadstarter
Beiträge: 239 |
Also das Spiel an sich wird nicht im Browser dargestellt. Die Grafiken sind alle in einem C++-Programm. Über C++ greife ich auch auf die Datenbank zu.
Aber ich bin mir gar nicht mehr sicher, ob eine SQL-Datenbank das richtige wäre, wenn z.B. zwei Spieler gleichzeitig an einer Stelle der Karte wären und der eine den anderen in Echtzeit sehen soll. Die Position von jedem wäre dann in einer Datenbank gespeichert und würde ständig aktualisiert und abgefragt. Macht SQL das mit? Auch bei mehr als 2. Sagen wir mal 100 Spielern?
Sollte ich das lieber über Textdateien machen oder sogar mit Direktverbindungen zwischen den Spielern?
Diese Nachricht wurde geändert von: Der_HOmer[DE] |
 Profil
Editieren
Zitieren
|
Herr_Zatacke
Otto-Normal-Poster
Beiträge: 90 |
hmmm da wäre schon fast ne eigene server-app sinnvoll ... bei normalen (action) games ist ja auch immer ein server dabei ....
---
wer and'ren eine bratwurst brät, der hat ein bratwurstbratgerät...
|
 Profil
Editieren
Zitieren
|
Der_HOmer[DE]
Quasselstrippe Threadstarter
Beiträge: 239 |
Hast du da irgendwelche Anregungen?
Ich weis grad nicht genau was du meinst.
|
 Profil
Editieren
Zitieren
|
Herr_Zatacke
Otto-Normal-Poster
Beiträge: 90 |
naja .. je nach spiel-art würde ich mir überlegen ob es überhaupt sinn macht auf eine Datenbank zuzugreifen - oder eben diesen Teil selbst zu schreiben ..... (quasi eben einen server der spezielle auf deine bedürfnisse geschrieben ist)
spezifisches kann ich natürlich nich sagen - hab ja keine ahnung was du für ein spiel zu machen versuchst ... (hab ja schonmal falsch "geraten")
---
wer and'ren eine bratwurst brät, der hat ein bratwurstbratgerät...
|
 Profil
Editieren
Zitieren
|
Der_HOmer[DE]
Quasselstrippe Threadstarter
Beiträge: 239 |
Ich seh gerade ein anderes Problem. 1.000.000 x 1.000.000 Kacheln ist wohl so gut wie unmöglich. Das wären 1.000.000.000.000 Kacheln. Wenn ich max. 256 versch. Kachlen definiere komm ich mit 1 Byte/Kachel aus. Das wären:
976562500 kByte
953674,31 MByte
931,32 GigaByte
ein bissl viel.
Wer will schon vor Spielbeginn eine fast 1 Terrabyte große karte laden.
Ich wende mich wieder an euch, wenn ich mir das besser überlegt hab.
Danke schön.
Diese Nachricht wurde geändert von: Der_HOmer[DE] |
 Profil
Editieren
Zitieren
|