Monday, January 21, 2013

Morgan - Ship's Instruments

I have two ships, islands, and water working but the constants are all ridiculous and need major tuning.  I added the HUD in order to see the relevant data while working on those parameters.  The HUD is rendered to a texture and then composited onto the screen with horizontal lines through it for a lo-fi look. I do this before the bloom and FXAA passes to hide aliasing.  I might later advantage of the 3D renderer to warp the display or put it in perspective.

On the left is the top-down chart (map).  I originally rendered it square, but it looked too large and didn't fit the design of the other displays, which are circles.  When I made the map into a disk it looked like a globe, which was confusing, so I added the two circles around the outside to make it reference a porthole or telescope.  Some rivet dots or decorations on the rim might further improve the appearance, but it is functional.

The next control is the ship's wheel.  Under the current control scheme, the player spins the left controller stick or uses keyboard A and D keys to turn the wheel.  This feels much more like a boat than direct control over the rudder.  Seeing the wheel spin gives proper feedback to make the controls feel tight even though the boat turns slowly.  There's a dot on one of the pins to make clear when the rudder is straight but it is currently lost in the bloom effect.  Pressing down on the left stick or the S key spins the wheel back to center.
The rightmost control is the compass, which also shows the boat's velocity vector, wind direction & source, and boat speed profile.  The speed profile is essential...if the boat is too close to the wind it cannot make forward progress.  Right now the backwinding constants are so strong that the square-rigged boat can't even tack, which is a little extreme.  This speed profile is for the square rig, so it is maximized dead downwind.  The Bermuda rig on the little red boat in the image is fastest near a reach.

The right half of the screen is reserved for sail trim, sail plan, and cannon information.  It feels a little weird to have the wheel off to the left instead of centered, but having the compass centered seemed most important (I could put the compass inside the wheel to center both, but that seems a little busy and the wheel wouldn't read right.  I'll try a different layout later.

I've broken G3D's screenshot functionality inside of this app and been reduced to taking screenshots the old fashioned way using Alt + Shift + Fn + F11 on MacBook+Windows, which is annoying.  The game is currently running at 60fps at 1280x720 on GK107, using 4ms of CPU time per frame.  The water simulation and ray tracing is entirely the GPU.

In addition to the above, the following scheduled tasks are now complete:

- Water visualization scale + offset for debugging
- Handle scrolling of water with occasional large steps so that water can cover the entire world

- On-screen charts

Next on my list for tomorrow are:

- Fix screenshots
- Show sail trim on HUD
- Luffing indicator
- Model the world
   - Add buildings for scale and texture
- Make water height conventions consistent throughout the program (e.g., tide level, world-to-water scale)
- Implement and tune wind waves
- Fix water height sample queries under position change

The current biggest risk is that there's no gameplay.  The above should get me to the point where I can start working on sailing as gameplay by tuning the sailing parameters.  After I have sailing working, arbitrary goals will make it a game, since sailing is the primary mechanic.

14.5 hours left this week!