La filosofia progettuale di Godot

Ora che vi siete bagnati le mani, parliamo del progetto di Godot.

Every game engine is different and fits different needs. Not only do they offer a range of features, but the design of each engine is unique. This leads to different workflows and different ways to form your games' structures. This all stems from their respective design philosophies.

Questa pagina è qui per aiutarvi a capire come funziona Godot, a partire da alcuni dei suoi pilastri fondamentali. Non si tratta di un elenco delle caratteristiche disponibili, né di un confronto tra motori. Per sapere se un motore può essere adatto al tuo progetto, devi provarlo tu stesso e comprenderne il design e i limiti.

Guarda 'Scoprire Godot 3, il motore di gioco gratuito <https://youtu.be/4v3qge-3CqQ> se stai cercando una panoramica delle funzionalità del motore.

Progettazione e composizione orientata all'oggetto

Godot abbraccia il design orientato agli oggetti al suo interno con il suo sistema flessibile di scene e la gerarchia dei Nodi, e cerca di stare lontano da rigidi schemi di programmazione per offrire un modo intuitivo per strutturare il tuo gioco.

Per prima cosa, Godot consente di comporre o aggregare scene. È come un prefabbricato annidato: è possibile creare una scena LuceAccesa una scena LanternaRotta che utilizza LuceAccesa. Poi, creare una città piena di LanterneRotte. Cambia il colore di LuceAccesa, salva, e tutte le LanterneRotte della città si aggiornano istantaneamente.

Inoltre, puoi ereditare da qualsiasi scena.

A Godot scene could be a Weapon, a Character, an Item, a Door, a Level, part of a level… anything you'd like. It works like a class in pure code, except you're free to design it by using the editor, using only the code, or mixing and matching the two.

It's different from prefabs you find in several 3D engines, as you can then inherit from and extend those scenes. You may create a Magician that extends your Character. Modify the Character in the editor and the Magician will update as well. It helps you build your projects so that their structure matches the game's design.

image0

Also note that Godot offers many different types of objects called nodes, each with a specific purpose. Nodes are part of a tree and always inherit from their parents up to the Node class. Although the engine does feature components like collision shapes, they're the exception, not the norm.

image1

Lo sprite è un Node2D, un CanvasItem e un Node. Ha tutte le proprietà e le caratteristiche delle sue tre classi madri, come le trasformazioni o la possibilità di disegnare forme personalizzate e renderizzare con uno shader personalizzato.

Pacchetto all-inclusive

Godot cerca di fornire i propri strumenti per rispondere ai bisogni più comuni. Ha uno spazio di lavoro dedicato allo scripting, un editor di animazione, un editor di tilemap, un editor di shader, un debugger, un profiler, la possibilità di caricare a caldo localmente e su dispositivi remoti, ecc.

image2

L'obiettivo è quello di offrire un pacchetto completo per creare giochi e un'esperienza utente continuativa. È ancora possibile lavorare con programmi esterni, purché ci sia un plugin per l'importazione. Oppure è possibile crearne uno, come l'importatore di mappe piastrellate <https://github.com/vnen/godot-tiled-importer>.

That is also partly why Godot offers its own programming languages GDscript and VisualScript, along with C#. They're designed for the needs of game developers and game designers, and they're tightly integrated in the engine and the editor.

GDscript permette di scrivere codice semplice usando una sintassi simile a Python, ma rileva i tipi e offre un auto-completamento statico a livello di linguaggio di programmazione. È anche ottimizzato programmare giochi con tipi integrati quali Vettori e Colori.

Nota che con GDNative, puoi scrivere codice ad alte prestazioni usando linguaggi compilati come C, C++, Rust, o Python (usando il compilatore Cython) senza ricompilare il motore.

image3

VisualScript è un linguaggio di programmazione basato su nodi che si integra bene nell'editor. È possibile trascinare e rilasciare nodi o risorse nel grafico per creare nuovi blocchi di codice.

Note that the 3D workspace doesn't feature as many tools as the 2D workspace. You'll need external programs or add-ons to edit terrains, animate complex characters, and so on. Godot provides a complete API to extend the editor's functionality using game code. See The Godot editor is a Godot game below.

image4

Un plugin dell'editor di Godot 2 per le Macchine a Stati fatto da kubecz3k. Permette di gestire stati e transizioni in maniera visuale.

Open source

Godot offers a fully open source codebase under the MIT license. This means all the technologies that ship with it have to be Free (as in freedom) as well. For the most part, they're developed from the ground up by contributors.

Anyone can plug in proprietary tools for the needs of their projects — they just won't ship with the engine. This may include Google AdMob, or FMOD. Any of these can come as third-party plugins instead.

On the other hand, an open codebase means you can learn from and extend the engine to your heart's content. You can also debug games easily, as Godot will print errors with a stack trace, even if they come from the engine itself.

Nota

This does not affect the work you do with Godot in any way: there's no strings attached to the engine or anything you make with it.

Gestito dalla comunità

Godot is made by its community, for the community, and for all game creators out there. It's the needs of the users and open discussions that drive the core updates. New features from the core developers often focus on what will benefit the most users first.

That said, although a handful of core developers work on it full-time, the project has over 600 contributors at the time of writing. Benevolent programmers work on features they may need themselves, so you'll see improvements in all corners of the engine at the same time in every major release.

L'editor di Godot è un gioco sviluppato in Godot

The Godot editor runs on the game engine. It uses the engine's own UI system, it can hot-reload code and scenes when you test your projects, or run game code in the editor. This means you can use the same code and scenes for your games, or build plugins and extend the editor.

Questo conduce a un sistema d'interfaccia affidabile e flessibile, dato che esso supporta l'editor stesso. Con lo strumento keyword, puoi eseguire qualsiasi codice di gioco nell'editor.

image5

RPG in a Box is a voxel RPG editor made with Godot 2. It uses Godot's UI tools for its node-based programming system and for the rest of the interface.

Posiziona lo strumento keyword sopra qualsiasi file GDScript ed esso verà eseguito nell'editor. Questo ti consente di importare ed esportare plugins, creare plugin come editor di livelli personalizzati, o creare script con gli stessi nodi e API che utilizzi nei tuoi progetti.

Motori 2D e 3D separati

Godot offre motori di rendering 2D e 3D dedicati. Di conseguenza, l'unità di base per le scene 2D è il pixel. Anche se i motori sono separati, è possibile renderizzare il 2D in 3D, il 3D in 2D, e sovrapporre gli sprite e le interfacce 2D nel tuo mondo 3D.