2009-09-16 7 views
2

Le script ingame contrôlera la logique NPC/AI.Quel langage de script ingame devrais-je prendre en charge?

Si je devais implémenter la fonction de script ingame, quelle langue devrait-elle supporter?

Gardez à l'esprit que mon implémentation fonctionnera sur plusieurs plateformes comme .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 implémenter l'interprète?

Quelles sont les fonctionnalités recherchées par les scripteurs ingame? Quels sont les autres jeux implémentés?

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

Que pensez-vous?

+0

L'intégration de Javascript est beaucoup plus complexe que l'intégration de Python ou de Lua (enfin, au moins avant que la V8 ne le sache) –

+0

@Vinko Vrsalovic: JavaScriptCore (le moteur JS dans WebKit) a standard C API stable (et ABI) pour environ 3 ou 4 ans (c'est un framework système sur MacOS même) – olliej

+0

Voir cette question similaire: http://stackoverflow.com/questions/1406836/ –

Répondre

5

J'utiliserais Lua, parce que c'est très facile à intégrer. Intégrer Python a semblé être compliqué et je n'ai pas vraiment poursuivi cela.

Cette link peut être utile si vous voulez en savoir plus sur l'intégration de Lua et ses avantages/inconvénients.

3

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

0

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

+3

Cela aurait plus de sens comme un commentaire, pas comme une réponse. – user120242

0

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 liens pour Javascript et Flash.

Le problème avec Python est qu'il y a trois variantes toutes faites par des personnes différentes.

  • IronPython pour
  • .NET Jython pour Java
  • et la CPython régulière

Je n'ai pas travaillé sur Jython donc je ne vais pas commenter à ce sujet. Mais il existe certains problèmes de portabilité entre IronPython et CPython. Par exemple: IronPython ne prend pas en charge les extensions C natives. S'il y a des scripts écrits en CPython qui 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.

Les implémentations de Lua, d'un autre côté, proviennent d'un seul endroit et je ne m'attends pas à de tels problèmes.

+0

Je ne vois pas pourquoi plus d'une implémentation de langage disponible serait un désavantage. Ou pourquoi utiliser les extensions C natives dans un script ingame. – Niki

+0

Je n'ai pas dit qu'avoir plus d'une implémentation de langage est un désavantage, mais le fait qu'ils soient entretenus par des personnes différentes. – Rohit

0

Cela dépend de la complexité de votre code (à quel point le comportement des PNJ peut devenir compliqué). Tcl, Lua et JavaScript sont pour des tâches simples. L'écriture de gros morceaux de code dans ces langues tend rapidement à devenir impossible à maintenir (en particulier pour les utilisateurs occasionnels).

Squirrel utilise une syntaxe de type C qui conviendra à la plupart des gens, mais qu'en est-il du support de l'outillage? Si vous devez tout écrire avec Notepad, cela vous limitera aussi sérieusement.

Python est un langage mature qui est facile à apprendre (il suffit de comparer le "tutorial" de Lua à celui fourni avec Python). Alors que les différentes versions de Python peuvent sembler intimidantes (voir Rohit's answer), le code Python de votre jeu sera le même pour toutes. Il est livré avec un IDE (IDLE) et il y a d'autres IDE qui supportent Python qui vous donne l'achèvement du code, le débogage, l'exécution de cas de tests, etc.

+1

Peut-être que mon opinion est biaisée, mais, selon mon expérience, Lua est plus facile à apprendre ou à enseigner. C'est juste que Python a une plus grande communauté. Je ne sais pas ce que tu veux dire par "tutoriel" Lua ", mais la programmation dans Lua est l'un des meilleurs livres CS que j'ai jamais lu (http://www.lua.org/pil/). –

+0

Aussi Lua est beaucoup plus facile à intégrer. Lua a été conçu comme un langage embarquable, mais Python ne l'était pas. –

+2

Quant à "Lua est pour des tâches simples". Nous avons 160 codes KLOC + de Lua dans notre projet. Mon opinion personnelle: Lua est tout à fait maintenable. –

5

Utilisez Lua. It is a beautiful language, widely adopted in game industry.

Il existe des liaisons Lua pour la plupart de vos plates-formes:

Il y a aussi llvm-lua project , ce qui peut être utile pour le portage de Lua vers d'autres plateformes.

Comme pour JavaScript en tant que plateforme hôte ... Ce sujet apparaît de façon récurrente dans le Lua mailing list, mais aucune solution sérieuse n'a encore été publiée. Si vous vraiment besoin d'accueillir Lua dans JS, s'il vous plaît demander dans la liste de diffusion Lua, peut-être que certaines personnes pourraient partager leur expérience sur le sujet.

0

Si vous souhaitez utiliser Python, pensez à utiliser Stackless car il est plutôt meilleur threading que stock CPython. Il est utilisé dans certains MMORPG (EVE Online, IIRC), donc il a des antécédents dans les jeux. De plus, il est très bon pour les suites (une partie de la raison pour laquelle il a été développé en premier lieu), ce qui est un bon modèle pour la logique de type 'simulation' que l'on utilise dans les jeux.

Questions connexes