Difference between revisions of "Swimmable Water"
m (adding category tag)
|Line 1:||Line 1:|
''written by angua''
''written by angua''
== Create some walls ==
== Create some walls ==
Revision as of 00:23, 17 July 2019
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
Create the entity
In DarkRadiant: Select your brush, -> Create Entity -> atdm:liquid_water
In the Entity Inspector you can see that the classname is now atdm:liquid_water, and the name atdm:liquid_water_1 (or similiar). It should also have a blue outline in the orthographic view (The XZ Front in this case).
Note: If you use "func_liquid" instead of "atdm:liquid_water", your water will not function correctly. It will f.i. not extinguish flames.
Texture the surface
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.)
However, if you don't want clear water then you need to choose another surface, say water_green or water_colored, include an extra overlay plus an underwater overlay. For this, see the next section.
Coloured and Murky Water
This is a method for providing water that is coloured or murky underwater and a surface that matches.
You can use this with different water surfaces but I recommend you first try:
textures/water_source/water_colored. (this can be coloured but by default it is not so won't confuse the issue - the colour will be added by the overlay below.)
To your water entity give the property:
Now give the property the name of one of the overlay guis. The names are fairly descriptive so you can choose which type you want suitable for a river, a cave pool, or a sewer, etc.:
guis/underwater/underwater_green_midmurk.gui guis/underwater/underwater_green_thickmurk.gui guis/underwater/underwater_green_thinmurk.gui
guis/underwater/underwater_blue_midmurk.gui guis/underwater/underwater_blue_thickmurk.gui guis/underwater/underwater_blue_thinmurk.gui
guis/underwater/underwater_bluegrey_midmurk.gui guis/underwater/underwater_bluegrey_thickmurk.gui guis/underwater/underwater_bluegrey_thinmurk.gui
guis/underwater/underwater_greengrey_midmurk.gui guis/underwater/underwater_greengrey_thickmurk.gui guis/underwater/underwater_greengrey_thinmurk.gui
Now with the water entity still selected:
- Choose Top view in Dark Radiant's orthoview
- Create a simple patch from the patch menu.
- Move this up flush with the surface of the water.
- Give it the texture that matches the gui you chose above. For example, if you chose guis/underwater/underwater_bluegrey_thinmurk.gui from the above then give the overlay the texture: textures/water_source/bluegrey_plain_flat_thinmurk
Using the above method you should find the surface opacity and colour matches how it looks when the players goes underwater.
Your water looks much more believable if it has an underwater fog. Create a light, select as texture "fog/basicfog", give it a very dark color and resize the light so it covers the entire underwater area. This will make your water darker the deeper it is, just like in real-life!
Test your water
And there it is!
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.
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.
A better way to influence the wave speed and wave hight is via shaderParms. Set the following spawnargs on your water entity:
shaderParm5 0.05 shaderParm6 0.75
parm5 controls the wave speed, parm6 the wave height. The defaults are 0.1 and 1.5, respectively. Experiment a bit, values lower than the defaults look more believable for still waterbodies, higher values for when you have a lot of wind.
If the water level is less than 1, you get normal footsteps.
Between 1 and 34, you get splash sounds.
Between 34 and 77, you get wading sounds.
If 77 or more, you get swimming sounds.
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.