Come sviluppare un gioco con Godot

Godot è un Motore grafico open-source, sviluppato dall’argentino Juan Linietsky, è un programma multipiattafroma presente su Windows, GNU/Linux, Mac OS, FreeBSD,(ultimamente sta ed è progettato per creare giochi 2D e 3D destinati a PC, dispositivi mobili e web.
Godot sta sotto la licenza MIT, Nessun vincolo, nessuna royalty, niente. Il tuo gioco è tuo, fino all’ultima riga di codice.

Godot è scaricavile da: https://godotengine.org/

Caratteristiche

Godot mira a offrire un ambiente di sviluppo di giochi completamente integrato. Consente agli sviluppatori di creare un gioco, senza bisogno di altri strumenti oltre a quelli utilizzati per la creazione di contenuti (risorse visive, musica, ecc.). L’architettura del motore è costruita attorno al concetto di un albero di “nodi”. I nodi sono organizzati all’interno di “scene”, che sono gruppi di nodi riutilizzabili, istanziabili, ereditabili e nidificabili. Tutte le risorse di gioco, inclusi script e risorse grafiche, vengono salvate come parte del file system del computer (piuttosto che in un database). Questa soluzione di archiviazione ha lo scopo di facilitare la collaborazione tra i team di sviluppo di giochi che utilizzano sistemi di controllo della versione del software.

Scripting

Godot supporta una varietà di linguaggi di programmazione per creare giochi, incluso il linguaggio integrato GDScript e C#. Inoltre, il motore include GDNative, una struttura per creare associazioni con altre lingue. I linguaggi GDNative supportati ufficialmente includono C e C++. Le lingue supportate dalla community includono Rust, Nim, JavaScript, Haskell, Clojure, Swift e D. È supportata anche la codifica visiva, tramite il linguaggio integrato VisualScript, progettato per essere un equivalente grafico di GDScript. L’editor Godot include un editor di testo con rientro automatico, evidenziazione della sintassi e completamento del codice. Dispone inoltre di un debugger con la possibilità di impostare punti di interruzione e stepping del programma.

GdScript

Godot ha il proprio linguaggio di scripting integrato, GDScript, un linguaggio di programmazione di alto livello, è dinamicamente che è sintatticamente simile a Python. A differenza di Python, GDScript è ottimizzato per l’architettura su scene di Godot e può specificare una digitazione rigorosa delle variabili. Gli sviluppatori di Godot hanno affermato che molti linguaggi di scripting di terze parti alternativi come Lua, Python e Squirrel sono stati testati prima di decidere che l’utilizzo di un linguaggio personalizzato consentiva un’ottimizzazione e un’integrazione dell’editor superiori.

Un semplice “Hello World” scritto su GDScript:

func _ready():
	print("Hello World")

Una semplice equazione matematica su GDScript:

var expression = Expression.new()
expression.parse("20 + 10*2 - 5/2.0")
var result = expression.execute()
print(result)  # 37.5

Rendering

Il motore grafico di Godot utilizza OpenGL ES 3.0 per tutte le piattaforme supportate; in caso contrario, viene utilizzato OpenGL ES 2.0. È in fase di sviluppo il supporto futuro per Vulkan, che include anche la possibilità di supporto per Metal utilizzando MoltenVK. Il motore supporta la mappatura normale, la specularità, le ombre dinamiche che utilizzano le mappe delle ombre, l’illuminazione globale dinamica e cotta e gli effetti di post-elaborazione a schermo intero come bloom, DOF, HDR e correzione gamma. È incorporato anche un linguaggio shader semplificato, simile a GLSL. Gli shader possono essere utilizzati per i materiali e la post-elaborazione. In alternativa, possono essere creati manipolando i nodi in un editor visuale.

Godot include anche un motore grafico 2D separato che può funzionare indipendentemente dal motore 3D. Il motore 2D supporta funzionalità come luci, ombre, shader, set di tessere, scorrimento parallasse, poligoni, animazioni, fisica e particelle. È anche possibile combinare 2D e 3D utilizzando un “nodo viewport”.

Funzionalità

Godot contiene un sistema di animazione con una GUI(interfaccia grafica) per animazioni scheletriche, blending, alberi di animazione, morphing e filmati in tempo reale. Quasi tutte le variabili definite o create su un’entità di gioco possono essere animate. Il motore utilizza Bullet per la simulazione fisica 3D.

Le caratteristiche aggiuntive includono:

  • Grafici di analisi delle prestazioni
  • Cottura leggera
  • Multithreading
  • Sistema di plugin
  • Obiettivi di rendering
  • Riproduzione video utilizzando il codec Theora
  • Riproduzione audio di codec Ogg Vorbis, MP3 e WAV
  • Sistema di particelle
  • Pipeline di importazione/esportazione/compressione di texture
  • Supporto Navmesh
  • Interfaccia grafica utente
  • Supporto per tastiera, mouse, gamepad e touchscreen

Comunità

Molti giochi di OKAM Studio sono stati realizzati utilizzando Godot, Inoltre, è stato utilizzato nel curriculum delle scuole superiori del West Virginia, per la sua facilità d’uso per i non programmatori e per quella che viene descritta come una “ricchezza di materiali didattici già esistenti per il software”.
Come progetto internazionale ha una comunità attiva in tutto il mondo. Alcuni membri della comunità sono amministratori di gruppi Godot locali. “Godot Francophone”, “Godot Engine Russia”, “Godot Italia” e “Godot Iran” sono le più grandi comunità locali Godot.

Inizio

Quando apri Godot ti ritrovi in una questa finestra:

Quando aprire Godot per la prima volta vi chiederà:

https://cdn.discordapp.com/attachments/849982724768399380/896154523968610335/IMG20211008233040.jpg

Se fate Open Assed Library vi troverete dei progetti di prova, altrimenti trovere tutto vuoto.
Ricrodatevi che tutti i progetti nuovi che create vanno sempre sotto.
(se volete studiarvi per bene la creazione dei giochi

Se siete nella versione Windows insieme all’applicazione si aprirà anche un prompt dei comandi

Tutto normale, se lo chiudete, si chiuderà tutta l’applicazione
È un debugger che mostra degli eventi che farai dell’editor o errori che hai avuto.

Creazione di un nuovo progetto


Apri l’applicazione Godot che scarichiamo per vedere il Project Manager. Qui possiamo creare
progetti, visualizzarne altri e scaricare modelli.
Fai clic sul pulsante Nuovo progetto per creare un nuovo progetti

Questo aprirà una nuova finestra.

  1. Inserisci un nome per il tuo progetto
  2. Fare clic sul pulsante Crea cartella per creare una nuova cartella per il progetto in Documenti
    cartella
  3. Fai clic sul pulsante Crea e modifica per avviare il motore e iniziare a creare il gioco

Quando apri il progetto ti immergi direttamente in questa schermata:

Bisogna creare il gioco in una cartella vuota altrimenti non potete andare avanti.

Esplorando l’editor

Quando viene visualizzato l’editor, può sembrare piuttosto scoraggiante con tutti i pulsanti e le opzioni, ma cerchiamo abbatterlo.

Godot ha 4 pannelli principali che useremo per creare il nostro gioco e ognuno serve uno specifico
scopo.

  1. Questo è il pannello Scena. Mostrerà il layout del nodo e la gerarchia della scena
    ci siamo attualmente. A breve esamineremo cosa sono una scena e un nodo.
  2. Il pannello FileSystem ci mostra tutte le risorse ei file che abbiamo. Sprite, modelli,
    script, scene, cartelle, audio, ecc.
  3. Qui è dove possiamo vedere e creare il nostro gioco. Spostare le cose, selezionare,
    scripting, ecc. Sopra questo pannello ci sono quattro pulsanti che attivano o disattivano il pannello
    diventa. Possiamo passare tra le modalità 2D e 3D, l’editor di script e l’esterno
    libreria di risorse.
  4. Questo è l’Inspector e questo ci mostra i dettagli di un nodo quando ne selezioniamo uno. Il
    posizione, rotazione e qualsiasi altro attributo che possiamo modificare.
schermata 3D
schermata 2D

Gli spazi di lavoro

  • 2D: questo spazio di lavoro viene utilizzato per modificare scene 2D. Viene utilizzato anche nei giochi 3D per progettare interfacce utente.
  • 3D: in questo spazio di lavoro puoi lavorare con oggetti 3D, luci e livelli di design per giochi 3D.
  • Script: questo è l’editor di codice in cui scriveremo gli script. Ha il completamento automatico, il debugger e il riferimento al codice integrato.
  • AssetLib: questa è una libreria di risorse che puoi utilizzare nei tuoi progetti gratuitamente.

Come funziona Godot?

Sopra stavamo parlando di scene e nodi. Quali sono? Bene, un gioco in Godot è fatto
di una gerarchia di nodi. Un nodo può essere qualsiasi cosa: un giocatore, una telecamera, un modello 3D, una luce, un’interfaccia utente, ecc.
I nodi costituiscono tutte le entità del tuo gioco e hanno anche la capacità di essere figli di un altro
nodo.
Ecco un esempio di un giocatore in un gioco. Innanzitutto, abbiamo il nodo KinematicBody che può
controllare il movimento e alcune interazioni fisiche. Poi, come figlio di questo, abbiamo un collisore
e nodo sprite. Quando il nodo del corpo cinematico si muove, ruota, ecc. gli altri seguiranno. Persino
se eliminiamo il nodo padre, i figli seguiranno.

I giochi in Godot sono costituiti da molti nodi genitore-figlio per creare i vari diversi
elementi e sistemi di un gioco.
Poiché un gioco è composto da nodi, alla fine arriverà a un punto in cui ce ne sono centinaia o
anche migliaia di loro nel pannello dell’albero della scena. Questo renderà difficile trovarne alcuni e
nel complesso rendono il lavoro sul gioco confuso. Per risolvere questo problema, possiamo dividere i nostri nodi in scene.
Le scene sono pacchetti di nodi autonomi che possiamo quindi inserire in altre scene come nodi.
Prendiamo l’esempio del nostro giocatore e trasformiamo quella gerarchia di nodi in una scena.
È un file salvato nel FileSystem che possiamo poi trascinare in un’altra scena.

Un vantaggio di dividere il gioco in nodi è anche il fatto che possiamo eliminare la necessità di
ripetere strutture di nodi comuni. Invece di avere 100 nodi tile che hanno tutti uno sprite,
collider, ecc. tutti nella stessa scena, possiamo semplicemente crearne uno come scena e trascinarlo dentro
più istanze.
Esploreremo nodi e scene durante questo progetto.

Creare la nostra prima scena

Alright, let’s get started on our 2D platformer project. First, we’ll need to create a main scene
which will be the basis for our game, containing other scenes such as the player, tiles, coins,
and enemies.
In the scene panel, click on the 2D Scene button to create a new 2D scene.

Con il nostro nuovo nodo, facciamo doppio clic su di esso e rinominiamolo in pulsante

Proviamo a creare una piccola cosa, aggiumgiamo un pulsante

premiamo sul più e scegliamo “button”

E vediamo questo quadratino che cliccandolo possiamo ingrandire

Mettiamolo al centro e proviamo a mettere un testo.
Con questo elemento è facilissimo, basta andare su “text” sotto button

Proviamo a far uscire “Ciao Mondo” al momento scriviamo nel pulsante “premi qui”, e ricordatevi di salvare il progetto per vedere apparire l’elemento che abbiamo aggiunto.

dopo aver salvato, mettiamo “label”

E mettiamo tutto sotto Control, e sempre su Control clicchiamo allega nuovo script

Vi troverete in una schermata del genere

Connettiamo un segnale in questo caso button dowm.

Facciamo una cosa del genere

mettiamo anche un pulsante reset.

E proviamo il gioco cliccando nel triangolino in alto a destra, e possiamo provare il funzionamento!

Vi spunta poi una finestra di debug, e come possiamo vedere funziona tranquillamente se premiamo

Tileset editor

I tileset sono un’insieme di più “pezzi di sprite” usati per costruire un livello, su Godot possiamo aggiungerli in questo modo :

Appena creato il Tilemap ci ritroviamo questa schermata a cui dobbiamo prestare attenzione.

Andiamo su Tile set e andiamo a creare un “Nuovo Tileset”

Facciamo doppio click su Tileset

Se clicchiamo in basso a destra ingrandiamo la schermata di lavoro, invece in quella di sinistra.

Useremo questa immagine per costruire il nostro livello(ringrazio Grevius Studio)

Selezioniamo l’immagine AutoTile

In caso non lo fossero già 16×16, ricordatevi di cambiare i valori.
Clicchiamo su Nuovo Tile singolo e mettiamo la griglia

Possiamo creare i tileset in questo modo:

invece per fare gli autotile:

Mettere la collisione:

Le collisioni sono importantissime, senza di esse il nostro giocatore cadrà nel vuoto.

Se volete che quei tileset siano attraversabili da sotto dovete mettere il check sul selected_collision_one_way.

Per mettere un o sprite e renderlo utilizzabile dobbiamo creare un nodo Kinematicbody2D e affidargli 2 nodi figli uno sprite e l’altro collisionshape2D per caricare l’immagine che vogliamo dobbiamo fare click su Texture e poi carica(ovviamente dobbiamo trascinare prima l’immagine che volete utilizzare su Filesystem.

Per mettere il collisionShape2D dobbiamo selezionare prima l’opzione shape, nel mio caso ho preso il rectangoleshape, e dopo possiamo iniziare a disegnare le collisioni attorno al nostro sprite.

Dopo aver sistemato le immagini dobbiamo iniziare a fare uno script.

extends KinematicBody2D # espando lo script per il nodo di movimento KinematicBody

const pavimento = Vector2(0,-1) # dichiaro una costante che rappresenta le posizioni nello spazio 2D 

var gravita = 10
var velocita = 100.0
var acc = Vector2() # dichiaro una variable che ha una posizione nello spazio 2D
var vel_gio = 0.0
var salto = -350.0

func _physics_process(delta: float)-> void: # dichiaro una funziona interna che geistische i passaggi fisici
	get_inputs() # ottieni inputs
	
	acc.y = acc.y + gravita # inizializzo una gravità che spinge lo sprite verso il basso
	acc.x = lerp(acc.x, vel_gio, 0.5)  # setto il movimento orizzontale, il lerp fa rallentare il personggio di mezzo secondo quando ti fermi
	acc = move_and_slide(acc, pavimento) # la funzione interna move_and_slde utilizza le collesioni date 
func get_inputs()-> void: 
	if Input.is_key_pressed(KEY_Z) && is_on_floor() : # Col pulsante Z il giocatore salta se si trova sul pavimento
		acc.y = salto
	vel_gio = (Input.get_action_strength("ui_right") - Input.get_action_strength("ui_left")) * velocita # vengon gestisi i controlli dello sprite tramite le freccette

Mettiamo questo script sul kinematicbody:

E come possiamo vedere funziona.

Consiglio di studiarsi un po’ il codice e di guardare la documentazione di Godot

Farò sicuramente altre pagine su come usare Godot, quindi state sintonizzati.

La storia dei fumo
Link vari

/ 5
Grazie per aver votato!
mycus
Author: mycus