Tilemancer

Creazione di Preset in Tilemancer

marcosecchi Strumenti Grafici 0 Comments

In questo post analizzeremo la metodologia per creare nuovi preset in Tilemancer. Per una panoramica sul software, rimando al post dedicato.

Un preset è composto da una serie di nodi collegati tra loro, pronti per essere riutilizzati.

Nota: il seguente articolo fa riferimento alla versione 0.2.0

  I preset di Tilemancer sono scritti in Lua un linguaggio semplice da imparare ma abbastanza potente da essere utilizzato da diversi software per il game development.

Come è composto un Preset Tilemancer

Per essere considerato come preset, un file .lua deve possedere due metodi:

  • init() che inizializza il preset
  • apply() che viene chiamato una volta, quando il preset viene aggiunto nel canvas

Creando un file di questo genere:

ed inserendolo nella cartella Presets di Tilemancer, sarà possibile visualizzarlo nella lista, come elemento vuoto (senza nome) e la stessa cosa succederà una volta che sarà inserito nel canvas.

Il Metodo init()

All’interno del metodo init() è possibile effettuare una serie di chiamate di inizializzazione, alcune delle quali pressoché obbligatorie per il buon funzionamento del preset: analizziamole nel dettaglio.

setName(name)

Questo metodo assegna un nome al preset, che verrà utilizzato per identificare l’elemento all’interno della lista dei preset.

  • name: il nome del nodo
setDesc(description)

Assegna al preset un testo descrittivo.

  • description: il testo della descrizione, visualizzato nel canvas quando si effettua un rollover sull’elemento nella lista dei preset

Il Metodo apply()

All’interno del metodo apply() verranno effettuate tutte le operazioni che produrranno la sequenza di nodi e le loro connessioni. Analizziamo in dettaglio le operazioni disponibili.

addNode(filename, x, y)

Aggiunge un nodo al preset. Ogni nodo aggiunto con questo metodo, viene aggiunto in una lista per essere poi recuperato successivamente.

  • filename: il nome del file del nodo da aggiungere (compresa l’estensione .lua)
  • x: la coordinata x della posizione del nodo nel canvas
  • y: la coordinata y della posizione del nodo nel canvas
setParameter(nodeIndex, parameterIndex, value)

Definisce il valore di un parametro all’interno di un nodo precedentemente aggiunto al canvas.

  • nodeIndex: l’indice del nodo di riferimento, nella lista di quelli aggiunti nel canvas
  • parameterIndex: l’indice del parametro nella lista di quelli aggiunti al nodo
  • value: il valore del parametro
addConnection(nodeA, output, nodeB, input)

Collega l’input di un nodo con l’output di un altro nodo.

  • nodeAIndex: l’indice del primo nodo di riferimento, nella lista di quelli aggiunti nel canvas
  • outputIndex: l’indice dell’output da collegare
  • nodeBIndex: l’indice del secondo nodo di riferimento, nella lista di quelli aggiunti nel canvas
  • inputIndex: l’indice dell’input da collegare

Tutorial: Creare un Preset

In questo breve tutorial, ci proponiamo di creare un preset che generi l’effetto di una serie di cerchi nell’acqua.

In particolar modo, cercheremo di generare la seguente sequenza di nodi:

Water Ripples

Fig. 1 – La sequenza di nodi

Creazione del file

Per prima cosa creiamo un file di testo chiamato water_ripples.lua, che andremo a salvare nella cartella Presets di Tilemancer.

All’interno di esso creiamo i due metodi init() e function apply():

Setup del Preset

All’interno del metodo init() andremo ad inserire, gli elementi per inizializzare il preset:

Come è possibile notare, sono stati inseriti nome e descrizione.

Aggiungere i Nodi

Andiamo ora ad aggiungere i nodi all’interno di apply() che, ricordiamo, verrà eseguito una sola volta, nel momento in cui il preset sarà aggiunto nel canvas.

Se proviamo ad aggiungere il preset al canvas, otterremo la seguente configurazione:

Disconnected Water Ripples

Fig. 2 – I nodi aggiunti al canvas, sconnessi

Possiamo notare che i nodi sono stati aggiunti, ma sono sconnessi tra di loro: andiamo quindi ad aggiungere le connessioni.

Aggiungere le Connessioni

Come abbiamo visto in precedenza, le connessioni tra i vari nodi vengono create tramite il metodo addConnection(). Nel nostro caso ne serviranno 5:

  • tre tra il primo nodo ed il secondo
  • una tra il secondo nodo ed il terzo
  • una tra il terzo nodo ed il quarto

Connected Nodes

Fig. 2 – I nodi connessi

I nodi sono ora connessi, ma i parametri vanno aggiustati secondo le nostre esigenze.

Modificare i parametri

La modifica dei parametri è, a questo punto, immediata:

Nel mio caso ho optato per le dimensioni della texture massima (pari a 64×64 pixel), perché restituisce un risultato meno sgranato.

Water Ripples

Fig. 4 – Il preset completo