Não. Pelo menos, provavelmente não.
Este é um caso muito frequente de reinventar a roda no desenvolvimento de jogos, um erro que ainda é bastante popular.
Se você está fazendo essa pergunta, é muito provável que seja influenciado pelo que os outros fazem, então veja o que a Epic Games acabou de fazer com o Unreal Engine:
- O UE3 tinha uma coisa UnrealScript personalizada, estranha, não otimizada e difícil de depurar,
- Se o boato for verdadeiro, seu suporte será removido no UE4 , em favor de DLLs C ++ recarregáveis a quente.
Você acha que pode fazer melhor que a Epic?
A criação de linguagens de programação pertence aos criadores da linguagem de programação , não aos engenheiros de jogos.
Leva anos e anos para que um idioma se torne totalmente maduro e seu conjunto de ferramentas que o acompanha (compilador, vinculador, intérprete, depurador ...) utilizável. Atualmente, você tem muitas soluções disponíveis, então não há absolutamente nenhuma razão real para começar uma coisa nova do zero, pelo menos não se o objetivo é simplesmente criar um jogo. Período.
Para responder às suas perguntas secundárias, não, por esses mesmos motivos, nunca implementei minha própria linguagem de script. Mas sofri muito com alguns mal cozidos. Como eles foram criados com um recurso muito restrito em mente, eles sempre tiveram esses pequenos truques insanos que o deixam louco. Muitas vezes, você passa muito tempo tentando solucionar as limitações do idioma em vez de apenas fazer o seu jogo.
Se o motivo pelo qual você deseja criar uma linguagem é porque ela é destinada ao uso por pessoas que não conhecem muito bem a programação ou se você acredita que precisa disso porque deseja algo muito específico do domínio, deixe-me dizer que também razões ruins. Você pode escrever uma API de nível muito alto com funções que do_what_they_say_and_say_what_they_do()
e algum código clichê muito simples que expõe seu uso básico. Seus usuários não tão técnicos terão prazer em aprender um pouco de programação e você ficará feliz em não ser limitado por uma linguagem mal implementada.
Portanto, como isso parecerá um tanto abrupto ou até severo, direi que há um caso em que poderia fazer sentido: se você quiser aprender como é criada uma linguagem de script. Mas, por favor, por favor, se você fizer isso: não force outras pessoas a usá-lo.
Editar
Acabei de dar uma olhada na lista de comandos do Cave Story que você vinculou. Ai:
<ECJx:y [EC?] Jump @ Jump to event Y if any npc with ID X is present
Não quero mostrar desrespeito ao desenvolvedor por trás do Cave Story, mas este é um exemplo perfeito de uma lista de comandos simples que sofreu uma mutação em uma linguagem de script personalizada incontrolável. Isso ainda pode ser usado por um único desenvolvedor ou por uma equipe muito pequena, mas, neste estágio, aconselho a mudar para uma linguagem Turing completa e bem testada (por exemplo, Lua), onde você pode fazer:
if (npc.id == x) then
jump_to_event(y)
end
Isso facilitará muito as coisas quando, por exemplo, você precisará de uma condição mais complexa:
if (npc.id == x) or (npc.type == "enemy") then
jump_to_event(y)
end