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.