Swimmable Water

From The DarkMod Wiki
Jump to navigationJump to search

written by angua

Create some walls

In this example, I made this little rectangular pool, but you can also use differently shaped structures.


Fill in your water

Draw a brush that is going to be your water volume and texture it with common/nodraw

[It has now been recommended that nodraw solid be used instead of nodraw as sometimes the water fails to function. - Fidcal]

Create the entity

In DarkRadiant: Select your brush, RMB -> Create Entity -> func_liquid

In the Entity Inspector you can see that the classname is now func_liquid, and the name func_liquid_1 (or a higher number if there are also other water sources present) It should also have a blue outline in the orthographic view (The XZ Front in this case)


Texture the surface

Select the face that is going to be the surface (Ctrl - Shift - LMB) and texture it with a nice water texture, for example Water_source/water_clear.

Do not assign the water texture to the whole brush, or you will see this: (You can also get rid of that z-fighting by dragging the brush into the wall so that it insersects with it.)


Test your water

And there it is!


Current Flow

There is at least one flowing stream surface texture at the time of writing. If you want to create your own variations then just examine that material shader, copy and modify it. Probably it can be used with other existing surface texture images or you can create new ones.

Flow Force

A force field can be placed in water to apply a tangible flow, eg, to push the player and/or other objects along.

See Func Forcefields

Wave Frequency and Direction

You can set the frequency of the surface waves from tiny undulations to large slow ones just by changing the surface texture scale in Surface Inspector. Flowing surfaces such as stream textures can of course be rotated to get the direction you want.

Troubleshooting Problems

Visible Joints Between Water Brushes

If you place brushes of water against one another, eg, along a channel, round corners, to form a canal, etc. and you can 'see the joins' then the most likely cause of the problem is that the surface textures do not align. We are used to aligning static textures but it is not so obvious with the dynamic translucent surface of water that we might not think of it. Just copy and paste shader one of the surface textures to all the others to get the same scroll and scale alignment and it should be OK.

NOTE: If you want to use the NoDraw Solid texture, be sure NOT to use it between water entities, otherwise you won't be able to swim between them.