Idée d'un jeu à base de programmation


Depuis déjà pas mal de temps, j'ai une idée de jeu qui me trotte par la tête. Mais je ne me suis jamais mis à l'implémenter. Peut-être qu'un jour je me lancerai. Mais il faut encore que ça mûrisse un peu. Il s'agit d'une simulation économique à base de programmation. Vraiment de programmation.


Univers et principe

Le jeu se passerait dans un monde qui ressemble à celui de Transartica, parce que c'est un monde qui me semble intéressant, et bien adapté au genre de scénario auquel je pense. Pour ceux qui ne connaissent pas, il s'agit d'un continent (dans Transartica, l'Europe et l'Afrique du Nord) post-moderne recouvert par la glace. Toutes les communications se font par voix ferrée. Mais dans mon projet, j'ajoute l'existence de lignes informatiques (aériennes), sans quoi le jeu perd tout son intérêt.

Dans Transartica, le joueur dirige l'équipage d'un train qui doit faire du commerce, se défendre et attaquer d'autres trains, se déplacer de ville en ville. Il y a aussi une dimension d'aventure, avec (si j'ai bien compris, je n'ai jamais eu le temps de le finir) la recherche d'un moyen de percer la couche de nuages qui bloque le soleil.

Mon projet repose ici sur un principe très différent : le joueur dirige une « base » d'où il peut envoyer des dans le monde. La particularité vient du fait qu'il n'est pas ubiquite et omniscient : il ne peut pas contrôler magiquement ses trains une fois qu'ils ont quitté la base. La solution, c'est qu'il va programmer ses trains (dans un langage à définir) au départ, et les laisser se débrouiller tout seuls dans le monde. À partir de là, les joueurs sont libres de faire la stratégie qu'ils veulent.


Plus précisément

Un premier point est que les joueurs devront programmer de véritables intelligences artificielles, surtout très fiables de manière à ce que le train ne plante pas en pleine cambrousse.

De plus, non seulement ils n'ont pas de contrôle sur les trains qui ont quitté la base, mais en plus, ils ne sont pas informés de leur position, ni même de ce à quoi ressemble le monde. Ils ont bien des cartes, mais elles ne sont pas forcément à jour, ou exactes. C'est pour ça que j'ai ajouté les réseaux informatiques. Grâce à eux, les trains peuvent contacter leur base, lui envoyer des nouvelles, des mises à jour des cartes, etc... Et la base, en réponse, peut envoyer des ordres, voir même des modifications au programme d'intelligence artificielle.

Bien sûr, tout ça doit être prévu par les programmes mis en place par le joueur, sous la forme de protocoles de communication, avec authentification et confidentialité. En cas de bug, il peut aussi envoyer un second train mieux programmé aller aborder le premier et lui changer son programme, mais il vaudrait mieux éviter ça, enfin je crois.

À ce propos, il faut noter que le langage du jeu doit permettre des manipuler les fonctions comme des objets de première classe, et comporter un mécanisme similaire au exec du shell pour lancer proprement un nouveau programme.

Mais ce n'est pas si simple. Les lignes informatiques ne sont pas un service rendu par la divinité du jeu. Comme je l'ai signalé, elles sont aériennes, donc vulnérables. Et les relais aussi. Essentiellement, elles appartiennent à des joueurs, qui peuvent donc profiter pour faire des bénéfices, pour espionner, ou pour faire du terrorisme (en coupant certaines communications), ou les trois selon les cas. Pour que ça marche, il faudra que les différents joueurs propriétaires des lignes se mettent d'accord pour interconnecter leurs réseaux. Notons que les différentes bases sont reliées entre elles par un réseau indépendant, fiable et sécurisé... implémenté en dehors du jeu.


Objectifs et réflexions

Dans une partie que j'appellerais « réussie », les joueurs auraient monté un système qui marche presque sans intervention extérieur, et leur permet de s'enrichir. On peut imaginer l'apparition de véritables entreprises, certaines spécialisées dans le commerce, d'autres dans les réseaux de communication, d'autres dans le convoi de passagers, la construction de voies ferrées, etc...

À noter que je pense garder de Transartica l'idée d'une monnaie directement utile. En effet, ceci permet en outre l'apparition d'un secteur bancaire de manière relativement simple.

À noter que le jeu peut assez facilement dégénérer en bataille de cryptographes pour essayer de craquer les communications des autres. Pour éviter ça, il peut être intéressant de mettre de la cryptographie forte directement dans les primitives du langage. Mais ce n'est pas indispensable si les joueurs ont tous un niveau comparable, donc ça peut être laissé à la discrétion de l'arbitre (qui est propriétaire du moteur de jeu).

En ce qui concerne l'interface, je pense qu'il faut apporter un cadre pour l'affichage de cartes, de statistiques, etc... La mise en place de ce genre de choses ne fait pas partie des objectifs que je place aux joueurs. Bien sûr, ils auront aussi à leur disposition tous les compilateurs nécessaires pour faire leurs programmes.

En outre, le jeu doit comporter un mode debug, dans lequel les joueurs sont omniscients. Ce mode est destiné à jouer le rôle des inévitables simulations que les développeurs des bases feraient de leurs programmes avant de les lancer dans le vaste monde.

Pour ce qui est du langage, il vaudrait mieux à mon avis se contenter d'une machine virtuelle, avec un bytecode bien spécifié. Ainsi, il es possible de programmer avec des langages aux goûts différents.


Voilà. Je rajouterai à l'occasion des idées qui me passeraient par la tête. Et je suis bien sûr ouvert à toute idée.


[http://www.eleves.ens.fr:8080/home/george/info/prg/jeu_prog.html] [nicolas.george@ens.fr] [plan du site]

Mise à jour: 14 décembre 2000
© Nicolas GEORGE - Les copies totales ou partielles de cette page sont autorisées à condition de ne pas en dénaturer le sens et d'indiquer la source