Now that Water has been released we are already planning our next projects. If you haven't played Water yet, download it now. With the Mod Of The Year competition starting, we will be releasing a bunch of articles in the following weeks.
Posted by Au-heppa on Nov 30th, 2011
Now that Water has been released we are already planning our next projects. If you
haven't played Water yet, Download It Now. With the Mod Of The Year competition starting, we will be releasing a bunch of articles in the following weeks.
Water started from myself and Ross Gardner, a writer on Human Error, joking about making a mod about a mermaid. I started thinking it might be really interesting to program something like the mermaid movement and animations on Source engine and eventually the joke became an actual mod. At the same time I was working on Human Error Coop, which wasn't doing too well. When I talked to Henri and Matt about Water though, they seemed instantly excited. A reaction I didn't really get with Human Error Coop.
So, pretty fast we were doing this mod and we had concept art coming from Matt and Henri making test maps, all while I was coding the core features like the player movement and animations. Stuff like the interaction system were first conceived in the concept art, while dialogue selection system, player scripted sequences, and speech bubbles were simply something I wanted to try out. Some other ideas and features were inspired by other elements of the mod.
Below are details about the ideas and thoughts behind some of the features in Water.
Speech Bubbles were something that we had in mind very early in the development. We had plenty of reasons for using the speech bubbles, one of them being that they would be cheaper to do than voice acting. While we had access to plenty of dedicated voice actors willing to work on the project, it would still be easier to use text instead of voice. The dialogue changed a lot through the development and we were adding some small pieces of text very late in the development as a response to playtesting reports. Using voice actors and having to go through the process of sending the lines to the voice actors, adding lip synch and gestures, would have been a lot more complicated one than simply adding an entry to a text file.
An even bigger reason was the comic book feeling the speech bubbles give. When you can't actually hear the character's voices or the supposedly alien language, it gives a different mood than hearing the voices. Speech bubbles also allowed players to read the text on their own speed and skip the text when feeling like it, which also made playtesting a lot easier.
There were three major entities releated to speech bubbles in Water: hlss_dialogue, hlss_speech_bubble, and hlss_dialogue_script. hlss_dialogue was meant for dialogue selection, allowing the level designer to set five different choices for the player to choose from. hlss_speech_bubble displays a single speech bubble, and hlss_dialogue_script loads a script file with several speech bubbles displayed after each other. The latter was important in allowing us to easily create and edit longer scenes without having to add a lot of hlss_speech_bubble entities, or having to recompile the map if we wanted to add a line.
In the dialogue scenes where Water and the NPC she's talking to are shown against a paper background with the puppet stage-show was something we didn't originally plan. It was something we tried at one point when simply having the maps as the background wasn't interesting enough. For example, in the first chapter when Water talks to the Drunk, the camera is positioned high above both of them, so that when the player is in interaction mode, they can see the different objects around the map more easily. This made it very hard to see the expressions on the characters' faces and made for a boring point-of-view for the player.
After seeing this type of screen in Homestuck and other adventure games, I thought about programming a way to render the models on the screen, regardless of where they were positioned in the map. The game sets up three views, first the puppet show stage model, then Water's model, and then the NPC's model. Each view is set up as if they were right next to each other. The characters can be on the other sides of the map, but they are rendered next to each other. They are rendered in the same buffer, while the rest of the map is not rendered at all.
This allowed people to see the gextures and expressions a lot better, and the background gave the dialogue a nice feel. People seemed to like the screen, and we ended up using it in most of our dialogue scenes. We added a way to loop gestures easily with the connection to the speech bubble system.
As none of the dialogue beyond the intro narration is voice acted, music was an important part of Water. In early versions of Water it played continuously, but after playtesting we started to play it only in the most important parts. For example, when the player talks to an important NPC or gets to a location where they are supposed to solve a puzzle, we start the theme music for that map.
We utilized FMOD to allow us play looping music more easily even during level changes. The score for Water was made by Dennis "Entru" Yaremov.
Since we set-out for Water to be third-person from the beginning, it was important to program a way to have scripted sequences for the player. Without them it would have been hard to do even simple things like pressing buttons, or turning valves. The base class we created for the scripted sequences also allowed us to easily create things like the turn based combat controllers, the controllers for the sequence where the player uses the harp on the guard, and so on.
The scripted sequences change the player's inputs so that the game movement code moves the player to the right position, and her body to the right angle.
The interaction system got started from Matt's concept art. It serves as a way for the player to find about the world. We tried adding a lot of dialogue that would tell something about both Water herself and the Fish People. We programmed our own system for NPC interaction, allowing us to filter what NPCs can ask or be asked about certain objects and which can't.
Being able to ask NPCs to pick up objects became an important feature as we used it in a lot of puzzles. It was also the hardest feature to program as the physics of the objects were sometimes tricky to handle with.
The mermaid colour effect was my first experiment with shader programming. The idea was that Water was feeling healthy while underwater, but felt unease when not completely emerged in water, and started to lose health while on dry land. Additionally it emphasizes her playful nature and the apathy of the Fish People. She and whoever she is talking to is coloured while the rest of the world is grey.
We also later made everything that had a red tint to be coloured. This helped us
emphasize important objects and characters, like the guards in the levels easier.
The turn based combat was also inspired by Homestuck. The reasoning behind making it turn based was the same as waiting for player input during dialogue. I wanted the player to be able to take their time, not having to worry about quick reflexes, but only about figuring out the right combination of attacks. The battles are meant as mini puzzles, not as button smashing fights. Each of the four battles have a different idea to them.
The battles were an opportunity to do a lot of new player animations where the player does something a bit more complicated than just swimming.
Next week we will release an article about how Water changed through playtesting. We learned a lot during the development of Water, not only about game design, but how to do different things with the Source engine as well. We are eager to start our next project.
About a week from here we are going to release article about Water changed through playtesting. Remember to vote us on the Mod Of The Year awards!
If you haven't yet played Water, you can download the installer, or use Desura, or unpack the .zip file to SourceMods so that the mod folder is called "water". You will have to have Source SDK Base 2007 installed on your Steam account. You can install Source SDK Base 2007 by accessing the Tools section in your Games Library. You need to have a Source engine game like Half-Life 2, Counter-Strike Source, or Portal to have Source SDK Base 2007 available.
Additionally if you the version of Water you downloaded is 1.0.2 or lower, download 1.0.3 Patch. The current installer is 1.0.3. If you have any problems with installing the patch, or anything else, go to the Water Bugs & Problems page.