The Making of a Cannon

When the last pirate ship is finally gunned down, it explodes – and sinks with a big bang. Then the pirate captain apologises for being bad, and is sent to jail. It’s a children’s interactive, after all. Here’s how it was made.

The new Royal Maritime Museum’s Cannon Interactive was commissioned as a replacement for the previous, ten year old interactive, which had been one of the most successful attractions in the children’s gallery.


Testing the damage mask for the final opponent ship
Testing the damage mask for the final opponent ship

West-London based design agency Factory had won the pitch for the audio & visual treatment on the project and they began supplying assets soon after we joined. The museum’s in-house interactive team took care of the physical hardware-interface and the built environment, with Ben Raithby managing the project. Our role was to write software that would bring all these elements together and to figure out a way to bring the gameplay to life.

Factory created some amazing assets for the game, allowing us to programmatically generate many different combinations of ships, islands, and environment elements. These elements are composited and animated in real time.

Realtime Chin sync 

When a new player enters the game by moving or firing the cannon, a pirate captain and a gunner’s mate appear on a large window near the cannon and will talk to the player. The gunner’s mate gives encouragement and targeting hints, while - for contrast - a pirate captain will throw missives or a tantrum and only by-and-by acknowledge defeat after losing all their fleet.

Based on game progress, the interactive has a large bank of audio samples to chose from, and the character’s chins are animated using these audio samples, while their eyes blink at a natural rate, and look around, following the action.

Lip sync test application

To achieve something similar to real-time lip sync, we filtered & downsampled each audio file to one audio frame per realtime-animation frame - and used the amplitude to control the character’s chin.


The interactive was developed and tested using openFrameworks on a Mac and deployed on customised Ubuntu Linux machines running the fantastic dwm window manager, as is our preferred mode of operations for museum pieces. This way, we can offer optimal hardware power / cost efficiency, while customising a system precisely to project needs.

Testing the server and the video player clients
Testing the server and the video player clients

The interactive spans six core applications, managed and synchronised by a seventh, using a customised tcp network protocol: four video-player instances for the small portrait screens, one app for the main gameplay screen, one app for the ‘Trigonometry Screen’. This modular design made cross- platform development & testing considerably easier.

The cannon interfaces through a USB Arduino board, electronics and the physical interface were made in-house by the National Maritime Museum’s interactive department.

We used ofxPlaylist extensively for generative animations, and developed a pipeline to import Adobe After Effects timelines into our animation framework, which made it easy to incorporate third-party footage and animations.




Find out first about new posts by subscribing to the RSS Feed

Further Posts:

Poiesis - A Real-Time Generative Artwork work writeup
OpenFrameworks Vulkan Renderer: The Journey So Far writeup vulkan real-time software design
Simulated surface crazing using a fragment shader writeup math
Presidential Holiday Trees work writeup
High Flying Ultrabooks work writeup
Ghost art writeup work
Supermodel Interactions work writeup