Speichergröße eines riesen-bildes (22500 x 22500p)

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

CO2

ehemals "SirMO"

Betreff: Speichergröße eines riesen-bildes (22500 x 22500p)

BeitragSo, Jul 11, 2010 0:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

Ich wollte wissen wie viel speicher ein 22500 x 22500 Pixel (506250000 Pixel insgesamt) verbraucht. Paint.Net hat über 1 GB angezeigt, aber ich glaube nicht, dass es ganz so viel ist. Weiß zufällig jmd. wie viel speicher das braucht?
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Eingeproggt

BeitragSo, Jul 11, 2010 0:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja nach Farbmodus kann das schon sein - oder gar mehr sein.
1GB bei dieser Größe würde bedeuten, es ist im 16Bit Modus abgespeichert.
Würdest du dieses Bild in Blitz laden, würde es gar das doppelte, 2GB brauchen. Ich kann mir gut vorstellen, dass da dann eh irgendetwas an deinem System verweigert...

mfG, Christoph.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9
 

CO2

ehemals "SirMO"

BeitragSo, Jul 11, 2010 1:06
Antworten mit Zitat
Benutzer-Profile anzeigen
2GB?! ja ok thx.
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

BladeRunner

Moderator

BeitragSo, Jul 11, 2010 11:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Darf man fragen wofür du so eine riesen Bitmap verwenden willst?
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

CO2

ehemals "SirMO"

BeitragSo, Jul 11, 2010 20:57
Antworten mit Zitat
Benutzer-Profile anzeigen
es hört sich wohl nicht sehr gut an, aber ich will es als map benutzen für ein 2D Spiel. dann lass ich das bild laden und setze die Spielfigur drauf und dann mit Readpixelfast oder so weiterarbeiten.

Das mache ich, weil ich mit Tilemaps nicht klarkomme...
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

FireballFlame

BeitragSo, Jul 11, 2010 21:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Vergiss das. Rolling Eyes
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit

BladeRunner

Moderator

BeitragSo, Jul 11, 2010 23:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Das mache ich, weil ich mit Tilemaps nicht klarkomme...

Wär doch eine Spitzengelegenheit es zu lernen, da Du mit der Methode die du hier versuchst die Grenzen jedes Computers sprengst.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

CO2

ehemals "SirMO"

BeitragMo, Jul 12, 2010 15:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habs schon mehrmals probiert mit den Tilemaps. Ich habe kp wie ich die map gestalten soll mit Zahlen und so. Während wenn ich dass mit dem Bild als Map mache, weiß ich schon ungefähr wie ich das machen will.
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Thunder

BeitragMo, Jul 12, 2010 15:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Allerdings wird dann keiner Lust haben so ein Spiel zu spielen oder überhaupt runterzuladen, wenn es eine 1 GB große Datei enthält.
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit
 

CO2

ehemals "SirMO"

BeitragMo, Jul 12, 2010 15:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Joa, das hab ich mir auch schon überlegt... Aber damit werde ich wohl oder übel dann leben müssen Sad
Vor allen dingen währe eine Tilemap auch nicht die beste Lösung wenn ich mir so die Map-Masse überlege. Tilemaps sind wohl schön und gut für eher kleine maps, aber ich glaube nicht, dass man damit maps wie die von GTA II hinkriegt.
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Holzchopf

Meisterpacker

BeitragMo, Jul 12, 2010 15:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich denke, du hast das Prinzip der Tilemaps nicht ganz verstanden. GTA II ist übrigens ein super Beispiel dafür, was mit Tilemaps so alles anstellbar ist.
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

Thunder

BeitragMo, Jul 12, 2010 15:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Es ist eher umgekehrt. Tilemaps sind gut für große Maps, weil sie weniger Speicher verbrauchen. Für kleine Maps kannst du eigentlich einfach ein Bild nehmen.
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit
 

René Meyer

BeitragMo, Jul 12, 2010 15:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Im Gegenteil: Je größer eine Map, desto praktikabler ist eine abstrakte Lösung. Ich kann nur wiederholen, daß Dein Vorgehen nicht funktionieren wird.

Und so schwierig sind Tilemaps nicht. Du unterteilst Deine Spielwelt in viele kleine Quadrate und sprichst sie z.B. über ein Dim-Feld an. Probiere es doch zunächst mit einer 10x10 Quadrate großen Welt.
www.blitzbasic.de | Das Buch zu Blitz Basic: www.schreibfabrik.de/txt/bbb
 

CO2

ehemals "SirMO"

BeitragMo, Jul 12, 2010 15:29
Antworten mit Zitat
Benutzer-Profile anzeigen
hab ich schon...
Code: [AUSKLAPPEN]


Dim map(10, 10)

map(1, 1) = 22
map(2, 1) = 22
map(3, 1) = 22

usw.



und dann??
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti
 

René Meyer

BeitragMo, Jul 12, 2010 15:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Im Idealfall schreibst Du die Inhalte für die Tilemap (hier: 22) nicht in den Quelltext, sondern liest ihn aus einer Datei. Wenn Du pro Feld nur ein Zeichen nimmst (z.B. Buchstabe), kannst Du die Welt einfach mit einem Texteditor erstellen und ändern. Allerdings umfaßt eine Tilemap in der Regel mindestens 2 Ebenen - eine für die Bodengraphik, eine für Charaktere (Spielfigur, Bösewichter). Aber zum Testen ist es so ein Anfang.

Danach brauchst Du eine Funktion, die das Dim-Feld ausliest und die Graphiken auf den Bildschirm schreibt. Dazu ist auch ein Dim-Feld geeignet, das die Codes (hier: 22) und die dazugehörigen Graphiken speichert.
www.blitzbasic.de | Das Buch zu Blitz Basic: www.schreibfabrik.de/txt/bbb

BladeRunner

Moderator

BeitragMo, Jul 12, 2010 16:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Also, zuerst mal benötigst Du deine Tiles, das ist in der Regel eine Bilddatei in der alle deine 'Kacheln' eingespeichert sind. Die kannst Du dann mit LoadAnimImage laden.
(für mein Beispiel hier erstelle Dir bitte mit Paint oder so eine Bild der Größe 64*32 Pixel, mache die Linke Hälfte davon Gelb und die rechte Rot und speicher das bild als "tiles.png" ( also im PNG-Format).

Zweiter bestandteil ist deine Map (also die Karte, quasi ein Verzeichnis welches Bild wo anzuzeigen ist).
Das geht mit Dim.

Du benötigst für deine Karte ein 2-dimensionales Array, also sagen wir mal : Dim Map(5,5)

Für dieses Beispiel werden wir die Daten aus Datazeilen einlesen, bei einem 'echten' Programm wäre es sinnvoll sie aus einer Datei auszulesen (siehe dazu openfile,readint etc)

Das einzeichnen als solches ist nun ganz einfach:
Deine Karte hat 6*6 Felder (Dim fängt bei 0 mit dem Zählen an), in jedem dieser Felder steht ein wert. In unserem Beispiel eine 0 oder eine 1. Hast Du mehr verschiedene Kacheln in deinem tiles.png können auch höhere Zahlen darin stehen, denn die Zahl die in einem Feld steht gibt an welches Bild an dieser Stelle gemalt werden soll.
Dein Programm macht nun nix anderes als alle Felder der Karte durchzugehen und zu gucken welches Bild wo sein soll. Zum einzeichnen muss dann noch ein wenig Mathe her, denn man Muss die Position im Feld mit der Größe der Einzelkacheln malnehmen damit die Bilder nicht übereinander gezeichnet werden.
In unserem Beispiel hat eine Kachel 32*32 Pixel, daher wird auch damit multipliziert. Du kannst ja mal testen was passiert wenn Du die Zahlen änderst.

Und das ist schon alles zum Zeigen einer Karte aus Tiles:

Code: [AUSKLAPPEN]
Dim Map(5,5)

for y=0 to 5
    for x = 0 to 5
        read map(x,y)
    next
next
; Hier wurde die Karte eingelesen. Lass das Programm mal im Debugger durchlaufen um zu verstehen warum man x und y vertauschen muss ;)

graphics 640,480
tiles = loadanimimage("tiles.png",32,32,0,2);hier werden die Tiles geladen
repeat
cls
    for y=0 to 5
        for x = 0 to 5
            drawimage tiles,x*32,y*32,map(x,y); und hier werden sie gezeichnet
        next
    next
    flip
until keyhit(1)

;die Karte, die mit READ eingelesen wird:
data 0,0,0,0,0,0
data 0,1,0,0,1,0
data 0,0,0,0,0,0
data 0,0,1,1,0,0
data 1,0,0,0,0,1
data 0,1,1,1,1,0



Wenn Du noch Fragen hast, stelle sie hier einfach.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

CO2

ehemals "SirMO"

BeitragMo, Jul 12, 2010 16:07
Antworten mit Zitat
Benutzer-Profile anzeigen
ok, hat sich fürs erste geklärt, ich versuch mal mein glück thx
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

D2006

Administrator

BeitragMo, Jul 12, 2010 18:58
Antworten mit Zitat
Benutzer-Profile anzeigen
~VERSCHOBEN~
Dieser Thread passte nicht in das Forum, in dem er ursprünglich gepostet wurde.
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2

Der Eisvogel

BeitragMo, Jul 12, 2010 22:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo
Ich habe hier ein Super Tut, dass mir damals den ganzen Kram beigebracht hat. Damit habe ich mein ersten RPG begonnen. Ich habe es hier im Forum auch schon mehrmals verlinkt. Ursprünglich ist dieses Tut allerdings von der Robsite.

https://www.blitzforum.de/upload/file.php?id=4461

Es ist wirklich nur zu empfehlen, denn ist auch noch deutsch.

MfG
Der Eisvogel
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group