Je pense à essayer l'une de mes anciennes idées de jeu. Le point central de ce jeu serait le niveau possible de personnalisation fonctionnelle de l'environnement et des objets du jeu (comme la modification du comportement des armes d'un vaisseau spatial). Pour cela, le jeu devrait être scriptable. Je n'ai pas non plus l'intention de le commercialiser, c'est simplement un défi de programmation intéressant pour moi.
Comme je suis principalement un gars .NET, j'utiliserai XNA / C # pour le jeu lui-même. Pour les scripts, je pense à aller avec Python ou Lua. J'ai une expérience précédente avec Python et je n'ai rien contre cela en tant que langage. Lua, d'autre part, est presque complètement nouveau pour moi, à part quelques modifications mineures apportées aux extensions de World of Warcraft que j'ai faites ici et là, et cela semble prometteur. Voici donc ma question:
Quels sont les avantages et les inconvénients de Lua par rapport à Python en tant que langage de script pour la plate-forme XNA / C #?
L'un d'eux est-il considérablement plus facile à utiliser avec XNA / C #? L'un d'eux présente-t-il des avantages ou des inconvénients spécifiques lorsqu'il est utilisé avec XNA / C #? Pourquoi recommanderiez-vous l'un sur l'autre pour XNA / C #?
Réponses:
Je ne peux pas comparer les deux, car je n'ai jusqu'à présent expérimenté que l'intégration de IronPython dans un jeu C #. Voici ce que j'aime bien:
1) C'est facile! Téléchargez les DLL IronPython, ajoutez une référence dans le projet,
2) Comme vous pouvez le voir dans l'exemple ci-dessus, IronPython se convertit en fait en classes BCL là où il le peut. le résultat du script est un System.Numerics.BigInteger plutôt qu'un PyObject
3) Le
dynamic
mot clé en C # a été créé pour les situations d'interopérabilité où vous n'avez pas le type statique disponible:la source
IronPython et C # vont bien ensemble, IronPython peut être ajouté à C # pour lui donner une amélioration des performances. Donc, si vos jeux d'écriture, les appels Python en C # sont un avantage. Python lui-même ne peut pas utiliser XNA mais peut utiliser Directx, ce que C # ne peut pas faire directement.
la source