April Fools' 2024
As the world spins into chaos, the one constant that brings stability into your world is knowing that grumpygamer.com will always remains April Fools' joke free.
As the world spins into chaos, the one constant that brings stability into your world is knowing that grumpygamer.com will always remains April Fools' joke free.
I recently asked on Mastodon about favorite quests. I've collected some of the responses here. I apologize that I can't credit the individuals who posted, but you can find them there. I need to update grumpygamer so I can post rich Mastodon links.
I you have a favorite, post it on Mastodon and @ me.
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.
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.
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...