An interactive gameshow full of data corruption and ridiculous controllers
Hosted by Doctor Eggman himself, the show uses modified Sonic the Hedgehog games to create unusual challenges.
Control the game by shouting at the screen! Cooperate to use a controller whose buttons are shared between four people! In one challenge every time you collect a ring it adds glitches to your opponent's copy of the game!
PLAY18 Festival, Hamburg - 3 Nov 2018
SCIxSW Know Show, Bristol - 24 Jan 2019
Spielkulturfestival, Remscheid - 8 Mar 2019
Game Days, Osnabrück - 17 Aug 2019
The Overkill, Enschede - 22-24 Nov 2019
The technology that powers the show is of Alistair's own creation. He has modified an open source Genesis emulator to modify RAM based on his own scripts. It also outputs progress to a custom-made gameshow UI.
The Scrambled Eggman Show is designed to explore many of the ideas spawned from The Incredible Playable Show. Core to the concept is to take a set of games considered "finished" and turn them into totally new experiences.
Alistair puts his own twist on the Doctor Eggman character that draws on his recent forays into clowning. Despite his villainous background, Alistair's Eggman is a mischievous, playful and generous host whose moustache just won't stay on!
The show operated using a modified version of the open source OpenEmu emulator wrapper for MacOS and written in Objective-C, and a modified version of the GenesisPlus emulator for Sega Genesis games.
Two teams play against each other at the same time on the same computer. Because OpenEmu would natively read any joypad input as game input, I removed the joypad input functionality, and had the emulator interpret specific messages from an HTTP Server as joypad inputs. Each OpenEmu window would was given an ID and would only recognise HTTP messages that came with that ID. Controller inputs would be turned into HTTP messages with an ID that matched that
To allow the games to detect when Sonic collected rings, and to edit the memory of the games based on opponent actions, extra functionality was added to the GenesisPlus emulator in C. The modifications also prevented background music from playing in the games, so that only sound effects would play. Music would be managed by a Unity application that was responding to the game-state, as reported over the HTTP server.
The background overlays are a Unity program written in C#. The overlay shows team progress - for example, how far ahead each player's Sonic is, and highlight the team who is winning - as well as playing music dynamically during play. The games are edited to silence background music and only play sound effects. The Unity app will play its own suite of music during play, and will change track whenever a player dies.
I also wrote an Android app in Unity that would connect to the HTTP server. This allowed me, while wandering around the stage with a tablet, to play sound cues, change team scores, nudge Sonic or reset the level if teams got stuck. It also allowed me to set up each challenge without needing to be by the computer.
While both teams are playing on the same computer, the two OpenEmu instances and the background overlays communicate with each other via a local HTTP server.
This allows the games to send status updates to the overlays - for example, to trigger a change in music when a player dies, or to show how far ahead the leading player is. It also allows the overlay system to send controller inputs from the two controllers to the specific instance of OpenEmu they are meant for.
To simplify the setup of the show - and allow for quick resets in the case of tech issues - the technical setup all comes out of a single AppleScript program. This opens the two player windows, the background overlays, and begins the HTTP server running.
The final challenge was played two sets of the Codex Bash controller. Two teams of four people would need to cooperate as each of the four coloured buttons were mapped to one of left, right, down and jump. The specific arrangement of buttons would change every 30 seconds once the challenge began.