2000 planètes en 22ko ! Comment ont-ils fait ?

La page d'accueil d'Elite

La page d’accueil d’Elite

En septembre 1984, sort le jeu vidéo Elite. Contrairement à une idée reçue en France, ce n’est pas sur Commodore 64 qu’il est sorti en premier, mais sur le BBC Micro, avant d’être porté sur toutes les machines de l’époque (même les moins connues, comme le Einstein).

The famous BBC Micro

The famous BBC Micro

Vous ne connaissez pas le BBC micro ? Normal, cette machine a été un énorme succès au Royaume-Uni, et seulement dans ce pays. Si 1 million d’exemplaires se sont vendus, c’est grâce à une émission très populaires de la BBC – la chaîne nationale britannique – qui permettait de s’initier à la programmation… sur un BBC micro, bien sûr ! Acorn, son constructeur, essaiera sans succès de pénétrer les marchés étrangers, mais à l’instar des machines Thomson, les ordinateurs Acorn restèrent cantonnés à leur marché national.

Le principe du jeu est relativement simple : vous êtes un commerçant, propriétaire d’un cargo armé, et vous devez faire prospérer votre petite entreprise. Pour cela, vous devez aller de planète en planète, et choisir de commercer des produits légaux (solution peu risquée mais nécessitant plus de stratégie) ou des produits illégaux (solution plus lucrative, mais risquée à cause des pirates et de la police spatiale).

Elite est considéré comme un produit révolutionnaire. Les graphismes étaient avant-gardistes (bon pour l’époque, hein. La 3D fil de fer aujourd’hui, ca pique un peu quand même), la liberté était totale, et l’univers était gigantesque : 8 galaxies composées chacune de 256 planètes habitables, soit 2500 planètes à visiter…

C’est déjà pas mal, mais l’ensemble tient en… 22 kilo-octets ! Quel est le secret de David Braben et Ian Bell ?

David Braben et Ian Bell

David Braben et Ian Bell

Comment ont-ils fait cela ?

Pour que votre terrain de jeu soit immense, vous avez deux solutions :

  • Vous engagez une armée de développeurs, graphistes et concepteurs, et vous modélisez votre monde dans le moindre détail. Le résultat est réaliste, extrêmement plaisant à jouer, mais le coût peut être pharaonique. GTA V, l’exemple le plus récent, a pris 5 ans, coûté 137 millions de dollars (hors budget de publicité), impliqué 3 000 personnes, et prend plusieurs giga-octets de mémoire.
spaceship-parts

La carte gigantesque de GTA V

  • Ou utiliser la génération procédurale

Génération procédurale ?

La génération procédurale consiste à générer du contenu (des planètes dans notre cas, mais ça peut aussi être des textures ou des graphismes) grâce à des algorithmes, c’est-à-dire un ensemble de règles définies par le programmeur.

Concrètement, quand le joueur choisit d’aller sur une planète, le système sait que c’est la 28ème planète de la 3ème galaxie.

Let's go for a space trip

Let’s go for a space trip

Les caractéristiques de la planète (position dans la galaxie, prix des matières premières, produits vendus…) sont déterminées par un algorithme (que l’on va étudier ci-après, ne soyez pas impatients) au moment où on découvre l’astre. L’occupation mémoire de l’algorithme est bien plus faible que si on avait stocké des milliers d’informations.

Le coeur de la génération procédurale est une suite, dite suite de Fibonacci.

On prend 2 nombres pour commencer, mettons 1 et 4, qui fournissent la « graine » (l’élément de base qui nous permet de générer nos données). A chaque étape, on va faire la somme des 2 nombres précédents. Si cette somme est supérieure à 10, on ne garde que l’unité.

Exemple :

  • 1
  • 4
  • 1+4=5
  • 5+4=9
  • 9+5=15 => On garde 5
  • 9+5=14 => On garde 4
  • 5+4=9
  • Et ainsi du suite.

On obtient donc une suite de nombres qui semblent aléatoire. Semble seulement, car pour les puristes si la suite était vraiment aléatoire, si on tire 1 million de nombres, on obtient 100 000 fois le chiffre 0, 100 000 fois le chiffre 1, …

Les développeurs d’Elite ont choisit donc 8 paires de nombres, chacune correspondant à une galaxie.

Et maintenant ?

Vu le coût exorbitant du développement des jeux modernes, on peut se demander pourquoi la génération procédurale n’a pas plus la côte ?

La raison est assez simple: il est difficile de faire un algorithme qui génère un monde qui soit à la fois cohérent, riche et varié.En 1996, Daggerfall proposait un continent entier utilisant la génération procédurale. Les joueurs de l’époque appréciait la taille du terrain de jeu, mais lui reprochèrent justement son aspect répétitif et l’absence régulière de relief.

Daggerfall, la série des Elder Scroll

Daggerfall, de la série des Elder Scroll

Cette difficulté fait que seuls quelques jeux l’exploitent, comme Minecraft ou Elite Dangerous (tiens, tiens…) avec ses 200 milliards de planètes.

Alors, mort, la génération procédurale ? Pas encore, car les studios indépendants, qui n’ont pas les ressources astronomiques de NorthStar Games, peuvent innover et affiner leurs algos, et nous proposer des merveilles !


2 commentaires

  1. Freddy juin 13, 2016 7:59   Répondre

    9+5=15, on garde 4 …? moi pas comprendre.
    sinon il est vrai que des Witcher 3, des GTA5, des Watchdogs/Starwars The Old Republic ou autres qui pèse jusqu’à 50Go ça commence à piquer mais bon. l’avancée technologique en matière de disque dur (au même titre que la RAM ou les GPU) permettent de combler un peu. Quand je vois arriver des SSD de quasi 2To (chez Corsair) c’est bien mais est-ce vraiment utile… un DD de 500Go suffit amplement pour un joueur PC ou console sauf pour la personne qui veut à tout prix tout avoir de jouable dans l’instant… avec seulement deux mains (là, on n’a pas progressé par contre… pas encore).
    Pour la génération procédurale je trouve au contraire qu’elle a un regain d’activité avec des jeux porteurs : No man’s sky/Star Overlord/Infinity Battlescape/etc… et Elite dernier du nom donc.
    Pour le reste Elite reste un de mes meilleurs souvenirs spatial/technologique de l’époque… 22Ko c’est fou tout de même !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *