Come si aggiunge un linguaggio di scripting a un gioco?


25

Diciamo che ho un gioco scritto in C ++. Ma voglio aggiungere alcune funzionalità di modding o scripting ad esso. Come si potrebbe fare per aggiungere una funzionalità di scripting al gioco?


Il linguaggio più popolare: vedi Lua (linguaggio di programmazione) e Lua (lingua di programmazione) - Esempio API C : IBM ha un ottimo articolo su questo: Embedding LUA
Tamara Wijsman,

I passaggi esatti dipendono in modo massiccio dalla lingua che si desidera aggiungere. Dai
tenpn

Risposte:


27

Prima di tutto, dovresti decidere quale parte del tuo gioco è scritta. Un'opzione è quella di avere un gioco completamente scriptato, nel senso che mentre le operazioni di backend critiche nel tempo sono codificate in C ++, tutta la logica del gioco è nel linguaggio di scripting. I progettisti utilizzano il backend come un'API chiamata dal linguaggio di scripting di alto livello. Dall'altro estremo, puoi avere alcuni posti specifici in cui vengono usati gli script, come l'interfaccia utente o le sequenze con script, con la maggior parte del codice di gioco ancora in C ++. Ci sono vantaggi per ogni approccio (velocità, flessibilità, tempo di compilazione, ambito di gioco, ecc.), Ma è necessario decidere in anticipo.

Una volta che sai come usare gli script, ora devi decidere se userai un linguaggio di script esistente o il tuo linguaggio specifico del dominio . Oggi ci sono molti linguaggi di script tra cui scegliere con diversi obiettivi di design e destinatari, quindi non sono sicuro se valga la pena crearne uno tuo. Se decidi di implementare il tuo, ecco alcune risorse:

Lua è un popolare linguaggio di scripting leggero e facile da integrare. Utilizza uno stack per la comunicazione tra l'host e il linguaggio incorporato ed è stato utilizzato con successo in molti giochi professionali . Sol2 semplifica il processo di associazione di Lua e C ++. Se non ti piace la sintassi di Lua, Moonscript è un linguaggio che si compila in Lua e aggiunge un bel set di funzionalità.

Altre opzioni includono AngelCode , che consente di chiamare direttamente le funzioni C e C ++. Python e Ruby sono un po 'più complessi da incorporare, ma sono molto piacevoli da programmare. Se vuoi incorporare Python, dai un'occhiata a Boost.Python . Un'altra idea è incorporare JavaScript per sfruttare i veloci motori di scripting sviluppati per i browser (vedi V8 e SpiderMonkey ).


2
Ho implementato un linguaggio di scripting per il mio attuale progetto di gioco e il vantaggio principale è il controllo totale sui primitivi del linguaggio. Le soluzioni di scripting predefinite sono generiche e potresti non aver bisogno di tutte le funzionalità che forniscono. È assolutamente necessario non pensare a posizionare il proprio linguaggio meno che non siate certi che si può fare qualcosa che è meglio per il vostro gioco di una soluzione esistente.
Jon Purdy,

Personalmente mi piace Guile , ha una grande integrazione con C. L'unico problema è la velocità, ma con la versione 2.0 nei prossimi due mesi dovrebbe migliorare anche.
Joe D,

Risposta eccellente. Il primo paragrafo può essere riassunto come "Gli sviluppatori di giochi creano un'API che viene utilizzata per il contenuto".
ashes999,

Il termine generico per le lingue personalizzate (script o altro) è DSL, che può aiutare a sapere se si desidera leggere.
Patrick Hughes, il

2

Ho scritto un post sull'incorporamento dello script GameMonkey in un gioco usando DragonFire SDK qui .

Fondamentalmente l'idea è quella di esporre le tue funzioni C \ C ++ al linguaggio di script scelto e usarle dal tuo script. Nel mio tutorial, ho esposto 2 funzioni di DragonFire SDK. All'inizio del gioco, chiamo la funzione onStart dallo script e all'aggiornamento, chiamo la funzione onTimer dallo script.

Spero che sia d'aiuto!


1
Ho anche caricato una demo video qui: bit.ly/dnCkar
astk
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.