2009-11-23 11 views
5

Io e il mio amico siamo nella prima fase della creazione di un linguaggio specifico per il dominio progettato per la programmazione di giochi, per la sua tesi di laurea.Quali caratteristiche ti piacerebbe vedere in un gioco di programmazione DSL?

Il linguaggio sarà abbastanza di basso livello, avrà una sintassi simile a C, una garbage collection opzionale e sarà orientato verso sistemi con poca memoria o potenza di elaborazione (ad esempio Nintendo DS), ma dovrebbe essere potente abbastanza per facilitare lo sviluppo del PC facilmente. Non sarà un linguaggio di scripting, ma compilato, ma dato che non vogliamo passare mesi a scrivere un normale compilatore, la prima implementazione sarà fondamentalmente un traduttore LanguageName-to-C, con TCC o GCC come compilatore finale

Ora, ho una domanda per tutti voi programmatori di giochi là fuori:

Cosa ti piacerebbe vedere in un tale linguaggio? Quali caratteristiche, implementazione e sintassi-saggio, sarebbe meglio per questo? Cosa evitare?

Edit:

Alcune cose che abbiamo già pensato up:

  • oggetti basati sullo stato - un oggetto può esistere in uno dei suoi membri (o sub-States)
  • eventi e funzioni - gli eventi non devono esistere per essere chiamati, e possono bollire
  • allocazione dinamica limitata e supporto puntatore - vogliamo che sia il più sicuro possibile
  • supporto per oggetti compositi ng (Hero è composto (in modo dinamico) da attore, Hurtable, Steerable, ecc.)
  • "risorse" negli stati, caricate e scaricate automaticamente all'inizio/alla fine dello stato (ad esempio, un oggetto trama OpenGL è una risorsa)
  • supporto di base per la localizzazione e la serializzazione
  • una sintassi che è rapidamente analizzabile
  • vogliamo rendere il linguaggio più coerente possibile: tutto viene passato come valore, ogni dichiarazione deve sintassi prevedibili (ad es. function retType name(type arg) is (qualifier, list) { }; no const, static, public qualificazioni ovunque tranne nella lista di qualificazione), ecc
+0

Clojure ha un sacco di funzioni che ammiro, soprattutto sul fronte della programmazione funzionale. Potrebbe fare una buona cosa da cui cribuire. – Kzqai

risposta

3

Personalmente mi piace scrivere giochi che sono in grado di accedere al pubblico ampio e ampio del web. Sarebbe oltre interessante rendere semplice l'interfaccia tra desktop e web.

Questo è probabilmente più il dominio delle app create con la lingua rispetto alla lingua stessa, suppongo, ma forse qualcosa che è utile tenere a mente durante la fase di progettazione.

+0

Puoi dare un esempio di cosa intendi? – GhassanPL

+0

Scusate, nessun corso di formazione formale sul front-end del linguaggio, quindi non ho davvero delle caratteristiche sorprendenti, ma posso vedere, ad esempio, trarre vantaggio dal fatto che il vostro programma di gioco trasmette informazioni a un server web per la visualizzazione e in generale una stretta integrazione tra un gioco in esecuzione sul desktop e le connessioni social disponibili sul web. * shrug * – Kzqai

4

Qualcosa per semplificare la programmazione concorrente. Una miscela di Erlang e C++ forse. Ho pensato a questo su e giù da quando è stato annunciato il processore Cell, ma ci sarebbe voluto un bel po 'di tempo R & D per svilupparlo e risolvere molti dei problemi che hanno già soluzioni nei tradizionali programmi C++.

+0

Il linguaggio avrà supporto per coroutine di base (in pratica le coroutine di Duff, come presentato da Simon Tatham). – GhassanPL

2

Quindi, non voglio davvero distruggere la tua bolla, ma ... forse dovrei? Come sviluppatore di giochi professionista, devo dire che ci sono davvero tre tipi di "lingue" per lo sviluppo del gioco.

Innanzitutto, c'è il tuo linguaggio a livello di motore. Questo è in genere C++. Si tratta di prestazioni. Gli artefatti del gameplay non sono pensati per essere implementati qui (purtroppo lo sono spesso).

Segue il linguaggio di gioco. Questo è leggero, facile da capire e progettato per una rapida iterazione.

Infine, esiste una sorta di linguaggio di scripting visivo. Questo è il più leggero di tutti ed è rivolto ai non programmatori (progettisti di livelli, ecc.).

Detto questo:

sicuramente check out UnrealScript. È usato in tutto il settore (dal momento che l'Unreal Engine è una pietra miliare dello sviluppo di giochi FPS).

Mi raccomando di supporto:

  • programmazione concorrente (verificare che cosa PCC fa con Stackless Python per Eve Online)
  • replica Network (check out UnrealScript, è possibile contrassegnare le funzioni per l'esecuzione su entrambi i server o il client, o per essere sicuro di eseguire sul client, ecc.)
  • Stato (come detto) sarebbe fantastico. UnrealScript ha questa funzionalità. Questo deve essere fatto in modo sicuro (vale a dire, entrare e uscire in qualsiasi momento, transizioni complesse gestite elegantemente, ecc.)

Buona fortuna!

+0

WoW è implementato secondo le linee che si dicono: motore C++, interfaccia utente scritta in un linguaggio di scripting e poi ci sono macro per le scorciatoie di input dell'utente. Utilizza un approccio multilivello e multi-lingua e diventa totalmente riuscito. – JohnnySoftware