No. Almeno, probabilmente no.
Questo è un caso molto frequente di reinventare la ruota è lo sviluppo del gioco, un errore che è ancora abbastanza popolare.
Se stai ponendo questa domanda, molto probabilmente sarai influenzato da ciò che fanno gli altri, quindi dai un'occhiata a ciò che Epic Games ha appena fatto con Unreal Engine:
- UE3 aveva un oggetto UnrealScript personalizzato, strano, non ottimizzato, difficile da eseguire il debug,
- Se la voce è vera, il suo supporto viene rimosso in UE4 , a favore di DLL C ++ ricaricabili a caldo.
Pensi di poter fare meglio di Epic?
La creazione di linguaggi di programmazione appartiene ai creatori di linguaggi di programmazione , non agli ingegneri di gioco.
Ci vogliono anni e anni prima che una lingua diventi completamente matura e che il relativo set di strumenti (compilatore, linker, interprete, debugger ...) sia utilizzabile. Al giorno d'oggi hai molte soluzioni disponibili a portata di mano, quindi non c'è assolutamente alcun motivo reale per iniziare una nuova cosa da zero, almeno non se l'obiettivo è semplicemente quello di fare un gioco. Periodo.
Per rispondere alle tue domande secondarie, no, proprio per questi motivi non ho mai implementato il mio linguaggio di scripting. Ma ho sofferto molto con alcuni semi-cotti. Poiché sono stati creati pensando a una funzionalità molto ristretta, hanno sempre avuto queste piccole stranezze folli che ti fanno impazzire. Spesso ti ritroverai a passare moltissimo tempo a cercare di aggirare i limiti della lingua invece di creare il tuo gioco.
Se il motivo si desidera creare una lingua è, perché è destinato all'uso da parte di persone che non conoscono la programmazione molto bene, o se credete avete bisogno perché si vuole qualcosa di molto Domain-Specific, lasciate che vi dica queste sono anche cattive ragioni. È possibile scrivere un'API di livello molto elevato con funzioni che do_what_they_say_and_say_what_they_do()
e un codice della caldaia molto semplice che ne espone l'utilizzo di base. I tuoi utenti non così tecnici saranno felici di imparare un po 'di programmazione e sarai felice di non essere limitato da un linguaggio mal implementato.
Quindi, dato che questo sembrerà un po 'brusco o addirittura duro, dirò che c'è un caso in cui potrebbe avere senso: se vuoi imparare come è fatto un linguaggio di scripting. Ma per favore, per favore, se lo fai: non forzare gli altri a usarlo.
modificare
Ho appena dato un'occhiata all'elenco dei comandi di Cave Story che hai collegato. Ahia:
<ECJx:y [EC?] Jump @ Jump to event Y if any npc with ID X is present
Non voglio mostrare mancanza di rispetto allo sviluppatore dietro Cave Story, ma questo è un perfetto esempio di un semplice elenco di comandi mutato in un linguaggio di scripting personalizzato incontrollabile. Questo potrebbe essere ancora utilizzabile per un singolo sviluppatore o un team molto piccolo, ma in questa fase ti consiglio di passare a un linguaggio completo e ben collaudato di Turing (ad esempio Lua), dove puoi fare:
if (npc.id == x) then
jump_to_event(y)
end
Ciò renderà le cose molto più facili quando, ad esempio, avrai bisogno di una condizione più complessa:
if (npc.id == x) or (npc.type == "enemy") then
jump_to_event(y)
end