This is the second part of Making Of Water. In this part, Henri tells us a little bit about the underwater world of Water. You can read the first part here. Stay tuned, when we release the third part, covering how Water changed through playtesting, and the Water OST in a few days. If you haven't yet voted, remember to do that!
For Tero, one of the main goals with Water was to make something truly unique with the Source SDK. His last project was Human Error and its Co-op sideproject, and I have a vaque memory that after releasing those, he was pretty exhausted of the whole crowbar-firstperson-combine-yey thing, and wanted to do something fresh and original.
After releasing Flesh, I had a bit of a similar problem. For a few months, I worked on new horror projects, but they didn't lead anywhere, and ultimately, I was just exhausted of violence and dark brooding gameplay. Around the same time, Tero asked me if I'd like to join this crazy "mermaid project".
What excited me a lot was that, I could work on something I hadnt seen in HL2 mods before; underwater scenery. It was sort of a untackled territory with Source mods, and I figured I could do the concept some justice.
I figured the underwater scenery, it's instantly recognizable, iconic, for this project. Stock HL2 content didn't cut it, there wasnt much of underwater content, and what was there was all muddy and dark. I wanted colours, motion and life to things.
First was this really subtle change, but in my mind, it did a lot. I replaced the default HL2 water's surface look, that rippled refraction on the water surface, with a rounder, wavier texture. It's rendered with a neato program called CAUSTICS GENERATOR, which I found years ago by googling for anykind of water-related rendering software, it does these caustic animations that are looped, and it's pretty simple to convert those into animated normal maps... it's free and easy-to-use, so get googlin'. This was a really minor change, but helped on detaching us from that HL2 "feel". Also, with the same software, I rendered water caustics animations, and then I blended whatever diffuse maps I had into that, creating those animated caustics you see in-game, which are pretty unrealistically placed, but work for the dramatic effect. Im pretty sure I've heard that animated textures eat resources and are heavy to use, but I dunno, I havent noticed anything... Maybe that was back in 2006 or something?
I've seen fellow developers do caustics on a seperate texture layer, like a translucent polygon that goes 1 unit above the ground, but I rendered the caustics straight on the ground texture and made that animated - that way I could use it freely on whatever displacement terrain I had, like on this amazing mesh right here...
...it's just a box test for the texture, from the very first alphas. Oh and heh, the karma function is still there, you notice the 1-2-3 on top left corner? Basically in the first alphas, Water (the character) would change her form according to her deeds, so if you did bad things, she would become a dark evil octopus that was really strong and climbed on walls, etc. Cant remember what "Madness" stands for, probably something mad. We scrapped that idea later on and focused more on the NPC interaction. But anyways---
--since the engine supported grass sprites that "wave in the wind", I used that for the underwater plants. Actually the way the grass waves, it does look more "underwaterish" than actual wind, so this was pretty ideal for me. The grass did cause me some trouble later on, since the engine has a pretty low limit on how much grass you can render in one level. I had to make it rather bare in the end.
At that point I was pretty happy with what I had, but I could go wayyyyy further... The underwater stuff was still flat and uninteresting, so I figured hey! Lets add sun shafts, to get more depth. Simple polygon meshes with translucent materials. There was just one problem.
The rendering glitched when I viewed a translucent material thru the water surface. Au-Heppa coded a little extra option for the materials tho, which allowed them to be rendered ONLY when you're underwater, so what we have in-game now, is that the lightshafts stop rendering when you go above the surface, and we avoided the glitch that way. After that, my additions were pretty simple, just more and more props, like the fish swarms (polygon planes that move on a simple animation loop, with an 2-frame animated texture), some seaweed (also simple animated props), tuning colours and light values -thats pretty much what visual work is all about- and then we were pretty far off from the default HL2 setting:
Actually, I dont have that much to say on the city itself. The workflow there was that Tero made the base geometry and the gameplay, then I jumped in and tried to make things visually interesting. I usually spent some time cleaning up the VIS workflow, and deleted a ton of solid brushes and, sometimes while at it, Tero's gameplay entities -- sorry about that.
The original plan was sort of a pseudo-Venice type of a setting, it was pretty undefined. I just went ahead and went for a vibrant colourful fantasy thing. It was supposed to have a lot of stuff scattered all over, sort of a chaotic weird industrial mess. A lot of wind elements (cloths, the windmill things, clouds, smoke), lots of pipes and platforms. Im not that good with high detail, I tend to focus more on motion and colours.
The problem with the colours was, the stuff you could interact with didnt really stand out from the background. So I archieved the goal of a vibrant mess, but, duh, it wasnt a good idea. -I think- it was Marcello who thought of making the enviroments desaturated, and then items and whatever interactable stuff had colours to them, so they would highlight out of the setting. At first, the desaturation wasnt that strong, but Tero made it stronger, almost black and white, and that gave such a good contrast between the under/above water stuff.
One funky side-effect of making the above water stuff into greyscale, is that I amped up the fog by A LOT and made it really bright blue (--as in white with the greyscale fx on). It gave everything this cool silhouetteish feeling, it made everything a bit more spookier and deader, which tickled my sense of horror -- ironic that I went for spooky stuff, even if I initially was excited of working on something funny and light. Now, if you disable the colour effect via console (cl_hlss_mermaid_color 0), everything looks rather blue and messy, since I just stopped worrying about the colours at that point and worked on making things look extra-good with the greyscale fx on.
It's cool how the City evolved from a cartoonier more fun thing, into this dark depressing gothic setting, and with such little changes. Colours and light, those really make the difference.
The intro cave's crazy glitch
I wanted to bring this one up, the intro cave had this insanely evil glitch to it. So Tero assigned me on doing the intro level, and I figured, well, Water rises up from the depths and enters the City, so I'll let the player do exactly that, rise up from a deep cavern. I made this epicly large, very dramatic opening scene, but when you swam up, the renderingcaused trouble once again---
--basically, it's rendering the water alright, it's rendering the mesh and whatever in there, but the sky rips and flashes thru it, kinda like if I had two polygons aligned in the same space and how they flash thru each other. This happened on vertical elements, so you view from below, you see the water surface, and you see the sky, but the sky -rips thru- the water surface.
Now, I did try just about everything, from optimizing/merging the VIS leafs, z cull, editing the geometry, water material settings, going from one extreme to the other with whatever values I could edit, but nothing helped, and I almost changed the whole layout, but finally I figured out somekind of a solution for this, and my, what a devilish hack it was!
What I did is, I took a copy of the water's mesh. Then, I put it into the 3d Skybox, and inverted the faces -especially the top face- so they face inside the water, and made them exactly the same blue hue as the water's fog settings are. Then, I made the z cull cut everything out just beyond the water's fog. So what you have in-game is, the actual level is rendering like 3000-4000 units ahead of you, and after that, it's just big blue mesh from the 3d skybox. So when you're diving around, the water cuts out just ahead of you, but since the fog and the hacky skybox element match, nobody can tell, and the sky ripping is hidden.
The only problem with this is, in the first level, you cant see above the water from underwater, except from really really close to the surface. Otherwise it's just thick blue colour. You see, with the normal water, in the other levels, you can see the clouds and whatever, the water surface is transparent. But with the first level, thanks to the VIS/rendering glitch, and my crazy hack, it's thick blue.
But I figured nobody would notice this.
And nobody did, atleast I havent heard any complaints. Sorry if I broke the illusion for you now.
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!
Download Water now
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.