The revolutionary Technology behind ‘’ and ‘

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 –

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