2009-03-12 14 views
5

Sto cercando di progettare un linguaggio di scripting del gioco e mi stavo chiedendo che cosa le persone impiegate nell'industria dei giochi consideravano oggetti/proprietà essenziali per un buon linguaggio di scripting del gioco. Questo include cose come:Quali caratteristiche linguistiche sono necessarie per lo scripting di giochi?

  • statico vs tipi dinamici
  • chi dovrebbe essere intesa: programmatori o designer?
  • sintassi (deve assomigliare a C?)
  • Quanto dovrebbe essere alto? (C vs Lisp per esempio - o imperativo vs funzionale)
  • Cosa deve essere in grado di fare. Quanto deve essere veloce il ?

Inoltre, ho sentito da poche fonti che gli script tendono ad essere molto semplici in quanto sono scritti dai progettisti più che dai programmatori. È questo il caso?

risposta

7

Come considerare le lingue che vengono effettivamente utilizzate per lo scripting in giochi come Python e Lua per alcune idee?

Entrambi si trovano ad essere dinamicamente digitato, e in termini di sintassi, Python è molto non C-like, e Lua non è terribilmente simile a C.

Probabilmente la ragione per la quale sono utilizzati per lo scripting gioco è il facilità di incorporare la lingua come motore di scripting, se non altro. Se il linguaggio deve essere progettato pensando ai progettisti, allora forse i requisiti per la lingua dovrebbero essere modificati per adattarsi alle esigenze dei progettisti, piuttosto che avere un linguaggio che è più facilmente integrato in un gioco.

1

Il mio linguaggio di script di gioco ideale avrebbe una sintassi simile a Python e potrebbe essere incorporato in altre lingue facilmente come LUA.
Inoltre, dovrebbe essere in grado di essere incorporato all'interno di XNA, che attualmente (e probabilmente per sempre) mancherà delle funzioni di riflessione su cui LuaInterface e IronPython incorporati dipendono.

3

Sembra che tu stia facendo una domanda molto generale (se non sai cosa deve fare il linguaggio di scripting, o quanto velocemente deve essere) e ti aspetti risposte specifiche.

Il motivo principale per un linguaggio di scripting è consentire alle persone di cambiare il gioco senza l'hacking del codice sorgente. Andiamo con quello.

Dovrebbe quindi essere rivolto più ai progettisti, dal momento che non hanno intenzione di hackerare il codice sorgente, e lo faranno i programmatori. Deve essere abbastanza veloce per eseguire correttamente il gioco. Deve essere abbastanza potente da permettere ai progettisti di inserire qualsiasi cosa vogliano inserire. (Sì, queste sono risposte vaghe, ma non si danno informazioni sufficienti per essere più specifici)

Quindi dimenticate le funzionalità che sarebbero utili principalmente ai programmatori, come qualsiasi modello di sintassi o tipizzazione statica. I progettisti non sono incasinati sulla sintassi C, e non vogliono preoccuparsi della tipizzazione statica o della gestione della memoria.

Ci sono dei veri vantaggi nell'usare una lingua già esistente. I designer potrebbero avere qualche esperienza con esso, è già documentato e molte delle cose difficili sono già state fatte per te. Ciò include il design della lingua: i programmatori non sono necessariamente bravi nel vedere ciò che è buono in un linguaggio di scripting.

Questo suggerisce qualcosa come Lua o Python.

+0

Sono totalmente d'accordo con questo - non c'è e non può essere una risposta "giusta" per ciò che lo script deve fare in quanto dipende dall'applicazione e dal squadra. – Kylotan

1

Dipende parzialmente da quale reparto eseguirà la maggior parte degli script. Se i progettisti di livelli, ad esempio, stanno eseguendo una gran parte degli script, il miglior tipo di linguaggio sarebbe qualcosa di più vicino al linguaggio naturale che non richiede una curva di apprendimento ripida. Un level designer non vuole necessariamente imparare una sintassi complessa come C/C++ solo per riprodurre un suono.

Un linguaggio pseudo potrebbe assomigliare a questo (TES Construction Set di scripting è come questo):

script MagicCaveDoorScript 
    on UseAction 
     if HasItem magicDoorKey 
      PlaySound2D magicDoorOpen 
      ChangeArea magicCave01 
     else 
      Message "You need the magic door key to enter..." 
     end 
    end 
end 

Ma se i programmatori sono quelli che fanno un sacco di scripting quindi il suo probabilmente più flessibile e potente da usare un linguaggio più complesso come Lua o Squirrel con classi, oggetti e così via.

Un lato positivo della creazione di un linguaggio di scripting "più semplice" è che l'implementazione non è così complessa come le lingue più difficili e consentirebbe anche di sviluppare facilmente strumenti per creare script tramite una GUI, come scegliere da un elenco di suoni da riprodurre, un elenco di oggetti mostruosi da allegare, ecc.

Problemi correlati