Uno script è in genere un pezzo di codice che viene eseguito al di fuori del tuo motore principale. Di solito è contenuto in file di testo ovunque tu voglia mantenerli. Quindi viene solitamente caricato dal motore, analizzato ed eseguito in fase di esecuzione.
Ciò che generalmente accade è che qualunque sia la lingua che usi (ad esempio Lua, Angelscript), questa lingua di solito ha alcune funzionalità che consentono al programmatore del motore di esporre le funzioni del motore o persino intere classi all'istanza del "motore di scripting" attualmente in esecuzione .
Ad esempio (esempio totalmente stupido, ma solo per far capire il punto) il tuo codice di gioco potrebbe avere una funzione pubblica che genera zombi da qualche parte:
void SpawnZombie(int x, int y, int hp /* whatever else */)
{
//...
}
Il linguaggio di scripting utilizzato ora consente di esporre questa funzione al parser di script in esecuzione. Ciò significa effettivamente che è possibile aprire un file di testo, scrivere "SpawnZombie (200.300,1337)" e una volta che il motore esegue il codice, uno Zombi verrà generato in quella posizione.
Le altre risposte elencano già un paio di buoni esempi di come questo è tipicamente usato, ma tralasciano un punto che trovo molto importante:
Questo tipo di script semplifica il debug o il test del gameplay durante il runtime.
Diciamo che vuoi capire il modo perfetto per posizionare uno zombi sulla mappa in modo che abbia il massimo effetto di paura sul giocatore una volta scoperto. Senza il supporto degli script, dovresti uscire dall'applicazione, modificare alcuni numeri magici nel codice, ricompilarlo e testarlo.
Con il supporto per gli script (purché tu abbia già un metodo per inserire il testo durante il runtime, ad esempio una console di debug), digita semplicemente "SpawnZombie (333.444.555)" e vedi come appare.
Allo stesso modo potrebbe essere possibile generare armi, veicoli, caricare mappe diverse, modificare i valori di alcune cose nel gioco, ecc., Instaurare i nemici perché non si vuole perdere tempo a raggiungere la parte che deve essere testato ecc.
Ciò ti farà risparmiare un sacco di volte in giochi più complessi.