Domanda

Sto cercando di scrivere un gioco e implementare script in modo che più avanti nello sviluppo non avrò ricompilare tutto quando voglio cambiare i numeri.

Il mio problema è che io non so come gli script dovrebbero interfacciarsi con il gioco. Il linguaggio di scripting che sto utilizzando è AngelScript .

In questo momento, ho uno stato: lo stato intro, che sto usando come test per la maggior parte dei moduli nel mio gioco "motore" (è più simile a una raccolta disomogenea di classi). Sarà caricare e tracciare un quadro e disegnare il testo, e l'uso di script per aggiornare se stesso, e magari passare ad uno stato fittizio in seguito alla prova il manager di stato.

Durante la scrittura, mi sono reso conto che utilizzando lo script per fare la maggior parte del aggiornamento richiederebbe che I Registra la maggior parte dei moduli di mio motore di gioco con lo script, e praticamente spostare la maggior parte del codice per il linguaggio di scripting. Personalmente, preferirei avere l'++ porzione C facendo la maggior parte del lavoro, e hanno il linguaggio di scripting venire con i numeri da utilizzare in formule / disegno / qualunque cosa.

Tuttavia, se ho ragione, facendo in questo modo comporterebbe un sacco di diversi moduli di aggiornamento per la maggior parte delle cose nel gioco che devono essere aggiornati, e richiedendo che tutti essere caricati in, e che il C ++ codice dovrebbe eseguire ogni funzione di aggiornamento singolarmente.

In alternativa, c'è un modo per ottenere lo script e il programma di interoperabilità che sto con vista. In entrambi i casi, qualcuno potrebbe aiutarmi a capire ciò che il modo migliore per lo scripting implementato nel mio gioco è?

È stato utile?

Soluzione

Non esiste una risposta corretta a una grande domanda così davvero. Lo si fa nello stesso modo si farebbe motore / gioco di logica di separazione in C ++. Definire un'API che lo script può chiamare che gli permette tutto ciò che vuoi che faccia. Registrati funzioni in tale API con lo script, e utilizzare l'API in AngelScript. Cosa che API dovrebbe essere dipende interamente dalle vostre esigenze e che tipo di potere che si vuole dare alla scripter.

Altri suggerimenti

Se si desidera AngelCode (o qualsiasi altro approccio di scripting di vostra scelta) per solo "venire con alcuni numeri", ehi, utilizzare in questo modo - ad esempio, in AngelCode, compilare gli script esponendo a loro un singolo C ++ funzione del tuo, dire "vuoto ProvideNumberFor (ragione stringa, un valore numerico)", e gli script sarà responsabile per la chiamata che funzionano come numero di volte necessario a "fornire i numeri", e nulla più.

Se si ha familiarità con Qt4 / javscript si può sempre utilizzare QtScript http: / /qt.nokia.com/doc/4.5/qtscript.html .

Se si guarda a esempi reali come mod o giochi di Garry scritto con UnrealScript troverete che un po 'di logica nei giochi moderni è implementato negli script. C / codice C ++ è migliore per componenti "statiche" e strozzature incline del motore, come il rendering, motore fisico, rete di basso livello, ecc script sono migliore per il contenuto (cioè, logica di gioco).

A parte: Il miglior gioco-Scripting Language IMHO è Lua . Esso fornisce un facile intregration con C / C ++, è molto ben documentata, e sarà familiare agli utenti di Javascript.

Ho usato Lua proprio per questo scopo, e lo fa un ottimo lavoro. Guarda tutte le giochi programmati con Lua. Inoltre, è incredibilmente veloce.

EDIT: Non ho letto pienamente la domanda ... mi dispiace. Questa è la mia vera risposta;)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top