As we discussed in the last blog post about buoyancy, we’ve had some focus recently on simulating water physics since water is sometimes a big part of the terrain. The nice thing about having a fairly general game engine is that as soon as some new basic physics parts are added, we can immediately utilize the rest of the game mechanics together with the new physics.
In this case, we could combine the buoyancy forces with the computer control of a turnable jet turbine, connected to a control console that the player can attach to, and we get a speedboat you can jump into and drive at least somewhat realistically along the channels!
The fun thing is, that since this is physics-based (as opposed to a hardcoded game-mechanic like it’s done in many other games), you both get the challenging parts like how to build a boat with the correct centre of mass, centre of buoyancy and maneuverability, and also the fun parts like the seamless interaction with the other parts of the engine like using it to ship materials or animals, to get you from A to B, and also the assembly of it from its voxel parts that have to be scrounged up in the world.
As an anecdote, when we first tried building the first boat, we knew we would have to have some heavy elements along the stern to keep it level, but we forgot that if the water jet motor is placed too low, the boat will immediately turn heavily upwards in the water when it tries to accelerate somewhat like a real boat with a far too high-powered engine 🙂 So it’s kind of cool that the failure modes in the simulation match the failure modes of the real world.