Domanda

  

Lo script ingame controllerà la logica NPC / AI.

Se dovessi implementare la funzione di scripting in-game quale lingua dovrebbe supportare?

Tieni presente che la mia implementazione verrà eseguita su più piattaforme come .net, flash, javascript e java.

Quali sono i pro e contro delle possibilità elencate? Quanto tempo ci vorrà per implementare l'interprete?

Quali caratteristiche stanno cercando gli scripter in gioco? Quali sono gli altri giochi implementati?

Sto pensando di votare javascript perché tutti possono leggerlo e scriverlo.

Quali sono i tuoi pensieri?

È stato utile?

Soluzione

Userei Lua, perché è terribilmente facile da incorporare. Incorporare Python è sembrato complicato e non l'ho ancora perseguito.

Questo link potrebbe essere di ulteriore utilità se vuoi saperne di più sull'integrazione di Lua e i suoi vantaggi / svantaggi.

Altri suggerimenti

Usa Lua. È un linguaggio meraviglioso, ampiamente adottato nel settore dei giochi .

Esistono attacchi Lua per la maggior parte delle tue piattaforme:

Esiste anche progetto llvm-lua , che può essere utile per il porting di Lua ad altre piattaforme.

Per quanto riguarda JavaScript come piattaforma host ... Questo argomento compare periodicamente nella Mailing list Lua , ma nessuna soluzione seria è stata ancora pubblicata. Se davvero devi ospitare Lua in JS, chiedi nella mailing list di Lua, forse alcune persone potrebbero condividere la loro esperienza sull'argomento.

Preferirei Python per i suoi collegamenti in molte lingue.

Penso che intendi " integra " l'interprete e non "implementare" esso. A seconda delle tue capacità, la creazione di un interprete per un linguaggio di scripting potrebbe richiedere molto tempo.

So per certo che Python e Lua hanno collegamenti per .NET e Java: puoi incorporare gli interpreti. Non so se ci sono collegamenti per Javascript e Flash.

Il problema con Python è che ci sono tre varianti tutte fatte da persone diverse.

  • IronPython per .NET
  • Jython per Java
  • e il normale CPython

Non ho lavorato su Jython, quindi non voglio commentarlo. Ma ci sono alcuni problemi di portabilità tra IronPython e CPython. Ad esempio: IronPython non supporta le estensioni C native. Se ci sono script scritti in CPython che li usano, avrai difficoltà a portarli su IronPython. Inoltre, se gli script IronPython utilizzano delle librerie .NET, sarà difficile trasferirle su CPython.

Le implementazioni di Lua, d'altra parte, provengono da un unico posto e non mi aspetto tali problemi.

Dipende da quanto sarà complesso il tuo codice (quanto può complicare il comportamento degli NPC). Tcl, Lua e JavaScript sono per compiti semplici. Scrivere grandi quantità di codice in queste lingue tende rapidamente a diventare non realizzabile (specialmente per utenti occasionali).

Lo scoiattolo usa una sintassi di tipo C con cui la maggior parte delle persone si sentirà a proprio agio ma che ne dici del supporto degli utensili? Se devi scrivere tutto con Notepad, anche questo ti limiterà notevolmente.

Python è un linguaggio maturo che è facile da imparare (basta confrontare il Lua "tutorial" con quello fornito con Python). Mentre le varie versioni di Python potrebbero sembrare intimidatorie (vedi Risposta di Rohit ), il codice Python nel tuo gioco sarà lo stesso per tutti. Viene fornito con un IDE (IDLE) e ci sono altri IDE che supportano Python che ti dà il completamento del codice, il debug, l'esecuzione di casi di test, ecc.

Se si desidera utilizzare Python, considerare l'utilizzo di Stackless poiché è piuttosto migliore nel threading rispetto allo stock CPython. È usato in alcuni MMORPG (EVE Online, IIRC), quindi ha un track record nei giochi. Inoltre, è ottimo per le continuazioni (parte del motivo per cui è stato sviluppato in primo luogo), che è piuttosto un buon modello per la logica di tipo "simulazione" che si usa nei giochi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top