Tileset Assembler

Fiz uma ferramenta nova pra quem trabalha com mapas de tiles em uma ferramenta como o Tiled ou o Mappy e que pode vir a ser útil pra muita gente . Porém eu não sei o nome real desse tipo de ferramenta, portanto vou chama-la Tileset Assembler ou Montador de Tileset.
Fiz ela utilizando Python e com a biblioteca PIL (Python Imaging Library). O objetivo é juntar 1 conjunto de tiles em uma imagem só para que você possa utilizar no programa Tiled ou no próprio Mappy para gerar seus próprios mapas.

Ok e como funciona?

# -*- coding: cp1252 -*-
import glob
import os
from PIL import Image

# Altere aqui as principais variaveis
    #O caminho da pasta de tileset
caminhoPasta = ".\\Tiles Agrupar"
    #Tamanho do tile em x
tamTileCol = 64
    #Tamanho do tile em y
tamTileLin = 64
    #Quantos tiles voce quer por linha no tileset final
nTilesLinha = 10
    #Nome do arquivo final
nomeArquivo = "tilesetCompleto.png"

nTiles = 0
TAMC = tamTileCol*2
TAML = (nTilesLinha)*tamTileCol

#Vai até a pasta dos tiles
os.chdir(caminhoPasta)

#Localiza todos os arquivos png na pasta dos tiles
lArquivos = glob.glob("*.png")
nTiles = len(lArquivos)

#Redimensiona a imagem pro tamanho que é indicado no arquivo
print "Vou trabalhar com "+ str(nTiles) +" tiles no total"
tamLinhasFinal = TAML
tamColunasFinal = ((nTiles/nTilesLinha))*tamTileLin + tamTileCol
print "O tileset tera :" + str(tamLinhasFinal) + " , " + str(tamColunasFinal)

#Faz a gambiarra pra ter uma imagem do tamanho necessario
img = Image.open('C:\Users\PamNawi\Desktop\Tileset Assembler\pix.png')
img = img.convert("RGBA")

print("Vou dar resize na imagem do tileset")
imgFinal = img.resize((tamLinhasFinal, tamColunasFinal),Image.ANTIALIAS)
#damos bind da imagem para a variável pixdata
pixdata = imgFinal.load()

#Percorre cada arquivo .png
i = 0
for files in lArquivos:
    print "Vou trabalhar com o arquivo " + str(files) +" "+str(i)
    imgTile = Image.open(files)
    imgTile = imgTile.convert("RGBA")
    tilePixdata = imgTile.load()

    #Faz o calculo do offset pra posicionar no tileset
    print i/nTilesLinha
    linhaIni = (i/nTilesLinha)*tamTileLin
    colunaIni = i % nTilesLinha *tamTileCol

    print str(linhaIni) +" " + str(colunaIni)

    #Faz a cópia do tile no tileset
    for y in xrange(imgTile.size[1]):
        for x in xrange(imgTile.size[0]):
            pixdata[colunaIni+x,linhaIni+y] = tilePixdata[x,y]
    i+= 1
#Salva o tileset
imgFinal.save("..//"+nomeArquivo,"PNG")
print "Terminei a montagem do tileset"


Se você quiser, está aqui neste link: http://www.4shared.com/rar/iiIv2Ue2/Tileset_Assembler.html


Ainda essa semana quero ver se crio 1 Tileset Slicer, mas prefiro o nome em português, como Fatiador de Tileset. Depois que eu termina-la, posto pra vocês darem uma olhada.

Compartilhar no Google Plus

Autor: Pâmela de Assis Beltrani

É Bacharel em Ciência da Computação pela PUCPR e Mestre pela UFPR. Também é especialista em Desenvolvimento de Jogos Digitais pela PUCPR.
    Blogger Comment
    Facebook Comment

0 comentários:

Postar um comentário