RPG-Map Speicherplatz zu groß ...
Übersicht

cybyBetreff: RPG-Map Speicherplatz zu groß ... |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() MfG cyby ![]() ps. ich habe short genommen, denn es wird sicher mal mehr als 255tiles geben... |
||
OJay |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
gibt es sonst keine möglichkeiten ? | ||
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
http://mitglied.lycos.de/theve.../Banks.doc
lesen und freuen mfg olli |
||
OJay |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
und? deswegen wird die benötigte speichermenge auch nicht kleiner...weder im ram, noch auf der festplatte ![]() |
||
![]() |
DCSieger des B2D Retro Wettbewerb / Aug 04 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ich möchte eigentlich nur die mapgröße sparen...... | ||
![]() |
Gossi |
![]() Antworten mit Zitat ![]() |
---|---|---|
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. |
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@ shadow
1MB für 1 layer ? |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() ![]() ![]() wow, doch gut ! und mit einer karte von 500*2000 , dann rund 1stunde ![]() |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Zitat: und mit einer karte von 500*2000 , dann rund 1stunde falsch, 500*2000 is das gleiche wie 1000*1000 ![]() 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 ![]() |
||
cyby |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
schon, aber wenn man dann die 2000tiles läuft.... | ||
![]() |
Michi1988 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ? ![]() |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Oh verdacht ^^ Stimmt ja ^^
Dleamaro superstar ... |
||
Edlothiol |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
OJay hat Folgendes geschrieben: und? deswegen wird die benötigte speichermenge auch nicht kleiner...weder im ram, noch auf der festplatte Öhm, doch? Wenn er nur Shorts in die Bank schreibt, ist der Platzverbrauch schon halbiert...
![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group