Seite 1 von 1

Große Map programmieren

Verfasst: 05.09.2012 20:23
von Piwo
Hi ich wollte mal fragen ob jmd ein gutes tutorial bzw ein paar gute ideen-ansätze kennt um große maps zu programmieren...
um vereinfacht zu sagen was ich meine:
im rahmen eines einfachen 2D-spiels möchte ich eine figur haben die auf der map rumläuft. die "kamera" soll immer zentriert auf die figur gerichtet sein und beim bewegen soll man einfach immer weiter die karte begehen.
Desweiteren sollen an verschiedenen stellen der karte natürlich NPC's rumlaufen, bzw sich gegenstände wie bäume etc befinden.
Das spiel soll später zum onlinespiel werden, das heißt die map muss an eine mysql-datenbank geknüpft werden (das allerdings kommt später)

Meine fragen jetzt:
wie speicher ich so eine große map sinnvoll und efizient?
wie programmiere ich die von mir beschriebene "begehbarkeit" der map

hoffe ich habe verständlich genug erklärt was ich meinte ^^

Danke im vorraus :)

Re: Große Map programmieren

Verfasst: 05.09.2012 21:18
von NicTheQuick
Von welcher Mapgröße reden wir denn da?

Re: Große Map programmieren

Verfasst: 05.09.2012 21:33
von STARGÅTE
Generell werden große Maps (ich denke mal wir meinen die selbe Größe) in Form von Chunks geladen, verändert und gespeichert.
Das heißt, für den Spieler wird immer der Chunk auf dem er steht und die 8 Nachbarn geladen.
Bewegt er sich in einen nächsten Chunk wird nachgeladen und andere freigeben.
Zum Speichern: Du könntest entweder immer einen kompletten Chunk speichern (einfach und schnell) oder immer nur Änderungen eines Chunks (Baum wurde gefällt, Trum gebaut usw.), dass würde weniger Speicher verbrauchen wäre aber komplizierter.
Mit den Chunks kommen dann auch die NPCs in Spiel bzw werden wieder freigegeben, wenn kein Spieler mehr den Chunk benutzt.

Re: Große Map programmieren

Verfasst: 05.09.2012 22:04
von Piwo
Ja das mit der chunk-map hört sich sehr gut an und trifft so etwa genau das was ich vorhatte...
allerdings habe ich kaum eine ahnung wie ich das anfangen sollte, kennt jmd irgendwo eine einsehbare lösung dafür oder einen programmansatz den ich mir ansehen könnte?
Wäre für jede hilfe dankbar :)

Re: Große Map programmieren

Verfasst: 05.09.2012 22:23
von STARGÅTE
Dank der neuen Version PB 5.0 ist sowas jetzt noch etwas einfacher.
Du erstellst erst mal eine Struktur für einen Chunk, in dem sein Karten-Offset festgehalten wird und der Inhalt der Felder:

Code: Alles auswählen

Structure Field ; Feld
	Texture.i ; Bodentextur
	Objekt.i  ; Objekt (Baum oder so)
EndStructure

Structure Chunk
	OffsetX.i ; Position des Chunks
	OffsetY.i
	Array Field.Field(63, 63) ; Seine Felder
EndStructure
Danach schreibst du dir halt Prozeduren zum Laden, Anzeigen und Freigeben eines Chunks.
Wenn dann der Spieler spielt, prüfst du auf welchem Chunk er sich befindet, und lädtst ihn ggf. ein.
Die Chunks selbst, können in einer Liste stehen.
Zusätzlich kannst du noch ein Index (Array aus Pointern zu den Chunks) anlegen und noch schnelleren Zugriff zu erhalten.