

The SCUMM Diary: Stories behind one of the greatest game engines ever made - pmarin
http://www.gamasutra.com/view/feature/196009/the_scumm_diary_stories_behind_.php?page=1

======
stuartmemo
An example of SCUMM script from
[http://www.pagetable.com/?p=614](http://www.pagetable.com/?p=614)

    
    
      actor sandy face-right
      actor sandy do-animation reach
      walk-actor razor to-object microwave-oven
      start-script watch-edna
      stop-script
      stop-script watch-edna
      say-line dave "Don't be a tuna head."
      say-line selected-kid "I don't want to use that right now."
    
      if (melt-down) {
        say-line selected-kid "I don't think this game is very fun."
      }

------
cstuder
Full page instead of 6:
[http://www.gamasutra.com/view/feature/196009/the_scumm_diary...](http://www.gamasutra.com/view/feature/196009/the_scumm_diary_stories_behind_.php?print=1)

------
aylons
As a hardware and platform engineer, I can relate to the very satisfying
feeling that is making a tool that enable several projects beyond what you
could do by yourself.

This is why a part of me dies everytime I read "full stack engineer". Not only
it is imprecise, it sounds a little sad. I like being in the bottom layers of
the stack, enabling several people in the others.

~~~
bostik
> _I can relate to the very satisfying feeling that is making a tool that
> enable several projects beyond what you could do by yourself._

That is indeed a mark of good engineering.

Looking at ScummVM, I can only think that SCUMM must have been the product of
truly _great_ engineering. A single codebase, supporting dozens of games? The
basic design of SCUMM has to be solid for that to be possible.

Compact, check. Extensible, check.

The other adventure powerhouse of the time, Sierra, apparently had at least
two different engines. (I know there was AGI, and the last I tried, AGI-
interpreters could not play all the Sierra games. Another kind of interpreter
was needed for some titles.)

Now, if only Infocom had used bytecode for their games, instead of hard-wiring
the game logic inside their executables. I still remember fondly their best
titles: Spellcasting 101, Gateway, Eric the Unready, Super-hero league of
Hoboken, ...

-deep sigh-

~~~
rsaarelm
> Now, if only Infocom had used bytecode for their games, instead of hard-
> wiring the game logic inside their executables. I still remember fondly
> their best titles: Spellcasting 101, Gateway, Eric the Unready, Super-hero
> league of Hoboken, ...

Those are Legend Entertainment games. Infocom did use bytecode, and you can
play their games on just about anything smarter than a toaster these days:
[http://en.wikipedia.org/wiki/Z-machine](http://en.wikipedia.org/wiki/Z-machine)

~~~
bostik
Thank you, I stand corrected. Mixed up the company name. :/

------
taeric

        The name wasn't really trademarked, but we wanted to name it after another bodily fluid.
    

I love everything about the culture as I understand it there.

------
Scaevolus
The ScummVM wiki has more details on how the SCUMM bytecode works:
[http://wiki.scummvm.org/index.php/SCUMM/Technical_Reference](http://wiki.scummvm.org/index.php/SCUMM/Technical_Reference)

One interesting feature is cooperative threading for up to 25 threads.

~~~
asperous
It talked about this in the article: "Probably the most distinctive part of
SCUMM was that it was multi-tasking. This meant that multiple scripts could
effectively run simultaneously. You might create a clock on the wall in Zak
McKracken’s office and have it animate. [...] The script would simply command
the actor to walk, and then issue a “wait-for actor” command which put the
script to sleep until the actor had arrived or was facing the right direction.
This allowed you to write your scripts in a very linear fashion reflecting the
series of steps that you wanted the actor to follow."

~~~
pygy_
Mr. Wilmunder, I presume?

------
TheCraiggers
The thing that always amazed me about SCUMM was that they managed to make
Moonbase Commander in it, which was a turn-based strategy game with online
multiplayer built in.

Granted, it does some weird stuff with the engine (to the point that, to my
knowledge, no SCUMM emulator can play the game) but it still amazes me that
the engine was that flexible.

------
mnemonik
SCUMM VM ported to JS:
[http://clb.demon.fi/html5scummvm/](http://clb.demon.fi/html5scummvm/)

Github: [https://github.com/juj/emscripten-
scummvm](https://github.com/juj/emscripten-scummvm)

------
zobzu
my fav games are "incidentally" all running on scumm

