Making SCUMM Games

April 22nd 10:44
by why

After three years since their last release, ScummC has hit 0.2.0. And it’s looking really good. They have a short but rather complete example (a port of Michael Sheail’s OpenQuest,) the source code for which is included in the ScummC distro. We’re talking: roughly 3000 lines of a JavaScript-ish language. So, hey, this seems to be a great avenue for creating adventure games, folks.

The language consists mostly of setting up objects in various rooms and laying out what sorts of ways you can manipulate those objects. So, an object could be a gun. Or it could be an NPC, such as Carol:

object carolObj {
  name = "Indigenous lifeform";
  verb(int vrb,int objA,int objB) {
    case TalkTo:
      zobTalkToCarol();
      return;
    case LookAt:
      if( ! knowsCarol ) {
          egoSay("A large carbon based mammal, it seems.");
          waitForMessage();
      }   
      else {
          egoSay("It is Carol, one of the local lifeforms.");
          waitForMessage();
      }   
      return;
    case Smell:
      egoSay("This creature has an overwhelming pungent smell.");
      return;
    case Move:
      egoSay("The lifeform is surprisingly sturdy, I don't believe I can use force.");
      return;
  }
}

The bulk of the code is spent setting up the various rooms and objects and bits of dialog. But you are also free to set up all of the action buttons and the inventory drawer. In fact, a fairly large chunk of code in the sample game is used to setup a subscreen for picking your dialog from a script (just as in The Secret of Monkey Island or Day of the Tentacle.)


And yet, this project has been virtually ignored by everyone, including the ScummVM community, with no mention of it on their wiki and only smatterings of discussion on the forums last year.

Now, of course, SCUMM games are lo-res and old-fashioned. Why would anyone target the ScummVM? Well, perhaps for nostalgia. Maybe because it’s pretty easy. And there is a wealth of fans that’s already obsessed with the VM.

But, come on. ScummVM is hugely cross-platform. We’re not just talking Linux, OS X and Windows. It’s perfectly stable on the iPhone, Palm OS 5, Windows Mobile and the Nintendo DS. Seriously: Dreamcast? SCUMM always hits a platform first.

For now, it’s something of a sweet spot between VMs and emulators. Reaching platforms that Java and Flash neglect. While not being as primitive as NES or Genesis emulators are to develop for.

Now begin the comments …

14 comments

Andy Baio

said on April 22nd 14:28

I’m a bit surprised there haven’t been any web-based tools for creating and playing Scumm games. I found a couple early attempts at porting ScummVM to Flash and Java ports, but no active projects.

olleolleolle

said on April 22nd 14:42

“This would be a perfect fit for the next Nordic Game Jam”, said the beautiful lady next to me when I explained the concepts. She laid off gaming after King’s Quest, and started again this year with Oblivion on the XBox 360…

Nordic Game Jam: 72 hours to make a complete game.

ScummC could be a perfect tool in that setting.

lemon

said on April 22nd 14:43

<3

_why

said on April 22nd 15:59

Andy Baio: Yeah, I think it would be easier now, with the prevalence of good Flash compilers like haXe and swfmill. Interesting, though, here’s source for a newer haXe-based SCUMM interpreter.

olleolleolle: Well, this year the game jam required multiplayer. But perhaps if they had an emulator theme in a coming year.

Mike Cantelon

said on April 22nd 18:31

On the weekend I was looking, for the first time, for info on making SCUMMVM -based games. Thanks for pointing out something that looks like clean timez!

Michael Gorsuch

said on April 22nd 18:59

Weird. I was doing research on Sierra’s AGI last night. Thanks for bringing this to my attention!

tao

said on April 22nd 19:48

The thing is: these games require a lot of art and writing. The programming part seems straightforward.

she

said on April 22nd 20:47

Actually, I am more intimated about the programming part. I think the language could be even easier.

The art and writing would be easy – for example, the writing comes from my brain almost instantly (our RPG group has amassed such enormous amounts of data, which is already ordered collected, and consists of about 21 years of material & experience).
Ok, the art might be a little more problem since I on my own could never draw something like the old lucasA*t games and similar. But I think for a game prototype it would not be that difficult.

I however really think the language could be shaped up a bit.
egoSay(“This creature has an overwhelming pungent smell.”);

Besides, I think that this should rather go into a data-file that doesnt have any programming stuff in it (so people could modify it more readily.

talk to Me What HappeNd WoRld

said on April 22nd 21:12

the game and the program walking in a bite’s phone same aroound the world’

Leon

said on April 22nd 21:22

Goddamn, are you serial? I am all over this.

I have a

said on April 22nd 22:24

Dreamcast got all the emulators. No surprise it got SCUMM .

_,,-=;;({[]});;=-,,_

said on April 22nd 22:56

Like TADS but with graphics.

secretGeek.net

said on April 23rd 03:51

hi _why, love your stuff, stiff.

i’m workin on a wiki based text adventure game platform that uses javascript (json mostly) for scripting.

there’s nothing much to see yet, just talk so far.

http://secretgeek.net/more_wikitext.asp

this ‘object carolObj’ declaration above is scarily similar to how things get implemented in my system.

lb

Piesangaap

said on April 23rd 13:02

Hey, would like to know your opinion of AGS ?
(http://en.wikipedia.org/wiki/Adventure_Game_Studio)

Similar to this, but a reasonably nice interface.

Comments are closed for this entry.