Non , du moins, probablement pas.
Il s'agit d'un cas très fréquent de réinventer la roue est le développement de jeux, une erreur qui est encore assez populaire.
Si vous posez cette question, vous êtes très susceptible d'être influencé par ce que font les autres, alors regardez simplement ce qu'Epic Games vient de faire avec le moteur Unreal:
- UE3 avait un truc UnrealScript personnalisé, bizarre, non optimisé et difficile à déboguer,
- Si la rumeur est vraie, son support est supprimé dans UE4 , au profit des DLL C ++ rechargeables à chaud.
Pensez-vous que vous pouvez faire mieux qu'Epic?
La création de langages de programmation appartient aux créateurs de langages de programmation , pas aux ingénieurs de jeux.
Il faut des années et des années pour qu'une langue atteigne sa pleine maturité, et l'ensemble d'outils qui l'accompagne (compilateur, éditeur de liens, interprète, débogueur ..) est utilisable. De nos jours, vous avez beaucoup de solutions disponibles à portée de main, donc il n'y a absolument aucune vraie raison de commencer une nouvelle chose à partir de zéro, du moins pas si le but est simplement de faire un jeu. Période.
Pour répondre à vos questions secondaires, non, pour ces mêmes raisons, je n'ai jamais implémenté mon propre langage de script. Mais j'ai beaucoup souffert avec certains à moitié cuits. Parce qu'ils ont été créés avec une fonctionnalité très étroite à l'esprit, ils ont toujours eu ces petites bizarreries folles qui vous rendent fou. Souvent, vous vous retrouverez à passer énormément de temps à essayer de contourner les limites du langage au lieu de simplement créer votre jeu.
Si la raison pour laquelle vous voulez créer un langage est parce qu'il est destiné à être utilisé par des personnes qui ne connaissent pas très bien la programmation, ou si vous pensez en avoir besoin parce que vous voulez quelque chose de très spécifique au domaine, permettez-moi de vous dire que ce sont également mauvaises raisons. Vous pouvez écrire une API de très haut niveau avec des fonctions qui do_what_they_say_and_say_what_they_do()
, et du code passe-partout très simple qui expose son utilisation de base. Vos utilisateurs peu techniques seront heureux d'apprendre un peu de programmation et vous serez heureux de ne pas être limités par un langage mal implémenté.
Donc, comme cela peut sembler un peu brusque ou même dur, je dirai qu'il y a un cas où cela pourrait avoir un sens: si vous voulez apprendre comment un langage de script est fait. Mais s'il vous plaît, s'il vous plaît, ne forcez pas les autres à l'utiliser.
modifier
Je viens de jeter un œil à la liste de commandes Cave Story que vous avez liée. Aie:
<ECJx:y [EC?] Jump @ Jump to event Y if any npc with ID X is present
Je ne veux pas manquer de respect au développeur derrière Cave Story, mais ceci est un exemple parfait d'une liste de commandes simple qui a muté dans un langage de script personnalisé incontrôlable. Cela peut être encore utilisable pour un seul développeur ou une très petite équipe, mais à ce stade, je vous conseille de passer à un langage Turing complet et bien testé (par exemple Lua), où vous pourriez faire:
if (npc.id == x) then
jump_to_event(y)
end
Cela rendra les choses beaucoup plus faciles lorsque, par exemple, vous aurez besoin d'une condition plus complexe:
if (npc.id == x) or (npc.type == "enemy") then
jump_to_event(y)
end