Sto sviluppando un gioco per computer. È un progetto di hobby per una sola persona. Lo implementerò nelle common-lisp . Come prova del concetto sto provando a generare proceduralmente una scena selezionando casualmente le voci da più tabelle. La scena dovrebbe reagire dinamicamente al giocatore.
Intendo utilizzare un tipo personalizzato di entità / componenti di architettura del sistema di entità componente e le loro reciproche connessioni sono memorizzate come dati collegati in RDF. Gli alberi di comportamento, anch'essi memorizzati nell'ECS, permetteranno al gioco di reagire al giocatore.
Stavo codificando i potenziali oggetti per la scena in tripli in un formato probabilistico personalizzato e creando una funzione in lisp per leggere questi dati e generare casualmente la scena.
Ora mi chiedo perché sto sviluppando un formato di dati personalizzato con espressività limitata se potessi codificare direttamente il codice dati / codice in Lisp (probabilmente estendendo il lisp nella direzione di questa particolare applicazione lungo la strada)? Ha creato un formato dati ridotto qualsiasi vantaggio nel contesto di un progetto implementato in lisp? E 'qualcosa che si dovrebbe fare solo in lingue non-lisp (es. La citazione ben nota di Greenspun "qualsiasi programma C o Fortran sufficientemente complicato contiene una implementazione ad-hoc, informalmente specificata, corrotta da un bug, lenta implementazione di metà della fonia comune")?
Posso pensare ad alcuni motivi, ma posso contrastarli tutti per questo progetto:
- il team del progetto ha membri che non possono scrivere fiv
- counter: si tratta di un progetto per un singolo hobby e probabilmente non sarà grande con i membri del team non-lievi contatore
- : utilizzando gli strumenti lisp che emettono, leggono ed elaborano il codice Lisp possono essere creati quando necessario
- il formato dei dati dovrebbe essere usato in altre lingue non libere
-
contatore
- : per questo progetto l'interoperabilità con non-lisp non è richiesta.
- problemi di rendimento
- counter: a questo punto non so se funzionerà terribilmente; dovremmo usare le misure per scoprire se ci sono problemi; e l'ottimizzazione prematura non è saggia contatore
- : il codice ad alte prestazioni può essere scritto usando lisp Contatore
- : se necessario, possiamo semplificare in seguito
- il gioco potrebbe essere un bel banco di prova per un negozio di tripli personalizzati e per il tipo di architettura del sistema di componenti personalizzati
- concesso, tuttavia, entrambi sono anche progetti futuri per hobby; l'architettura ECS può evolversi a lato del gioco e il negozio di triple ha altri usi.