Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Algoritmi - Linguaggio di Scripting e Interprete
Forum - Algoritmi - Linguaggio di Scripting e Interprete

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
Bonnox (Member)
Pro


Messaggi: 85
Iscritto: 23/08/2014

Segnala al moderatore
Postato alle 11:18
Domenica, 19/07/2015
Salve, ho un'idea balzana che mi frulla per la testa, ma è meglio non dirla sennò mi prendete per pazzo :p

Per realizzarla potrei dover realizzare un linguaggio di scripting per rendere la cosa più agevole da modificare, rispetto al codice sorgente.

Il problema è che non ho la più pallida idea di come costruire un interprete. O meglio, più o meno ce l'avrei, ma è per un linguaggio di Eventing (dunque avete capito cosa voglio realizzare? ), che di norma ha pochi comandi che una volta letti si traducono immediatamente in istruzioni del linguaggio nativo; inoltre ad ogni riga corrisponde un'istruzione e basta (un po' come l'assembly)

Realizzare un linguaggio di scripting però secondo me risulta più complesso, perchè comunque bisogna dotarlo di tutte quelle caratteristiche di un comune linguaggio di programmazione strutturata: variabili, funzioni, costrutti.

Dunque, se per fare qualcosa come
Codice sorgente - presumibilmente Plain Text

  1. muoviSprite (Z, X, Y)

mi basta chiamare una funzione del linguaggio di programmazione nativo, cercare di eseguire
Codice sorgente - presumibilmente Algoritmi

  1. for (int i=0; i<mappa.getwidth(); i++)
  2. {
  3. cambiatiles (1, i, 15, movimenti.CAMMINA);
  4. }


ovvero creare un sotto-linguaggio per non dover "cablare" certe parti del programma, implica il dover analizzare tutto il listato (parser) e tradurne le istruzioni in linguaggio nativo. (o no?)

voi come procedereste?
scusate se la richiesta posa sembrare assurda ;)

Ultima modifica effettuata da Bonnox il 19/07/2015 alle 11:22
PM Quote
Avatar
dmr (Normal User)
Pro


Messaggi: 141
Iscritto: 04/01/2012

Segnala al moderatore
Postato alle 12:15
Domenica, 19/07/2015
Sarà il caldo :) ma non ho capito bene la richiesta ! Potresti spiegarti meglio ? Se il tuo obiettivo e' scrivere un interprete ti consiglio di comprare dei libri sui compilatori e incominciarli a studiare. Studia bene le grammatiche, gli analizzatori lessicali e i parser.

Ultima modifica effettuata da dmr il 19/07/2015 alle 12:21
PM Quote
Avatar
TheDarkJuster (Member)
Guru^2


Messaggi: 1620
Iscritto: 27/09/2013

Segnala al moderatore
Postato alle 13:20
Domenica, 19/07/2015
Beh, ti sei assicurato di guardare http://www.pierotofy.it/pages/sorgenti/dettagli/19321-Quic ... ? E' pur sempre un interprete anche se semplicissimo, però almeno ti puoi fare una idea sulle operazioni più basilari che svolge un interprete.

PM Quote
Avatar
Bonnox (Member)
Pro


Messaggi: 85
Iscritto: 23/08/2014

Segnala al moderatore
Postato alle 13:52
Domenica, 19/07/2015
Allora la spiego bene con calma. Da un po' di tempo desideravo realizzare un motore di gioco bidimensionale, alla RPG maker (senza prendere troppo ovviamente, quello è un software professionale). Ora però ho pensato che si potrebbe anche usare come tesi per la laurea triennale, ma non so quale sia il livello di complessità richiesto. Dopotutto ho visto su internet una testi di un tizio (non so se è per i 3 o 5 anni), in cui mostrava che aveva creato un motore grafico tridimensionale dallo stile simile ad Unreal!! :hail: Ovviamente io non potrei mai raggiungere tali livelli (almeno in tempi brevi), ma per quanto riguarda le cose 2D forse avrei potuto combinare qualcosa. Poi adesso sto iniziando a guardarmi le librerie AWT e Swing, ci sono cose interessanti!

Ovviamente il motore del gioco dovrà avere un linguaggio di eventing, però mi pare molto più semplice da realizzare, in quanto ad ogni istruzione corrisponde una sola funzione nel linguaggio nativo. Per dare professionalità alla cosa volevo evitare di cablare nel sorgente le funzioni del gioco, di fatto cercando di separare l'esecutore dal gioco stesso. Per questo mi sarebbe servito un linguaggio dalle potenzialità almeno pari a quelle di un linguaggio procedurale, per poter così ricreare le funzioni di un gioco (e fare bella figura fornendo un editor che permette di fare tante cose)

a questo punto tanto vale non inventare niente e usare qualcosa di già esistente, come il ruby o altro. Il problema però sarebbe integrare l'interprete nel gioco.

o se no fintanto che non sono così esperto mi preoccupo della parte relativa alla renderizzazione delle immagini (non credo ci sia niente di complicato... basta assemblare i tiles nella mappa e comporre i BG... pardon, i Layer.. stavo parlando del GBA :D )

o se no si può provare a eseguire direttamente tale codice... ma chissà che casino verrebbe fuori XD

guraderò il programma segnalato, grazie.

Ultima modifica effettuata da Bonnox il 19/07/2015 alle 14:20
PM Quote
Avatar
TheDarkJuster (Member)
Guru^2


Messaggi: 1620
Iscritto: 27/09/2013

Segnala al moderatore
Postato alle 14:27
Domenica, 19/07/2015
Esiste il lua, che ho visto usare da tante applicazioni come linguaggio di scripting. Io ho lavorato con il lua solo con PHP: http://php.net/manual/en/book.lua.php e il puù delle volte è stato divertente e non troppo difficile. Hai pensato di utilizzare il PHP per far sì che una persona posso crearsi un gioco di strategia tramite lua? Sarebbe molto carino!

Comunque, rimanendo su ciò che volevi fare io ti consiglierei di partire da un linguaggio di scripting molto piccolo, un mini-subset di javascript, megari tipizzato...... Se non hai idea di come fare avrai il tuo bel da fare ;)

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 17:01
Domenica, 19/07/2015
Se non hai tempo di studiare compilatori, grammatiche e parsers, semplicemente usa un linguaggio esistente come LUA, Python , Ruby o Javascript.

https://docs.python.org/2/extending/

Ultima modifica effettuata da pierotofy il 19/07/2015 alle 17:02


Il mio blog: https://piero.dev
PM Quote
Avatar
Bonnox (Member)
Pro


Messaggi: 85
Iscritto: 23/08/2014

Segnala al moderatore
Postato alle 18:14
Sabato, 01/08/2015
mah, ci stavo pensando un po' su...

alla fine quello che serve è token-izzare e stack-are le informazioni lette dal listato...

sembra tutto facile a parole...

mi piacerebbe usare il LUA, ma ovviamente il problema sarebbe come incorporarlo nel programma in modo ottimale. intendo dire che se ogni script venisse lanciato in una nuova macchina virtuale sarebbero tutti isolati tra di loro, mentre io vorrei che fosse "sullo stesso piano" del game engine, in modo da poter, in caso di bisogno, manipolare le caratteristiche della routine in corso (non so se mi sono espresso bene)

EDIT

Forse ho trovato qualcosa: la classe ScriptEngine di java 7! potrebbe fare al caso mio?
a me basta avere comandi per istanziare variabili, fare paragoni (boolean) e accedere all'input/output, anche se penso questo possa essere eseguito più efficientemente da una chiamata al linguaggio nativo.

Ultima modifica effettuata da Bonnox il 01/08/2015 alle 18:30
PM Quote
Avatar
TheDarkJuster (Member)
Guru^2


Messaggi: 1620
Iscritto: 27/09/2013

Segnala al moderatore
Postato alle 10:46
Domenica, 02/08/2015
Ogni risposta alla tua domanda sta nel main del sorgente del lua e nella pagina linkata da pierotofy. Perché non la leggi tutta con calma?

PM Quote
Avatar
Bonnox (Member)
Pro


Messaggi: 85
Iscritto: 23/08/2014

Segnala al moderatore
Postato alle 12:48
Mercoledì, 19/08/2015
forse si può risolvere supponendo che le istruzioni siano di una sola riga, come l'assembly.

del tipo

ADD a, #5

oppure

VAR int a, 5

sono molto facili da interpretare.

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo