Journal Go, Go Speed Racer!!

Posté par (page perso) . Licence CC by-sa
24
31
mar.
2015

Sommaire

Ah c'est ça que tu fais depuis plus de deux mois?

Petites voitures

Dans les années 90, les jeux vidéo étaient encore une affaire bizarre. Je me souviens d'une fin de soirée qui traînait en longueur, où un pote m'a dit "je te prends à Skidmarks quand tu veux, patate de canapé" à qui j'ai répondu "ben pourquoi pas maintenant, grosse larve prétentieuse" lui me répond "t'es sûr? ça risque de péter l'ambiance" mais yavait pas d'ambiance ; le temps de brancher les Gravis Gamepad(tm) et vroum. Je vous la fais courte, la soirée a re-démarré comme en 40, la musique est devenue mieux, et le groupe d'hystériques qui se tirait la bourre en se filant des coups de coude mettait plutôt du groove qu'autre chose. Plus tard on a re-essayé avec PS/Tekken, ça marchait pas mal non plus mais c'était plus violent (les filles préféraient la course). Skidmarks est devenu LE hit de soirée incontournable.

Super Skidmarks

Fast-forward 20 ans + tard, je traîne ma souris sur Linux Game Tome, Penguspy, nimportou.com à la recherche d'un truc semblable: Une piste de course vue d'en haut, des voitures qui dérapent. Soupir. Et puis un jour de l’hiver dernier, un journal dans ces pages à propos du Blender Game Engine, AKA "l'onglet dans Blender oùsque je vais jamais de peur des dragons" a piqué ma curiosité, avec le double effet bonus de réduire à néant ce qui me restait de vie sociale.

Go, Go Speed Racer!!

GGSR

Blender Game Engine

Blender et moi, c'est une longue histoire, commencée en 1998 le jour du communiqué de Ton Rosendaal sur Slashdot qui annonçait la libération du code (qui s'est faite par étapes). ce Modeleur/Animateur/Compositeur/Monteur/Torréfacteur m'a bien aidé depuis (avant c'était Lightwave) à chaque fois qu'il a fallu bidouiller un truc en 3D pour un logo, un titre, une anim. Du coup ce journal a piqué ma curiosité et j'ai passé toutes les soirées du mois suivant à regarder des vidéos de dev BGE.

Briques logiques

Le principe de BGE est d'attacher des briques logiques à des objets afin qu'ils fassent des choses. Ces briques sont de trois types : Sensor, Controller, Actuator. Les sensors détectent des trucs (proximité / collision, propriété (on voit ça + loin) timer, etc.). Les actuators font/déclenchent des choses (son, animation, propriété (oui oui, ça vient)) et les contrôleurs, de types soit booléens (ou, et, etc.) ou python (what?) relient les deux.
Une propriété, c'est juste une variable (de tous les types courants) attachée à un objet. C'est comme ça que tout marche, que les objets se parlent entre eux.

Note que BGE ne sert pas qu'à faire des jeux.

Python ?

Python, oui. Tout l'userland de Blender est en Python, et l'API est ouverte au scripting un peu partout, et notamment dans le BGE via ces deux contrôleurs : Python, et Python Module. Pour faire court, Python c'est un script python qui existe dans le fichier .blend — oui il y a un éditeur de texte dans blender — et "Python Module" (Race.engine), c'est une fonction engine dans un script python externe au fichier "Race.blend".

Suspension, form factor, collision mesh, masse = accident.

Nous (le pote du début est venu m'aider) ne sommes heureusement pas les premiers à tenter de reconstituer le modèle physique d'un véhicule à quatre roues sur une surface dure. Pas mal de scripts, de recettes, sont réparties entre blenderartists et Blender Exchange. il n'empêche, tout ça impose des tests assez rigolos, au cours desquels des Camions s'envolent comme des ballons ou rebondissent à 30 mètres comme une boule de flipper, big fun for the whole family. Attention, tout a changé lors du passage à la version 2.5 ; tous les scripts qui commencent par import GameLogic sont plus ou moins obsolètes.

Distribution

Le jeu sera libre, en GPL, téléchargeable avec les sources.

Versions

Les versions, quand tu bosses avec des fichiers binaires (ben oui les scripts python OK, mais les .blend c'est du binaire) c'est l'enfer. À chaque commit, si tu as bougé un objet d'un BU (blender unit) ou encore juste renommé une texture, c'est tout le binaire qui est dupliqué. Pas de patch, (donc pas de stash) pas de diff enfin rien, juste de la sauvegarde de versions quoi, et un dépôt qui double de taille exponentiellement tous les jours.

Futur

Proche

Il faut arriver à tout compiler pour diminuer les temps de chargement. Actuellement, dans l'archive de l'alpha (pour Linux & Win 32 & 64Bits, et MacOSx) il y a le blenderplayer (donc basiquement Blender*) et les fichiers .blend.

Lointain

Mon prochain jeu sera techniquement différent, toujours dans Blender, mais en Java et avec un autre moteur, LibGDX, via BDX, qui permet de compiler vers Java Desktop, Android, iOS, etc.
Celui d’après sera en Clojure, si je suis encore vivant.

Motivation

Ça fait des semaines que je suis sur ce truc. J'ai tout mis de côté pour faire bouger des petites voitures de couleur, mon entourage commence à me regarder bizarre. J'ai fait une page web, je l'ai envoyée à tous mes (trois) amis mais j'ai du mal à voir qui tout ça pourrait intéresser. Et puis un d'eux m'a dit "pourquoi tu fais pas un kickstarter ?" donc j'ai monté UNE CAMPAGNE INDIEGOGO!!.

Liens utiles

  • # GeneRally

    Posté par (page perso) . Évalué à 1.

    Dire qu'un tel jeu n'existe plus est un poil exagéré, mais pour soutenir le projet, je n'évoquerai pas Generally qui propose bien un jeu de courses endiablées avec vue de dessus.

    • [^] # Re: GeneRally

      Posté par (page perso) . Évalué à 4.

      Alors ça, s'il existait une version Linux, je reconnais que j'y jetterai bien un coup de joypad.

      • [^] # Re: GeneRally

        Posté par (page perso) . Évalué à 1.

        Il est dit que le jeu n'est pas multiplateforme mais qu'il tourne bien avec Wine :

        Whilst the game isn't natively cross-platform, it can run on OS X and Linux using WINE

        Par contre, je ne sais pas si Wine gère bien les joypads. Je suppose que oui car Wine est très souvent utilisé pour les jeux donc la demande doit être non négligeable.

  • # Sympa

    Posté par . Évalué à 1.

    J'avais essayé le BGE, mais j'ai vite perdu patience … en plus Python c'est pas ma tasse de thé :(

    Et quand Cycles est sortit, l'Internal Render m'a fait sortir du BGE pour les anims physiques (oui, je sais, ça a changé depuis).

    Bon courage pour le GOGO !

  • # Gestion des version

    Posté par (page perso) . Évalué à 5.

    Nous avons eu le même problème lorsque nous avons développer notre simulateur robotique basée sur Blender / BGE, et on a fini par tout quasiment tout externaliser (i.e. ne garder dans blender que le strict minimum, cad les assets) et maintenir tout le code python à l'extérieur (et donc dans un joli dépôt avec un joli historique) (non seulement la logique, mais une bonne partie de la construction de scène aussi, via l'API bpy).

    Si tu veux t'inspirer / regarder comment on a fait, n'hésite pas à jeter un coup d'oeil à la doc et au github.

    • [^] # Re: Gestion des version

      Posté par . Évalué à 7.

      Dans LibreOffice, il est possible de sauvegarder un ODT en version XML plate (avec un répertoire pour les trucs annexes) plutôt qu'en un zip tel qu'on le connaît. Il n'y a pas ça dans Blender ? ça permettrait d'avoir les avantages du .blend mais sans les inconvénients du binaire.

  • # Skidmarks souvenir…

    Posté par (page perso) . Évalué à 10. Dernière modification le 01/04/15 à 01:58.

    Ah Skidmarks ! Je l’avais sur Megadrive, la cartouche avait le bon goût de comporter deux ports manettes qui s’ajoutaient donc aux ports de la console elle-même, permettant de jouer à quatre. \o/

    cartouche Super Skidmarks Megadrive
    Quatre joueurs Super Skidmarks Megadrive

    ce commentaire est sous licence cc by 4 et précédentes

  • # Corrections

    Posté par (page perso) . Évalué à 2.

    J'ai besoin d'une correction, j'ai fait la demande dans la tribune de rédaction, il y a une autre démarche?

  • # rsync

    Posté par . Évalué à 2.

    À chaque commit, si tu as bougé un objet d'un BU (blender unit) ou encore juste renommé une texture, c'est tout le binaire qui est dupliqué. Pas de patch, (donc pas de stash) pas de diff enfin rien

    Si c'est vraiment gênant il y a rsync qui peux mettre à jour seulement la partie du binaire qui a changée.
    Et pour rester cohérent tu enlèves ce binaire du gestionnaire de version dans lequel tu ne garde que ton projet blender.
    Ceci fonctionne si Blender garde l'historique d'annulation dans ses fichiers projets.

    C'est juste une idée je ne connais pas assez Blender pour être formel.

    kentoc'h mervel eget bezan saotred

    • [^] # Re: rsync

      Posté par (page perso) . Évalué à 2.

      tu enlèves ce binaire du gestionnaire de version dans lequel tu ne garde que ton projet blender.

      Ben je crois bien qu'on va faire comme ça…

      Ceci fonctionne si Blender garde l'historique d'annulation dans ses fichiers projets.

      Ça ça risque pas, vu les nombreux modes d'undo (objet, edit, scene, etc.)… Zul, au-dessus, semble avoir eu les mêmes problèmes (sans doute même en plus gros, yaka voir le projet, impressionnant) à base de rsync..? Zul, vous faites comment du coup, pour checkout une version donnée du projet ? J'ai cherché de l'info là-dessus dans vos docs mais je n'ai pas (encore) trouvé.

Suivre le flux des commentaires

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