Williwaw*


Williwaw will you take you on a virtual adventure, on a sailing boat across the sea. Get on board and control the elements in order to sail where you have never sailed before. Blow into your phone to create the wind in the sails, hum at your phone to change the amplitude of the waves and tilt your phone to steer the ship's wheel. Williwaw allows a number of adventurers to sail the virtual sea simultaneously, using multiple mobile phone devices. Beware of the other adventurers! Canon balls will soon start flying.


*insert video here.

What others have said:

"So this is kind-of like Fortnite, right?"

"PSSHHHTTT GWGWGGGGGHHHHTTT *wind and wave noises*"

"Can you buy this game?"

"This is something you could play at a kick-off party at work."


Williwaw is an application developed by four students at KTH Royal Institute of Technology, as part of the course Advanced Graphics and Interaction, class of 2019.

*Williwaw: "A sudden blast of wind descending from a mountainous coast to the sea."

The Making Of


Unity

The virtual game environment was created using Unity.

Android

The current application was designed to run on Android.

GitHub

Code hosting and version control was accomplished using GitHub.

Virtual Environment


The Unity Asset Store was used to download and import ready-made assets, such as clouds. Using Unity's Terrain Toolbox, a terrain object was created. Then, Unity’s built-in Terrain Tools was used to shape the terrain using a variety of brushes to raise/lower terrain, smooth height and paint terrain. One end of the environment had snow textures painted on the islands, and the other end desert textures, in order to simplify localisation.
Assets were imported to create a custom skybox and to place clouds in the sky, and a custom script was then created to have the clouds move across the sky in-game. Lastly, an audio clip was imported and attached to the boat camera as an audio source, in order to simulate ambient sounds.

Interaction


This application enables several modes of interaction. The phone’s accelerometer is mapped to the direction of the ship. Players can tilt the phone in order to steer the boat left and right. The accelerometer has smoothing applied to it, using Unity’s Lerp function, in order to reduce jitter.
The microphone’s sound input is used to create wind in the game. A low pass filter is applied to reduce unwanted frequencies affecting the input. The sound input is also used to affect the amplitude of the waves, by making a distinction between low- and high frequency noise.
The phone’s light sensor is used for the spawning of clouds. The sensor measures the current lux of the ambient lighting in the room. By covering up the sensor, and thus lowering the light-level, the player is able to spawn clouds above their ship. The clouds follow the wind direction and can be used to hide the boat on the map. A wind effect was created using Unity’s particle system that responds to a wind zone.

Networking


In order to enable multi-device support in the current game, it was vital to provide networking. One challenge was that the users were to each have an asymmetrical view of the world. The goal was to enable both a first-person camera view through each player’s client device and at the same time allow the server device to project an overview on a large screen. All camera views had to be in sync at all times. In order to accomplish this, Unet HLAPI was used to set-up a custom networking system.

The Team


The students behind this project.


Axel Ekwall

Backend Design



Alexander Heikinaho

Graphic Design



Magnus Lundh Haaland

Interaction Design



Chantal Hundscheid

Environment Design


Let's Get In Touch!


Any more questions about the project? Contact us at

chantalh@kth.se