Sprite.l[4] und Dim Map(xMax,yMax, 2 )
entsprcht 5*3=15 maximal übereinander
gezeichneten sprites. das ist doch ganz
schön viel.
vielleicht solltest du manche grafiken
schon vor der laufzeit fertig
zusammengesetzt haben.
falls du z.b. die blume zur laufzeit aus Blüte,
Blättern und Rasen zusammensetzt (weiß ja
nicht)
.. das ist unnötig. nimm eine grafik für
BlumeMitBlaetternAufRasen, eine für
BlaetterAufRasen ect.
TileMap Speichern 2,5 mb?
- dllfreak2001
- Beiträge: 2925
- Registriert: 07.09.2004 23:44
- Wohnort: Bayern
Das ergibt doch gar keinen Sinn.
Wenn du die als Array abspeicherst und vorher auch die Größe der Karte angibst dann sind die Positionen vollkommen redundant.
Einfache Animationen sollten vom Sprite gegeben werde nicht in der Map.
Spezielle Effekte gehen in Richtung Entity.
I´a dllfreak2001
-
Kaeru Gaman
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
ähm ne anders
@artus
die "position", das ist schon richtig gedacht. dafür brauchst du Map(x,y)
für deine Layer brauchst du 3 bytes in der struct.
nämlich eins pro tile pro layer.
meistens hat ja nicht jeder layer die eigenschaft "blocked" extra für sich,
sondern solche eigenschaften sind layerübergreifend.
deswegen brauchst du sie auch nur einmal drinstehen haben,
und nur eine struct in der alle layer stehen.
es ist sowieso viel schneller, die zeichenschleifen nur ein einziges mal durchzugehen,
und für jedes tile alle layer auf einen rutsch zu zeichnen.
(vorerst. bei parallaktischen layern mit unterschiedlichen tilegrößen ist das anders, aber das kriegen mir später, vergiss es wieder)
für die animationen
> Und ich brauche alle sprites da ich wenn etwas nur blinkt es so darstellen kann: Sprite 1000, kein Spreit, Sprite 1000 oder so ähnlich.
aber wenn deine engine von anfang an weiß, dass sprite tausend eine animation mit 8 frames ist,
dann brauchst du nur die 1000 in der map speichern, und die engine weiß,
aha, 1000, dass heißt 1000,1001,1002,1003,1004,1005,1006,1007 und von vorn....
> Also das mit dem meherere Bool-Werte in einem Byte zu speichern hab ich noch nie gemacht und weis auch net so richtig wie daas geht.
schau mal in die help, das steht was über bitmanipulationen und über zahlensysteme.
aber das brauchst du auch nicht unbedingt, schau erstmal, dass du verstehst,
wie wir das meinen das tileset zu organisieren.
@artus
die "position", das ist schon richtig gedacht. dafür brauchst du Map(x,y)
für deine Layer brauchst du 3 bytes in der struct.
nämlich eins pro tile pro layer.
meistens hat ja nicht jeder layer die eigenschaft "blocked" extra für sich,
sondern solche eigenschaften sind layerübergreifend.
deswegen brauchst du sie auch nur einmal drinstehen haben,
und nur eine struct in der alle layer stehen.
es ist sowieso viel schneller, die zeichenschleifen nur ein einziges mal durchzugehen,
und für jedes tile alle layer auf einen rutsch zu zeichnen.
(vorerst. bei parallaktischen layern mit unterschiedlichen tilegrößen ist das anders, aber das kriegen mir später, vergiss es wieder)
für die animationen
> Und ich brauche alle sprites da ich wenn etwas nur blinkt es so darstellen kann: Sprite 1000, kein Spreit, Sprite 1000 oder so ähnlich.
aber wenn deine engine von anfang an weiß, dass sprite tausend eine animation mit 8 frames ist,
dann brauchst du nur die 1000 in der map speichern, und die engine weiß,
aha, 1000, dass heißt 1000,1001,1002,1003,1004,1005,1006,1007 und von vorn....
> Also das mit dem meherere Bool-Werte in einem Byte zu speichern hab ich noch nie gemacht und weis auch net so richtig wie daas geht.
schau mal in die help, das steht was über bitmanipulationen und über zahlensysteme.
aber das brauchst du auch nicht unbedingt, schau erstmal, dass du verstehst,
wie wir das meinen das tileset zu organisieren.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
- dllfreak2001
- Beiträge: 2925
- Registriert: 07.09.2004 23:44
- Wohnort: Bayern
@kearu
wieso soll er denn die positionen speichern wenn es sich um ein 2d-array handelt?
Oder habe ich das jetzt falsch verstanden meint er mit den ersten beiden jetzt das (aus map(X,Y,I)) das X und Y oder meint er die ersten beiden durchläufe das I (das hab ich nämlich unter seiner aussage verstanden).
Ich dachte die Layer wären das hier
Oder sind jetzt die ersten 4 sprites da die Animationsstufen.
wieso soll er denn die positionen speichern wenn es sich um ein 2d-array handelt?
Oder habe ich das jetzt falsch verstanden meint er mit den ersten beiden jetzt das (aus map(X,Y,I)) das X und Y oder meint er die ersten beiden durchläufe das I (das hab ich nämlich unter seiner aussage verstanden).
Ich dachte die Layer wären das hier
Code: Alles auswählen
WriteLong(0,Map(X,Y,I)\Sprite[0])
WriteLong(0,Map(X,Y,I)\Sprite[1])
WriteLong(0,Map(X,Y,I)\Sprite[2])
WriteLong(0,Map(X,Y,I)\Sprite[3])
WriteByte(0,Map(X,Y,I)\Type)
WriteByte(0,Map(X,Y,I)\Spirited)
WriteByte(0,Map(X,Y,I)\Blocked) I´a dllfreak2001
mhh also die Positionen werden nich gespeichert
und das:
is ein ganzer Layer zB: Map(4,5,1)\Sprite[0] ist das erste Sprite der Animation des 4/5 Feldes auf layer 1.
ich lese sie ja wieder mit der gleichen reienfolge wieder aus deshalb brauch ich keine Positionen. Das mit der 3. Dimension brauch ich für die drei layer da ich die verschiedenen Layer zu verschiedenen Zeitpunkten Zeichnen muss so zb is der 2. Layer über dem Char und die anderen beiden darunter.
mfg arthur
und das:
Code: Alles auswählen
WriteLong(0,Map(X,Y,I)\Sprite[0])
WriteLong(0,Map(X,Y,I)\Sprite[1])
WriteLong(0,Map(X,Y,I)\Sprite[2])
WriteLong(0,Map(X,Y,I)\Sprite[3])
WriteByte(0,Map(X,Y,I)\Type)
WriteByte(0,Map(X,Y,I)\Spirited)
WriteByte(0,Map(X,Y,I)\Blocked)
ich lese sie ja wieder mit der gleichen reienfolge wieder aus deshalb brauch ich keine Positionen. Das mit der 3. Dimension brauch ich für die drei layer da ich die verschiedenen Layer zu verschiedenen Zeitpunkten Zeichnen muss so zb is der 2. Layer über dem Char und die anderen beiden darunter.
mfg arthur
- dllfreak2001
- Beiträge: 2925
- Registriert: 07.09.2004 23:44
- Wohnort: Bayern
