IT | Update to latest commits

This commit is contained in:
Zughy 2020-12-24 18:40:59 +00:00
parent dc54e0786e
commit bca09bd7ab
18 changed files with 144 additions and 219 deletions

View File

@ -14,7 +14,7 @@ Questo capitolo mostra come registrare nuovi biomi, come controllarne la distrib
- [Cosa sono i biomi?](#cosa-sono-i-biomi) - [Cosa sono i biomi?](#cosa-sono-i-biomi)
- [Collocare un bioma](#collocare-un-bioma) - [Collocare un bioma](#collocare-un-bioma)
- [Calore e umidità](#calore-e-umidita) - [Calore e umidità](#calore-e-umidità)
- [Visualizzare i confini usando i diagrammi di Voronoi](#visualizzare-i-confini-usando-i-diagrammi-di-voronoi) - [Visualizzare i confini usando i diagrammi di Voronoi](#visualizzare-i-confini-usando-i-diagrammi-di-voronoi)
- [Creare un diagramma di Voronoi usando Geogebra](#creare-un-diagramma-di-voronoi-usando-geogebra) - [Creare un diagramma di Voronoi usando Geogebra](#creare-un-diagramma-di-voronoi-usando-geogebra)
- [Registrare un bioma](#registrare-un-bioma) - [Registrare un bioma](#registrare-un-bioma)

View File

@ -16,13 +16,11 @@ Capire la struttura base della cartella di una mod è un requisito essenziale pe
- [Cosa sono i giochi e le mod?](#cosa-sono-i-giochi-e-le-mod) - [Cosa sono i giochi e le mod?](#cosa-sono-i-giochi-e-le-mod)
- [Dove vengono salvate le mod?](#dove-vengono-salvate-le-mod) - [Dove vengono salvate le mod?](#dove-vengono-salvate-le-mod)
- [Cartella mod](#cartella-mod) - [Cartella mod](#cartella-mod)
- [Dipendenze](#dipendenze) - [mod.conf](#modconf)
- [mod.conf](#modconf) - [Dipendenze](#dipendenze)
- [depends.txt](#dependstxt)
- [Pacchetti mod](#pacchetti-mod-mod-pack) - [Pacchetti mod](#pacchetti-mod-mod-pack)
- [Esempio](#esempio) - [Esempio](#esempio)
- [Cartella mod](#cartella-mod-1) - [Cartella mod](#cartella-mod-1)
- [depends.txt](#dependstxt-1)
- [init.lua](#initlua) - [init.lua](#initlua)
- [mod.conf](#modconf-1) - [mod.conf](#modconf-1)
@ -101,7 +99,17 @@ Solo il file init.lua è necessario in una mod per eseguirla al lanciare un gioc
tuttavia, mod.conf è consigliato e altri componenti potrebbero essere richiesti a tuttavia, mod.conf è consigliato e altri componenti potrebbero essere richiesti a
seconda di quello che si vuole fare. seconda di quello che si vuole fare.
## Dipendenze ## mod.conf
Questo file è utilizzato per i metadati della mod, che includono il suo nome, la descrizione e altre informazioni.
Per esempio:
name = lamiamod
description = Aggiunge X, Y, e Z
depends = mod1, mod2
### Dipendenze
Una dipendenza avviene quando una mod ne richiede un'altra da avviare prima di essa. Una dipendenza avviene quando una mod ne richiede un'altra da avviare prima di essa.
Una mod potrebbe infatti richiedere il codice di quest'ultima, i suoi oggetti o altre risorse. Una mod potrebbe infatti richiedere il codice di quest'ultima, i suoi oggetti o altre risorse.
@ -111,28 +119,11 @@ Entrambe richiedono che la mod richiesta venga caricata prima, con la differenza
Una dipendenza opzionale è utile se si vuole integrare opzionalmente un'altra mod; può abilitare contenuti extra se l'utente desidera usare entrambe le mod in contemporanea. Una dipendenza opzionale è utile se si vuole integrare opzionalmente un'altra mod; può abilitare contenuti extra se l'utente desidera usare entrambe le mod in contemporanea.
Le dipendenze vanno elencate in mod.conf. Le dipendenze sono specificate in un elenco separato da virgole in mod.conf.
### mod.conf
Questo file è utilizzato per i metadati della mod, che includono il suo nome, la descrizione e altre informazioni.
Per esempio:
name = lamiamod
description = Aggiunge X, Y, e Z.
depends = mod1, mod2 depends = mod1, mod2
optional_depends = mod3 optional_depends = mod3
### depends.txt
Per questioni di compatibilità con le versioni 0.4.x di Minetest, al posto di specificare le dipendenze solamente in mod.conf, c'è bisogno di fornire un file depends.txt nel quale vanno elencate tutte le dipendenze:
mod1
mod2
mod3?
Ogni nome mod occupa una riga, e quelli seguiti da un punto di domanda indicano una dipendenza opzionale.
## Pacchetti mod (mod pack) ## Pacchetti mod (mod pack)
Le mod possono essere raggruppate in pacchetti che permettono di confezionarne e spostarne più alla volta. Le mod possono essere raggruppate in pacchetti che permettono di confezionarne e spostarne più alla volta.
@ -155,13 +146,9 @@ Segue un esempio che mette insieme tutto ciò discusso finora:
lamiamod lamiamod
├── textures ├── textures
│   └── lamiamod_nodo.png │   └── lamiamod_nodo.png
├── depends.txt
├── init.lua ├── init.lua
└── mod.conf └── mod.conf
### depends.txt
default
### init.lua ### init.lua
```lua ```lua
print("Questo file parte al caricamento!") print("Questo file parte al caricamento!")
@ -178,7 +165,7 @@ minetest.register_node("lamiamod:nodo", {
descriptions = Aggiunge un nodo descriptions = Aggiunge un nodo
depends = default depends = default
Questa mod ha come nome "lamiamod". Ha tre file di testo: init.lua, mod.conf e depends.txt.\\ Questa mod ha come nome "lamiamod". Ha due file di testo: init.lua e mod.conf.\\
Lo script stampa un messaggio e poi registra un nodo che sarà spiegato nel prossimo capitolo.\\ Lo script stampa un messaggio e poi registra un nodo che sarà spiegato nel prossimo capitolo.\\
C'è una sola dipendenza, la [mod default](https://content.minetest.net/metapackages/default/), che C'è una sola dipendenza, la [mod default](https://content.minetest.net/metapackages/default/), che
si trova solitamente nel Minetest Game.\\ si trova solitamente nel Minetest Game.\\

View File

@ -9,10 +9,10 @@ idx: 7.1
Il punto forte di Minetest è quello di poter sviluppare giochi con facilità senza il bisogno di costruirsi il proprio motore grafico voxel, i propri algoritmi voxel, o la propria parte network. Il punto forte di Minetest è quello di poter sviluppare giochi con facilità senza il bisogno di costruirsi il proprio motore grafico voxel, i propri algoritmi voxel, o la propria parte network.
- [Cos'è un gioco?](#cose-un-gioco) - [Cos'è un gioco?](#cosè-un-gioco)
- [Cartella di un gioco](#cartella-di-un-gioco) - [Cartella di un gioco](#cartella-di-un-gioco)
- [Compatibilità tra giochi](#compatibilita-tra-giochi) - [Compatibilità tra giochi](#compatibilità-tra-giochi)
- [Compatibilità delle API](#compatibilita-delle-api) - [Compatibilità delle API](#compatibilità-delle-api)
- [Gruppi e alias](#gruppi-e-alias) - [Gruppi e alias](#gruppi-e-alias)
- [Il tuo turno](#il-tuo-turno) - [Il tuo turno](#il-tuo-turno)

View File

@ -23,7 +23,7 @@ Saper registrare nuovi nodi, oggetti fabbricabili e conseguenti ricette, è un r
- [Informi (shapeless)](#informi-shapeless) - [Informi (shapeless)](#informi-shapeless)
- [Cottura (cooking) e Carburante (fuel)](#cottura-cooking-e-carburante-fuel) - [Cottura (cooking) e Carburante (fuel)](#cottura-cooking-e-carburante-fuel)
- [Gruppi](#gruppi) - [Gruppi](#gruppi)
- [Strumenti, Capacità e Friabilità](#strumenti-capacita-e-friabilita) - [Strumenti, Capacità e Friabilità](#strumenti-capacità-e-friabilità)
## Cosa sono i nodi e gli oggetti? ## Cosa sono i nodi e gli oggetti?

View File

@ -86,18 +86,6 @@ Come mostrato nella prossima sezione, le entità possono avere delle proprietà
Un'entità ha una tabella di definizione che ricorda quella degli oggetti (intesi come *items*). Un'entità ha una tabella di definizione che ricorda quella degli oggetti (intesi come *items*).
Questa tabella può contenere metodi di callback, proprietà iniziali e membri personalizzati. Questa tabella può contenere metodi di callback, proprietà iniziali e membri personalizzati.
Tuttavia, c'è una differenza sostanziale tra le due; perché quando un'entità appare (come quando viene creata o caricata) una nuova tabella viene generata per quell'entità, *ereditando* le proprietà dalla tabella originaria tramite una metatabella.
Ci si riferisce solitamente a questa nuova tabella con Tabella di Entità Lua e può essere usata per immagazzinare variabili per quella specifica entità.
Le metatabelle rappresentano un aspetto importante di Lua, che bisogna tenere bene a mente in quanto sono una parte essenziale del linguaggio.
In parole povere, le metatabelle permettono di controllare come si comporta una tabella quando viene usata una certa sintassi in Lua.
Vengono usate soprattutto per la loro abilità di usare un'altra tabella come prototipo, fungendo da valori di base di quest'ultima quando essa non contiene le proprietà e i metodi richiesti.
Mettiamo che si voglia accedere al campo X della tabella A.
Se la tabella A ha quel campo, allora ritornerà normalmente.
Tuttavia, se X non esiste ma esiste una metatabella B associata ad A, B verrà ispezionata alla ricerca di un eventuale X prima di ritornare (eventualmente) nil.
```lua ```lua
local MiaEntita = { local MiaEntita = {
initial_properties = { initial_properties = {
@ -120,6 +108,19 @@ function MiaEntita:imposta_messaggio(msg)
end end
``` ```
Tuttavia, c'è una differenza sostanziale tra entità e oggetti; perché quando un'entità appare (come quando viene creata o caricata) una nuova tabella viene generata per quell'entità, *ereditando* le proprietà dalla tabella originaria tramite una metatabella.
<!--
Questa eredità avviene usando una metatabella. Le metatabelle rappresentano un aspetto importante di Lua, che bisogna tenere bene a mente in quanto sono una parte essenziale del linguaggio.
In parole povere, le metatabelle permettono di controllare come si comporta una tabella quando viene usata una certa sintassi in Lua.
Vengono usate soprattutto per la loro abilità di usare un'altra tabella come prototipo, fungendo da valori di base di quest'ultima quando essa non contiene le proprietà e i metodi richiesti.
Mettiamo che si voglia accedere al campo `x` della tabella `a` (`a.x`).
Se la tabella `a` ha quel campo, allora ritornerà normalmente.
Tuttavia, se `a.x` non esiste ma esiste una metatabella `b` associata ad `a`, `b` verrà ispezionata alla ricerca di un eventuale `b.x` da ritornare al posto di `nil`.
-->
Sia la tabella di un ObjectRef che quella di un'entità forniscono modi per ottenerne la controparte: Sia la tabella di un ObjectRef che quella di un'entità forniscono modi per ottenerne la controparte:
```lua ```lua

View File

@ -107,7 +107,7 @@ data = minetest.deserialize(minetest:get_string("foo"))
### Metadati privati ### Metadati privati
Le voci nei metadati di un nodo possono essere segnate come private, senza venire quindi inviate al client (al contrario delle normali). Di base, tutti i metadati dei nodi sono inviati al client. Rendendo le loro chiavi private, questo invece non succede.
```lua ```lua
meta:set_string("segreto", "asd34dn") meta:set_string("segreto", "asd34dn")

View File

@ -48,6 +48,8 @@ Il modo in cui elementi diversi venivano posizionati nel formspec variava in man
Da Minetest 5.1.0, tuttavia, è stata introdotta una funzione chiamata Coordinate Reali (*real coordinates*), la quale punta a correggere questo comportamento tramite l'introduzione di un sistema di coordinate coerente. Da Minetest 5.1.0, tuttavia, è stata introdotta una funzione chiamata Coordinate Reali (*real coordinates*), la quale punta a correggere questo comportamento tramite l'introduzione di un sistema di coordinate coerente.
L'uso delle coordinate reali è caldamente consigliato, onde per cui questo capitolo non tratterà di quelle vecchie. L'uso delle coordinate reali è caldamente consigliato, onde per cui questo capitolo non tratterà di quelle vecchie.
Usando una versione del formspec maggiore o uguale a 2, esse saranno abilitate di base.
## Anatomia di un formspec ## Anatomia di un formspec
### Elementi ### Elementi
@ -72,12 +74,12 @@ L'intestazione di un formspec contiene informazioni che devono apparire prima di
Questo include la grandezza del formspec, la posizione, l'ancoraggio, e se il tema specifico del gioco debba venir applicato. Questo include la grandezza del formspec, la posizione, l'ancoraggio, e se il tema specifico del gioco debba venir applicato.
Gli elementi nell'intestazione devono essere definiti in un ordine preciso, altrimenti ritorneranno un errore. Gli elementi nell'intestazione devono essere definiti in un ordine preciso, altrimenti ritorneranno un errore.
L'ordine è dato nel paragrafo qui in alto e, come sempre, documentato inlua_api.txt. L'ordine è dato nel paragrafo qui in alto e, come sempre, documentato in lua_api.txt.
La grandezza è in caselle formspec - un'unità di misura che è circa 64 pixel, ma varia a seconda della densità dello schermo e delle impostazioni del client. La grandezza è in caselle formspec - un'unità di misura che è circa 64 pixel, ma varia a seconda della densità dello schermo e delle impostazioni del client.
Ecco un formspec di 2x2: Ecco un formspec di 2x2:
formspec_version[3] formspec_version[4]
size[2,2] size[2,2]
Notare come è stata esplicitamente definita la versione del linguaggio: senza di essa, il sistema datato sarebbe stato usato di base - che avrebbe impossibilitato il posizionamento coerente degli elementi e altre nuove funzioni. Notare come è stata esplicitamente definita la versione del linguaggio: senza di essa, il sistema datato sarebbe stato usato di base - che avrebbe impossibilitato il posizionamento coerente degli elementi e altre nuove funzioni.
@ -86,9 +88,8 @@ La posizione e l'ancoraggio degli elementi sono usati per collocare il formspec
La posizione imposta dove si troverà (con valore predefinito al centro, `0.5,0.5`), mentre l'ancoraggio da dove partire, permettendo di allineare il formspec con i bordi dello schermo. La posizione imposta dove si troverà (con valore predefinito al centro, `0.5,0.5`), mentre l'ancoraggio da dove partire, permettendo di allineare il formspec con i bordi dello schermo.
Per esempio, lo si può posizionare ancorato a sinistra in questo modo: Per esempio, lo si può posizionare ancorato a sinistra in questo modo:
formspec_version[3] formspec_version[4]
size[2,2] size[2,2]
real_coordinates[true]
position[0,0.5] position[0,0.5]
anchor[0,0.5] anchor[0,0.5]
@ -120,6 +121,7 @@ function indovina.prendi_formspec(nome)
local testo = "Sto pensando a un numero... Prova a indovinare!" local testo = "Sto pensando a un numero... Prova a indovinare!"
local formspec = { local formspec = {
"formspec_version[4]",
"size[6,3.476]", "size[6,3.476]",
"label[0.375,0.5;", minetest.formspec_escape(testo), "]", "label[0.375,0.5;", minetest.formspec_escape(testo), "]",
"field[0.375,1.25;5.25,0.8;numero;Numero;]", "field[0.375,1.25;5.25,0.8;numero;Numero;]",
@ -295,7 +297,7 @@ minetest.register_node("miamod:tastodestro", {
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
meta:set_string("formspec", meta:set_string("formspec",
"formspec_version[3]" .. "formspec_version[4]" ..
"size[5,5]".. "size[5,5]"..
"label[1,1;Questo è mostrato al premere col destro]".. "label[1,1;Questo è mostrato al premere col destro]"..
"field[1,2;2,1;x;x;]") "field[1,2;2,1;x;x;]")

View File

@ -10,51 +10,26 @@ redirect_from: /it/chapters/common_mistakes.html
Questo capitolo illustra gli errori più comuni e come evitarli. Questo capitolo illustra gli errori più comuni e come evitarli.
- [Non salvare mai ObjectRef (giocatori ed entità)](#non-salvare-mai-objectref-giocatori-ed-entita) - [Fai attenzione quando salvi gli ObjectRef in delle variabili (giocatori ed entità)](#fai-attenzione-quando-salvi-gli-objectref-in-delle-variabili-giocatori-ed-entità)
- [Non fidarti dei campi dei formspec](#non-fidarti-dei-campi-dei-formspec) - [Non fidarti dei campi dei formspec](#non-fidarti-dei-campi-dei-formspec)
- [Imposta gli ItemStack dopo averli modificati](#imposta-gli-itemstack-dopo-averli-modificati) - [Imposta gli ItemStack dopo averli modificati](#imposta-gli-itemstack-dopo-averli-modificati)
## Non salvare mai ObjectRef (giocatori ed entità) ## Fai attenzione quando salvi gli ObjectRef in delle variabili (giocatori ed entità)
Se l'oggetto rappresentato da un ObjectRef viene rimosso - per esempio quando il giocatore si disconnette o un'entità viene rimossa dalla memoria - chiamare metodi su quell'oggetto causerà la chiusura improvvisa del server (*crash*). Un ObjectRef viene invalidato quando il giocatore o l'entità che esso rappresenta abbandona il gioco.
Ciò si verifica quando un giocatore si disconnette, o quando un'entità viene rimossa dalla memoria.
Sbagliato: Da Minetest 5.2, i metodi degli ObjectRef ritorneranno sempre `nil` quando non validi.
In altre parole, ogni chiamata verrà ignorata.
Si dovrebbe evitare quanto possibile di immagazzinare gli ObjectRef in delle variabili.
Se ciò tuttavia accade, assicurati di controllare se esiste ancora, come illustrato qui di seguito:
```lua ```lua
minetest.register_on_joinplayer(function(player) -- questo codice funziona solo da Minetest 5.2 in poi
local function func() if obj:get_pos() then
local pos = player:get_pos() -- MALE! -- è valido!
-- `player` viene salvato per essere utilizzato dopo. end
-- Se il giocatore si disconnette, il server crasha
end
minetest.after(1, func)
foobar[player:get_player_name()] = player
-- RISCHIOSO
-- Non è consigliato fare così.
-- Usa invece minetest.get_connected_players() e minetest.get_player_by_name().
end)
```
Giusto:
```lua
minetest.register_on_joinplayer(function(player)
local function func(name)
-- Tenta di ottenere il riferimento
local player = minetest.get_player_by_name(name)
-- Controlla che il giocatore sia online
if player then
-- è online, procedo
local pos = player:get_pos()
end
end
-- Passa il nome nella funzione
minetest.after(1, func, player:get_player_name())
end)
``` ```
## Non fidarti dei campi dei formspec ## Non fidarti dei campi dei formspec

View File

@ -11,21 +11,21 @@ redirect_from: /it/chapters/releasing.html
Rilasciare (o pubblicare) una mod permette ad altre persone di poterne usufruire. Rilasciare (o pubblicare) una mod permette ad altre persone di poterne usufruire.
Una volta che una mod è stata rilasciata potrebbe venir usata nelle partite locali (a giocatore singolo) o nei server, inclusi quelli pubblici. Una volta che una mod è stata rilasciata potrebbe venir usata nelle partite locali (a giocatore singolo) o nei server, inclusi quelli pubblici.
- [Scegliere la licenza](#scegliere-la-licenza) - [Scegliere una licenza](#scegliere-una-licenza)
- [LGPL e CC-BY-SA](#lgpl-e-cc-by-sa) - [LGPL e CC-BY-SA](#lgpl-e-cc-by-sa)
- [CC0](#cc0) - [CC0](#cc0)
- [MIT](#mit) - [MIT](#mit)
- [Impacchettare](#impacchettare) - [Impacchettare](#impacchettare)
- [README.txt](#readmetxt) - [README.txt](#readmetxt)
- [description.txt](#descriptiontxt) - [mod.conf / game.conf](#modconf--gameconf)
- [screenshot.png](#screenshotpng) - [screenshot.png](#screenshotpng)
- [Caricare](#caricare) - [Caricare](#caricare)
- [Sistemi di Controllo Versione](#sistemi-di-controllo-versione) - [Sistemi di Controllo Versione](#sistemi-di-controllo-versione)
- [Allegati sul forum](#allegati-sul-forum) - [Allegati sul forum](#allegati-sul-forum)
- [Rilasciare su ContentDB](#rilasciare-su-contentdb)
- [Creare la discussione sul forum](#creare-la-discussione-sul-forum) - [Creare la discussione sul forum](#creare-la-discussione-sul-forum)
- [Titolo](#titolo)
## Scegliere la licenza ## Scegliere una licenza
Avrai bisogno di specificare una licenza per la tua mod. Avrai bisogno di specificare una licenza per la tua mod.
Questo è importante perché dice alle altre persone cosa possono e non possono fare col tuo lavoro. Questo è importante perché dice alle altre persone cosa possono e non possono fare col tuo lavoro.
@ -73,18 +73,18 @@ Il README dovrebbe dichiarare:
* Versione corrente della mod; * Versione corrente della mod;
* Eventualmente, dove segnalare i problemi o comunque richiedere aiuto. * Eventualmente, dove segnalare i problemi o comunque richiedere aiuto.
### description.txt ### mod.conf / game.conf
Questo file spiega cosa fa la mod. Assicurati di aggiungere una descrizione che spieghi cosa fa la mod, usando la chiave `description`.
Cerca di essere preciso e coinciso: dovrebbe essere breve perché il contenuto verrà mostrato nell'installer del motore di gioco, che ha uno spazio limitato. Cerca di essere preciso e coinciso: dovrebbe essere breve perché il contenuto verrà mostrato nell'installer del motore di gioco, che ha uno spazio limitato.
Per esempio, consigliato: Per esempio, consigliato:
Aggiunge zuppa, torte, pane e succhi. description = Aggiunge zuppa, torte, pane e succhi
Sconsigliato: Sconsigliato:
Cibo per Minetest. description = Cibo per Minetest
### screenshot.png ### screenshot.png
@ -95,84 +95,44 @@ Lo screen verrà mostrato nel bazar delle mod (sono tutte gratuite).
## Caricare ## Caricare
Per far sì che un potenziale utente possa scaricare la tua mod, c'è bisogno di caricarla in uno spazio pubblico. Per far sì che un potenziale utente possa scaricare la tua mod, c'è bisogno di caricarla in uno spazio pubblico.
Ci sono svariati modi per fare ciò quindi usa l'approccio che ritieni più opportuno; l'importante è che esso rispetti i requisiti qui elencati, ed eventuale richieste aggiuntive aggiunta dai moderatori del forum: Ci sono svariati modi per fare ciò quindi usa l'approccio che ritieni più opportuno; l'importante è che esso rispetti i requisiti qui elencati, ed eventuale richieste aggiuntive dei moderatori del forum:
* **Stabile** - Il sito che conterrà il file non dovrebbe essere propenso a morire da un momento all'altro senza preavviso; * **Stabile** - Il sito che conterrà il file non dovrebbe essere propenso a chiudere i battenti da un momento all'altro senza preavviso;
* **Link diretto** - Dovresti essere in grado di cliccare su un link sul forum e scaricare il file senza il bisogno di dover passare per altre pagine; * **Link diretto** - Dovresti essere in grado di cliccare su un link e scaricare il file senza il bisogno di dover passare per altre pagine;
* **Senza virus** - Le mod con contenuti malevoli saranno rimosse dal forum. * **Senza virus** - Le mod con contenuti malevoli saranno rimosse dal forum.
ContentDB soddisfa questi requisiti, richiedendo giusto un file .zip.
### Sistemi di Controllo Versione ### Sistemi di Controllo Versione
È consigliato usare un sistema di controllo versione che: Un Sistema di Controllo Versione (VCS, *Version Control System*) è un programma che gestisce i cambiamenti di altri programmi, spesso facilitandone la distribuzione e la collaborazione.
* Permetta agli altri sviluppatori di inviare le loro modifiche facilmente; La maggior parte dei creatori di mod su Minetest usa Git e un sito per ospitare il loro codice come GitHub o GitLab.
* Permetta al codice di essere visualizzato prima di essere scaricato;
* Permetta agli utenti di fare segnalazioni (bug, domande ecc).
La maggior parte dei creatori di mod su Minetest usa GitHub o GitLab come sito per ospitare il loro codice, ma esistono anche altre opzioni. Usare git può essere difficile all'inizio.
Usare siti come GitHub e GitLab può essere difficile all'inizio.
Se hai bisogno di una mano e mastichi l'inglese, prova a dare un occhio a [Pro Git book](http://git-scm.com/book/en/v1/Getting-Started) - gratis da leggere online. Se hai bisogno di una mano e mastichi l'inglese, prova a dare un occhio a [Pro Git book](http://git-scm.com/book/en/v1/Getting-Started) - gratis da leggere online.
### Allegati sul forum ## Rilasciare su ContentDB
Un'alternativa all'usare un sistema di controllo versione è il caricare le mod come allegati sul forum. ContentDB è il luogo ufficiale dove trovare e distribuire mod, giochi e pacchetti texture.
Questo può essere fatto alla creazione della discussione nella sezione delle mod (spiegato sotto). Gli utenti possono manualmente andare alla ricerca di contenuti tramite il sito, o scaricarli e installarli direttamente dall'integrazione presente nel menù principale di Minetest.
Prima di tutto, avrai bisogno di creare uno zip con i file della mod (il procedimento varia da sistema operativo a sistema operativo, ma solitamente si parla di premere il tasto destro su uno dei file dopo averli selezionati tutti). Iscriviti su [ContentDB](https://content.minetest.net) e aggiungi il tuo lavoro.
Assicurati di leggere le linee guida (in inglese) nella sezione d'aiuto (*Help*).
Quando crei una discussione sul forum - nella pagina "Create a Topic" illustrata sotto - vai alla "Upload Attachment" situata in basso.
Clicca poi su "Browse", selezionando il file zip.
È inoltre consigliato specificare la versione della mod nel campo dei commenti ("File comment").
<figure>
<img src="{{ page.root }}/static/releasing_attachments.png" alt="Upload Attachment">
<figcaption>
La scheda Upload Attachment.
</figcaption>
</figure>
## Creare la discussione sul forum ## Creare la discussione sul forum
Puoi anche creare una discussione sul forum per far in modo che gli utenti possano discutere ciò che hai fatto.
Per le mod usa la sezione ["WIP Mods"](https://forum.minetest.net/viewforum.php?f=9) (*Work In Progress*), per i giochi invece ["WIP Games"](https://forum.minetest.net/viewforum.php?f=50).
Puoi ora creare la discussione nella sezione ["WIP Mods"](https://forum.minetest.net/viewforum.php?f=9) (WIP sta per *Work In Progress*, lavori in corso).\\ Puoi ora creare la discussione nella sezione ["WIP Mods"](https://forum.minetest.net/viewforum.php?f=9) (WIP sta per *Work In Progress*, lavori in corso).\\
Quando ritieni che la tua mod abbia raggiunto la sua prima versione ufficiale, puoi [richiedere (in inglese) che venga spostata](https://forum.minetest.net/viewtopic.php?f=11&t=10418) in "Mod Releases". Quando ritieni che la tua mod abbia raggiunto la sua prima versione ufficiale, puoi [richiedere (in inglese) che venga spostata](https://forum.minetest.net/viewtopic.php?f=11&t=10418) in "Mod Releases".
La discussione dovrebbe contenere contenuti simili al README, con giusto un po' più di coinvolgimento e il link per scaricare la mod. La discussione dovrebbe contenere contenuti simili al README, con giusto un po' più di coinvolgimento e il link per scaricare la mod.
È buona cosa aggiungere anche degli eventuali screenshot per far capire al volo cosa fa la mod, se possibile. È buona cosa aggiungere anche degli eventuali screenshot per far capire al volo cosa fa la mod, se possibile.
La formattazione del forum di Minetest è in bbcode.
Segue un esempio di una mod chiamata "superspecial" (si è tenuto l'esempio in inglese dato che bisogna scrivere appunto in inglese sul forum, NdT):
Adds magic, rainbows and other special things.
See download attached.
[b]Version:[/b] 1.1
[b]License:[/b] LGPL 2.1 or later
Dependencies: default mod (found in minetest_game)
Report bugs or request help on the forum topic.
[h]Installation[/h]
Unzip the archive, rename the folder to superspecial and
place it in minetest/mods/
( GNU/Linux: If you use a system-wide installation place
it in ~/.minetest/mods/. )
( If you only want this to be used in a single world, place
the folder in worldmods/ in your world directory. )
For further information or help see:
[url]https://wiki.minetest.net/Installing_Mods[/url]
Se hai intenzione di usare questo esempio per la tua mod, ricordati ovviamente di cambiare "superspecial" con il nome vero e proprio.
### Titolo
Il titolo della discussione deve seguire uno dei seguenti formati: Il titolo della discussione deve seguire uno dei seguenti formati:
* [Mod] Nome mod [nomemod] * [Mod] Nome mod [nomemod]

View File

@ -12,7 +12,7 @@ La sicurezza è molto importante per evitare che una mod permetta di far perdere
- [Concetti fondamentali](#concetti-fondamentali) - [Concetti fondamentali](#concetti-fondamentali)
- [Formspec](#formspec) - [Formspec](#formspec)
- [Non fidarsi mai dei campi dei formspec](#non-fidarsi-mai-dei-campi-dei-formspec) - [Non fidarsi mai dei campi dei formspec](#non-fidarsi-mai-dei-campi-dei-formspec)
- [Il momento per controllare non è il momento dell'uso (Time of Check is not Time of Use)](#il-momento-per-controllare-non-e-il-momento-delluso-time-of-check-is-not-time-of-use) - [Il momento per controllare non è il momento dell'uso (Time of Check is not Time of Use)](#il-momento-per-controllare-non-è-il-momento-delluso-time-of-check-is-not-time-of-use)
- [Ambienti (non sicuri)](#ambienti-non-sicuri) - [Ambienti (non sicuri)](#ambienti-non-sicuri)
## Concetti fondamentali ## Concetti fondamentali