J'ai entendu dire que Lua est un bon langage de script qui s'intègre au C++. Quelqu'un connaît-il de bonnes ressources pour l'apprendre, pour quelqu'un qui a beaucoup d'expérience en C++ ?
Réponses
Trop de publicités?Vous pouvez vous tourner vers toLua++ ou Luabind pour l'intégration de C++.
Pour ce qui est de l'apprentissage du langage Lua, le livre Programming in Lua ou même le manuel de référence Lua ne devraient pas être hors de votre portée. documentation de la section du site web lua.
La règle habituelle s'applique : lisez beaucoup d'autres codes lorsque vous débutez. Si c'est votre tasse de thé, vous pouvez par exemple aller fouiller dans les addons de World of Warcraft pour trouver des exemples concrets (certes spécialisés).
Et écoutez la communauté : abonnez-vous à certaines listes de diffusion, jetez un coup d'œil à l ressources lua-users (surtout le wiki), et cetera.
Je travaille dans une entreprise de développement de jeux, et nous utilisons principalement C++ et lua ensemble. Nous n'utilisons pas encore réellement Luabind ou toLua++ (principalement par manque de temps pour les tester et les intégrer), mais nous avons appris quelques petites choses :
- vous voudrez faire un choix entre créer et détruire les environnements lua (instances lua_State) à la demande et en garder un ou plusieurs ; s'en débarrasser peut atténuer les problèmes de mémoire et fournir de beaux environnements d'exécution non pollués
- tirer parti de la capacité de lua_pcall à enregistrer une fonction de débogage, cf. discussion sur Gamedev.net
- si vous disposez d'un budget mémoire, envisagez d'utiliser
lua_setallocf
pour changer le comportement de l'allocateur -- le contraindre à sa propre zone de mémoire pour éviter la fragmentation, et tirer parti d'un petit allocateur d'objets plus efficace (peut-être boost::pool) pour réduire l'overhead (d'autres idées dans une réponse précédente ) - obtenir un bon éditeur compatible avec le langage lua Nous utilisons beaucoup SciTE et Crimson Editor dans mon travail.
- faites attention à votre ramasseur de déchets, appelez gc avec différents arguments et voyez ce qui fonctionne le mieux pour vos besoins en performance et en mémoire ; nous avons eu des jeux pour lesquels un gc complet à chaque image était le bon choix, et d'autres pour lesquels 10% par image était le bon choix
- quand vous serez à l'aise, tendez la main à métatables ; altération
index
ynewindex
s'est avéré particulièrement utile pour nous - oh, et coroutines sont sexy
Cela pourrait vous donner une idée de l'endroit où commencer. La bibliothèque Lua C est d'un niveau un peu plus bas que ce à quoi vous pourriez vous attendre en ce qui concerne le mélange de votre propre code C++ avec la machine virtuelle Lua, etc, mais jetez quand même un coup d'œil à ces documents.
Tout d'abord, voir http://www.lua.org/manual/5.1/manual.html#3 . Il est très facile d'intégrer Lua et C++. Mais pour les gros programmes, je suggère d'utiliser swig.