# Spacewar!

Spacewar! est un shoot 'em up multidirectionnel en deux dimensions qui met en scène deux vaisseaux dans un combat spatial. Le jeu est développé à partir de décembre 1961 par Steve Russell en collaboration avec Martin Graetz et Wayne Wiitanen et programmé avec l’assistance d'autres membres du Tech Model Railroad Club (TMRC), en particulier Bob Saunders, Steve Piner et Alan Kotok. Le jeu est écrit pour le DEC PDP-1 qui vient d'être installé au Massachusetts Institute of Technology (MIT). Après son développement initial, Spacewar! est amélioré par d'autres étudiants et employés des universités de la région, en particulier Peter Samson et Dan Edwards. Spacewar! est déployé sur la plupart des quelques dizaines de PDP-1 utilisés à des fins académiques, ce qui en fait le premier jeu de l'histoire à être joué sur de multiples ordinateurs.
Dans Spacewar!, les deux astronefs dessinés de lignes blanches sont dirigés par deux opposants jouant en multijoueur. Chacun essaie de tirer sur l'autre véhicule afin de le détruire, en manœuvrant dans un espace en deux dimensions doté d'un fond étoilé, situé dans le puits gravitationnel d'une étoile. Chaque joueur dispose d'une option lui permettant de faire passer son vaisseau en hyperespace, provoquant sa disparition. Cependant à chaque retour à l'écran, le vaisseau risque d’exploser, provoquant parfois sa désintégration. Le jeu est d'abord contrôlé par des interrupteurs à leviers situés sur le panneau frontal de l'ordinateur, mais Alan Kotok et Bob Saunders construisent ce qui est considéré comme la première manette de jeu de l'histoire, dans le but d'améliorer l'expérience de jeu.
C'est l'un des jeux les plus importants et les plus influents dans la genèse du jeu vidéo. Il est très populaire dans la communauté de programmeurs dans les années 1960 et est largement porté sur de nombreux autres systèmes informatiques de l'époque. Il est également recréé dans des langages de programmation modernes et joué grâce à des émulateurs du PDP-1 sur des systèmes informatiques modernes. Spacewar! inspire également de nombreux jeu vidéo, notamment en 1971 Galaxy Game et Computer Space ou plus tard d'autres jeux comme Asteroids en 1979. En 2007, Spacewar! est inclus dans la liste Game canon (en) de la bibliothèque du Congrès pour préservation, une liste des dix plus importants jeux vidéo de l'histoire.

## Contexte

Au cours des années 1960, plusieurs ordinateurs sont créés dans le milieu de l'informatique universitaire, de la recherche sur la programmation informatique, et pour la démonstration de la puissance informatique, plus particulièrement après l’introduction à la fin de la décennie d'ordinateurs plus petits et plus rapides, sur lesquels des programmes peuvent être créés et exécutés en temps réel par opposition aux précédentes créations exécutant les opérations par lots. Quelques programmes servant à démontrer le potentiel matériel des ordinateurs sur lesquels ils fonctionnent sont conçus pour le divertissement. Ils sont en général créés par des étudiants de premier cycle, des cycles supérieurs et des employés de l'université, comme au Massachusetts Institute of Technology (MIT), où ils sont autorisés à développer des programmes pour l'ordinateur expérimental TX-0. Ces jeux graphiques interactifs sont créés par une communauté de programmeurs, composés de nombre d'étudiants et d'employés universitaires issus de l'association d'étudiants (TMRC) dirigée par Alan Kotok, Peter Samson et Bob Saunders. Parmi ces jeux les plus notables figurent Tic-Tac-Toe et Mouse in the Maze. Tic-Tac-Toe permet à un joueur d'affronter l'ordinateur sur le jeu du morpion, grâce à un crayon optique avec lequel il interagit directement sur l'écran. Mouse in the Maze permet au joueur d'utiliser aussi un crayon optique afin de dessiner le dédale de couloirs que la souris dirigée par l’ordinateur doit emprunter afin de retrouver les morceaux de fromage disséminés. Une version ultérieure du jeu remplace le fromage par des verres de Martini, rendant le comportement du rongeur plus erratique$^,$$^,$$^,$.
À la fin de l'année 1961, un mini-ordinateur DEC PDP-1 est installé dans la kludge room (« salle de piratage ») du département d'ingénierie électrique au MIT, dans le but d'épauler le vieillissant TX-0. Avant même son arrivée, un groupe d'étudiants et d'employés de l'université organisent un brainstorming au sujet de programmes qui démontreraient les capacités du nouvel ordinateur de manière convaincante. Trois d'entre eux, Steve Russell, alors employé à l'université Harvard et ancien assistant au MIT, Martin Graetz, assistant de recherche également ancien du MIT, ainsi que Wayne Wiitanen, assistant de recherche à Harvard et ancien étudiant et employé du MIT, ont l'idée de Spacewar!. Tous trois font référence à leur collaboration sous le nom d'Hingham Institute, expression issue de l'immeuble où Graetz et Wiitanen vivent sur Hingham Street à Cambridge dans le Massachusetts$^,$. « Nous avions ce PDP-1 tout neuf » confie Steve Russell au magazine Rolling Stone dans une interview datant de 1972. De rajouter : « [Marvin Minsky] avait réalisé plusieurs petits programmes générant des motifs, dont certains intéressants ressemblant à un kaléidoscope. Ce n'était pas une très bonne démonstration, mais cet affichage graphique pouvait faire toutes sortes de bonnes choses ! Nous avons donc commencé à en parler, en imaginant ce qui serait intéressant. Nous avons décidé que nous pourrions probablement créer une sorte de jeu en deux dimensions, dans lequel il serait possible de faire manœuvrer quelque chose, et on a naturellement décidé qu'il fallait mettre en scène des vaisseaux spatiaux »$^,$.

## Système de jeu

Spacewar! est un shoot 'em up multidirectionnel en deux dimensions qui met en scène deux vaisseaux dans un combat spatial. Les deux astronefs dessinés de lignes blanches, appelés Needle (« aiguille ») et Wedge (« coin »), sont dirigés par deux opposants. Chacun essaie de tirer sur l'autre véhicule afin de le détruire, en manœuvrant dans un espace en deux dimensions doté d'un fond étoilé, situé dans le puits gravitationnel d'une étoile$^,$. Chaque vaisseau dispose d'une quantité de carburant limitée, utilisé lorsqu'un joueur allume les propulseurs. Les vaisseaux subissent les lois de la physique newtonienne, et restent donc en mouvement même si le joueur cesse d'accélérer, bien qu'ils puissent totalement pivoter sur eux-mêmes à vitesse constante dans le sens horaire ou anti-horaire$^,$. Les tirs de roquettes ne sont pas affectés par l'attraction gravitationnelle de l'étoile. Une seule roquette peut être lancée à la fois, en commutant un interrupteur à levier situé sur l'ordinateur ou en enfonçant un bouton sur la manette de jeu. Le nombre de roquettes est en quantité limitée et il existe un temps de rechargement entre chacun des tirs.
Chaque joueur doit éviter la collision avec l'étoile. Les déplacements à proximité de l'étoile peuvent procurer une assistance gravitationnelle, au risque d'un mauvais jugement de trajectoire, provoquant une percussion avec l'étoile. L'écran affiche une aire de jeu fixe, et si un vaisseau sort de l'écran par un des côtés, il réapparaît sur le côté opposé dans la même trajectoire, grâce un effet de wraparound. Un « bouton d’urgence », permettant au vaisseau de se déplacer en hyperespace, peut être utilisé comme moyen de la dernière chance pour échapper aux roquettes, en déplaçant l'astronef vers un autre endroit de l'écran, après avoir disparu quelques instants. Cependant, la sortie de l'hyperespace se fait à des positions aléatoires et peut dans certains cas provoquer l'explosion du vaisseau.
Le vaisseau peut donc tourner sur lui-même dans un sens ou dans l'autre, accélérer, passer en hyperespace et tirer des roquettes. Au départ, ces fonctionnalités sont contrôlées par des interrupteurs de test du panneau frontal du mini-ordinateur PDP-1, en particulier quatre par joueur. Cependant, cette configuration s'avère peu commode lors des séances de jeu et rapidement fatigante dans des conditions normales de jeu, d'autant plus qu'un joueur nerveux ou imprécis peut accidentellement toucher d'autres interrupteurs et éteindre l'ordinateur et le jeu. La position des interrupteurs oblige également un des joueurs à se placer sur le côté de l'affichage à tube cathodique à cause de l'espace limité devant l'ordinateur, ce qui crée un désavantage. Pour pallier ces problèmes, Kotok et Saunders créent un système de commande distant détaché du panneau frontal, constituant une manette de jeu primitive$^,$. Cette manette, composée d'une boite en bois et d'un couvercle en Bakélite, comporte un interrupteur à levier placé à l'horizontale, permettant d'aller à gauche et à droite, un autre placé à la verticale permettant d’accélérer en poussant le levier vers l'arrière et de passer en hyperespace en le poussant dans l'autre sens. Un bouton supplémentaire sert à tirer les roquettes. L'usage du bouton ne produit pas de bruit, ce qui empêche le joueur de savoir si l'opposant tente de lancer une roquette pendant le temps de recharge.

## Développement

À la fin de l'année 1961, alors qu'un brainstorming se tient au MIT afin de trouver un programme pour le PDP-1, Russell vient juste de finir de lire les romans de science-fiction du Cycle du Fulgur écrits par E. E. Smith et considère que cet univers peut faire une bonne base pour le programme. « Ses héros ont une forte tendance à se faire poursuivre à travers la galaxie par le méchant et doivent en même temps trouver le moyen de se sortir de leurs problèmes. C'est ce genre d'éléments qui ont inspiré Spacewar!. La série avait de très brillantes rencontres de vaisseaux spatiaux et de manœuvres de flotte spatiale ». Les autres influences citées par le programmeur Martin Graetz sont les romans Skylark d'E. E. Smith et les fictions cinématographiques pulp japonaise tokusatsu.
Durant les premiers mois d'installation du PDP-1, la communauté des programmeurs du MIT se focalise sur des programmes plus simples pour comprendre la manière de réaliser des logiciels sur ce matériel. La communauté prend connaissance du projet Spacewar!, mais comprend que Russel veut en diriger son développement. Quand les membres estiment qu'il est temps de travailler sur ce jeu, Russel, surnommé Slug (« limace ») à cause de sa tendance à procrastiner, commence à opposer plusieurs excuses pour expliquer qu'il ne peut pas commencer à le programmer$^,$. L'un des problèmes que Russel rencontre est l'absence de routines de fonctions trigonométriques nécessaires au calcul des trajectoires des vaisseaux. Ceci incite Alan Kotok du TMRC à appeler DEC, le constructeur du PDP-1, qui lui informe qu'ils ont déjà programmé une routine de ce type. Kotok se rend chez DEC pour récupérer une bande contenant le code, puis à son retour, la lance devant Russel en lui demandant quelles autres excuses il a. Russell, qui déclare plus tard : « J'ai cherché, mais je n'ai trouvé aucune excuse, j'ai dû me poser et faire quelques calculs », commence à écrire le code du jeu en décembre 1961$^,$. Il est développé en respectant trois préceptes que Russell, Graetz et Wiitanen ont énoncé pour répondre à la création d'un programme aussi bien destiné au divertissement des joueurs qu'à celui des spectateurs regardant le jeu. Le programme doit utiliser le plus possible des ressources de l'ordinateur, être continuellement intéressant (chaque phase doit être différente) et être amusant (donc un jeu)$^,$. Il faut à Russel, avec l'assistance des autres programmeurs, y compris Bob Saunders et Steve Piner (sauf Wiitanen, qui est rappelé par l'armée de réserve des États-Unis), environ 200 heures pour écrire la première version de Spacewar!, étalées sur six semaines de développement$^,$$^,$.
En janvier 1962, le programme de Russel peut faire déplacer un point, et en février une version primitive opérationnelle du jeu comporte des vaisseaux qui peuvent tourner sur eux-mêmes. Les deux astronefs sont conçus pour ressembler au vaisseau arrondi des fictions Buck Rogers et à la fusée PGM-11 Redstone. Cette version préliminaire contient également un fond étoilé généré aléatoirement ajouté par Russel, car un fond uniforme ne permettait pas au joueur de se rendre compte de la vitesse relative des vaisseaux à basse vitesse. La communauté des programmeurs dans la région, notamment le Hingham Institute et le TMRC ont développé ce qui est plus tard appelé l'« éthique hacker ». Elle soutient notamment que tous les programmes sont librement partagés et modifiés par d'autres programmeurs dans un environnement collaboratif, sans se soucier de problèmes de propriété ou de droits d'auteur, ce qui conduit à un effort de groupe pour développer Spacewar!, le jeu initialement écrit par Russel$^,$. Justement, le manque de réalisme et l'imprécision du champ étoilé créé par Russel dérange Peter Samson du TMRC. Par conséquent, il écrit un programme basé sur une carte céleste réelle qui défile doucement à travers le ciel nocturne. Cette simulation comprend toutes les étoiles de latitude comprise entre 22,5°N et 22,5°S jusqu'à la magnitude 5, représentées en conformité avec leurs luminosités intrinsèques. Le programme est intitulé Expensive Planetarium (« planétarium coûteux »), en référence au coût élevé du PDP-1, comparé à celui d'un planétarium analogique, et s'inscrit dans la série de programmes comme Expensive Typewriter (« machine à écrire coûteuse »). Il est rapidement intégré en mars 1962 dans Spacewar! par Russel, qui sert d'assembleur de la version primitive du jeu$^,$$^,$.
La version initiale ne comporte pas l'étoile centrale gravitationnelle, ni l'hyperespace. Ces fonctionnalités sont respectivement programmées par les étudiants du MIT et les membres du TMRC Dan Edwards et Graetz, afin d'ajouter des éléments de stratégie à un jeu de tir au départ purement basé sur les réflexes. La première version de cette dernière fonctionnalité est limitée à trois sauts dans l'hyperespace, mais ne propose pas de risque dans des positions dangereuses lors du retour à l'image du vaisseau. Les versions ultérieures suppriment la limite de trois sauts, mais augmentent les risques d'explosion du vaisseau. Pendant cette période du développement, Kotok et Saunders créent la manette de jeu. Le jeu est uniquement multijoueur car les capacités de l'ordinateur permettent d'afficher le jeu et les deux vaisseaux en temps réel, mais les ressources restantes sont insuffisantes pour gérer le comportement et les déplacements d'un des vaisseaux. De la même manière, d'autres fonctionnalités proposées, telles qu'une animation plus complexe lors de la destruction des vaisseaux ou des roquettes affectées par la gravité, ont du être abandonnées à cause du manque de ressources informatiques pour les gérer tout en affichant le jeu de manière fluide. Tous les ajouts et modifications sont essentiellement terminés à la fin du mois d'avril 1962, puis Russel et les autres programmeurs abandonnent la programmation du jeu pour se concentrer sur la préparation de sa présentation aux autres membres de l'université lors du MIT Science Open House en mai 1962$^,$. Le groupe rajoute un chronomètre pour limiter le temps de jeu et un second écran plus grand destiné aux spectateurs lors de la démonstration. Toujours au mois de mai 1962, lors de la première réunion du DECUS (Digital Equipment Computer Users' Society) qui se tient à Bedford au Massachusetts, Graetz présente un article intitulé SPACEWAR! Real-Time Capability of the PDP-1 qui décrit le jeu. La démonstration est un succès, le jeu est très populaire au MIT. Le laboratoire où est situé le PDP-1 sur lequel est installé le jeu limite rapidement l'accès à Spacewar!, sauf durant la pause repas et après les heures de travail$^,$.
À partir de l'été 1962 et pendant plusieurs années, les membres de la communauté de programmeurs du MIT, y compris Russel et les autres membres du Hingham Institute, se déploient dans d'autres universités et chez d'autres employeurs, notamment à l'université Stanford ou chez DEC, et en même temps, Spacewar! s'y propage également quand les établissements possèdent un PDP-1$^,$$^,$. Par conséquent, Spacewar! est probablement le premier jeu vidéo disponible en dehors d'un institut de recherche, au-delà de l'endroit où il a été créé. Durant les décennies suivantes, les programmeurs de ces autres institutions développent leurs versions, en rajoutant de nouvelles fonctionnalités, telles que la possibilité de jouer à plus de deux joueurs en même temps en rajoutant des vaisseaux, le remplacement de l'hyperespace par un bouclier produisant la furtivité du vaisseau, des mines spatiales, ou même en le recréant sous forme de jeu à la troisième personne, joué sur deux écrans, simulant chacun la vue du pilote depuis le cockpit$^,$. Certaines de ces versions de Spacewar! répliquent également la manette de jeu créée par Kotok et Saunders
D'après une information transmise à Russel par un employé de DEC, Spacewar! est utilisé comme programme de test par les techniciens de DEC, car c'est le seul capable de mettre à l'épreuve tous les aspects matériels du PDP-1$^,$. Même si le jeu est assez répandu pour l'époque, sa portée directe est très limitée. Le PDP-1 se vend au prix de 120 000 dollars américains et seulement 55 d'entre eux sont vendus, qui plus est la plupart sans moniteur. De plus, beaucoup de ceux-ci sont utilisés sans interruption pour sécuriser des lieux militaires ou des laboratoires de recherche, ne laissant donc aucun temps libre pour jouer, ce qui a souvent empêché Spacewar! de s'exporter au-delà d'un public universitaire restreint$^,$$^,$. Cependant quelques modèles d'ordinateurs DEC plus récents comme le PDP-6, sont directement commercialisés avec Spacewar! préinstallé, mais la portée reste tout de même limitée, car par exemple le PDP-6 ne s'est vendu qu'à 23 unités$^,$.

## Postérité

Spacewar! est très populaire auprès de la petite communauté de programmeurs dans les années 1960 et est largement recréé sur d'autres mini-ordinateurs et ordinateurs centraux de l'époque, avant d'arriver sur les micro-ordinateurs des années 1970. Le pionnier de l'informatique Alan Kay remarque en 1972 que « Spacewar! fleurit spontanément partout où un affichage graphique est connecté à un ordinateur », et Graetz se rappelle en 1981, que dès que le jeu s'est répandu, il pouvait être trouvé sur « à peu près n'importe quel ordinateur consacré à la recherche, possédant un CRT programmable »$^,$. La plus grande partie de l'essor du jeu se déroule seulement plusieurs années après le développement initial du jeu. Même s'il existe des anecdotes anciennes relatées par les joueurs et des variations du jeu situées dans une poignée d'endroits différents, en particulier près du MIT et de Stanford, c'est seulement à partir de 1967 que les ordinateurs connectés à des moniteurs ou des terminaux permettant de jouer à Spacewar! commencent à proliférer, et offrent la possibilité au jeu de rejoindre un public plus large et d'influencer les futurs concepteurs de jeux vidéo (selon une estimation publiée en 1971, plus de 1 000 ordinateurs possèdent un moniteur, alors que seulement quelques dizaines en possèdent un durant la précédente décennie). Durant cette même période, la majorité des variantes du jeu sont créées sur divers ordinateurs, tels que des systèmes PDP plus évolués. Le jeu est tellement connu dans la communauté de programmeurs, que le magazine Rolling Stone sponsorise le Spacewar! Olympics, probablement le premier tournoi de jeu vidéo de l'histoire$^,$.
Au début des années 1970, Spacewar! migre des lourds systèmes informatiques vers les configurations commercialisées, mais sert aussi de base pour les deux premiers jeux d'arcade de l'histoire. Lorsqu'il joue Spacewar! à Stanford entre 1966 et 1969, Hugh Tuck, étudiant dans cette université, se rend compte qu'une version équipée d'un monnayeur pourrait être un succès. Le coût élevé d'un mini-ordinateur a jusque-là empêché la réalisation d'un tel projet, cependant Tuck et Bill Pitts créent en 1971 un prototype de jeu informatique équipé d'un monnayeur. Ce jeu intitulé Galaxy Game intègre un PDP-11 coûtant 20 000 dollars américains. À la même période, un deuxième prototype de jeu équipé de monnayeur basé sur Spacewar!, est créé par Nolan Bushnell et Ted Dabney. Intitulé Computer Space, il est le premier jeu d'arcade de l'histoire commercialement vendu et le premier jeu vidéo de toutes catégories largement disponible. Pitts et Tuck croient cependant que, malgré le coût élevé de leur prototype, leur jeu est meilleur, car ils considèrent Galaxy Game comme une véritable amélioration de Spacewar!, alors que Computer Space n'en est qu'une pâle imitation. Pourtant, certains joueurs de l'époque estiment cependant que Galaxy Game n'est vraiment qu'une autre version de Spacewar!.
Le magazine Byte publie en 1977 une version de Spacewar! en langage assembleur qui fonctionne sur l'Altair 8800 et les autres mini-ordinateurs basés sur l'Intel 8080 utilisant un oscilloscope comme écran d'affichage et une table de correspondance pour les orbites. Le magazine publie également en 1979 une variante en trois dimensions, écrite en Tiny BASIC. Des recréations modernes existent également. En 2012, une version émulée, basée sur le code source original libéré par Martin Graetz, et qui fonctionne sur un émulateur du PDP-1 en JavaScript, permet de jouer à Spacewar! sur Internet.
L'unique PDP-1 connu encore capable de fonctionner est conservé au musée de l'histoire de l'ordinateur à Mountain View en Californie et permet de faire des démonstrations, en particulier du jeu Spacewar!.
En plus de Galaxy Game et Computer Space, de nombreux autres jeux s'inspirent directement de Spacewar!. Parmi ces jeux, figurent Orbitwar sur ordinateurs équipés de systèmes PLATO en 1974, Space Wars sur arcade en 1977, et Space War sur Atari 2600 en 1978$^,$. De plus, dans le jeu d'arcade Asteroids de 1979, Ed Logg, le concepteur du jeu, reprend des éléments du jeu, en particulier la fonctionnalité de l'hyperespace et la physionomie des vaisseaux. Des jeux plus récents, comme Star Control en 1990, puisent directement leur inspiration dans Spacewar!. Russel aurait déclaré que l'aspect du jeu qu'il apprécie le plus est le nombre élevé de programmeurs que le jeu a poussé à créer leurs propres jeux sans se limiter à l'utilisation du code source ou de la conception d'origine.
En mars 2007, The New York Times rapporte que Spacewar! est nommé dans une liste des dix jeux vidéo les plus importants de tous les temps. Appelée Game canon (en), l'archivage de cette liste est proposé auprès de la bibliothèque du Congrès. Cette dernière accepte cette proposition de préservation et commence l'archivage des jeux vidéo en débutant par cette liste$^,$.