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?
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?
Risposte:
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 ).
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!