IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement 2D, 3D et Jeux Discussion :

A quel moment devient il interessant de faire appel à un langage de script?


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 574
    Points : 109
    Points
    109
    Par défaut A quel moment devient il interessant de faire appel à un langage de script?
    Bonjour,

    Après plusieurs lectures, je me suis rendue compte que beaucoup de développeurs, utilisait un langage de script en plus du C++ dans leur création de jeux vidéos.

    Cependant, j'aurais voulu savoir pourquoi? à quel moment cela devient il vraiment intéressant (voir indispensable) de faire appel à des scripts?

    ps: Je suis curieuse...

  2. #2
    Inactif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 180
    Points : 148
    Points
    148
    Par défaut
    pour faire vraiment simple,

    on garde le c++ pour tous les calculs gourmands en processeur (rendu, collisions)

    le script gère ce qui ne consomme pas grand chose (évènements, ia, controle de l'animation, interactivité...)

    ce n'est pas vraiment le même travail.
    pour la partie c++ on demande surtout une bonne connaissance de l'architecture de l'ordinateur
    pour la partie script il faut surtout des connaissances en algo

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 574
    Points : 109
    Points
    109
    Par défaut
    Heu... Je comprends pas très bien...
    Si tu as une interface graphique, tu vas récupérer les événements générés par l'utilisateur et ensuite tu vas appeler des fonctions en conséquence...
    Si il s'agit de mettre à jour de données... En fait, les données globales au jeu tu les gères dans la partie script? Mais des que tu veux appeler des fonctions pour redessiner, tu fais appel au C++ par exemple?

  4. #4
    Inactif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 180
    Points : 148
    Points
    148
    Par défaut
    tout dépend du moteur utilisé

    par exemple pour l'unrealEngine, le coeur du moteur (c++) se charge de trier et envoyer des polygones et shaders à la carte vidéo, d'interpoler les mouvements des maillages animés, de tester les collision entre les objets.. ces calculs sont appelés très souvent par le process
    exemple: je dis à la carte de rendre 500 polygones à travers 12 shaders et de tester des collisions entre 8 personnages et une trentaine de polygones chacun et pour chaque perso j'interpole les 5000 vertices de leur maillage pour avoir la bonne frame d'animation

    ensuite le script, lui est beaucoup plus lent mais appelé rarement (une fois par frame et par objet contrôlé) et sert à faire plin de petits actions très simples qui mises bout à bout donnent des comportements complexes
    exemple: mon personnage marche vers le personnage b, une fois son objectif atteint il l'attaque, et une fois qu'il est battu il se sauve en courant

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 574
    Points : 109
    Points
    109
    Par défaut
    Ce genre de chose, on peut le faire aussi en C++... Quel est le véritable avantage de le faire en mode script...?

  6. #6
    Inactif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 180
    Points : 148
    Points
    148
    Par défaut
    que c'est plus facile (portable, simplicité de syntaxe, souplesse et robustesse, pas besoin de savoir ce qui se passe dans la machine, pas de risque de péter le moteur...) donc plus rapide et moins couteux à développer, on peut en produire au kilo..
    par contre c'est lent donc il faut être rigoureux au niveau de l'optimisation

  7. #7
    Membre éclairé
    Avatar de Happy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2005
    Messages : 665
    Points : 875
    Points
    875
    Par défaut
    Le script sers à contrôler les fonctions qu'on lui donne, en plus de nous aider à faire quelques petites actions sans besoin de recompiler tout le programme c++.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 574
    Points : 109
    Points
    109
    Par défaut
    D'accord, mais en même temps, si il y a une partie de ton code qui n'est pas "portable", de toute façon meme si tu as des bouts portables, cela ne le rend pas portable en globalité...

    Sinon, je me demandais, par exemple avec le langage Lua, les classes ne sont pas directement gérées. En fait, tu les créer en C++, et ensuite tu peux les utiliser dans tes scripts grâce à un mécanisme de table... Est ce que cela est finalement avantageux de conserver toute la logique du jeux en script sachant qu'il nécessitent en fait d'appeler les fonctions en C/C++ sur les objets...

  9. #9
    Inactif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 180
    Points : 148
    Points
    148
    Par défaut
    Oui, avec le script on ne touche plus au moteur, on lui donne simplement des petites instructions.

    Ce n'est pas valable que pour les jeux vidéo, c'est le même principe avec le script de photoshop, de 3dsmax: le script leur ajoute des fonctionnalités sans avoir à recomplier l'application

  10. #10
    Inactif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 180
    Points : 148
    Points
    148
    Par défaut
    Citation Envoyé par zuzuu Voir le message
    D'accord, mais en même temps, si il y a une partie de ton code qui n'est pas "portable", de toute façon meme si tu as des bouts portables, cela ne le rend pas portable en globalité...
    Oui si ton moteur n'est pas portable, tu perds cet interêt du script.

    Si tu fais du développement amateur ou petit budget de toutes façons ce n'est pas intéressant de se lancer dans le développement d 'un interprétateur de script.

    Citation Envoyé par zuzuu Voir le message
    Sinon, je me demandais, par exemple avec le langage Lua, les classes ne sont pas directement gérées. En fait, tu les créer en C++, et ensuite tu peux les utiliser dans tes scripts grâce à un mécanisme de table... Est ce que cela est finalement avantageux de conserver toute la logique du jeux en script sachant qu'il nécessitent en fait d'appeler les fonctions en C/C++ sur les objets...
    Cela dépend entièrement du moteur, il n'y a pas vraiment de règle.

    Certains moteurs délèguent toute la logique du jeu au script, ce ne sont pas des moteurs de jeu mais plutôt des plateformes multimédia (virtools par exemple...),
    D'autres gèrent l'essentiel de la logique du jeu et le script n'est là que pour scénariser (comme l'unreal engine) et ils coutent beaucoup plus cher.

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 574
    Points : 109
    Points
    109
    Par défaut
    D'accord, je commence à comprendre... Surtout que dès que l'on a de grosse application, cela devient intéressant de ne pas tout recompiler... En même temps, normalement, on ne recompile que les fichiers qui ont été modifié...
    Mais bon, si on est beaucoup à coder en même temps... ça va vite...

    Puis je te poser encore une question. Tu utilises quoi comme langage de script et pourquoi...?

    Je me pose la question surtout parce que je viens de lire un document sur Lua... qui apparemment est beaucoup utilisés dans les jeux vidéos de nos jours...

    Je me demandais pourquoi Python ne "veut" pas se pencher sur la partie embarqué qui finalement fait la réelle différence entre les deux langages?...

    Connais tu Lua...?

  12. #12
    Inactif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 180
    Points : 148
    Points
    148
    Par défaut
    Je connais pas très bien lua... j'ai juste lu quelques doc.

    Mais lua est simplement une norme de langage de script qui peut être exécuté par n'importe quel programme. Pour chaque moteur on lui développe ses propres librairies lua.
    Python c'est pas la même chose, c'est fait pour s'exécuter sur son environnement à lui.

    Tu trouveras plus de réponses ici : http://mdeverdelhan.developpez.com/t...lua/tutoriel1/

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 574
    Points : 109
    Points
    109
    Par défaut
    J'avais déjà vu cet article... En fait, il explique plus comment faire transiter les données de Lua vers C et vice versa...

    Je pense avoir compris le concept de script, dans l'ensemble, c'est quand même pour faciliter la vie des gens qui participe au développement mais qui ne sont pas forcément ultra "calé" en informatique ... et pour simplifier la récupération et le traitement de données parfois...

    Je pense que c'est en développant un jeu que je pourrais vraiment réaliser si à un moment par exemple, un script aurait été plus approprié... Comme par exemple, un script qui contient grâce à des nombres dans un tableau, quel objet se trouve à tel ou tel coordonnées... C'est dans ce genre de cas que le script est utile car il suffit de changer les numéro de place et on obtient une disposition différente sans avoir à reconfigurer...

    Merci pour tes réponses.

  14. #14
    Inactif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 180
    Points : 148
    Points
    148
    Par défaut
    Le choix dépend aussi de l'envergure du projet...
    Si on investit du temps dans le développement d'un interprétateur du script ça implique qu'ensuite on l'utilise, donc que vous soyez un certain nombre dans votre équipe, ou bien un developpement à long terme, ou moteur commercialisable
    Et il faut aussi que ça serve à quelque chose au moteur... pour une course de voitures par exemple c'est pas très utile

  15. #15
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Points : 5 323
    Points
    5 323
    Par défaut
    Citation Envoyé par zuzuu Voir le message
    J'avais déjà vu cet article... En fait, il explique plus comment faire transiter les données de Lua vers C et vice versa...
    Dans la premiere partie de l'article, il y a une liste des raisons pour lequels utiliser un langage de script, dont, celle qui est sans doute la plus importante :
    avoir une meilleure séparation entre le moteur et le code spécifique à un jeu, et le fait que la partie gameplay n'est pas forcement écrite par des dieux du code.

    c'est très agréable, quand tu a ton code moteur qui fonctionne, de pouvoir faire des tests sur le gameplay sans avoir à relancer une compile, link etc... sachant que plus le projet grossi, plus cette phase prend du temps (ca peut monter à plusieurs minutes, voir dizaines de minutes sur des gros projets, notamment le link qui lui est difficilement compressible même avec un linker incremental...)
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

  16. #16
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 381
    Points
    20 381
    Par défaut
    Citation Envoyé par zuzuu Voir le message
    Cependant, j'aurais voulu savoir pourquoi? à quel moment cela devient il vraiment intéressant (voir indispensable) de faire appel à des scripts?

    ps: Je suis curieuse...
    La réponse est ultra simple : tout le monde ne maitrise pas C++, un langage de script est de pouvoir paramêtrer comme on le souhaite un jeu c.a.d. pouvoir faire des niveaux personnalisés.

    Comme le dit Bafman c'est pouvoir configurer le gameplay.
    En C++ on fait les parties génériques ( affichage vidéo, son , rendu etc..) et le scripts permet de faire des missions, niveaux..

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 574
    Points : 109
    Points
    109
    Par défaut
    Est ce que vous pourriez me donner un exemple (très simple) de ce qui devrait être implémenté en quoi...

    Je vous donne quelque élément basique pour l'exemple, mais si vous avez une meilleure idée, je suis preneuse...


    Vous avez des personnages en réseaux qui vont évoluer dans un monde avec des monstres (exemple très courant, c'est pour cela que je prend ceci) .
    Je résume à peu près les actions à prendre en compte
    1) dessinez les éléments à l'écran
    2) gérer les données (au sens stockage, visualisation)
    3) charger les maps, objets, etc...
    4) gérer les données du jeu au sens, les actions à effectuer...
    5) sauvegarder les données
    6) faire transiter les données vers le serveur du jeu..

    etc...
    Quelles parties devrait plus se faire avec C++ ou avec un script...?

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 574
    Points : 109
    Points
    109
    Par défaut
    Ah mince, j'avais pas vu ton message Mat sur la deuxième page...
    Mais, si possible je voudrais savoir l'orientation à prendre pour des gens qui connaissent la programmation C++... Et en terme l'évolution du jeu...

  19. #19
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 381
    Points
    20 381
    Par défaut
    Basiquement et moi je le vois comme cela si c'est en réseau pas besoin de langage script.
    Si c'est monojoueur script oui pour l'IA ou bien pour programmer des niveaux particuliers.

  20. #20
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Les gens disent souvent "oui les scripts c'est bien pour l'IA" mais j'ai une question : est-ce que ça ne donne pas un gros coup aux performances d'appeler l'évaluation d'un script à chaque frame et pour chaque objet ?

    Perso je suis en train de coder un jeu, je compte gérer l'IA à coup de scripts, mais l'IA sera pré-chargée à l'initialisation grâce aux scripts. Puis à chaque frame, tout sera alors géré par le moteur du jeu.

    Je pense que dans un jeu, il faut séparer deux choses :
    - Ce qui est chargé et exécuté à l'initialisation du jeu/du niveau (options, niveaux, position des objets au démarrage, GUI, etc) dont peu nous importe la vitesse.
    - Ce qui est exécuté à chaque frame (affichage et mise à jour des objets, etc), et donc où la vitesse est très importante.

    Dans le premier cas je pense qu'un script est approprié, dans le second cas je ne pense pas. A la limite, OK pour implémenter un système d'évènement géré par les scripts qui serait appelé une fois de temps en temps (genre "joueur machin a subi X dégâts" ou "monstre untel a fait son apparition" ...), mais ça ne me semble pas facile à mettre en place (faut que j'étudie la question d'ailleurs).

Discussions similaires

  1. Réponses: 4
    Dernier message: 22/03/2008, 10h17
  2. avec quel méthode ça me permet de faire ça
    Par ulysse031 dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 16/04/2007, 22h01
  3. tableaux dynamique imbriqués à quel moment l'écrire
    Par lodan dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 02/04/2007, 15h24
  4. Réponses: 6
    Dernier message: 25/08/2006, 11h49
  5. [Compilation] A quel moment pour une application ?
    Par Rick1602 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 04/03/2004, 20h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo