Des technologies ouvertes au service du jeu

Posté par  . Modéré par Fabien Penso.
Étiquettes : aucune
0
26
mar.
2003
Jeu
Je travaille actuellement pour un studio de développement qui porte un jeu PC sur GameBoy Advance. Quelle ne fut pas ma surprise lorsque, analysant les sources du jeu original (Backyard Hockey), j'ai découvert que celui-ci était écrit entièrement en Python ! Qui plus est, toutes ses données sont basées sur XML et... le MNG !
Avez-vous également des exemples de jeux utilisant des technologies ouvertes (comme UT2003 et les OGG) ?

Aller plus loin

  • # Re: Des technologies ouvertes au service du jeu

    Posté par  . Évalué à 9.

    Est ce que python n'est pas un langage interprété ?
    Je pensais qu'un jeu, utilisant des graphismes, demandait une optimisation poussé (genre des bouts de code en assembleur).
    Python m'étonne tout les jours.
    Un peu rebutant au premier abord, voire même semblant un peu simpliste, et puis on constate qu'il peut faire (facilement) ceci, puis cela et on en fini jamais d'être impressionné.
    • [^] # Re: Des technologies ouvertes au service du jeu

      Posté par  . Évalué à 10.

      Le moteur de jeu et le comportement des persos sont peut-être scriptés en python (de même manière qu'on peut customiser les bots dans certains FPS) mais le reste fait certainement appel à des bibliothèques écrites en C/C++.

      Bon, faut voir les screenshots aussi :-))
    • [^] # Re: Des technologies ouvertes au service du jeu

      Posté par  . Évalué à 10.

      Je pensais qu'un jeu, utilisant des graphismes, demandait une optimisation poussé (genre des bouts de code en assembleur).

      C'était vrai à l'époque où les machines n'étaient encore ce qu'elles sont. Ca reste encore (partiellement) vrai pour les jeux 3D actuels.

      L'idée, c'est que les opérations qu'avant on optimisait à mort en ASM, aujourd'hui elles sont disponibles en hard (accélération 2D ou 3D). Pour ces raisons, coder des jeux (2D ou 3D "légère") dans des langages de haut niveau peut complètement s'envisager.

      Un exemple était Arkanae, jeu 3D codé en Java et (étonnament) rapide. Il se basait sur OpenGL4Java, et utilisait ainsi la carte accélératrice. Un jeu 3D software en Java ramerait à mort, par contre.

      Une très bonne base pour commencer un jeu en python: pygame.

      http://www.pygame.org/(...)
    • [^] # Re: Des technologies ouvertes au service du jeu

      Posté par  (site Web personnel) . Évalué à 5.

      Si c'est bien un language interprété.
      Ben si le jeux utilise sdl, gtk ou qt (modules écrit en C qui ont pour rôle de permettre l'utilisation de ces libs avec python) pour l'affichage (voir le son), il y a moyen de faire des jeux qui tournent sans aucun pb sur les machines actuelles (voir facilement sur un pII 400 par ex).
      Il est d'ailleur possible d'écrire certaines parties en C pour les traitements "lourds" par l'intermédiaire des modules C.
      Je ne pense pas qu'il existe des jeux necessitant une IA complexe qui sont réalisé avec python.
      Tout ca pour dire que je trouve que python est un superbe language.
    • [^] # Re: Des technologies ouvertes au service du jeu

      Posté par  . Évalué à 9.

      frozen-bubble est en perl-sdl
      • [^] # Re: Des technologies ouvertes au service du jeu

        Posté par  . Évalué à 10.

        Le gagnant du concours de jeu GPL (news linuxfr d'y a quelques jours) a d'ailleurs utilisé python pour son projet (openGL).

        D'ailleurs, à ce sujet, je dois conseiller à tous TwistedMatrix qui est un framework python. La particularité de celui-ci est d'avoir été créé dans le but de créer des jeux !

        http://twistedmatrix.com(...)

        Pour l'utiliser dans un projet professsionel (pas pour un jeu), c'est une démonstration de ce que peux offrir python...
    • [^] # Re: Des technologies ouvertes au service du jeu

      Posté par  . Évalué à 3.

      Tu sais, même le code de la version GBA (qui a un petit processeur et très peu de mémoire) n'utilise l'assembleur que pour deux choses : la définition du logo Nintendo et le boot (pour branche la console sur le main() du programme). Pourtant ça tourne :-)
    • [^] # Re: Des technologies ouvertes au service du jeu

      Posté par  (site Web personnel) . Évalué à 5.

      > Je pensais qu'un jeu, utilisant des graphismes, demandait une optimisation poussé (genre des bouts de code en assembleur).

      Dans un jeu (en tout cas en 3D), environ 80% du temps est consommé par le rendu des graphiques : OpenGL, carte 3D, raffraîchi de l'écran. Donc faire de l'assembleur permettrait au mieux de gagner 20% de vitesse, pas plus et sans doute beaucoup moins...

      Sinon pour l'IA Python est très bien aussi (les générateurs entre autre) !

      Pour un jeu en 3D en Python, voir Slune http://oomadness.tuxfamily.org/fr/slune(...)
      Le moteur de 3D est en parti en C; le moteur réseau et le jeu lui-même est entièrement en Python
      • [^] # Re: Des technologies ouvertes au service du jeu

        Posté par  . Évalué à 2.

        > Dans un jeu (en tout cas en 3D), environ 80% du temps est consommé
        > par le rendu des graphiques : OpenGL, carte 3D, raffraîchi de l'écran.
        > Donc faire de l'assembleur permettrait au mieux de gagner 20% de
        > vitesse, pas plus et sans doute beaucoup moins...

        Sauf que pour utiliser les pixel/vertex shaders, il faut écrire en assembleur. Il y a bien sûr des langages de plus haut niveau comme Cg, mais d'après ce que j'ai pu lire, c'est pas très optimisé et beaucoup moins puissant.

        Sinon, pour certaines choses, l'assembleur niveau CPU est quand même parfois utile, comme pour le vertex skinning, l'optimisation des shadow volumes ou les calculs matriciels quand on est limité par le nombre d'opérations ou de registres du GPU.

        Mais c'est vrai que l'assembleur est de moins en moins utilisé pour les jeux en 3D.
      • [^] # Re: Des technologies ouvertes au service du jeu

        Posté par  . Évalué à 3.

        > environ 80% du temps est consommé par le rendu des graphiques
        > Donc faire de l'assembleur permettrait au mieux de gagner 20% de vitesse

        Incompréhension là : les rendus sont fait par le GPU (le proc sur la carte vidéo).

        Pour tout ce que fait le CPU (calculs géométriques, collisions, IA, etc...), faire de l'assembleur permet toujours de gagner des perfs (bien plus de 20% sur ces parties :-)) Quant au rendu, il est limité par la vitesse du GPU et c'est tout, que la gestion de l'IA, par exemple, soit codée en asm ou en visual turbo basic++ ne change pas la vitesse du rendu... Sauf ien sur si, et c'est souvent le cas, il y a une synchro entre le GPU et le CPU (genre arrivée à telle étape, les deux s'attendent).

        Donc le fait que les cartes soient accélérées pour le rendu n'enlève à priori aucun des avantages de l'asm sur le visual turbo basic++... Sauf que ca permet aux studios de dev de sortir à moindres frais les jeux d'hiers sur les machines d'aujourd'hui. Ouaaaiiii, on est contant d'acheter super cher du matos de fou pour réduire leurs frais de développement !! :-)
        • [^] # Re: Des technologies ouvertes au service du jeu

          Posté par  (site Web personnel) . Évalué à 2.

          Ouais, enfin, à budget égal, en général, un programmeur fait du code plutôt plus efficace en C avec un compilo bien optimiseur qu'en assembleur. Pour des trucs bien spécifiques, l'assembleur est intéressant, mais il faut bien le cacher au fond d'une librairie et ne plus y toucher après ...
          • [^] # Re: Des technologies ouvertes au service du jeu

            Posté par  . Évalué à 0.

            A budget égal, il en fera surtout nettement moins en asm qu'en C... Maintenant, plus efficace en C, surement pas. Les compilos "bien optimiseur", ca n'existe que dans les cours d'info, surtout sur les intels :-) Pour avoir du C efficace, faut coder en C comme on le ferait en asm et ne jamais se dire "bon ca, le compilateur comprendra que c'est constant et qu'il faut pas le recalculer à chaque fois"... Résultat : a plus la lisibilité. Enfin bref.
    • [^] # Re: Des technologies ouvertes au service du jeu

      Posté par  . Évalué à 5.

      J'ai egalement ete etonne recemment, dans le cadre de mon boulot, de constater que Python est utilise pour faire de gros calculs. En l'occurence il s'agit du programme scientifique Openphonon, disponible sur Sourceforge, qui calcule des dispersions de phonons et donc doit diagonaliser des matrices dynamiques enormes. Mais ! Le python fait allegrement appel a des librairies en C optimisees pour les calculs a effectuer. Finalement on a l'impression d'avoir un langage comparable a un micronoyau faisant appel a des modules specialises. Mais alors, je me pose la question de la securite et fiabilite du langage, quand on sait que ce qui ralentit beaucoup un langage c'est tous les tests sur le type des donnes traitees.
      • [^] # Re: Des technologies ouvertes au service du jeu

        Posté par  . Évalué à 0.

        On utilisait aussi python pour faire de la simulation numérique à la fac. En fait, le python était là juste pour l'interface utilisateur - on développait quand meme les calculs en C, et python appelait les routines. L'intéret, c'etait de pouvoir faire control-C et matter en cours de route le contenu des matrices etc... Assez pratique.
  • # Re: Des technologies ouvertes au service du jeu

    Posté par  . Évalué à 10.

    Hitman 2 contient pas mal de bouts libre, il y en a quelques un dans le générique de fin (mais je ne me souviens pas de tous a part de ogg).

    A noter que dans une mission, on entre dans le bureau d'une secrétaire qui joue évidement au freecell, mais a vue de nez, c'est celui de gnome :)
    • [^] # Re: Des technologies ouvertes au service du jeu

      Posté par  . Évalué à 8.

      Je crois que le jeu mafia utilisait l'ogg (il y a un vorbis.dll dans le rep d'install)
      • [^] # Re: Des technologies ouvertes au service du jeu

        Posté par  (site Web personnel) . Évalué à 9.

        c vrai. Il existe meme un utilitaire (MafiaXTractor) qui permet d'extraire toutes les pistes sons ogg, histoire de garder l'ambiance du jeu, en s'ecoutant une version jazzie de la marseillaise, ou encore l'excellente reprise rap de lake of fire, ou encore le magnifique theme d'ouverture ...

        Bref, ne retenir de ce post que oui, mafia à toute sa piste son codée en ogg.
  • # Re: Des technologies ouvertes au service du jeu

    Posté par  . Évalué à 10.

    J'ai fait un stage dans une boite qui faisait des jeux PC, et ils utilisaient aussi python pour tout ce qui est IA et gestion des quetes, ...
    En passant, pour le developpement sur PS2, ils utilisaient deux compilateurs, celui de codewarrior, et un autre basé sur gcc...
  • # Re: Des technologies ouvertes au service du jeu

    Posté par  . Évalué à 10.

    Je profite de cette dépêche mentionnant la Game Boy Advance pour rappeler qu'il existe une communauté active de développement amateur sur cette console.

    Les outils de développement principalement recommandés sont basés sur GCC. Des émulateurs existent tels VisualBoyAdvance qui fonctionne sous Linux et est sous licence GPL (me semble-t-il), ainsi que certains outils permettant de tester ses réalisations sur la console directement (sans modifications sur le matériel, tels les cables multiboot utilisant le mode link multi-joueurs de cette console).

    Outre des concours, des jeux diffusés sous GPL, une "demo-scene" active, des membres de cette communauté essayent de faire entendre leur voix dans le sens d'une plus grande ouverture (tolérance ?) des constructeurs de consoles.

    Pour plus d'informations :

    http://www.gbadev.org(...)
    http://www.devrs.com/gba/(...)
    • [^] # Re: Des technologies ouvertes au service du jeu

      Posté par  . Évalué à 7.

      Oui. Ceci dit, j'ai développé sur GBA plusieurs mois avec ces outils (cf http://progx.jext.org(...) ou Login:) mais je dois bien avouer que leur système pour débugger est vachement plus pratique qu'un émulateur :-) Pour information, il s'agit d'un gros boîtier connecté en SCSI sur la machine, relié à la console (fournissant une sorte de fausse cartouche + le courant pour éviter d'utiliser des piles), et la contrôlant entièrement (de fait, il s'agit de machines particulières, débridées pour pouvoir être rebootées, etc. depuis le PC).

      Toujours est-il que pour environ 100€ n'importe qui peut acheter une cartouche vierge et uploader ses propres ROMs dedans pour des tests en grandeur nature.
    • [^] # Re: Des technologies ouvertes au service du jeu

      Posté par  . Évalué à 1.

      En ce qui me concerne, le GCC pour ARM/GBA fait systématiquement du "internal error"...
  • # EvE Online

    Posté par  (site Web personnel) . Évalué à 4.

    EvE Online, un jeu online massivement multi joueur est également dévelopé en Python.

    http://www.eve-online.com/(...)
  • # Re: Des technologies ouvertes au service du jeu

    Posté par  . Évalué à 2.

    Praetorians utilise aussi le Ogg/Vorbis. C'est décidément très à la mode dans les jeux récents.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n’en sommes pas responsables.