# Space Travel

Space Travel est l'un des tout premiers jeux vidéo, développé par Ken Thompson en 1969 durant la genèse des jeux sur ordinateur central. Le jeu est une simulation de voyage dans le système solaire, dans laquelle le joueur contrôle un vaisseau spatial sans but précis si ce n'est atterrir sur des planètes ou des lunes. Le joueur peut uniquement déplacer le vaisseau et ajuster sa vitesse, tandis que ce dernier est affecté par la force gravitationnelle des objets célestes aux alentours.
Le jeu est développé aux Laboratoires Bell sur le système d'exploitation Multics, mais est adapté plus tard sur le système GECOS puis sur le mini-ordinateur PDP-7. Pour que ce dernier portage soit réalisable, Ken Thompson développe son propre système d'exploitation qui est utilisé plus tard comme le cœur du système d'exploitation UNIX.

## Système de jeu

Space Travel est un simulateur de vol spatial dans lequel le joueur est aux commandes d’un vaisseau spatial et explore le système solaire. Ce dernier est représenté en deux dimensions et en vue de dessus, avec des graphismes monochrome constituées de lignes blanches sur un fond noir. Le joueur n’a pas d’objectif particulier si ce n’est d’essayer de se poser sur les planètes et leurs satellites naturels. Les planètes et la plupart de leurs lunes sont représentées à l’échelle que ce soit pour leur taille ou les distances qui les séparent. Leurs orbites sont en revanches simplifiées et sont représentées par des cercles. Pour se poser sur un corps céleste, le vaisseau piloté par le joueur doit croiser la ligne qui en représente la surface tout en réduisant suffisamment sa vitesse. Les commandes du vaisseau permettent au joueur de le faire avancer, reculer ou tourner. À l’écran, le vaisseau se déplace à une vitesse constante. Sa vitesse de déplacement dans le système solaire dépend ainsi de l’échelle du secteur représenté à l’écran, qui est contrôlée par le joueur. Une échelle suffisamment grande permet ainsi au vaisseau de traverser le système solaire en quelques secondes (au risque de rater sa cible) alors qu’une échelle suffisamment petite lui permet de ralentir pour se poser. Le vaisseau est toujours représenté au centre de l’écran en direction du haut. Lorsque le joueur fait tourner son vaisseau vers la gauche ou la droite, c’est ainsi le système solaire qui tourne autour du vaisseau et non l’inverse.
Chaque planète et satellite est caractérisé par une masse et possède donc un champ gravitationnel. Ces champs n’interagissent pas entre eux et seul le plus puissant affecte le vaisseau du joueur. Cette approximation conduit parfois à des incohérences. Le champ gravitationnel de la planète Mars est par exemple tellement fort en comparaison de celui de sa lune Phobos que pour se poser sur cette dernière, le joueur doit passer sous sa surface jusqu’à être suffisamment proche de son centre pour que son champ gravitationnel dépasse celui de la planète. Le nom du corps céleste dont le champ gravitationnel s’applique au vaisseau est indiqué à l’écran. Le programme peut être modifié par les joueurs afin d’en changer certains paramètres. Les modifications les plus populaires consistent généralement à augmenter le niveau de gravité (pour rendre les atterrissages plus difficiles) ou à ajuster le système de coordonnées de manière à toujours afficher le corps qui exerce son attraction sur le vaisseau en bas de l’écran avec le vaisseau qui se déplace par rapport à lui.

## Développement

Space Travel est développé par Ken Thompson en 1969 alors qu’il travaille pour les laboratoires Bell sur le projet de système d’exploitation Multics. Il programme le jeu sur un ordinateur central GE-635 pendant ses heures de travail. Lorsque le laboratoire se retire du projet, il porte le jeu en FORTRAN afin de le faire fonctionner sur le système d’exploitation GECOS qui équipe déjà l’ordinateur GE-635$^,$. Ken Thompson et d’autres employés du laboratoire, dont Ravi Sethi et Dennis Ritchie, parviennent ainsi à y jouer sur le système GECOS mais cette nouvelle version ne fonctionne pas aussi bien que la version originale du fait de plusieurs défauts$^,$. L’ordinateur central est en effet relié à plusieurs terminaux informatiques et peut ainsi se voir soumettre plusieurs requêtes en parallèle. Les requêtes à traiter sont alors mises en file d’attente, ce qui entraîne de longues pauses dans le jeu pendant que l’ordinateur travaille sur les requêtes soumises par d’autres terminaux. Le temps d’utilisation de l’ordinateur central a par ailleurs un coût dont le suivi par le laboratoire permet d’estimer que chaque partie coûte à l’entreprise entre 50 $ et 75 $$^,$. Le système GECOS nécessite de plus que le joueur tape des commandes plutôt que de simplement appuyer sur des boutons, ce qui rend le vaisseau plus difficile à piloter. Afin de régler ces problèmes, Ken Thompson demande d’abord au laboratoire d’acquérir un ordinateur central PDP-10 (qui coûte alors 120 000 $) sous prétexte de programmer un nouveau système d’exploitation. Sa requête est cependant refusée car le laboratoire ne veut pas dépenser d’argent dans un nouveau projet de système d’exploitation après s’être tout juste retiré d’un projet du même genre. Il apprend en revanche qu’un autre département du laboratoire dispose d’un mini-ordinateur PDP-7. Celui-ci étant peu utilisé, il est autorisé à s’en servir.
Lorsqu’il commence à porter le jeu sur ce nouveau système, il décide d’écrire son propre code plutôt que de s’appuyer sur celui de programmes existants. Il implémente ainsi ses propres bibliothèques de code, dont un package arithmétique et un sous-programme pour les graphismes, pour les utiliser dans son jeu. Il écrit initialement ces sous-programmes en assembleur sur le système GECOS avant de les stocker sur bande perforée pour les transférer sur le PDP-7. Il programme ensuite un programme assembleur pour le PDP-7 afin de passer outre ce processus laborieux. Le jeu est au départ très lent sur le mini-ordinateur, ce qui le pousse à concevoir son propre système de fichiers pour optimiser son fonctionnement. Il s’appuie pour cela sur des idées de Dennis Ritchie et Rudd Canaday qui trouvent leur origine dans le système de fichiers de Multics$^,$$^,$.
C'est dans ce processus de portage du jeu vers l'assembleur du PDP-7 qu'ils écrivirent le code sous-jacent, qui en se développant finirait par donner le système d'exploitation UNIX original. Le développement de ce jeu conduit plus tard au développement du système d'exploitation UNIX$^,$.