Vorrei aggiungere funzionalità di scripting al mio motore di gioco C++.Racchetta come linguaggio di scripting in un motore di gioco
ho Engine.exe
, Physics.dll
, Audio.dll
e sto aggiungendo Scripting.dll
che è una racchetta involucro di alto livello.
Engine.exe
carichi Physics.dll
e imposta il mondo della fisica, carica Audio.dll
e imposta il mondo audio. Si suppone di caricare Scripting.dll
, impostare i binding su Physics.dll
, Audio.dll
e caricare gli script di gioco.
mi risulta, ci sono due possibili modi per incorporare Racket in un programma C++:
Uso Foreign Interface sembra strano per necessità di caricare Physics.dll
, Audio.dll
due volte: prima da Engine.exe
e poi dallo script di gioco.
Scrivere Extensions sembra più allettante, perché consente di eseguire collegamenti script sul lato C++. D'altra parte devi costruire la tua estensione con raco ctool
, collegarla con il file oggetto mzdyn
- che sembra anche imbarazzante: perché non rendere una libreria statica mzdyn
?
Vorrei implementare un unico metodo, ad es. setupScriptBindings()
, sia in Physics.dll
che in Audio.dll
e per chiamarlo dallo Engine.exe
all'avvio.
C'è un modo semplice per farlo?
Hm, forse la descrizione di questo [http://docs.racket-lang.org/inside/embedding.html) aiuta. –
Hm ... i collegamenti che fornisci parlano di incorporare C/altro codice ** in ** un programma Racket. Dalla tua descrizione, penso che tu voglia il contrario, ad es. incorporare Racket nella tua applicazione C++: http://docs.racket-lang.org/inside/embedding.html Anche se la soluzione più semplice e probabilmente più pulita sarebbe quella di definire una sorta di protocollo per controllare le tue entità di gioco, e quindi iniziare la racchetta come un nuovo processo, comunicare usando socket o qualche altro meccanismo IPC. –
Offtopic: Racket è stato utilizzato con successo nella produzione di videogiochi da Naughty Dog. Vedi [«Racket on the Playstation 3»] (http://www.youtube.com/watch?v=oSmqbnhHp1c) e [«Scripting basato sullo stato in Uncharted 2: Among Thieves»] (http: //www.gameenginebook .com/risorse/gdc09-statescripting-uncharted2.pdf). –