All Hands on Deck! A technical look
Friday 27 December 2019
//~ by Thomas Kole, technical artist and developer//
Museum Kaap Skil on Texel is home to the largest maritime scale model in the world. It portrays the Roads of Texel in the 17th century, with more than one hundred miniature ships. We made 2 interactives as part of the renovation of this exhibition and the space around it. One interactive allows the visitor to highlight individual features on the model to learn more about them. I'd like to explain the other second interactive : All hands on deck.
Just like the rest of the exhibition, this game takes place around Texel in the 17th century. In this game, your goal is to supply a large ship with goods from various ports around the former "Zuiderzee". You have a physical wheel in front of you, and buttons to set sails, lower sails, and deliver goods. 3 people can play at the same time to work together.
As soon as the format was agreed upon, I could start the work on the first version of the game. I mounted a projector above a large table to simulate the setup as it would be in the museum. With these dimensions in mind I aligned an old map to include all the harbors I needed, utilizing as much of the space as possible.
The sailboats are capsules sliding along a plane. We decided to leave out wind directions, as it would become too difficult to play.
what you see (the boat) vs. what is simulated (the primitve shapes)
I simulated a bit of hull drag to stop the boat from sliding, without making it too floaty. A heavy invisible ball on the top is attached to the hull with a spring, giving the boat a wobbly feel, without affecting the actual steering.
In order to test the physical steering wheel, I built a prototype. The wheel and axle are made from scrap wood. A Phidget rotary encoder is used for the input, which is the same as in the final furniture. A set of 3D printed gears connect the axle to the encoder.
Gears in action
We wanted a top-down view of the Zuiderzee region, but the landscape has drastically changed since the 17th century.
I started out with a composite nautical map from that era.
Some of us at YIPP attended Everything Procedural earlier this year, where we attended a talk from EmbarkStudios. They presented a texture synthesis method, which seemed like a good fit for this project.
Using "semantic guides", you can generate new images from examples. In theory, I could take a recent satellite image, and paint over: "this is sea, this is farmland, this is city, this is lake, this is forest, this is dunes." Then I would highlight the same features on the old map, and the program would try to put the right pixels in the right places.
I used this image from Sentinel-2 (CC-SA-BY) as an example map.
Blue is water, black is land, red is "not interested"
I made multiple sets of guides, some focusing on farmland, others on coastal regions, inner lakes, and general ones. None of the results on themselves were any good, but they all had some useful regions.
different semantic maps yield different results
By layering them, masking out the useful bits per image, you get a pretty convincing map!
17th century vs now
The original map, with some additional labels, is layered over top for the final image.
What makes sailing on the Zuiderzee so tricky is the changing tide. Parts of the sea can be too shallow to sail trough at low tide, and we decided to turn this into a gameplay mechanic. The low and high tides are controlled trough a black and white image, based on the original 17th century map. It's loosely interpreted to suit gameplay, but fairly close to the original sandbank locations. I started out by manually drawing some "keyframes": high tide, low tide, and some steps in the middle, and then blended them together. You can faintly see the shallow sandbanks even at high tide, giving the players some time to prepare.
low vs. high tide
Additional effects, like a shoreline, ship wakes, clouds and boat reflections help sell the effect.
The interactive is now installed at museum Kaap Skil, where visitors can get behind the wheel.