Bark Boat Dash was my first game project at PlaygroundSquad. Bark Boat Dash is a party racing game for 2-4 players for the PC. It is played with Xbox controllers in a split screen view. Our team for Bark Boat Dash consisted of 9 people, including me. We had a time span of 5 weeks to complete it.
During this project I was the lead programmer. I did most of the game programming, together with a particle system/editor and shaders.
The most advanced part of the game programming was how you controlled the boat. Instead of having any control of some kind of throttle you only have the wind, which is indicated on the top of the screen by a weather wane, and your objective is to put your sail in the correct angle to get the most wind in your sail. The sail can be controlled separately from the boat, to a certain degree. Using a spline in the shape of the track I calculated a wind direction that's always pointing at most 90 degrees away from the tracks forward direction. Apart from that, the water should have waves that the boat will be displaced by, and there should be power-ups the players can pick up and use. For the water, we had a large plane covering the whole track, and modified the vertices from a sinus function to simulate waves moving through the water. For the pickups, I created a system that allowed the designers to open the track in Maya, set out the pick-ups over the track and the game would use these coordinates to spawn them at the correct location. These would then respawn after a while when someone picked them up.
We decided early on that the overall look of the game should be cartoonish, so we wanted cel-shading and outlines. I implemented a cel shader that used a ramp map the artists could use to specify how harsh the shades should be and also gave them the opportunity to colorize the shades. For the outlines I made a shader that used a combination of a depth map and a normal map to calculate where the outlines should be, and also used the color of the outlined object to produce the outlines, to avoid completely black outlines. For the water, we used two textures, one base texture which had the main color and a "watery" pattern, and a layer texture which only had a brighter variation of the pattern. To create the distorted look of the water, we used a noise map to offset the texture coordinates which moved slowly to create the illusion of moving water.
Please watch the video down below of the gameplay, or read more about the game and the team at the PlaygroundSquad project site.