Question

  

Le script ingame contrôlera la logique NPC / AI.

Si je devais implémenter la fonctionnalité de script ingame, quel langage devrait-il prendre en charge?

N'oubliez pas que mon implémentation fonctionnera sur plusieurs plates-formes telles que .net, flash, javascript et java.

Quels sont les avantages et les inconvénients des possibilités énumérées? Combien de temps faudra-t-il pour mettre en œuvre l'interprète?

Quelles fonctionnalités les scripteurs ingame recherchent-ils? Quels sont les autres jeux implémentant?

Je pense voter pour le javascript car tout le monde peut le lire et l'écrire.

Quelles sont vos pensées?

Était-ce utile?

La solution

J'utiliserais Lua, parce que c'est terriblement facile à intégrer. Intégrer Python semblait être compliqué et je ne l'ai pas vraiment poursuivi.

Ce lien peut être utilisé ultérieurement. si vous voulez en savoir plus sur l’intégration de Lua et ses avantages / inconvénients.

Autres conseils

Utilisez Lua. C'est une belle langue largement adoptée dans l'industrie du jeu .

Il existe des liaisons Lua pour la plupart de vos plateformes:

Il existe également un projet llvm-lua , qui peut s'avérer utile pour le portage de Lua. vers d'autres plateformes.

Quant à JavaScript en tant que plate-forme hôte ... Ce sujet apparaît régulièrement dans la liste de diffusion de Lua , mais aucune solution sérieuse n'a encore été publiée. Si vous réellement avez besoin d'accueillir Lua dans JS, indiquez s'il vous plaît sur la liste de diffusion de Lua, certaines personnes pourraient peut-être partager leur expérience sur le sujet.

Je préférerais Python pour ses liaisons dans de nombreuses langues.

Je pense que vous voulez dire "intégrer". l'interprète et non "implémenter" il. Selon vos compétences, la création d'un interprète pour un langage de script peut prendre beaucoup de temps.

Je sais avec certitude que Python et Lua ont des liaisons pour .NET et Java - vous pouvez intégrer les interpréteurs. Je ne sais pas s'il existe des liaisons pour Javascript et Flash.

Le problème avec Python est qu’il existe trois variantes, toutes créées par des personnes différentes.

  • IronPython pour .NET
  • Jython pour Java
  • et le CPython normal

Je n’ai pas travaillé sur Jython, je ne vais donc pas en parler. Toutefois, il existe certains problèmes de portabilité entre IronPython et CPython. Par exemple: IronPython ne prend pas en charge les extensions C natives. Si des scripts écrits dans CPython les utilisent, vous aurez du mal à les porter sur IronPython. De plus, si les scripts IronPython utilisent des bibliothèques .NET, vous aurez du mal à les porter sur CPython.

En revanche, les implémentations de Lua proviennent d’un seul endroit et je n’attends pas de tels problèmes.

Cela dépend de la complexité de votre code (la complexité du comportement des NPC peut devenir complexe). Tcl, Lua et JavaScript sont des tâches simples. Écrire de gros morceaux de code dans ces langues a vite tendance à devenir impossible (surtout pour les utilisateurs occasionnels).

Squirrel utilise une syntaxe de type C avec laquelle la plupart des gens seront à l'aise, mais qu'en est-il du support d'outillage? Si vous devez tout écrire avec le Bloc-notes, cela vous limitera gravement.

Python est un langage mature facile à apprendre (il suffit de comparer le "tutoriel" de Lua à celui fourni avec Python). Les différentes versions de Python peuvent sembler intimidantes (voir réponse de Rohit ), le code Python de votre jeu sera le même pour tous. Il est livré avec un IDE (IDLE) et il existe d’autres IDE qui prennent en charge Python, ce qui vous permet de compléter le code, de déboguer, d’exécuter des scénarios de test, etc.

Si vous souhaitez utiliser Python, envisagez d'utiliser Stackless car il est plus performant pour le threading que pour le stock CPython. Il est utilisé dans certains MMORPG (EVE Online, IIRC), donc il possède des antécédents dans les jeux. De plus, il est très bon pour les continuations (en partie parce qu’il a été développé), ce qui est un très bon modèle pour la logique de type "simulation" que l’on utilise dans les jeux.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top