RPG-Map Speicherplatz zu groß ...

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

cyby

Betreff: RPG-Map Speicherplatz zu groß ...

BeitragSo, Jun 27, 2004 17:08
Antworten mit Zitat
Benutzer-Profile anzeigen
hi,

wenn man jetzte größere maps mit so 1000*1000 tiles erstellt verbrauchen die einen Speicherplatz von ca. 11,4MB und wenn man von denen ein paar erstellt hat das spiel ja leicht ein paar 100MB und das würde kaum jemand saugen...
was könnte man an dem code optimieren das das schon kleiner wird ?
Code: [AUSKLAPPEN]
mapx = 1000
mapy = 1000
Dim map1(mapx,mapy)
Dim map2(mapx,mapy)
Dim map3(mapx,mapy)
Dim map4(mapx,mapy)
Dim map5(mapx,mapy)
Dim map6(mapx,mapy)

Print "erstelle felder....."
For x = 0 To mapx-1
 For y = 0 To mapy-1
  map1(x,y) = 1000
  map2(x,y) = 1000
  map3(x,y) = 1000
  map4(x,y) = 1000
  map5(x,y) = 1000
  map6(x,y) = 1000
 Next
Next

Print "Dim felder erstellt...."
Print "speichere karte........"

datei = WriteFile("map.map")
For x = 0 To mapx-1
 For y = 0 To mapy-1
  WriteShort datei,map1(x,y)
  WriteShort datei,map2(x,y)
  WriteShort datei,map3(x,y)
  WriteShort datei,map4(x,y)
  WriteShort datei,map5(x,y)
  WriteShort datei,map6(x,y)
 Next
Next
CloseFile datei
Print "karte gespeichert...."
WaitKey
End

Danke für eine Antwort Smile

MfG
cyby Very Happy

ps. ich habe short genommen, denn es wird sicher mal mehr als 255tiles geben...
 

OJay

BeitragSo, Jun 27, 2004 17:12
Antworten mit Zitat
Benutzer-Profile anzeigen
komprimieren? mit winrar gepackt, ist das nur noch ein bruchteil davon...wenn du die maps auch im entpackten zustand kleiner haben willst, kanst du z.b. den bb cruncher nehmen...siehe projekte-bereich.
 

cyby

BeitragSo, Jun 27, 2004 17:37
Antworten mit Zitat
Benutzer-Profile anzeigen
gibt es sonst keine möglichkeiten ?

Vertex

BeitragSo, Jun 27, 2004 17:41
Antworten mit Zitat
Benutzer-Profile anzeigen
http://mitglied.lycos.de/theve.../Banks.doc
lesen und freuen
mfg olli
 

OJay

BeitragSo, Jun 27, 2004 17:54
Antworten mit Zitat
Benutzer-Profile anzeigen
und? deswegen wird die benötigte speichermenge auch nicht kleiner...weder im ram, noch auf der festplatte Wink

DC

Sieger des B2D Retro Wettbewerb / Aug 04

BeitragSo, Jun 27, 2004 18:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Kannst nicht auf Short verzichten und Byte nehmen? Ich meine mit Byte kannst du auch schon 256 Verschiedene Teile speichern... das sollte eigentlich in der Regel reichen.

Ansonsten mal gucken ob die Layer wirklich alle komplett speichern musst: Wenn du Beispielsweise extra nen Layer für Gegenstände dabei hast, ist es wahrscheinlich sinnvoller die in der Form "x,y,id" zu speichern als stur alles zu speichern, da ja bei weitem nicht so viele rumliegen werden wie es Tiles gibt.

Und wenn du in erster Linie Ram sparen willst kannst du was ganz verrücktes probieren: Die Maps streamen. Soll heissen: Datei-Stream ständig offen lassen und immer nur die Teile der Map laden die gerade in der Nähe/notwendig sind. Da Dateizugriff in BB sehr schnell ist dürfte das gehen wenn man es ordentlich macht..

Ansonsten hat OJay mit packen recht: Wenn man sowas packt wird das extrem klein! Beim Download musst du dir da also keine Sorgen machen.
Core i5 4670K | 4 x 3,40 GHZ | 16 GB Ram | GeForce GTX 960 | HTC Vive | Win 10 Pro
www.UnrealSoftware.de | www.StrandedOnline.de | www.CS2D.com |
www.CarnageContest.com | www.Stranded3.com
  • Zuletzt bearbeitet von DC am So, Jun 27, 2004 18:20, insgesamt einmal bearbeitet
 

cyby

BeitragSo, Jun 27, 2004 18:20
Antworten mit Zitat
Benutzer-Profile anzeigen
ich möchte eigentlich nur die mapgröße sparen......

Gossi

BeitragSo, Jun 27, 2004 20:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

WriteShort datei,map1(x,y)


Du sagst, du nimmst Short, weil die Koordinaten bis zu 1000 hochgehen können. Aber das, was du hier in die Datei schreibst, hat nichts mit den Koordinaten zu tun! Du musst dich bei der Speichergröße danach richten, wie groß die Werte IN den Dim-Feldern sind, statt dessen Koordinaten.

map1(1000,1000) kann z.B. als Byte gespeichert werden, wenn es 255 ist!
Alle Wasser laufen ins Meer, doch wird das Meer nicht voller; an den Ort, dahin sie fließen, fließen sie immer wieder. (...) Was geschehen ist, eben das wird hernach sein. Was man getan hat, eben das tut man hernach wieder, und es geschieht nichts neues unter der Sonne. Geschieht etwas, von dem man sagen könnte: "Sieh, das ist neu"? Es ist längst vorher auch geschehen in den Zeiten, die vor uns gewesen sind.

TheShadow

Moderator

BeitragSo, Jun 27, 2004 20:13
Antworten mit Zitat
Benutzer-Profile anzeigen
yup, bei meinem editor benutze ich banks - und kann bequem 4,8,12,16 bits pro tile einstellen. Ich würde jetzt 8 bit wählen und hätte bei 1000x1000 layer 1MB große Map. Diese würde ich später zippen und die wäre 100KB groß

von streaming halte ich gar nix - da man dann 3x3 große screen-block laden muss - ist aber schrott
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2
 

cyby

BeitragSo, Jun 27, 2004 21:12
Antworten mit Zitat
Benutzer-Profile anzeigen
@ shadow
1MB für 1 layer ?
 

Dreamora

BeitragSo, Jun 27, 2004 21:16
Antworten mit Zitat
Benutzer-Profile anzeigen
1000*1000*1byte = 1'000'000 byte ~ 1 MB
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

cyby

BeitragSo, Jun 27, 2004 21:24
Antworten mit Zitat
Benutzer-Profile anzeigen
mal eine andere Frage, wenn man tiles mit 32*32 und ein Spielfeld von 1000*1000tiles ist das dann sehr groß ? kann man das mit irgentwas vergleichen ?
ah jetzte habe ich eine idee, wenn man von einer kartenseite zur anderen geht und pro tile 2sekunden laufzeit braucht dann bräuchte man
Arrow 2000sec
Arrow 33,33min
Arrow ~1/2stunde
wow, doch gut !
und mit einer karte von 500*2000 , dann rund 1stunde Shocked
 

Dreamora

BeitragSo, Jun 27, 2004 21:27
Antworten mit Zitat
Benutzer-Profile anzeigen
super überlegung ... hat nur dummerweise sicher was im weg -> 2-5h bis die 32000 pixel abgewandert sind was rund 31 bildschirmbreiten und 40 bildschirmhöhen sind ... vergleichen kann man net wirklich ...
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

furbolg

BeitragSo, Jun 27, 2004 21:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:

und mit einer karte von 500*2000 , dann rund 1stunde


falsch, 500*2000 is das gleiche wie 1000*1000 Smile

Du könntest wie schon Vorgeschlagen WriteByte nehmen oder ein paar Werte zusammenfassen. Wenn es nur Ja / Nein (Bool) sein soll kannst du ein Integer mit Bit Shifting nehmen, da kannst du 32 Bool rein packen Smile
 

cyby

BeitragSo, Jun 27, 2004 21:51
Antworten mit Zitat
Benutzer-Profile anzeigen
schon, aber wenn man dann die 2000tiles läuft....

Michi1988

BeitragSo, Jun 27, 2004 22:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Was ich außerdem von der Schönheit besser fände
ist.

Dim Map(1000,1000,5)

Also gleich die Layer mit einbauen.
Objekte wie blaue oder grüne Hemden würde ich
als Type machen und nicht als Array.
for bla.bla=each bla

und dann das abspeichern. Dazu musst du halt schreiben
was du speicherst. Also blaues oder grünes Hemd.

Michi
 

furbolg

BeitragSo, Jun 27, 2004 23:58
Antworten mit Zitat
Benutzer-Profile anzeigen
cyby hat Folgendes geschrieben:
schon, aber wenn man dann die 2000tiles läuft....


Hmm ? Du meinst bestimmt Sekunden aber auch das ist falsch. Du läufst keine 2000 sekunden sondern 2.000.000 (1.000*1.000*2).

Mathe ne 5 ? Smile
 

Dreamora

BeitragMo, Jun 28, 2004 0:12
Antworten mit Zitat
Benutzer-Profile anzeigen
du hast in der mathe ne 5 fulborg

er spricht davon wie lange es geht eine seite abzulaufen und die is 1000 lang ( bzw 500 / 2000 tiles im zweiten fall )

1000 * 32 / 2 = 16000s

für diagonal wärs sqrt(2000000) * 32 / 2s
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

furbolg

BeitragMo, Jun 28, 2004 1:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh verdacht ^^ Stimmt ja ^^

Dleamaro superstar ...
 

Edlothiol

BeitragMo, Jun 28, 2004 8:12
Antworten mit Zitat
Benutzer-Profile anzeigen
OJay hat Folgendes geschrieben:
und? deswegen wird die benötigte speichermenge auch nicht kleiner...weder im ram, noch auf der festplatte Wink
Öhm, doch? Wenn er nur Shorts in die Bank schreibt, ist der Platzverbrauch schon halbiert...

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group