Sorry.. I reallly hunted hard for a code snippit i remember trying in the code snippits forum.. maybe you can find it, i couldnt :/ (we need a board search button!)
Basically, randomize matrix / update matrix is NOT the way to go. I was experimenting with water not to long ago, this makes for very jerky and rather horriable looking movement. You need much smaller variation in the matrix points for a nice smooth water.. like I said, there is a snipit demonstrating it perfectly on these boards somewhere, i just cant find it :/
But there should be more to it than simply moving the points around. What happens if its a calm day and theres next to no waves/ripples in the water? There still has to be some sort of waterflow.. the best thing you can possiably do is probably animate a texture. This is, after all, how water is done in say a 2d tile map - and some of those 2d games have sweeet looking water
Zelda - Wind Waker uses an animated texture for its water too as you will find if you sit there and study it for a minute. If you manage to knock up a good texture for this you wont even need to touch the matrix positions really (although we all like too.. everyone likes a nice ripple effect XD)
I wish I could give you the source to do everything im talking about, but whereas I have been programming a while im still relitivly new to dbp. the best I can do is a suggestion
heres some psuedo-type code (ie, this is not real code and wont compile, but it should give you an understanding of what i mean):
#constant MAX_WATER_FRAME amount of frames of water
#constant WATER_FRAME_DELAY small delay in water animation
global current_frame
global animation_timer
global dim water_animation(amount of frames of water)
rem load textures into array here (its just easier)
water_animation(0) = load texture thingy(texture filename)
ect for all frames
rem this is one time initlisation code
current_frame = 0
animation_timer = 0
rem now, texture your matrix with the first frame of water to get it started and then use something like the upcoming function to animate it
function animate_water
if animation_timer < WATER_FRAME_DELAY
animation_timer = animation_timer + 1
else
current_frame = current_frame + 1
if current_frame > MAX_WATER_FRAME then current_Frame = 0
texture matrix matrix_num, water_animation(current_frame)
endif
endfunction
that should do it.. this is all based off my experiance working with 2d (i have 2d tile maps coming out of my ears >.>
and i know it isnt *extactly* what you were looking for, but if you combine this with some fine matrix manipulation then you could indeed have some of the finest water going
someone suggested ghosting the matrix. its a good idea! i did this when i was messing with water, it allowed you to see like a floor through it, so you could make like a sea bed or something, would look sweet.