Sitemap

ScummSocket™

3 min readDec 16, 2021

--

Press enter or click to view image in full size

I love coding in Elixir. I also love Monkey Island. A game that I have very fond memories of from my childhood. I want to bring Guybrush into the era of the Internet. Why? So I can learn more about Elixir… what better way to learn more about a language by getting it to decode the disk images of a game you love!

Hold on, aren’t there tools that already do this?

Yes, of course there are. But why shouldn’t I have a go at writing my own and seeing if I can build upon them and add a new twist.

What do I want to achieve?

Ultimately I would like to be able to load the resources for monkey island into the browser using HTML and interact with the game engine using requests to my elixir server. If that were possible, then surely it would also be possible to include co-operative (or at least spectator) play into Monkey Island using web sockets.

The big picture

Here are what I think are key aspects / ideas / considerations of the project to “webify™” Monkey Island

  • Parse resources for room and store in relevant data structure
  • Webify the resources so that room resources can be requested via URL through some Elixir Phoenix routing setup. I think this would include conversion of images to browser supported format and possibly sound conversion. Although I think the game music are MIDI files, so they might work as is to at least get the melody (even if the instruments are different)
  • Each room in the game includes costumes, costumes are the animations for the room and have their own DSL. It would be interesting to try and convert these to Javascript, although it would be nice to reduce the front end Javascript as much as possible and potentially control the animations via websockets (surely the payload would be small) and that way the application is written in the one language as much as possible.
    *To be considered further once the spec is better understood.
  • Demo the “webification™” of the resources by creating a Phoenix application that is a resource browser for the game
  • Render a room for the game
  • There will be other quirks for the particular version of the scumm file format and these can be dealt with on an individual basis.

Is that really possible?

Get Nathan Wallis’s stories in your inbox

Join Medium for free to get updates from this writer.

I have no idea, but would like to find out….

Credit

I am definitely standing on the shoulders of giants here and owe great credit to the following pages / projects in allowing me to even get a leg up on deciphering the contents of the Monkey Island disk images:

I am sure there are other websites I have brushed past on my way, but these are the main ones. So a big shout out to those authors.

What is ScummVM?

Wikipedia has a very detailed history of the ScummVM. I know what ScummVM is and how it has contributed to a lot of my favourite adventure games as a kid, but I am by no means a Scumm-o-phile that knows all the ins and outs.

Lets get started…

I will be attempting to decode The Secret of Monkey Island EGA version. I figure since I am stepping back in time that I will use the EGA version rather than the VGA version. I know the graphics in the VGA version are better, but the EGA version reminds me of the days where I had a CGA computer and couldn’t play any of these games. I had to make friends with kids who had EGA or better. There was no other way!

I aim for this to be a living document. I will document my steps as a series of posts, focussing on key milestones that I hit and what I have learnt.

Here is what I have learnt so far:

--

--