Speed running Monkey Island

Jun 02, 2023

I recently did an interview about speed running Monkey Island (I'll post a link when it's available).

One of the topics was how speed runners dislike random events and the end of Monkey Island 2 has a lot of randomness around when LeChuck appears. I was asked how this worked and to be honest that was a long time ago and I don't remember every little scrap of code. It is also possible that I didn't write it. But what I do have is the SCUMM source code for Monkey Island 2 and I tracked down the code.

lechuck-appearance-chance is 4
lechuck-appearance-interval is 300
times-lechucks-appeared-recently += 1
foo = (3 - times-lechucks-appeared-recently)
foo = (random foo)
if (!foo) {     ; after he's popped up a couple times he's likely to disappear for a while
    times-lechucks-appeared-recently = 0
    lechuck-appearance-chance is 10 ; that is, 1 in 10
    lechuck-appearance-interval is 500
if (magic-doll) {   ; speed him way up after you make the doll
    if (owner-of needle is selected-actor) {    ; and have the needle
        lechuck-appearance-chance is 2
        lechuck-appearance-interval is 120

There are some other random conditions about what item you picked up last, etc, but this is the core of it.

P.S. If you're wondering my SCUMM uses - in variable names, it's because it started out as a variant of LISP.

P.P.S. It's also worth noting that this is for the original MI2, The special editions and SCUMMVM might have changed how this works.


May 03, 2023

I posted this chain on Mastodon, but am reposting it here...

Getting AI to write your game dialog is about the same as getting some C- high school student to do it. At least with the later you be giving a high school student a job.

I really hope the TV writers can get something meaningful from the strike. I'm skeptical only because big companies taking advantage of creatives is burnt into their DNA. I see this all the time. Thimbleweed Park was the first game I ever saw anything from. I am getting something from RtMI but it's small. I've created a lot over the years and only made other people rich.

I support the game industry unionizing, not only to create reasonable working hours, but also to stop companies from getting rich off our hard creative work. I don't think game writers should be part of the WGA, the businesses are too different, and I've seen the cluster fuck of Hollywood unions trying to get into games.

Unions can also be their own oppressive mess but it's probably slightly better than what we have now. I do worry about how rigid unions would hamper true indie game work.


Apr 03, 2023

All the dialogs in Return to Monkey Island were done in a format called yack. These were created for Thimbleweed Park and (very) loosely based on Ink.

During the Secret of Monkey Island and LeChucks Revenge, these were all hand-coded in SCUMM and a pain in the [REDACTED].

The goal is to free the writer from "programming" and focus just on the writing and logic of the scene.

In lines like GUYBRUSH(38260,"{fist_pump}Yes!") the GUYBRUSH is a macro to replaces the text with "@38260:GUYBRUSH". This removes the text from the compiled code and forces the engine to look it up in the translation file as well as directing the VO to play the correct audio. Everything is linked to the id 38260 including the actor's scripts.

{fist_pump} calls an animation on actor saying the line and (mocking) is direction for the actor and ignored by the engine.

The writer will write (for example):

guybrush: "Aye, Cobb."

And then towards the end of production a python script turns it into

guybrush: GUYBRUSH(38219,"Aye, Cobb.")

Adding the unique line ids.

Enjoy Cobb...

April Fools' 2023

Apr 02, 2023

I got Covid from someone who went to GDC and today is the first day I've been well enough to make it to the computer. It pains me to have dropped the ball on my long running April 1st post and to have missed the one year RtMI announcement.

Rest assured, grumpygamer.com will always remains April Fools' joke free.

Early Return to Monkey Island Puzzle Dependency Chart

Nov 23, 2022


Game design isn't a destination, it's a journey and this was one of the stops along the way.

There are some fun puzzles in here but they all were cut for a reason, mostly pacing but sometimes because it wasn't as interesting as we thought. Part 3 got cut in half at some point because it felt too long in the wrong place.

From Aug 21, 2020...