• [^] # Re: Javascript

    Posté par . En réponse à la dépêche Dernières évolutions autour de 0 A.D.. Évalué à 1.

    Et tu retrouve un problème de compatibilité pour tous les langages non natif.

    C'est un fait. Après... c'est vrai que je me suis peut-être trop habitué à ne plus être sous windows et à avoir des paquets qui vérifient de façon simple et efficace la présence des dépendances.
    D'un autre côté, même si tu embarques un langage natif ou pas, tu te retrouveras toujours avec des problèmes de dépendances, des gens qui essayerons d'utiliser un mod fait pour une version du langage interprété qui ne correspond pas à celle avec lequel le jeu à été compilé, par exemple. En natif, tu as le souci des libs installées.

    De base, le JS a quand même accès à bien moins de fonction.

    Le problème n'est pas d'avoir accès à moins de fonctions, mais à quel point elles sont user-proof ainsi qu'a quel point le code appelant est résistant aux erreurs, et ça, il faut bien le gérer quelque part. Par exemple, ValyriaTear qui utilise du lua n'est pas spécialement résistant, et j'ai expérimenté des crash dus à des erreurs dans le code lua. Forcément, vu que c'est pas compilé dans un binaire, la vérification doit se faire au runtime, et on peut se retrouver avec des versions foireuses.
    Autre exemple, il y a encore pas si longtemps, voir des navigateurs bugguer à bloc à cause d'un code JS foireux n'était pas hors-norme. Et de gros bugs sont au moins aussi frustrant pour le joueur qu'un crash propre ( on surcharge std::terminate pour qu'il fasse une autosave, si on a une appli suffisamment exception-safe, au moins le joueur n'a peut-être pas perdu tout son temps... ) selon mon opinion très personnelle de joueur.

    Bien sûr, c'est sans doute faisable, mais c'est un gros boulot pour un bénéfice assez limité.

    C'est pour ça que j'ai dit que je suis d'accord et que mon objectif n'était que de nuancer.
    Les systèmes extensibles, ce n'est jamais simple à faire, entre la stabilité nécessaire de l'API et les protections du jeu contre le système d'extensions, et c'est encore pire quand les dites extensions sont modifiables sans re-linker le binaire, puisqu'on a alors plus aucune garantie quant à leur validité.
    Attention, je ne dis pas que les langages interprétés sont mal, juste que chacun voit le juste milieu entre vitesse d'exécution, sécurité de l'extension ( pas au sens attaque, mais au sens bug ), souplesse ( quel langage? ) et autres paramètres.