Question

J'essaie de créer un moteur de jeu 3D utile à partir du moteur de rendu Ogre3d afin de se moquer de certaines des idées que j'ai proposées et qui sont maintenant à la croisée des chemins. Il existe un certain nombre de langages de script disponibles et je me demandais s'il y en avait un ou deux qui avaient été vérifiés et suivis de près.

LUA et Squirrel semblent être les plus examinés, mais je suis ouvert à tous.

De manière optimale, il serait préférable de disposer d’un formulaire compilé pour la langue afin de faciliter la distribution et le chargement.

Était-ce utile?

La solution

La syntaxe est une question de goût. Lua est semblable à Javascript mais avec des accolades remplacées par des mots-clés de type Pascal. Il possède la fonctionnalité syntaxique intéressante, à savoir que les points-virgules ne sont jamais requis, mais que les espaces ne sont toujours pas significatifs. Vous pouvez même supprimer tous les sauts de ligne et le laisser fonctionner. En tant que personne ayant débuté avec C, je dirais que Python est celui avec la syntaxe ésotérique comparé à tous les autres langages.

LuaJIT est aussi environ 10 fois plus rapide que Python et l’interprète Lua est beaucoup plus petit (150 Ko ou environ 15 000 lignes de C que vous pouvez réellement lire et comprendre). Vous pouvez laisser l’utilisateur scripter votre jeu sans avoir à intégrer un langage volumineux. D'autre part, si vous extrayez la partie analyseur de Lua, elle devient encore plus petite.

Autres conseils

Une des options intéressantes est stackless-python . Cela a été utilisé dans le jeu Eve-Online.

Le manuel de l'API Python / C est plus long que le manuel entier Lua (y compris l'API Lua / C).

Une autre raison de Lua est la prise en charge intégrée des coroutines (multitâche coopératif au sein d’un seul thread de système d’exploitation). Cela permet à des milliers de scripts apparemment individuels de fonctionner très rapidement les uns avec les autres. Comme un script par monstre / arme ou autre.

(Pourquoi les gens écrivent-ils tellement Lua en majuscule sur SO? C'est "Lua" (voir ici ).)

Encore un vote pour Lua. Petit, rapide, facile à intégrer, ce qui est important pour les consoles modernes - vous pouvez facilement contrôler ses opérations de mémoire.

J'irais avec Lua car écrire des reliures est extrêmement facile, la licence est très conviviale (MIT) et les bibliothèques existantes ont également tendance à être sous cette licence. Scheme est également agréable et facile à lier, raison pour laquelle il a été choisi pour l'éditeur d'images Gimp, par exemple. Mais Lua est tout simplement génial. World of Warcraft l'utilise comme exemple très prestigieux. LuaJIT vous offre des performances compilées en natif. Il s'agit d'une valeur inférieure à une commande de magnitude de C pur.

Je ne recommanderais pas LUA, il a une syntaxe particulière, donc il faut un certain temps pour s'y habituer. En fonction de la personne qui effectuera le script, cela ne posera peut-être pas un problème, mais je voudrais essayer d'utiliser quelque chose d'assez accessible.

Je choisirais probablement python. Normalement, il compile en bytecode, vous devez donc intégrer l'interpréteur. Cependant, si vous en avez la nécessité, vous pouvez utiliser PyPy pour traduire par exemple le code en C, puis le compiler.

L'intégration de l'interprète n'est pas un problème. Je suis plus intéressé par les fonctionnalités et les performances en ce moment. LUA et Squirrel sont tous deux interprétés, ce qui est agréable, car l’un des jeux que je construis consiste à inclure du code modifiable, qui a un éditeur en jeu.

J'aimerais beaucoup entendre parler de python, car j’ai vu son utilisation dans la série des champs de bataille, je crois.

python est également pratique car il possède des liaisons OGRE réelles, juste au cas où vous auriez besoin de modifier quelque chose d'un niveau inférieur à la volée. Je ne connais aucune liaison équivalente pour Lua.

S'agissant d'une bibliothèque C ++, je suggérerais soit JavaScript, soit Squirrel, ce dernier étant mon préféré parmi les deux, car il est encore plus proche du C ++, en particulier de la façon dont il gère les tables / structures et les classes. Il serait plus facile de s’habituer à un codeur C ++ en raison de toutes les similitudes.

Toutefois, si vous utilisez JavaScript et recherchez une version HTML5 d’Ogre3D, vous devriez pouvoir transférer votre code de jeu directement dans la version Web avec des modifications minimales (le cas échéant) nécessaires.

Ces deux solutions constituent un bon choix. Elles présentent des avantages et des inconvénients, mais elles seraient certainement les plus faciles à apprendre, car vous travaillez probablement déjà en C ++. Si vous travaillez avec Java, la même chose peut être vraie, et si c'est Game Maker, vous n'aurez besoin ni de l'un ni de l'autre sauf si vous essayez de créer un exécutable que les gens n'auraient pas besoin de Game Maker pour s'exécuter, dans lequel cas, bonne chance pour trouver une extension pour exécuter l’un ou l’autre de ces programmes.

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