• [^] # Re: Plutôt que du Lua...

    Posté par . En réponse à la dépêche Sortie d’OpenMW 0.44. Évalué à 10.

    Sans partir dans un débat sur les compétences respectives de chacun, on peut commencer par cette liste:
    https://en.wikipedia.org/wiki/Category:Lua-scripted_video_games

    Je doute que wren ait un tel historique, d'ailleurs je n'en avais jamais entendu parler jusqu'à hier.
    Je connaissais le livre de l'auteur par contre. Je conseille également la lecture du PiL (https://www.lua.org/pil/), véritable cours de programmation même si on ne s'intéresse que vaguement à Lua.

    Revenons à la liste: en la lisant, on se rend compte que Lua a été très utilisé, y compris sur de de très grosses productions (Witcher, Stalker ...).
    Mais par exemple, Witcher 3 n'utilise plus Lua. Pourquoi ? Parce qu'ils ont mis au point leur propre langage de scripting. Ils peuvent se le permettre, car cdp.pl (ex CD-Projekt) est une boite gigantesque.

    Que font les autres grosses entreprises ? Soit elles utilisent également leur propre langage de script, soit celui du moteur 3D (sous licence ou dérivé) utilisé. Par exemple, le UnrealEngine possède son propre langage de script (un éditeur de graphes, pour être plus précis). Unity3d ne fait que se scripter en C#. Et je ne cite que les deux plus connus.

    Toujours dans la liste, on trouve cependant des jeux indés récents, donc à équipe réduite.
    OpenMW se situe dans la catégorie des indés, à moins qu'on ne m'ai caché des choses :)

    Je rappelle également que le moteur graphique de OpenMW est OpenSceneGraph, qui se scripte en Lua.

    D'autre part, l'objet est un fait acquis, c'est certain. Mais ce qu'on demande le plus souvent à un langage de scripting dans un jeu video, c'est de:
    - lire des fichiers de config (donc itératif sans réel besoin de classes)
    - contrôler le comportements d'entité, comme le garde qui patrouille ou attaque (machines à état, c'est une interface)
    - la serialisation pour les sauvegardes/chargement du jeu (Lua fait ça très bien, cf le PiL pour quelques exemples).
    - du parsing et du traitement de chaines (tout ce qui est localisation).

    Donc globalement, des traitements très procéduraux, à un niveau assez bas d'où les classes sont absentes (ou découlent d'un traitement script qui fait revenir dans le C++, car il y a également des limites au temps que l'on peut se permettre de passer dans un script).

    Ce qui ne gache rien, c'est que Lua est rapide dans sa version de base (la version 5.4 en préparation promets une nette amélioration des performances, contre un certain alourdissement du bytecode). Et est même encore plus rapide dans sa version LuaJIT, qui laisse sur place les autres langages de script hors V8 me semble t-il.

    Voilà mon avis argumenté sur la question :)

    Discussions en français sur la création de jeux videos : IRC libera / #gamedev-fr