Un script est généralement un morceau de code qui s'exécute en dehors de votre moteur principal. Il est généralement contenu dans des fichiers texte où vous le souhaitez. Ensuite, il est généralement chargé par le moteur, analysé et exécuté au moment de l'exécution.
Ce qui se passe généralement, c'est que quel que soit le langage que vous utilisez (Lua, Angelscript par exemple), ce langage dispose généralement de certaines fonctionnalités qui permettent au programmeur de moteur d'exposer des fonctions de moteur ou même des classes entières à l'instance du "moteur de script" en cours d'exécution. .
Par exemple (exemple totalement stupide, mais juste pour faire passer le message), votre code de jeu peut avoir une fonction publique qui génère des zombies quelque part:
void SpawnZombie(int x, int y, int hp /* whatever else */)
{
//...
}
Le langage de script que vous utilisez maintenant vous permet d'exposer cette fonction à l'analyseur de script en cours d'exécution. Cela signifie effectivement que vous pouvez ouvrir un fichier texte, écrire "SpawnZombie (200,300,1337)" et une fois que votre moteur exécute le code, un Zombie apparaîtra à cet emplacement.
Les autres réponses énumèrent déjà quelques bons exemples de la façon dont cela est généralement utilisé, mais elles omettent un point que je trouve très important:
Ces types de scripts facilitent le débogage ou le test du gameplay pendant l'exécution.
Supposons que vous vouliez trouver le moyen idéal pour placer un zombie sur la carte afin qu'il ait l'effet d'effarouchement maximal sur le joueur une fois qu'il l'a découvert. Sans prise en charge des scripts, vous devez quitter l'application, modifier certains nombres magiques dans le code, recompiler et tester.
Avec la prise en charge des scripts (à condition que vous disposiez déjà d'une méthode de saisie de texte pendant l'exécution, par exemple une console de débogage), il vous suffit de taper "SpawnZombie (333 444 555)" et de voir à quoi cela ressemble.
De la même manière, il pourrait vous être possible de faire apparaître des armes, des véhicules, de charger différentes cartes, de modifier les valeurs de certaines choses dans le jeu, etc. testé etc.
Cela vous fera économiser des tonnes de temps dans des jeux plus complexes.