vapaasti käytettävät kartat.

Muu yhteisön välinen keskustelu.
Post Reply
skorpioni-cb
Advanced Member
Posts: 364
Joined: Wed Dec 03, 2008 3:48 pm
Location: Turku

vapaasti käytettävät kartat.

Post by skorpioni-cb »

Ajattelin tehdä tämän tänne.
Periaate on aika sama kuin ketjussa "Vapaasti käytettävät kuvat", mutta tänne saa laittaakin vapaasti käytettäviä tile-mappeja.
En tiedä, mitä tiedän, mutta tiedän ettei se ole mitään kaunista.

I know not what I know, but I do know that it's not beautiful.
User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: vapaasti käytettävät kartat.

Post by esa94 »

skorpioni-cb wrote:Ajattelin tehdä tämän tänne.
Periaate on aika sama kuin ketjussa "Vapaasti käytettävät kuvat", mutta tänne saa laittaakin vapaasti käytettäviä tile-mappeja.
Yleensä tilekartat pitää räätälöidä peliä varten sekä tiilien koon, tilesetin, pelimekaniikan ja taustatarinan mukaan, joten en usko, että tämä ketju saa hirveästi suosiota. IMO.
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

Re: vapaasti käytettävät kartat.

Post by Koodiapina »

Kas tässä.

Code: Select all

 ------------------------
|#     #          #     #
| #####            ##### 
| # ###            #*### 
| #####            ##### 
| ### ################ # 
| ######## *## *######|# 
| ####################|# 
| ####################|# 
| #########    #######|#              
| #########    #######|#   
| #########   *|######|#   
|          ####|------|  
|         XXXX           
|        XXXX            
User avatar
axu
Devoted Member
Posts: 854
Joined: Tue Sep 18, 2007 6:50 pm

Re: vapaasti käytettävät kartat.

Post by axu »

Ihan hyvähän tämä on, mutta esa94:n mainitsemat ongelmat on kyllä tosia. Mutta kaksi ensimmäistä menee sillä, että käytetään cb:n omaa tilesettiä tai laitetaan kylkiäisenä mukaan ja tilen kokoon minä olen kehittänyt funktion:

Code: Select all

Function ChangeMapProperties(Map, tileset, tileW, tileH, sizeW = 0, sizeH = 0)
    MapW = MapWidth()
    MapH = MapHeight()
    ReDim MapArray(Int(Max(MapW, sizeW)) - 1, Int(Max(MapH, sizeH)) - 1, 3)
    If sizeW = 0 Then sizeW = MapW
    If sizeH = 0 Then sizeH = MapH
    For x = 1 To MapW
        For y = 1 To MapH
            For l = 0 To 3
                MapArray(x-1,y-1,l)=GetMap2(l,x,y)
            Next l
        Next y
    Next x
    DeleteObject Map
    Map = MakeMap(sizeW, sizeH, tileW, tileH)
    PaintObject Map, tileset
    For x = 1 To sizeW
        For y = 1 To sizeH
            For l = 0 To 3
                EditMap Map, l, x, y, MapArray(x - 1, y - 1, l)
            Next l
        Next y
    Next x
End Function
Tallentamista olenkin pohtinut kun minulla ei ole Tilesteriä eikä sen manuaalia koneella, niin en oikein pääse .til formaatin "sisälle".
Jos tämä viesti on kirjoitettu alle 5 min. sitten, päivitä sivu. Se on saattanut jo muuttua :roll:
Image
User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: vapaasti käytettävät kartat.

Post by esa94 »

axu wrote:Ihan hyvähän tämä on, mutta esa94:n mainitsemat ongelmat on kyllä tosia. Mutta kaksi ensimmäistä menee sillä, että käytetään cb:n omaa tilesettiä tai laitetaan kylkiäisenä mukaan ja tilen kokoon minä olen kehittänyt funktion:

Code: Select all

Function ChangeMapProperties(Map, tileset, tileW, tileH, sizeW = 0, sizeH = 0)
    MapW = MapWidth()
    MapH = MapHeight()
    ReDim MapArray(Int(Max(MapW, sizeW)) - 1, Int(Max(MapH, sizeH)) - 1, 3)
    If sizeW = 0 Then sizeW = MapW
    If sizeH = 0 Then sizeH = MapH
    For x = 1 To MapW
        For y = 1 To MapH
            For l = 0 To 3
                MapArray(x-1,y-1,l)=GetMap2(l,x,y)
            Next l
        Next y
    Next x
    DeleteObject Map
    Map = MakeMap(sizeW, sizeH, tileW, tileH)
    PaintObject Map, tileset
    For x = 1 To sizeW
        For y = 1 To sizeH
            For l = 0 To 3
                EditMap Map, l, x, y, MapArray(x - 1, y - 1, l)
            Next l
        Next y
    Next x
End Function
Tallentamista olenkin pohtinut kun minulla ei ole Tilesteriä eikä sen manuaalia koneella, niin en oikein pääse .til formaatin "sisälle".
Til-formaatista on olemassa dokumentaatio. En muista missä, tosin. Ei kuukkelikaan. :P
User avatar
axu
Devoted Member
Posts: 854
Joined: Tue Sep 18, 2007 6:50 pm

Re: vapaasti käytettävät kartat.

Post by axu »

esa94 wrote:
axu wrote:Ihan hyvähän tämä on, mutta esa94:n mainitsemat ongelmat on kyllä tosia. Mutta kaksi ensimmäistä menee sillä, että käytetään cb:n omaa tilesettiä tai laitetaan kylkiäisenä mukaan ja tilen kokoon minä olen kehittänyt funktion:

Code: Select all

Function ChangeMapProperties(Map, tileset, tileW, tileH, sizeW = 0, sizeH = 0)
    MapW = MapWidth()
    MapH = MapHeight()
    ReDim MapArray(Int(Max(MapW, sizeW)) - 1, Int(Max(MapH, sizeH)) - 1, 3)
    If sizeW = 0 Then sizeW = MapW
    If sizeH = 0 Then sizeH = MapH
    For x = 1 To MapW
        For y = 1 To MapH
            For l = 0 To 3
                MapArray(x-1,y-1,l)=GetMap2(l,x,y)
            Next l
        Next y
    Next x
    DeleteObject Map
    Map = MakeMap(sizeW, sizeH, tileW, tileH)
    PaintObject Map, tileset
    For x = 1 To sizeW
        For y = 1 To sizeH
            For l = 0 To 3
                EditMap Map, l, x, y, MapArray(x - 1, y - 1, l)
            Next l
        Next y
    Next x
End Function
Tallentamista olenkin pohtinut kun minulla ei ole Tilesteriä eikä sen manuaalia koneella, niin en oikein pääse .til formaatin "sisälle".
Til-formaatista on olemassa dokumentaatio. En muista missä, tosin. Ei kuukkelikaan. :P
Til formaatin dokumentaatio on kuulemma tilesterin manuaalissa, voisko joku lähettää. Muistan kyllä lukeneeni jotain kattavaa selitystä siitä, kuinka niitä luetaan/tallennetaan, mutta haussa ei ole lykästänyt :/
EDIT:

Niin, en tietenkään kyselisi missä tilesterin manuaali on, jos minulla olisi se koneella :)
viewtopic.php?f=10&t=1672&start=400#p31001
Tilesteriäkään kun ei voi ladata ilman että cb tulee mukana :mrgreen:

Last edited by axu on Sat Aug 15, 2009 10:29 am, edited 1 time in total.
Jos tämä viesti on kirjoitettu alle 5 min. sitten, päivitä sivu. Se on saattanut jo muuttua :roll:
Image
User avatar
Ilmuri
Developer
Developer
Posts: 277
Joined: Sun Aug 26, 2007 2:46 pm
Location: \o

Re: vapaasti käytettävät kartat.

Post by Ilmuri »

/Program Files/Tilester/Help/eng12.html
CoolBasic henkilökuntaa
Kehittäjä
CoolBasic Classic
Dande
Active Member
Posts: 193
Joined: Tue Aug 28, 2007 4:30 pm

Re: vapaasti käytettävät kartat.

Post by Dande »

Tässäpä tuo til-formaatin dokumentaatio: (code-tageissa, jotta viesti ei veny turhia)
Tilester/Help/fin12.html wrote:

Code: Select all

Sinun tulee tietää kuinka luet tiedostosta:
# tavuja (Visual Basic Byte, C/C++ Char)
# 4 tavun kokonaislukuja (Visual Basic Long, C/C++ Integer)
# 4 tavun liukulukuja (Visual Basic Single, C/C++ Float)

Ensimmäiset 4 tavua
Ovat Tilesterin tiedostoformaatin headerit. Ts. ne kertovat, että kyseessä on oikea Tilester 1.3 -tiedosto. Tavut ovat: 23, 179, 243 ja 56.

Seuraavat 4 tavua
Liukuluku.
Tilester versio. Pitäisi olla 1.3.

Seuraavat 256 tavua
Sekalaista.
Tähän on tarkoitus tallentaa copyright ja kommentit. Koska Tilester ei toistaiseksi tallenna sellaista tietoa, nämä ovat lähinnä turhaa tilaa. Voit käyttää sitä omiin asetuksiisi.

Seuraavat 256 tavua
Tilesterin omia asetuksia.
Tilester 1.3 ei vielä käytä tätä tilaa. Et tee tällä tiedolla mitään.

Seuraava 1 tavu
Byte
Maskivärin RED-komponentti.

Seuraava 1 tavu
Byte
Maskivärin GREEN-komponentti.

Seuraava 1 tavu
Byte
Maskivärin BLUE-komponentti.

Seuraava 1 tavu
Byte
Tämä on aina nolla.

Seuraavat 40 tavua
Lisäasetuksia.
Tilester 1.3 ei vielä käytä tätä tilaa. Et tee tällä tiedolla mitään.

Tästä alkaa varsinainen karttadata. Jos haluat hypätä tänne suoraan, käytä SeekFile 564 (olettaen, että ensimmäinen on nolla)

Seuraavat 256 tavua
Kartassa käytetty tilesetti.
Merkkijono, lue tavu tavulta, kunnes tulee tavu nolla. Homma jatkuu kohdasta SeekFile 820 (jos nolla on ensimmäinen). Ts. lue kaikki 256 merkkiä, mutta vain merkit ennen nollatavua kuuluvat merkkijonoon.

Seuraavat 4 tavua
Kokonaisluku.
Montako tileä tilesettiin oli tallennettu.

Seuraavat 4 tavua
Kokonaisluku.
Tilen leveys pikseleinä.

Seuraavat 4 tavua
Kokonaisluku.
Tilen korkeus pikseleinä.

Seuraavat 4 tavua
Kokonaisluku.
Kartan leveys tileinä.

Seuraavat 4 tavua
Kokonaisluku.
Kartan korkeus tileinä.

Tästä alkaa Kerrosten data...

Seuraavat 4 tavua
Tarkistustavut, että homma menee niin kuin pitää.
Tavut 254, 45, 12 ja 166 varmistavat, että seuraavaksi alkaa kerroksen 0 data.

Seuraavat LEVEYS * KORKEUS kertaa
Luetaan 4 tavun kokonaisulukuja seuraavasti:

For y=1 To KORKEUS
   For x=1 To LEVEYS
      Tilemap(0,x,y)=ReadInteger(file)
   Next
Next		
	

Seuraavat 4 tavua
Tarkistustavut, että homma menee niin kuin pitää.
Tavut 253, 44, 11 ja 165 varmistavat, että seuraavaksi alkaa kerroksen 1 data.

Seuraavat LEVEYS * KORKEUS kertaa
Luetaan 4 tavun kokonaisulukuja seuraavasti:

For y=1 To KORKEUS
   For x=1 To LEVEYS
      Tilemap(1,x,y)=ReadInteger(file)
   Next
Next		
	

Seuraavat 4 tavua
Tarkistustavut, että homma menee niin kuin pitää.
Tavut 252, 43, 10 ja 164 varmistavat, että seuraavaksi alkaa kerroksen 2 data.

Seuraavat LEVEYS * KORKEUS kertaa
Luetaan 4 tavun kokonaisulukuja seuraavasti:

For y=1 To KORKEUS
   For x=1 To LEVEYS
      Tilemap(2,x,y)=ReadInteger(file)
   Next
Next		
	

Seuraavat 4 tavua
Tarkistustavut, että homma menee niin kuin pitää.
Tavut 251, 42, 9 ja 163 varmistavat, että seuraavaksi alkaa kerroksen 3 data.

Seuraavat LEVEYS * KORKEUS kertaa
Luetaan 4 tavun kokonaisulukuja seuraavasti:

For y=1 To KORKEUS
   For x=1 To LEVEYS
      Tilemap(3,x,y)=ReadInteger(file)
   Next
Next		
	

Seuraavat 4 tavua
Tarkistustavut, että homma menee niin kuin pitää.
Tavut 250, 41, 8 ja 162 varmistavat, että seuraavaksi alkaa animaatiodata.

Seuraavat TILEJEN_LUKUMÄÄRÄ kertaa
Luetaan 4 tavun kokonaisulukuja seuraavasti:

For tile=1 To TILEJEN_MÄÄRÄ

   ANIM_PITUUS(tile)=ReadInteger(file)
   ANIM_HITAUS(tile)=ReadInteger(file)

Next		

ESIMERKKIKOODI: BASIC-kieli

Function OPENTILESTER13(fN$)

  f=ReadFile(fN)
  
    SeekFile (f,4)
    
    version#=ReadFloat(f)
    If version#<=0 Or version#>=2 Then MSGBOX (1,"Not valid Tilester file."):Return 0
    
    SeekFile (f,520)
    
    mr=ReadByte(f)
    mg=ReadByte(f)    
    mb=ReadByte(f)
    If ReadByte(f)>0 Then MSGBOX (1,"Not valid Tilester file.","File invalid."):Return 0

    SeekFile (f,564)
    
    tsn$=""
    For i=1 To 256
      temp=ReadByte(f)
      If temp>0 Then tsn$=tsn$+Chr(temp) Else Exit
    Next

    SeekFile (f,820)

    tiles=ReadInt(f)
    If Tiles<=0 Then MSGBOX (1,"Not valid Tilester file.","File invalid."):Return 0
    
    TW=ReadInt(f)
    TH=ReadInt(f)
    If TW*TH<=0 Then MSGBOX (1,"Not valid Tilester file.","File invalid."):Return 0
    WW=ReadInt(f)
    WH=ReadInt(f)
    If WW*WH<=0 Then MSGBOX (1,"Not valid Tilester file.","File invalid."):Return 0

    If ReadByte(f)<>254 Then MSGBOX (1,"Not valid Tilester file.","File invalid."):Return 0
    If ReadByte(f)<>45 Then MSGBOX (1,"Not valid Tilester file.","File invalid."):Return 0
    If ReadByte(f)<>12 Then MSGBOX (1,"Not valid Tilester file.","File invalid."):Return 0
    If ReadByte(f)<>166 Then MSGBOX (1,"Not valid Tilester file.","File invalid."):Return 0
    
      For y=1 To WH
        For x=1 To WW
          Tilemap(0,x,y)=ReadInt(f)
        Next
      Next      
    
    If ReadByte(f)<>253 Then MSGBOX (1,"Not valid Tilester file.","File invalid."):Return 0
    If ReadByte(f)<>44 Then MSGBOX (1,"Not valid Tilester file.","File invalid."):Return 0
    If ReadByte(f)<>11 Then MSGBOX (1,"Not valid Tilester file.","File invalid."):Return 0
    If ReadByte(f)<>165 Then MSGBOX (1,"Not valid Tilester file.","File invalid."):Return 0
    
      For y=1 To WH
        For x=1 To WW
          Tilemap(1,x,y)=ReadInt(f)
        Next
      Next

    If ReadByte(f)<>252 Then MSGBOX (1,"Not valid Tilester file.","File invalid."):Return 0
    If ReadByte(f)<>43 Then MSGBOX (1,"Not valid Tilester file.","File invalid."):Return 0
    If ReadByte(f)<>10 Then MSGBOX (1,"Not valid Tilester file.","File invalid."):Return 0
    If ReadByte(f)<>164 Then MSGBOX (1,"Not valid Tilester file.","File invalid."):Return 0
    
      For y=1 To WH
        For x=1 To WW
          Tilemap(2,x,y)=ReadInt(f)
        Next
      Next

    If ReadByte(f)<>251 Then MSGBOX (1,"Not valid Tilester file.","File invalid."):Return 0
    If ReadByte(f)<>42 Then MSGBOX (1,"Not valid Tilester file.","File invalid."):Return 0
    If ReadByte(f)<>9 Then MSGBOX (1,"Not valid Tilester file.","File invalid."):Return 0
    If ReadByte(f)<>163 Then MSGBOX (1,"Not valid Tilester file.","File invalid."):Return 0
    
      For y=1 To WH
        For x=1 To WW
          Tilemap(3,x,y)=ReadInt(f)
        Next
      Next

    If ReadByte(f)<>250 Then MSGBOX (1,"Not valid Tilester file.","File invalid."):Return 0
    If ReadByte(f)<>41 Then MSGBOX (1,"Not valid Tilester file.","File invalid."):Return 0
    If ReadByte(f)<>8 Then MSGBOX (1,"Not valid Tilester file.","File invalid."):Return 0
    If ReadByte(f)<>162 Then MSGBOX (1,"Not valid Tilester file.","File invalid."):Return 0

      If LOADTILESET(tsn$)=0 Then MSGBOX (1,"Couldn't load the tileset.")
      If TOTALTILES<>tiles Then MSGBOX (1,"Warning!","","Tile amount mismatch.")
      If TOTALTILESTOTALTILES Then Tilemap(0,x,y)=0
            If Tilemap(1,x,y)>TOTALTILES Then Tilemap(1,x,y)=0
            If Tilemap(2,x,y)>TOTALTILES Then Tilemap(2,x,y)=0
          Next
        Next      
      EndIf
        
      For i=1 To TOTALTILES
        Tileset(i,2)=ReadInt(f)
        Tileset(i,4)=ReadInt(f)
        MaskImage Tileset(i,0),mr,mg,mb
      Next
      
  
  CloseFile f
  
  Return True

End Function
User avatar
axu
Devoted Member
Posts: 854
Joined: Tue Sep 18, 2007 6:50 pm

Re: vapaasti käytettävät kartat.

Post by axu »

Kiitos, tätä juuri kaipasinkin. Ompa muuten paljon turhaa tilaa tuossa formaatissa(kommentit, asetukset ja lisäasetukset, joista ei käytetä mitään, mutta niiden koko on vakiona)

Dodiin, elikkä tässä lupailemani työkalu, jolla saa muutettua kuvan tilesettiä, tilen koon vaihtuessakin!
Käyttöliittymä on erittäin karu, mutta itse toiminnassa ei pitäisi olla mitään vikaa:
Attachments
Tilemappi työkalut.rar
Sis. lähdekoodi + exe
(589.29 KiB) Downloaded 256 times
Jos tämä viesti on kirjoitettu alle 5 min. sitten, päivitä sivu. Se on saattanut jo muuttua :roll:
Image
Post Reply