Disons que j'ai un jeu écrit en C ++. Mais je veux y ajouter des fonctionnalités de modding ou de script. Comment procéder pour ajouter une fonctionnalité de script à votre jeu?
Disons que j'ai un jeu écrit en C ++. Mais je veux y ajouter des fonctionnalités de modding ou de script. Comment procéder pour ajouter une fonctionnalité de script à votre jeu?
Réponses:
Tout d'abord, vous devez décider quelle partie de votre jeu est scriptée. Une option consiste à avoir un jeu entièrement scripté dans le sens où bien que les opérations de backend critiques soient codées en C ++, toute la logique du jeu est dans le langage de script. Les concepteurs utilisent le backend comme une API appelée à partir du langage de script de haut niveau. À l'autre extrême, vous pouvez avoir peu d'endroits spécifiques où les scripts sont utilisés, tels que l'interface utilisateur ou les séquences de script, la majorité du code du jeu étant toujours en C ++. Il y a des avantages à chaque approche (vitesse, flexibilité, temps de compilation, portée du jeu, etc.), mais vous devez en décider au préalable.
Une fois que vous savez comment vous souhaitez utiliser les scripts, vous devez maintenant décider si vous allez utiliser un langage de script existant ou votre propre langage spécifique au domaine . Aujourd'hui, il existe de nombreux langages de script avec différents objectifs de conception et différents publics cibles, donc je ne sais pas si cela vaut la peine de créer le vôtre. Si vous décidez de mettre en œuvre le vôtre, voici quelques ressources:
Lua est un langage de script léger et facile à intégrer. Il utilise une pile pour la communication entre l'hôte et le langage intégré et il a été utilisé avec succès dans de nombreux jeux professionnels . Sol2 simplifie le processus de liaison de Lua et C ++. Si vous n'aimez pas la syntaxe de Lua, Moonscript est un langage qui se compile en Lua et ajoute un bel ensemble de fonctionnalités.
D'autres options incluent AngelCode , qui vous permet d'appeler directement les fonctions C et C ++. Python et Ruby sont un peu plus complexes à intégrer, mais sont très agréables à programmer. Si vous souhaitez intégrer Python, jetez un œil à Boost.Python . Une autre idée consiste à intégrer JavaScript pour tirer parti des moteurs de script rapides développés pour les navigateurs (voir V8 et SpiderMonkey ).
J'ai écrit un article sur l'intégration du script GameMonkey à un jeu utilisant DragonFire SDK ici .
Fondamentalement, l'idée est d'exposer vos fonctions C \ C ++ au langage de script choisi et de les utiliser à partir de votre script. Dans mon tutoriel, j'ai exposé 2 fonctions du DragonFire SDK. Au début du jeu, j'appelle la fonction onStart à partir du script et lors de la mise à jour, j'appelle la fonction onTimer à partir du script.
J'espère que ça t'as aidé!