# Script Creation Utility for Maniac Mansion

SCUMM – acronyme de Script Creation Utility for Maniac Mansion – est un moteur de jeu doté de nombreuses innovations techniques pour l'époque permettant aisément de réaliser un jeu d'aventure graphique et de le porter assez rapidement sur diverses plates-formes. Développé par Ron Gilbert et Aric Wilmunder (alias SCUMM Lord) en 1987 pour Lucasfilm Games, il contenait notamment iMUSE (Interactive Music Streaming Engine) et INSANE (INteractive Streaming ANimation Engine). Régulièrement amélioré par Aric Wilmunder (256 couleurs, gestion plus complète du son et de la musique), sa limitation aux univers 2D a mis un terme à son utilisation lors du passage à la 3D. SCUMM a toutefois inspiré le moteur 3D d'aventure graphique de LucasArts : GrimE. SCUMM est une marque déposée par LucasArts.

## Conception

Le moteur de jeu Script Creation Utility for Maniac Mansion est imaginé en 1987 par Ron Gilbert dans le cadre du développement de Maniac Mansion. A l’époque, il pense programmer le jeu en assembleur pour le microprocesseur 6502, qui est à l'époque la norme pour les jeux sur Commodore 64$^,$. Il réalise cependant rapidement que le jeu est trop complexe pour être facilement programmé dans ce langage et qu'ils ont besoin d’un moteur de jeu similaire à l'Adventure Game Interpreter de Sierra On-Line$^,$. Gilbert pense au départ utiliser le langage LISP mais il choisit finalement une syntaxe plus proche du C. Il discute du problème avec un autre employé de Lucasfilm, Chip Morningstar, qui l'aide à construire les fondations du moteur de jeu que Gilbert va ensuite finaliser. Il conçoit le moteur de jeu afin de le rendre multitâche et ainsi permettre aux concepteurs d’isoler et de manipuler certains objets du jeu indépendamment des autres. La majeure partie des six à neuf premiers mois de développement de Maniac Mansion est ainsi consacrée à la construction du moteur de jeu. Lorsqu’il est encore au lycée, Gilbert apprécie les jeux comme Colossal Cave Adventure ou les titres développés par Infocom, mais il regrette qu’ils ne soient pas dotés de graphismes$^,$. Il pense en effet que les éléments visuels incorporés dans les jeux d’aventures par des studios comme Sierra Entertainment ajoutent une dimension supplémentaire au genre et constituent une réelle amélioration. Il regrette en revanche qu’ils soient basés sur une interface en ligne de commande. Son objectif est donc de créer une interface capable de restituer la structure d’un jeu d’aventure en mode texte classique mais qui dispense le joueur de taper des lignes de commandes. Dans King's Quest, il regrette en effet qu’il soit nécessaire de deviner la commande à utiliser pour réaliser une action et considère qu’il devrait être possible d’interagir directement avec les éléments qui apparaissent à l’écran. Son raisonnement le conduit à penser que si un élément apparaît à l’écran, le joueur doit pouvoir cliquer dessus et que par extension, le joueur doit également pouvoir cliquer sur une commande. Il imagine alors une nouvelle interface plus simple, basée sur le principe du pointer-et-cliquer, qui dispense le joueur de taper des lignes de commandes. Il répertorie au départ une quarantaine de commandes verbales puis simplifie peu à peu cette liste jusqu’à la réduire à douze commandes essentielles. Il intègre ensuite celles-ci dans le langage de script de manière à créer un interpréteur similaire à ceux utilisés par Sierra, comme l'Adventure Game Interpreter et le Sierra Creative Interpreter$^,$. Après environ un an de développement, il termine le moteur de jeu qu’il baptise Script Creation Utility for Maniac Mansion. Celui-ci permet notamment aux développeurs de s’affranchir de programmer en langage de bas niveau, ce qui réduit le temps nécessaire pour développer d’autres jeux du même type. Il permet aussi de faciliter l’adaptation du jeu à d’autres plates-formes$^,$.

## Evolutions

Après la sortie de Maniac Mansion en 1987, le Script Creation Utility for Maniac Mansion est réutilisé dans de nombreux jeux d’aventure développés par LucasArts. Il est donc peu à peu amélioré afin de bénéficier des avancées technologiques et de s’adapter aux besoins de ces nouveaux titres. Ainsi, les commandes verbales introduites dans Maniac Mansion deviennent plus abstraites dans les versions suivantes du moteur. Pour Indiana Jones et la Dernière Croisade, les développeurs ajoutent deux nouvelles commandes, « regarder » et « parler », et un système de dialogue permettant au joueur de choisir une réplique parmi celles qui lui sont proposées. The Secret of Monkey Island utilise la même version du moteur de jeu que son prédécesseur mais bénéficie tout de même de quelques améliorations. Ainsi, les développeurs ajoutent un nouveau système d’arbre de dialogue pour simplifier les conversations et les duels d’insultes. Ils suppriment également la commande « qu'est-ce que c'est » qui permet d’obtenir la description d’un objet, celle-ci s'affichant dans le jeu dès que le curseur de la souris passe sur l’objet$^,$. Enfin, certaines commandes deviennent automatiques et peuvent être déclenchées avec un simple clic, la commande « parler » s'activant par exemple par défaut lorsque le joueur clique sur un personnage. Ces améliorations de l’interface deviennent ensuite des standards pour les titres développés par le studio. Le rendu graphique du SCUMM est également amélioré. Les limitations imposées par les graphismes Enhanced Graphics Adapter de la première version, qui permettent un affichage en 320x200 et 16 couleurs, deviennent en effet trop contraignantes, ce qui oblige les artistes à utiliser des couleurs « bizarres » pour certains arrières-plans$^,$. LucasArts développe donc une version du moteur compatible avec le Video Graphics Array, qui élimine ces problèmes en permettant au jeu de fonctionner en 256 couleurs et donc de concevoir des arrière-plans et des personnages plus colorés et détaillés.
Pour Monkey Island 2: LeChuck's Revenge, le moteur de jeu se voit doté en 1991 d’un nouveau système de synchronisation audio baptisé Interactive Music Streaming Engine (iMUSE). Développé par Michael Land et Peter McConnell, celui-ci permet de synchroniser les pistes audio avec les événements se déroulant dans le jeu. Ainsi, la musique du jeu s’adapte en fonction des environnements ou des situations dans lesquels se trouve le joueur, le passage d’une piste audio à une autre se faisant de manière logique. En plus d’être intégré au moteur de jeu, et donc d’être utilisé dans tous les jeux d'aventure basé sur ce dernier, le système iMUSE est également utilisé dans d’autres titres développés par LucasArts, tel Star Wars: X-Wing$^,$.
Pour Full Throttle, les développeurs poussent le moteur de jeu dans ses derniers retranchements. Ils imaginent donc des solutions pour en contourner les limitations et, pour intégrer des éléments de jeux d’action, ils intègrent au SCUMM le moteur de streaming vidéo INSANE initialement développé par LucasArts pour Star Wars: Rebel Assault sorti en 1993.

## Principe

L'exécutable de SCUMM est un interprète de ressources (images, sons, vidéos) et de scripts contenus dans des fichiers à part. L'avantage d'utiliser ce principe est que d'un jeu à un autre (en excluant les changements de version pour améliorations), on peut conserver le même interprète et changer uniquement les ressources pour obtenir un nouveau jeu. De même, pour convertir un jeu SCUMM vers une autre plate-forme, il suffit de réécrire l'interprète pour cette plate-forme. Ce mécanisme a permis à des fans de développer un interprète multiformats et multiplates-formes qui ne nécessite donc que les fichiers de ressources d'un jeu pour pouvoir le lancer : ScummVM.

### Interpréteur

L'interpréteur contient la boucle de jeu principale, les fonctions d'affichage, et les fonctions d'exécution du langage de script. Il est dépendant de l'architecture et de la version du format SCUMM utilisée.

### Fichiers de ressources

Ces fichiers changent d'extension selon le jeu et la version du format SCUMM (LFL, DOT, …). Ils sont structurés par blocs arborescents, dont la structure change elle aussi selon la version. On y retrouve néanmoins un certain nombre d'éléments communs :
* Images
* Sons
* Costumes
* Objets
* Boîtes de chemin
* Scripts

## Recherche de chemin

Dans un jeu d'aventure graphique en pointer-et-cliquer, le joueur contrôle le personnage principal en lui ordonnant de se déplacer dans une zone de la carte. Un algorithme de planification se charge ensuite de calculer un chemin afin de déplacer le personnage de manière crédible. Dans SCUMM, les parties accessibles d'une carte (zones où les personnages peuvent marcher) sont décrites par un graphe de boîtes (polygones convexes) dont chaque relation indique que les deux boîtes sont adjacentes. SCUMM utilise des boîtes trapézoïdales. En utilisant suffisamment de trapèzes, il est toujours possible de décrire toute la surface parcourable de la carte.

## Jeux SCUMM

* Maniac Mansion (1987)
* Zak McKracken and the Alien Mindbenders (1988)
* Indiana Jones et la dernière croisade (1989)
* Loom (1990)
* The Secret of Monkey Island (1990)
* Monkey Island 2: LeChuck's Revenge (1991)
* Indiana Jones and the Fate of Atlantis (1992)
* Maniac Mansion: Day of the Tentacle (1993)
* Sam and Max Hit the Road (1993)
* Marine Malice : Le Mystère des Graines d'Algues (1994)
* Full Throttle (1995)
* Pouce-Pouce sauve le zoo (1995)
* The Dig (1995)
* Marine Malice 2 : Le Mystère de l'École Hantée (1996)
* Sam Pyjam : Héros de la Nuit (1996)
* Pouce-Pouce : Voyage dans le temps (1997)
* James Renard : Opération Milkshake (1997)
* Marine Malice 3 : Le Mystère du Coquillage Volé (1998)
* Pouce-Pouce entre dans la course (1998)
* The Curse of Monkey Island (1998)
* Sam Pyjam 2 : Héros Météo (1998)
* Marine Malice 4 : Le Mystère du Ranch aux Cochons (1999)
* Spy Fox 2 : Opération robot-expo (1999)
* Pouce-Pouce découvre le cirque (2000)
* Pyjama Sam : Héros du Goûter (2000)
* Spy Fox 3 : Opération SOS Planète (2001)
* Marine Malice 5 : Le Mystère du Monstre du Lagon (2001)