Bonnox (Member)
Pro
Messaggi: 85
Iscritto: 23/08/2014
|
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 |
mi basta chiamare una funzione del linguaggio di programmazione nativo, cercare di eseguire
Codice sorgente - presumibilmente Algoritmi |
for (int i=0; i<mappa.getwidth(); i++)
{
cambiatiles (1, i, 15, movimenti.CAMMINA);
}
|
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 |
|
dmr (Normal User)
Pro
Messaggi: 141
Iscritto: 04/01/2012
|
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 |
|
TheDarkJuster (Member)
Guru^2
Messaggi: 1620
Iscritto: 27/09/2013
|
|
|
Bonnox (Member)
Pro
Messaggi: 85
Iscritto: 23/08/2014
|
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!! 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 )
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 |
|
TheDarkJuster (Member)
Guru^2
Messaggi: 1620
Iscritto: 27/09/2013
|
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
|
|
pierotofy (Admin)
Guru^2
Messaggi: 6230
Iscritto: 04/12/2003
|
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
|
|
Bonnox (Member)
Pro
Messaggi: 85
Iscritto: 23/08/2014
|
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 |
|
TheDarkJuster (Member)
Guru^2
Messaggi: 1620
Iscritto: 27/09/2013
|
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?
|
|
Bonnox (Member)
Pro
Messaggi: 85
Iscritto: 23/08/2014
|
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.
|
|