I’m building a submarine dogfight simulator.
So far I finished the underwater physics and basic rendering. And also pretty bubbles!

The physics got pretty complicated — apart from normal gravitation and velocity updates there is buoyancy that depends on the density of the surrounding fluid, and the density in an ocean changes very slowly and non-linearily when going deeper, based on the temperature, salinity and pressure. In the end I approximated the density formula based on looked up values. The drag depends on the current velocity, density, object front area, as well a shape dependent experimentally discovered drag coefficient (can be approximated as 0.04 or so for streamlined shapes).
Where things get really hairy are in the bubbles though – the volume (and thus density) of an air bubble changes depending on the surrounding pressure and temperature. Fortunately it was easy to recalculate the density (and display radius) for bubble entities on each frame, which can then be used by the rest of the physics system. So the bubbles expand in a realistic way when they get close to the water surface, and larger bubbles rise faster than smaller. There is also some turbulent sideways movement (in addition to prevailing current) for bubbles, which I approximated with some noise functions.
So, I’ve got some pretty bubbles, and placeholder submarines. Still one day to add actual gameplay and all the rest… 