# ScummVM

ScummVM è un software che riproduce il funzionamento di motori grafici di videogiochi. Originariamente progettato per avviare le avventure grafiche della Lucas Arts che utilizzano il sistema di sviluppo SCUMM, in seguito gli autori hanno aggiunto il supporto ad altri sistemi, come il Virtual Theatre di Revolution Software o l'AGI di Sierra On-Line. ScummVM non è un emulatore dell'hardware della piattaforma originale dei giochi, bensì una reimplementazione della parte del software che interpreta il linguaggio di scripting che descrive il mondo del gioco.
ScummVM utilizza librerie cross-platform, che ne permettono la portabilità sulla maggioranza dei sistemi operativi (Windows, Linux, Macintosh, BSD) e piattaforme (Amiga Morph OS, Pocket PC, Nintendo Wii, Nintendo DS, PlayStation 2, PlayStation Portable, Apple iPhone, GP2X Caanoo e molti altri) esistenti.

## Il nome del progetto

Nella visione originaria degli sviluppatori, il software doveva ricreare l'interprete SCUMM, utilizzato dalla LucasArts nelle proprie avventure grafiche. Il nome nacque dunque naturalmente dall'unione di due sigle:
* SCUMM, acronimo di Script Creation Utility for Maniac Mansion, era il sistema di sviluppo creato per Maniac Mansion e successivamente utilizzato dalla LucasArts per la realizzazione di molti altri giochi.
* VM, da Virtual Machine.
Nel corso degli anni, a seguito dell'introduzione di nuovi engine, il software ha aggiunto il supporto anche ad altri giochi, estendendosi così ben oltre il motore SCUMM. Ai nostri giorni, periodicamente qualche utente solleva la questione di trovare un nome che risulti più adatto al progetto e, di fronte alla ferma posizione degli sviluppatori a non modificare ScummVM, propone alternative, se non alla sigla, almeno alla sua lettura.

## Sviluppo

Il progetto, scritto interamente in C++, ha assunto una struttura modulare. In particolare, i diversi engine dedicati ai giochi sono separati e sviluppati indipendentemente, col risultato di evitare interferenze e di ottenere una grande attenzione alla pulizia del codice scritto. I programmatori che volessero aggiungere il supporto ad un nuovo gioco/engine sono liberi di farlo, semplicemente seguendo le indicazioni di una guida. Questa stessa modularità permette, in fase di compilazione dell'applicazione, di selezionare solo gli engine desiderati per la build; questa libertà è utile nel momento in cui si voglia il supporto ad un sottoinsieme di giochi (per ottenere un eseguibile più leggero, ad esempio) o addirittura solo per uno, dedicando la build al test di un nuovo engine.
Per un breve periodo di tempo, in seno al progetto fu sviluppato un engine rivolto a supportare il gioco d'avventura Another World; questa decisione sollevò pareri discordi, alimentati dalla natura dell'ultimo arrivato, un gioco d'azione, rispetto al target di avventure grafiche per cui erano nati gli altri engine. Una nota ulteriore fu la particolare tecnologia del gioco: a differenza delle avventure grafiche, che utilizzano immagini raster, Another World usava una grafica poligonale. In seguito, la questione fu chiusa dallo stesso autore del gioco, Éric Chahi, che stava lavorando ad una nuova edizione del suo vecchio gioco per i recenti sistemi Windows, il quale chiese espressamente al team di ScummVM di non lavorare più su quel particolare engine.
Nel corso dello sviluppo della release 0.5.0 il progetto si arricchì del supporto al Virtual Theatre, il motore di scripting della Revolution Software, col supporto della stessa software house. I programmatori fornirono il codice sorgente degli eseguibili dei giochi (sebbene qualche difficoltà fu riscontrata nel reperimento dei sorgenti di Lure of the Temptress) e, in concomitanza dell'uscita di ScummVM 0.5.0, vennero pubblicati come freeware sia il suddetto Lure of the Temptress, sia Beneath a Steel Sky. Entrambi i giochi sono ora scaricabili sia dalle pagine del sito della Revolution, sia dal sito di ScummVM ed entrambi prevedono la localizzazione in italiano. È da notare che, a causa delle particolari caratteristiche del Virtual Theatre, per questi giochi (come successivamente si verificò anche per altri) non era possibile semplicemente sostituire il file .EXE per ottenere un gioco funzionante; poiché porzioni dei dati necessari erano state codificate anche all'interno dell'eseguibile, fu necessario estrarre tali parti per completare il file set e fornire, insieme ai file standard del gioco, un nuovo file di dati necessario al corretto funzionamento di ScummVM.
Il progetto si avvale della collaborazione di numerosi programmatori da tutto il mondo, anche occasionali, data la sua frequente partecipazione alla Google Summer of Code e la sua notorietà ormai enorme è testimoniata dalla creazione di un modello di t-shirt recante il logo del software.
Da una branca del progetto è nato il software parallelo Residual (poi ribattezzato ResidualVM), dedicato al supporto di avventure che richiedono caratteristiche diverse dal target di ScummVM. Inizialmente nato per supportare il gioco Grim Fandango, si voleva ricreare il motore GrimE, utilizzato (in una versione migliorata) anche nel successivo Fuga da Monkey Island. Queste avventure sono dette in 2.5D in quanto utilizzano personaggi ed oggetti tridimensionali su fondali prerenderizzati e dunque hanno bisogno di un vero supporto 3D. Anche questo progetto ha assunto una struttura modulare anche se, per il momento, è in lavorazione solo il supporto all'engine GrimE.

## Lista di videogiochi supportati

I seguenti videogiochi sono supportati nella versione corrente di ScummVM:

### LucasArts

* Maniac Mansion
* Zak McKracken and the Alien Mindbenders
* Indiana Jones and the Last Crusade: The Graphic Adventure
* Loom
* Passport to Adventure
* The Secret of Monkey Island
* Monkey Island 2: LeChuck's Revenge
* La maledizione di Monkey Island
* Indiana Jones and the Fate of Atlantis
* Day of the Tentacle
* Sam & Max Hit the Road
* Full Throttle
* The Dig

### Sierra On-Line

* The Black Cauldron
* The Bizarre Adventures of Woodruff and the Schnibble
* Gobliiins
* Gobliins 2: The Prince Buffoon
* Goblins Quest 3
* Gold Rush!
* King's Quest I: Quest for the Crown
* King's Quest II: Romancing the Throne
* King's Quest III: To Heir Is Human
* King's Quest IV: The Perils of Rosella
* Leisure Suit Larry in the Land of the Lounge Lizards
* Lost in Time
* Mixed-Up Mother Goose
* Manhunter: New York (sviluppato da Evryware)
* Manhunter 2: San Francisco (sviluppato da Evryware)
* Playtoons No. 1: Uncle Archibald
* Playtoons No. 2: The Case of the Counterfeit Collaborator
* Playtoons No. 3: The Secret of the Castle
* Playtoons No. 4: The Mandarin Prince
* Playtoons No. 5: The Stone of Wakan
* Police Quest: In Pursuit of the Death Angel
* Space Quest I: The Sarien Encounter
* Space Quest II: Vohaul's Revenge
* Mickey's Space Adventure
* Troll's Tale
* Winnie the Pooh in the Hundred Acre Wood
* Molti giochi amatoriali che utilizzano l'AGI e il SCI

### Cocktel Vision

* Bargon Attack
* Gobliiins
* Gobliins 2: The Prince Buffoon
* Goblins Quest 3
* Lost in Time
* The Bizarre Adventures of Woodruff and the Schnibble
* Ween: The Prophecy

### Adventuresoft/Horrorsoft

* Elvira: Mistress of the Dark
* Elvira 2: The Jaws of Cerberus
* Simon the Sorcerer
* Simon the Sorcerer II: The Lion, the Wizard and the Wardrobe
* Simon the Sorcerer's Puzzle Pack
* The Feeble Files
* Waxworks

### Altri sviluppatori

Molti titoli della Humongous Entertainment utilizzano lo SCUMM, e sono quindi automaticamente supportati da ScummVM; sono inoltre supportati i seguenti giochi dotati di altri motori grafici:
* Beneath a Steel Sky
* Broken Sword: Il segreto dei Templari
* Broken Sword II: La profezia dei Maya
* Bud Tucker in Double Trouble
* Drascula: The Vampire Strikes Back
* Flight of the Amazon Queen
* Future Wars
* I Have No Mouth, and I Must Scream
* Inherit the Earth: Quest for the Orb
* Nippon Safes Inc.
* Return To Zork
* The Legend of Kyrandia
* The Legend of Kyrandia: Hand of Fate
* The Legend of Kyrandia: Malcolm's Revenge
* The 7th Guest
* Lure of the Temptress
* Touché: The Adventures of the Fifth Musketeer