The revolutionary Technology behind ‘Monkey Island’ and ‘Grim Fandango’
Oliver Franzke p1xelcoder About Oliver
1990 1991 1993 1995 1998
2009 2010 2016 2017 2015 SCUMM GrimE Powered by SCUMM™ 1987 1988 1989 1990 1990 1991
1992 1993 1993 1995 1995 1997 More games made with SCUMM SCUMM Way ahead of its time
Room script 1 Script 2 Object script 2
Object script 1 Cut-scene script 1 Script 1
Script 4 SCUMM Script 3 Room script 2
SPUTM Data Example script – Maniac Mansion
script clock-tick { do { clock-state = not clock-state object living-room-clock state clock-state play-sound clock-tick break-here 60 } }
Source: http://www.gdcvault.com/play/1014732/Classic-Game-Postmortem-MANIAC Example script – Maniac Mansion
cut-scene { ... actor nurse-edna in-room edna-bedroom at 60,20 camera-follow nurse-edna actor nurse-edna walk-to 30,20 wait-for-actor nurse-edna say-line nurse-edna "WHATS'S YOUR POINT ED!!!" wait-for-talking nurse-edna ... }
Source: http://www.gdcvault.com/play/1014732/Classic-Game-Postmortem-MANIAC Example script – Maniac Mansion (cont.)
onFrame() { … if(getLoc(nurse-edna) == (30,20)) { if(waiting_for_line) { if(doneTalking(nurse-edna)) { cut-scene { … ... } actor nurse-edna in-room edna-bedroom at 60,20 } camera-follow nurse-edna else { actor nurse-edna walk-to 30,20 sayLine(nurse-edna, wait-for-actor nurse-edna "WHATS'S YOUR POINT ED!!!“) say-line nurse-edna "WHATS'S YOUR POINT ED!!!" waiting_for_line = True wait-for-talking nurse-edna } ... … } } … } Become a Scummlet http://www.wilmunder.com/Arics_World/Games.html Cooperative multi-tasking
Pirate 1
Fire
Pirate 2 Time
Spiffy
… Frame Cooperative multi-tasking
Pirate 1
Fire
Pirate 2
Spiffy Anatomy of a ‘room’ Anatomy of a ‘room’: Layers Background
Objects Actors Anatomy of a ‘room’: Layers
Layer z=0 Layer z=1 Anatomy of a ‘room’: Object states Anatomy of a ‘room’: Object states Anatomy of a ‘room’: Object states Anatomy of a ‘room’: Object states Anatomy of a ‘room’: Actors
Actor (Guybrush)
Costume (Standard) Costume (Digging) Costume (Fighting) Costume (Cannon) Anatomy of a ‘room’: Costumes
Costume
Animation Animation Animation (Walk)
Chore Chore Chore Chore (Front) Chore (Right) Chore (Back)
Limb Limb Limb Limb Limb Limb (Body) Limb (Body) Limb (Body) Anatomy of a ‘room’: Costumes Anatomy of a ‘room’: Walk boxes
Layer z=0 Layer z=1
Special Edition
Original ‘Remonkeyed’ tech
Graphics Audio Input
Remastered data State snooping and translation SCUMM SPUTM Data
…
Special Edition
Original ???
Grim Fandango engine (GrimE)
Menu script Character animation table Game-logic scripts Set script
Lua 2.5
3D renderer … Video playback Data GrimE Anatomy of a set Anatomy of a set: Background
z x y Anatomy of a set: Objects Anatomy of a set: Actors and costumes
Original Remastered Original Remastered ‘Grimastered’ tech
Graphics Audio Input
Remastered data State snooping and translation Scripts GrimE Data Original Remastered Original Remastered
There is so much more… Thanks!
p1xelcoder Resources
• SCUMM • http://www.wilmunder.com/Arics_World/Games.html • http://www.gamasutra.com/view/feature/196009/the_scumm_diary_stories_behind_.php • http://alexyoung.org/2011/05/07/scumm/
• Grim Fandango • http://www.grimfandango.net/features/articles/lua-in-grim-fandango • http://www.grimfandango.net/features/interviews/interview-with-bret-mogilefsky • http://lua-users.org/lists/lua-l/2001-05/msg00149.html