Heres a simple demo to get you started
Type water Field mesh Field surf Field size Field wavedensity Field wavespeed End Type Graphics3D 800,600,32 SetBuffer BackBuffer() WireFrame True camera=CreateCamera() look=CreatePivot() PositionEntity camera,50,10,10 PositionEntity look,50,0,25 PointEntity camera,look ;createwater meshsize,wavedensity,wavespeed createwater(100,10,10) While Not KeyHit(1) updatewater(MilliSecs()) RenderWorld Text 0,0,"Simple non random wave motion" Flip Wend Function createwater(s,wd,ws) w.water=New water w\size=s w\wavedensity=wd w\wavespeed=ws w\mesh=CreateMesh() w\surf=CreateSurface(w\mesh) v=0 For x=0 To w\size For z=0 To w\size AddVertex w\surf,x,0,z, x,z,0.5 v=v+1 Next Next zs=w\size+1 zm=w\size-1 rd=0 For z=0 To zm For v=0 To w\size-1 AddTriangle w\surf,rd+v,rd+v+1,rd+v+1+w\size AddTriangle w\surf,rd+v+1+w\size,rd+v+1,rd+v+w\size+2 Next rd=rd+zs Next UpdateNormals(w\mesh) EntityColor w\mesh,150,200,255 End Function Function updatewater(move) For w.water=Each water v=0 For x=0 To w\size For z=0 To w\size h#=(Sin(w\wavedensity*x+move/w\wavespeed)+Cos(w\wavedensity*z+move/w\wavespeed)) VertexCoords w\surf,v,x,h#,z v=v+1 Next Next Next End Function