Blow Wind Blow is a Unity student project I made with two groupmates. In this game, a prince sets out to sail across the ocean. Playing as the four winds, the players cooperate to steer him to each of his destinations, while at the same time competing to become the prevailing wind and influence his destiny. In this way, the winds compete for ultimate dominance over the narrative of the game.
3D models: Chee En Cui
Music: Chee En Cui (lyrics, melody, singing) and Chee Enjia (arrangement)
Programming and compiling: Chin Kee Yong a.k.a. me (and a lot of online Unity resources)
Murals, story, and Arduino engineering: Shaherfi Sidin
This project was made for a class called “Narratives in Interaction.” Our task was to create something that was a) interactive; and b) did something interesting with its narrative.
All three of us are enormous game nerds, so we settled on making a video game very early in the development process. Our inspirations for this game were:
- alternative control schemes to the traditional keyboard and mouse;
- multiple actors competing to take control of the narrative;
- gaining experience in working with Unity and 3D games.
While coming up with game mechanics, we were inspired by a wide variety of video games, such as
- the Mario Party series, which also focuses on friendly competition
- Journey, another metaphorical adventure game that does not use language
- Sunless Sea, a similar narrative-driven game with a nautical focus
Aesthetically, we were inspired by classical myths such as Homer’s Odyssey and the Greco-Roman gods of the four winds. The game’s interface and cutscenes were inspired by Ancient Greek pottery. Our music was inspired by the haunting classical pieces in Journey and other atmospheric video games we wanted to emulate.
At first we tried all working on the same Unity project file at the same time, but version control quickly became a nightmare as our work was spread out across different versions. This led to a new workflow where only one person (me) had the Unity project file and everyone else contributed assets to import into it.
The core of our game is fairly straightforward. It uses Unity’s built-in physics and UI systems to display graphics and move the ship around. The difficult part was polishing it enough to immerse the players in the experience. To do this we added lots of small details, such as making the ship rock and bob on the ocean, making the ship’s sails flutter when blown, moving the waves according to the wind direction, etc. All this stuff was more work than the actual game mechanics but contributes a great deal to the final experience.
It cannot be overstated how much this game owes to Unity’s features and community. I found a lot of solutions to my problems just by looking them up on the Unity manuals or on the Internet. The game is basically a giant collection of code by different people held together with duct tape. Without the help of countless other game developers, writing the code for this game would have been much harder.
The game world is important to our project because players mainly interact with our narrative through navigating the game world. En Cui and I iterated over many layouts of islands to ensure that the players would move through the levels smoothly and the sections of the world would not feel too long or too short. We also had to carefully place the “prevailing wind” collectible items so every player would feel that he or she had a chance at victory in each round.
One of our goals for this project was to tell a narrative with the minimal use of words. Shah faced the challenge of communicating game rules and story events to the player through nonverbal mural-like cutscenes. We used symbolic imagery and held items to convey parts of the winds’ and the prince’s personalities, such as skulls for death and flowers for peace. We also added a compass to guide the player to checkpoints and strong audio-visual feedback whenever an item was picked up or a checkpoint reached. In the end, we did add one bit of text — the “blow to continue” sign, since it’s not intuitive to end a cutscene by blowing into a microphone.
Audio was an important part of this project and took a long time to get right. En Cui and her sister Enjia composed an original soundtrack for this game, with multiple overlapping musical tracks that fade in and out depending on the game state. The music was composed to loop seamlessly and transition at appropriate moments. We also added a lot of sound effects to improve the immersion, like crashing waves, ambient seagulls, and bustling cityscapes.
We used an Arduino microcontroller to read from four microphones and detect when the incoming sound is above a certain frequency (i.e. somebody is blowing into the microphone). Whenever one or more inputs is received, the Arduino sends a unique integer to the computer depending on which combination of microphones is active. This is how we translated microphone input over a serial port into usable in-game inputs.
Our final project is a complete experience that takes you through 3 islands from the beginning to the end of the prince’s story. That said, it’s only a proof of concept, and we could have added a lot more features to make it into a polished product if we had the time.
Some ideas we had to leave on the cutting room floor:
- Nautical hazards to make sailing more interesting, like currents, whirlpools, or enemy pirate ships
- Different weather conditions
- A longer story with more branching elements, and perhaps more involved stories on each individual island
- A more beautiful game world with clouds, birds, and more unique island graphics
- We were focused in our scope and met project deadlines
- Our game is reasonably polished with no bugs
- We have a complete narrative that changes meaningfully depending on player actions
- We have awesome music that you can sing along to
- The narrative is sometimes unclear
- There could be a better tutorial for unfamiliar players
- Our game is not up to the industry standard of polish and the graphics, audio, etc. could be further improved
- Our Arduino-microphone setup was a kludge and kept falling apart