Virtual Sailor version 7.0.1 (January 21, 2007):

Changes January 21, 2007

*   Boats navigate properly beyond visual range.
*   The speech updated to Microsoft Speech API 5, making it native Windows XP.

Changes October 22, 2006

*   Colors of depth maps improved.
*   Multiple detail maps bug fixed.
*   Environment sounds added using radio.txt.
*   Warnings shown when user joins net play without scenery or boat installed.
*   Net play session without DPNSVR.

Changes September 26, 2006

*   Boat dynamics can be adjusted and saved.
*   Boat dynamics improved, dampening and towing behavior updated.
*   New method for hiding water in cabin allows correct view of ships lower decks.
*   Additional tooltips added to show state of boat.
*   Bugs fixed ( saved cruises, chase view ).
*   Player names shown near boat names in netplay mode.

Changes September 10, 2006

*   Net play sessions are tracked on and shown inside the net dialog.
*   Underwater water graphics improved.
*   Docking and anchoring improved using actual ropes instead of constraints.
*   Sextant instrument added.
*   Arrays are not shown underwater, unless “Wet” keyword is added. (WetArray..)
*   Groups can have night textures, if object called Group[name]_n is found.
*   Object visibility can be adjusted.
*   Panels can be shown without a boat.
*   Map shows blinkers in colors read from their description ( blink.def ) files.
*   Map shows detail maps for each scenery, up to 256 files, defined in maps.txt.

Changes July 20, 2006

*   Atmospheric glow added to graphic options.
*   Autopilot on by default, added as option for switching between boats.
*   Main sails possible at an angle, see added parameters in boat.cfg below.
*   Door parts made possible, has_door must be specified instead of has_elevator in boat.cfg, the doors loaded with the elevator.x files, and the opening is done by anchor command.
*   Waypoints have blinking lights shown when lights always on, uses Blink_Wpt.def.
*   Thrust vectoring extended for 360 degrees, allowing diesel electric propulsion pods, this requires two parameters that must be specified in boat.cfg ; thrust_vectoring is the angle in radians you want pod to rotate, and attach_props to tell the program to attach propellers to the rudders.
*   Shakiness removed from boat dynamics.
*   Drag made more realistic at high speeds, preventing multi hulls to speed up to much.

Changes July 7, 2006

*   Added control over ship dynamics, see new parameters in boat.cfg.
*   Added instrument types, see instrument types below.
*   Updated telescope and boat labels views.
*   Animation of land objects is done by F11 key.
*   Improved collision detection for channels, docks and ports.
*   A new scenery object was added called “Group…”, allowing x files to have hierarchy, this object is especially useful for designing large ports built as frame hierarchy, and allowing damage to parts of the model and fast collision checks, to convert 3ds file to Group object use “conv3ds Group_01.3ds” etc..
*   Multiple joystick axes added, for engine control, thrusters and ballast.
*   Ctrl + pick on the throttles or the thrusters moves them differentially.
*   Shift + Pick on the one of the throttles or one of the thrusters moves both.
*   Boats have one more level of detail called boat_1.x, if not present a simple one is created automatically by rendering the boat into textures.
*   A new tool for encoding x files was added, the program decodes these files on the fly, this enables authors to create content without concern that it will be used for other purposes.
*   Objects and boats are hidden when not in sight; this leads to a great improvement of frame rates.
*   Texture mip mapping is made to smooth textures when far, and save texture memory and increase frame rates.
*   New chat mode when pressing F9, this chat mode shows up to 24 last communications made, including time and speaker, also includes the messages sent by the program, when no input needs to be made, press escape twice, to keep the chat mode without the input box below, press F9 again to show it with input box.
*   All dialogs and GUI objects in the program render much faster, allowing many dialogs to be used without a drop in frame rates.
*   New RADAR instrument with realistic radar modes, and collision calculation, see basic radar operation manual to get started with usage.
*   New GPS instrument based upon the Garmin GPS-MAP scheme, replaces the Magellan based older one, basic operation is similar to GPS instruments in use.
*   New Echo Sounder instruments based upon the Lawrence ECHO scheme, operation is basic only, and detection of land and objects is made.
*   Map refreshed and made faster to render, usage does not affect frame rates.
*   Map, RADAR, GPS and Echo can all work simultaneously.
*   Instruments in the boat panels have full orientation, placing them anywhere is possible and creating a full control room on all sides is possible.
*   Panels can be made with any name using “panel_name” parameter instead of “panel_number”.
*   Panels have several generic prototypes – normal, sails, compass, dive, these replace the previous control dialogs, using the keys P, C, S, D.
*   Boats have also several panel prototypes, which are selected by the boat type, these are power, sail, sub.
*   Each boat can have “panel.cfg” which overrides the panel assigned to it by its type, this panel shows when pressing P.
*   Panels have digital instruments, which can show text in all colors and sizes.
*   Panels can have fully functional instruments “captive dialogs” which can be manipulated using the mouse in 3d environment.
*   Mouse wheel is used to scroll lists, to move in 3D space and to zoom the camera, to control movement simply roll the wheel, to control zoom press Shift and roll, to move slightly press CTRL and roll, use the mouse wheel zoom to control instruments such as the radar on the Ranger.
*   All instruments were refreshed and many new types were added, switches were added as well to replace the previous click functionality on some instruments.
*   Sails can be controlled via 3D controls on the sail panel, by 3D controls on the boat, by dragging on the sails themselves, by dragging on the sails instruments, by mouse, keyboard and joystick, to control the sails the auto sail switch has to be turned off.
*   Camera can move with mouse in tower mode F8 as well.
*   Dive mode enhanced and includes new dive panel, new ballast and air pressure controls.
*   Boat dynamics was greatly improved, all boats have actual moments of inertia, rudder surfaces, delays, and more, waves actually yaw the boat when hitting it.
*   Boat behavior when docking improved, and new dynamics is used to slide it sideways.
*   Bow and stern thrusters were greatly improved and have new controls on the panels.
*   Boats can have two engines and two independent throttles, this is also see in the new panels.
*   Bow wave was improved to prevent it from breaking.
*   Boats have more accurate buoyancy calculation, allowing larger boats to float more accurately on larger waves.
*   Views dialog was improved to include visual view point movement, and coordinate display.
*   A guest mode was added in net play, a user can join on a boat as a guest and not control it if it was occupied by another player.

See new list of instrument names at the bottom of this document.
See list of controls at the bottom of this document.
Changes made February 28, 2006
*   Multiple weapons on the same boat, tested also in net play mode.
*   Additional weapon types, self guided missile, Machine Gun.
*   Clever war mode, self-aiming of new weapon types for boat under fire.
*   New fire and smoke effects for weapons and shells.
*   Damage tracking for boats and scenery under fire.
*   Scenery compatibility fixed for sceneries without rotated objects.
*   Buoys draft corrected when created from def files.
*   Collision horn and network horn sounds fixed.
*   Accurate land avoidance for traffic boats beyond visual range.
*   Flying boats improved and made a type of its own, the boat.cfg must have “can_fly” parameter in order for this boat to fly, in this mode these boats cannot dive.
*   User-friendly registration screen helps user get his key more easily.
*   DTM scenery shows on the map with actual region used after import.
*   Adjacent DTM sceneries can be loaded without gap and form global contiuity.
*   Bow wave is accurately modeled with particles according actual physics.
*   Boat loading is tracked and adjustable from user interface and netplay.
*   Wake positions greatly improved based upon accurate sensing of boat profile.
*   Additional options for showing reflections, objects in fog and boat particles.
*   Additional Quality+Speed mode for sea rendering, and improved Speed mode.
*   Fourth rudder added to boat, can be attached to fourth propeller as well.
*   Boat smokes can have color and scale for each smoke source, the file smokes.cfg has a new structure which is exported automatically when older file is found.
*   Panels are defined with “panel_name” parameter instead of “panel_number”, the old parameter is read for compatibility.
*   Weapons are defined with “weapon_name” parameter instead of “weapon_number” , the old parameter is still read for compatibility.
*   Weapons are defined using stores.cfg file, when not found this file is exported automatically by the program.
*   Weapon selection function added to joystick buttons. ( defaults to button 2 )
*   TrackIR support updated.
*   ROV camera layout shows underwater instead of default telescope.
Changes made February 1, 2006
*   New highly realistic sea graphics using vertex and pixel shaders.
*   Standard bump mapping was replaced with accurate pixel shaders.
*   Fixed boats sound volume issue.
Changes made November 22 2005
*   Reflections on boats, automatic or using has_reflection parameters in boat.cfg.
*   Animal animation using animal_a.x offers more sophisticated animations.
*   Animal behavior using animal.dll with open source. (6)
*   Scenery boundaries shown on map.
*   Global navigation across sceneries.
*   Application can run when minimized and consume only a fraction of CPU power.
*   Collision with objects improved and made more predictable.
*   Pressing F toggles between fps and data display.
*   Added crew animation for animated pilots onboard (1).
*   Tile actions improved, music is loaded and heard properly.
*   Radio actions improved and made more accurate (2).
*   Added angular orientation to objects placed in scenery (3).
*    Spinner object added to scenery format (4).
*   Animated object added to scenery format (5).
*   Pilot sphere is seen only when bridge light is on.
*   Auto Sail key added Shift + S.
*   Improved GUI for all program screens, divided into categories.
*   Multiple functions added to new GUI screens.
*   Bump sounds added when bow hits a wave.
*   Boats are indexed for selecting boats by length and type.
*   Application loads faster without 3D graphics in the startup screen.
*   Serial number shown always in startup screen and help about.
*   Serial number copied to clipboard when program starts for easier key retrieval.
(1)        Pilots are defined by files called pilot#.cfg where # can be any number between 1 and 12, up to 12 pilots can be loaded at once.
The pilot.cfg defines also the name of the animated x file to load, the action to do, and the frames inside this animation that describe this action.
See attached Ranger and Sailboat for some pilot samples defined.
(2)        Radio actions are loaded using the radio.txt file, these actions now include also the option to play a sound file, and also a delay between each type of message.
When several messages are in scope they are prioritized and played by proximity and delay time defined in radio.txt, see Aegean scenery port of Salamina for example of radio.txt actions and animated scenery.
(3)        Object in tile.def and objects.txt can be now oriented using the angle parameter,
defined in this form:
Name            X            Y            Z            Angle            Sx            Sy            Sz.
(4)            Spinners are defined as “Spin…” object, spinning is by orientation angle, and in constant speed, see port of salamina for example, defined in this form:
Spin            X            Y            Z            Angle            Sx            Sy            Sz.
(5)            Animated objects defined as “Anim…” object, animation is by proximity or time, 
see port of salamina for several examples, parameters given in this form:
Anim            X            Y            Z            Angle            Scale            FPS            Proximity.
(6)        The animal.dll is the first open source DLL designed to interface with Virtual Sailor, the source and example of one animal is given in test_gull animal, the DLL should be compiled using Visual C++ and have the same calling convention and data structure given in that sample, use this sample and template for new DLLs of this type, and modify just the parts commented for modification.
General notes about version 7:
Improved sea graphics:
The program uses vertex and pixel shaders to render more realistic sea.
Select “Use shaders” in graphic options screen to use shaders.
The most efficient new mode is “Reflection” + “Use shaders”
The most realistic optics is “Reflect + Refract” + “Use shaders”.
The program uses bump mapping for shaders and Non-shaders Sea options.
The bump is used as luminance bump for Non-shaders Sea, and as optical bump for Shaders Sea.
Both modes have different advantages and disadvantages, and both cause a reduction in frame rates.
Using shaders also removes the “tiling effect” from the sea.
The active sea matrix was increased in size to give the sea more accurate appearance.
Wave heights can be reduced to zero.
Improved sky graphics
The program uses time and date to calculate sun, moon and stars positions accurately.
Moon phases are also simulated.
All celestial positions are calculated accurately according to longitude, latitude, time and date.
Clouds, smoke effects, winds effects were improved and made more realistic.
Sunrise, Sunset and sky modes depend on celestial positions and not upon a fixed time of day, as a result night or day can take longer than 24 hours above the arctic circles.
Rain can be shown correctly over water, to enable this mode turn off  “Hide water in cabin” because rendering of the two options cannot be done.
Improved scenery options
The program can import scenery from a binary-signed integer DTM matrix.
To import such scenery, create an empty scenery directory and put into it a binary-signed integer DEM matrix with its header, this matrix can be saved using the 3DEM program.
* See example of imported scenery matrix in attached Hawaii scenery.
The program navigates between sceneries correctly, and even navigates to detailed scenery inside another scenery.
The program can read objects based upon accurate coordinates (objects.txt), and not just using tiles, this enables very accurate positioning of objects and navigation aids inside a scenery.
* See example of objects.txt in attached “Aegean” scenery.
The program can display sectored lights with precise angular colors and flexible blink sequences.
The program can read accurate beacon definition file (blink.def) for accurate definition of the colored sections, and blink sequences of buoys and lighthouses.
* See attached “Blink_a.def” and “Blink_b.def” in attached “Aegean” scenery.
The program has two editors for placing and defining navigation aids and scenery objects, these editors require VB6 runtime library in order to run.
The program can display all navigation lights by day also, to use this option select “Lights always on” from the graphic options screen.
Land textures can be made larger than before (1024 for example) and use jpeg files.
* See example of large land textures in attached Hawaii scenery.
Controls and keys

	Helm Left        Left
	Helm Right       Right
	Center Helm      Space

	Increase RPM     +
	Decrease RPM     -
	Zero RPM         *

	Bow Th. Left	 Shift + Left
	Bow Th. Right    Shift + Right

	Stern Th. Left   Ctrl + Left
	Stern Th. Right  Ctrl + Right

	Left Engine Up   Shift + Insert
	Left Engine Dn   Shift + Delete

	Right Engine Up  Shift + PgUp
	Right Engine Dn  Shift + PgDn

	Both Engines Up  Shift + Home
	Both Engines Dn  Shift + End

	Raise Main       PgUp
	Lower Main       PgDn

	Raise Jib        Ins
	Lower Jib        Del

	Auto Pilot       A
	Auto Sail        Shift + S

	Anchor           Shift + A
	Dock             Shift + D

	Horn             H
	Light            L

	Fix Boat         F7


	Shoot            Backspace
	Select weapon    Shift + Backsp
	Weapon Sight     T


	Pilot View       F1
	Chase View       F2
	Leave View       F2
	Remote Control   F8
	Chat View        F9

	Change boat      Tab
	Change view      Shift + Tab


	Telescope        T
	Panel            	P
	Compass          C

	Map              	M
	Radar            	R
	Echosounder    E
	GPS              	G
	FPS              	F

	Controls         	C
	Sails            	S
	Dive             	D

	Boats            	B
	Weather          W
	Options          	O
	Keys            	K

	Quit Program     	Q
	Close Dialog     	Escape
	Wireframe       	 Shift + W


	Look Left        	Numpad4
	Look Right      	 Numpad6
	Look Up         		Numpad8
	Look Down        	Numpad2
	Look Ahead       	Numpad5

	Move Left        	Numpad1
	Move Right       	Numpad3
	Move Forward     	Numpad9
	Move Back        	Numpad7
	Move Up          	Numpad.
	Move Down        	Numpad0

	Move Forward     	Home
	Move Back        	End

	Zoom Camera      	Z
	Unzoom Camera    	X
	Reset Zoom       	Shift + Z

	Mouse Wheel

	Move Fwd/Back   	Roll
	Zoom In/Out     	Shift + Roll
	Fine Move       	Ctrl + Roll

	Mouse Pick

	Move Item        	Drag Left Mouse Button
	Move Symetric    	Shift + Drag Mouse
	Move Asymmetric  	Ctrl + Drag Mouse


	Decrease Rate    	F3
	Increase Rate    	F4
	Freeze           		F10
	Animate Objects  	F11

Instrument names:
            "dgmap" // dialog instruments
            "dgcomp"  // digital instruments
            "hcomp"       // analog instruments

Paramters in boat.cfg

	"has_sails"		- the boat has sails
	"has_engine"		- the boat has engine
	"has_hydrofoil" 	- the boat has planning

	"attach_props"		- attach props to rudders, for thrust vectoring pods.

	"boat_length"		- length of boat
	"has_reflection" 	- boat has reflection

	"boat_alt"		- draft of boat
	"sur_sailb"		- main sail area
	"sur_sails"		- jib sail area
	"cdf"			- drag coefficnet

	"mass"			- mass of boat
	"crew_mass"		- mass of crew

	"cross_section_sur"    - cross section surface
	"max_tilt"		- capsize heel limit

	"stability_sails"	- stability for sail force ( 0.25 – 15 )
	"stability_body"	- stability for innertial forces ( 0.25 – 15 )

	"keel_area"		- area of keel cross section
	"rudder_area"		- rudder area

	"pitch_dampening"	- pitch dampening ( 0.25 – 5.0 )
	"roll_dampening"	- roll dampening ( 0.25 – 5.0 )
	"yaw_dampening"	- yaw dampening ( 0.25 – 5.0 )

	"thrust_vectoring"	- thrust vectoring angle in radians. ( 0.25 – 3.2 )
	"induced_drag"	- induced drag factor, ( 0 – 1 )

	"hydro_rise"		- hydro rise
	"hydro_cruise"	- hydro cruise
	"hydro_alt"		- hydro alt
	"hydro_cdf"		- hydro cdf
	"hydro_angle"		- hydro angle

	"max_fuel_time"	- max fuel time
	"motor_hp"		- motor hp

	"bridge_x" bridge_x
	"bridge_y" bridge_y
	"bridge_z" bridge_z

	"sailb_x" sailb_x
	"sailb_y" sailb_y
	"sailb_z" sailb_z

	"sailb_dx" sailb_dx
	"sailb_dy" sailb_dy
	"sailb_dz" sailb_dz
	"sailb_ux" sailb_ux
	"sailb_uy" sailb_uy
	"sailb_uz" sailb_uz

	"spin_x" spin_x
	"spin_y" spin_y
	"spin_z" spin_z

	"sails_x" sails_x
	"sails_y" sails_y
	"sails_z" sails_z

	"sails_dx" sails_dx
	"sails_dy" sails_dy
	"sails_dz" sails_dz
	"sails_ux" sails_ux
	"sails_uy" sails_uy
	"sails_uz" sails_uz

	"helm_x" helm_x
	"helm_y" helm_y
	"helm_z" helm_z

	"helm2_x" helm2_x
	"helm2_y" helm2_y
	"helm2_z" helm2_z

	"helm3_x" helm3_x
	"helm3_y" helm3_y
	"helm3_z" helm3_z

	"helm_dx" helm_dx
	"helm_dy" helm_dy
	"helm_dz" helm_dz
	"helm_ux" helm_ux
	"helm_uy" helm_uy
	"helm_uz" helm_uz

	"has_prop" has_prop
	"has_rudder" has_rudder

	"has_elevator" – the boat has elevator which is not a door,
       "has_door"    - the boat has a door and not an elevator,

	"sur_spin" sur_spin

	"prop_x" prop_x
	"prop_y" prop_y
	"prop_z" prop_z

	"prop_dx" prop_dx
	"prop_dy" prop_dy
	"prop_dz" prop_dz
	"prop_ux" prop_ux
	"prop_uy" prop_uy
	"prop_uz" prop_uz

	"rudder_x" rudder_x
	"rudder_y" rudder_y
	"rudder_z" rudder_z

	"elev_x" elevator_x
	"elev_y" elevator_y
	"elev_z" elevator_z

	"elev2_x" elevator2_x
	"elev2_y" elevator2_y
	"elev2_z" elevator2_z

	"elev3_x" elevator3_x
	"elev3_y" elevator3_y
	"elev3_z" elevator3_z

	"has_sailb2" has_sailb2
	"has_main2" has_sailb2
	"has_sails2" has_sails2
	"has_jib2" has_sails2

	"sailb2_x" sailb2_x
	"sailb2_y" sailb2_y
	"sailb2_z" sailb2_z

	"sailb2_dx" sailb2_dx
	"sailb2_dy" sailb2_dy
	"sailb2_dz" sailb2_dz
	"sailb2_ux" sailb2_ux
	"sailb2_uy" sailb2_uy
	"sailb2_uz" sailb2_uz

	"sails2_x" sails2_x
	"sails2_y" sails2_y
	"sails2_z" sails2_z

	"sails2_dx" sails2_dx
	"sails2_dy" sails2_dy
	"sails2_dz" sails2_dz
	"sails2_ux" sails2_ux
	"sails2_uy" sails2_uy
	"sails2_uz" sails2_uz

	"has_sailb3" has_sailb3
	"has_main3" has_sailb3
	"has_sails3" has_sails3
	"has_jib3" has_sails3

	"sailb3_x" sailb3_x
	"sailb3_y" sailb3_y
	"sailb3_z" sailb3_z

	"sailb3_dx" sailb3_dx
	"sailb3_dy" sailb3_dy
	"sailb3_dz" sailb3_dz
	"sailb3_ux" sailb3_ux
	"sailb3_uy" sailb3_uy
	"sailb3_uz" sailb3_uz

	"sails3_x" sails3_x
	"sails3_y" sails3_y
	"sails3_z" sails3_z

	"sails3_dx" sails3_dx
	"sails3_dy" sails3_dy
	"sails3_dz" sails3_dz
	"sails3_ux" sails3_ux
	"sails3_uy" sails3_uy
	"sails3_uz" sails3_uz

	"sailb_separate" sailb_separate
	"sails_separate" sails_separate

	"prop2_x" prop2_x
	"prop2_y" prop2_y
	"prop2_z" prop2_z

	"prop2_dx" prop2_dx
	"prop2_dy" prop2_dy
	"prop2_dz" prop2_dz
	"prop2_ux" prop2_ux
	"prop2_uy" prop2_uy
	"prop2_uz" prop2_uz

	"prop3_x" prop3_x
	"prop3_y" prop3_y
	"prop3_z" prop3_z

	"prop3_dx" prop3_dx
	"prop3_dy" prop3_dy
	"prop3_dz" prop3_dz
	"prop3_ux" prop3_ux
	"prop3_uy" prop3_uy
	"prop3_uz" prop3_uz

	"prop4_x" prop4_x
	"prop4_y" prop4_y
	"prop4_z" prop4_z

	"prop4_dx" prop4_dx
	"prop4_dy" prop4_dy
	"prop4_dz" prop4_dz
	"prop4_ux" prop4_ux
	"prop4_uy" prop4_uy
	"prop4_uz" prop4_uz

	"rudder2_x" rudder2_x
	"rudder2_y" rudder2_y
	"rudder2_z" rudder2_z

	"rudder3_x" rudder3_x
	"rudder3_y" rudder3_y
	"rudder3_z" rudder3_z

	"rudder4_x" rudder4_x
	"rudder4_y" rudder4_y
	"rudder4_z" rudder4_z

	"radar_x" radar_x
	"radar_y" radar_y
	"radar_z" radar_z

	"radar2_x" radar2_x
	"radar2_y" radar2_y
	"radar2_z" radar2_z

	"radar3_x" radar3_x
	"radar3_y" radar3_y
	"radar3_z" radar3_z

	"clmax_sailb" clmax_sailb
	"clmax_sails" clmax_sails

	"panel_scale" main_panel.scale

	"panel_x" main_panel.xpos
	"panel_y" main_panel.ypos
	"panel_z" main_panel.zpos

	"panel_dx" main_panel.dir_x
	"panel_dy" main_panel.dir_y
	"panel_dz" main_panel.dir_z

	"panel_ux" main_panel.up_x
	"panel_uy" main_panel.up_y
	"panel_uz" main_panel.up_z

	"weapon_number" main_weapon_name
	"weapon_name" main_weapon_name,
	"weapon_x" main_weapon_base_pos.x
	"weapon_y" main_weapon_base_pos.y
	"weapon_z" main_weapon_base_pos.z

	"can_fly" can_fly

	"wing_sur" wing_sur
	"wing_cd0" wing_cd0
	"wing_cla" wing_cla
	"wing_ki" wing_ki
	"wing_al0" wing_al0
	"wing_alm" wing_alm

Ilan Papini             Sunday, January 21, 2007