2012-01-15 19 views
11

So che ci sono alcune domande sull'argomento, ma è stato difficile trovare qualcosa di utile per quello che sto cercando ...tutorial o introduzioni per scrivere un semplice linguaggio di scripting?

So anche che probabilmente finirà per essere il compito di completo, ma voglio davvero fare un semplice linguaggio di scripting per i motori di gioco ... Voglio usarlo in C++ e nei miei motori di gioco Android Java ... ma non so da dove cominciare ... Ho provato alla ricerca di tutorial online, ma molto richiede la conversione di cose in byte code, macchine virtuali e simili ...

Voglio davvero creare un semplice linguaggio di scripting che può essere letto dal motore, avere qualche semplice "if/else "logica ... funzioni semplici che possono essere chiamate da altri script e così via ... Forse anche s impler per le prime versioni ... Non so davvero da dove iniziare, ma so che è qualcosa che devo iniziare a studiare e capire.

Se qualcuno mi può indirizzare nella giusta direzione e indicare alcuni collegamenti a un semplice "fare un linguaggio di scripting per giochi" tipo di tutorial o anche sottolineare alcuni concetti chiave che dovrei esaminare ... I ' d essere davvero grato

Preferirei un linguaggio di scripting basato su C minimalista, ma immagino che le specifiche entreranno in gioco una volta che ne avrò appreso di più.

Grazie per l'aiuto che chiunque può dare.

+3

Vuoi veramente creare un nuovo linguaggio * di scripting *? Non puoi fornire un'interfaccia * di scripting * al tuo motore di gioco usando una lingua esistente? – Thilo

+1

So che non è "C-based", ma lo script Lua è un linguaggio abbastanza semplice per imparare e scrivere. – Zack

+0

@Thilo: Tecnicamente probabilmente non ne ho bisogno, ma ho pensato che sarebbe stato qualcosa che potrebbe essere molto utile in seguito per mantenere la compatibilità incrociata tra il mio Android e il mio PC ... Ma se potessi trovare un linguaggio di scripting che non fosse troppo doloroso da implementare sia nei miei editor C++ che nel mio motore Android per ora, immagino che esaminerei esso. – Kalisme

risposta

4

Ho provato in cerca di tutorial online, ma molti richiedono la conversione di cose da byte di codice, le macchine virtuali e tale

Sì. Questo è davvero l'approccio, anche per un linguaggio semplice e morto. L'esecuzione diretta del codice sorgente sarà molto più complicata, il modo in cui viene eseguito è prima di analizzare il codice sorgente e digerirlo in un codice byte, quindi fare in modo che una macchina virtuale interpreti il ​​codice byte.

Si consiglia di esaminare le lingue esistenti per conoscere il loro design.

This tutorial da flipcode crea un linguaggio semplice e include tutto il codice, quindi potrebbe essere utile.

È anche possibile dare un'occhiata al codice sorgente Lua.

4

Parte del mio lavoro è mantenere un linguaggio di scripting di gioco proprietario. Non sono a conoscenza di alcun "How-to" libri sull'argomento nel suo senso stretto. C'è un interessante articolo di Bruce Wilcox sulla scrittura di tali linguaggi. Non discute i dettagli di implementazione, ma entra in qualche modo nel processo di progettazione.

http://www.gamasutra.com/view/feature/1570/reflections_on_building_three_.php

Scrivi linguaggio di scripting è come scrivere qualsiasi lingua e coinvolge tutti gli stessi principi e le domande di design. Devi pensare a quali concetti dovrebbe girare la tua lingua, devi definire una grammatica, quindi devi scrivere un compilatore o traduttore e/o un interprete. Che tu scegli e i dettagli delle loro implementazioni dipendono interamente da te, e non c'è nessuno o il modo migliore per realizzare queste cose.

Esistono modi di pensare standard quando si tratta di analizzare la sintassi e di definire le grammatiche della lingua. Le espressioni regolari sono i tuoi amici qui. Per fortuna, C++ 11 include la libreria <regex> (originariamente da boost).Potrebbe essere utile raccogliere un libro sui compilatori per iniziare a concetti importanti, se vuoi davvero approfondire l'argomento. Quando frequentavo l'università tenendo un corso di compilatore, questo era il mio libro di testo, che ho tenuto con me fino ad oggi, quindi lo raccomando.

http://www.amazon.com/Compilers-Principles-Techniques-Alfred-Aho/dp/0201100886/ref=sr_1_2?ie=UTF8&qid=1326618572&sr=8-2

Scrivi la lingua è un meraviglioso esercizio in informatica. Tuttavia, se questo è per un progetto o un prodotto reale, quindi come altri che hanno già commentato, il mio consiglio professionale è: non farlo se non è necessario. Questo è un enorme investimento potenziale che stai prendendo in considerazione, e ti chiedi: quali benefici otterrò dalla mia lingua che non trovo in linguaggi free-to-use esistenti come Lua e Python, e sono quei benefici che valgono i mesi di tempo extra che occorrerà implementare?

E non dimenticare gli strumenti. Se stai scrivendo una lingua che intendi usare da altri, hai bisogno di molta documentazione e strumenti, strumenti e strumenti. Quasi certamente vorrai almeno un debugger di livello sorgente, e scrivere un buon debugger può durare quanto scrivere la lingua stessa!

Se tutto ciò che si desidera è un linguaggio per la logica di gioco di prototipazione rapida, allora Lua è probabilmente più che adatto alle proprie esigenze e viene fornito con molta documentazione, documentazione e documentazione esistenti.

3

alcuni articoli vecchi sono ancora buona lettura, se si riesce a trovare:

  • M. Abrash, D. Illowsky, "rotolare il proprio minilinguaggi con mini-interpreti", Journal di Dr. Dobb 14 (9) (settembre 1989) 52-72.
  • J. Bentley, "Perle di programmazione: piccole lingue", Comunicazioni dell'ACM 29 (1986) 711-721.
  • D. Betz, "Lingue incorporate", Byte 13 # 12 (Nov 1988) 409-416.
  • D. Betz, "Il tuo piccolo linguaggio orientato agli oggetti", Dr. Dobb's Journal 16 (9) (settembre 1991) 26-33.
  • N. Franks, "Aggiunta di un linguaggio di estensione al software", Dr. Dobb's Journal 16 (9) (settembre 1991) 34-43.
  • R. Valdés, "Piccole lingue, grandi domande", Dr. Dobb's Journal 16 (9) (settembre 1991) 16-25.

Vedere anche Bob: A Tiny Object-Oriented Language da Betz. Le ultime fonti per BOB sono disponibili allo http://www.xlisp.org/.

Problemi correlati