Waypoint Marker
A downloadable game for Windows
Note: This page is missing a lot of images because I'm currently out of town and can't easily upload what I need.
What started as a simple "Rogue Squadron spaceship controller" project evolved into a fast paced arcade vehicle action game.
This was developed as a prototype first, so there's a pretty inconsistent level of quality across this super short game. After a quick proof of concept on the jet controls, this turned into a (successful!) graphics experiment to create a lit smoke shader that I've been trying to recreate on and off for years.
Controls
IMPORTANT: THIS GAME WAS DESIGNED AROUND A GAMEPAD
One of the biggest challenges with this has been to come up with three different control schemes for three totally different kinds of vehicles and somehow making it coherent. The approach I ended up using was trying to unify around 3 anchors:
- Left stick -> Translational movement
- Right stick -> Rotational movement
- Triggers - Weapons
How this manifests in each of the three vehicle types still ends up being more divergent than I'd have liked, but something has to give somewhere when you're talking about such fundamentally different modes of transport.
The other approach I had considered was to heavily optimize the controls for each vehicle type, and tossing any semblance of commonality. This felt most appropriate for the jet, probably because of Ace Combat established muscle memory, but given that a core mechanic of this game is switching between vehicles quickly and often, I'm not confident in how well that would have worked out.
Vehicles
I've made examples of each of the vehicles in this project separately, but never all in a single project and playable within the same game. This game is meant to be very simple to play, so none of the vehicles has much depth to them, and honestly would probably struggle to carry a game on their own. The conceit here though is that you never play a vehicle long enough to get bored with it. Security in numbers, or something like that.
Tank
I've written many tanks over the years, but this is definitely my favorite. If going with a physics based solution, they are surprisingly hard to get right because of the requirement of being able so turn smoothly at speed, and at a standstill. It doesn't get easier with more realism either, because even real life tanks are awkward to turn in place as well.
The solution I went with this time was the typical Unity wheels on the road wheels approach (with lessons learned from Vehicle Sandbox), and then for turning, it's all handled through a magic torque applied based on acceleration rather than force. Acceleration was more reliable and consistent to work with, and since the wheels are kind of slippery anyway, it works out well. To prevent turning in the air, or other weird rotations, the acceleration is modulated by the percentage of wheels that are grounded.
This is also the first tank with working tracks I've ever made. It's done through the tried and true method of the tracks being a skinned mesh with bones, and a scrolling texture. I had to learn how to weight paint and it's a nightmare. I have even more respect now for 3D artist skilled at rigging.
Helicopter
I've written helicopters differently basically every time I've made one. When it comes to arcade helicopters, this is also my favorite iteration I've ever written. Physics-wise it's a simple zero gravity ball that you move with forces. The physics frame automatically aligns to the horizon to keep itself upright and stable. This is the simplest helicopter you could possibly write, but it looks way more physically correct than it is purely through animation.
Essentially, there's a set of hover animations that react to what the left stick does, and then a set of animations that define how the helicopter animates when at "cruise" sepeed. The animations then blend based on how fast the helicopter is going.
"Cruise" is the secret sauce to this helicopter though. The problem with the the zero G physics ball approach is that when turning at high speeds, you end up sliding a lot. It looks weird because helicopters don't fly like that. The Falcon from Reach actually has this problem too. You can try to counter it with helicopter forces, but then it causes the helicopter to lean into turns in an equally strange way.
The solution: A wing. It's always wings. Using an even more simplified version of SimpleWings, the helicopter has a vertical wing that balances the forces such that when the helicopter is flying at speeds, it will maintain its speed and adjust its velocity vector smoothly when you turn. This is very intuitive, and creates a fun dichotomy between how the helicopter handles at low speed vs high speed.
I'm also really happy with how SFX are handled. It functions on three channels:
- Hover: A baseline choper sound when hovering
- Cruise: The engine sound when the helicopter is flying at its max speed
- Turning: A very "choppy" sound when the helicopter animation is turning
The hover and cruise channels blend between each other based on how fast the helicopter is moving. The turning channel gets added on top when the helicopter banks and pitches, while also slightly ducking the hover/cruise channels. I got this idea from Battlefield 3/4, which has really satisfying sound that communicate the state of the helicopter.
Fighter Jet
There's actually nothing interesting about this one. Side stick pitches and yaws in that direction, while an auto-leveling force keeps it upright at all times. That's all there is to it. This is the vestigial "Rogue Squadron controls" that this project started out with. There is some extra roll added to the visual model that's just animation for juice.
The velocity vector is maintained with standard drag, which also means that the throttle adjustment is somewhat artificial and smoothly moves up and down based on input. If you had direct control of the throttle, you would speed up and slow down in a fraction of a second.
Lit Smoke
A bit embarasssing to admit, but this might actually probably my favorite feature of this whole game. For a long time I've been trying to recreate the kind of smoke you see in Battlefield 3 and 4, specifically the way that they react to light. For example, if a tank is covered in smoke incoming fire and movement, when it fires its cannon the entire cloud gets lit up by the cannon fire.
Custom Lighting
Over time I've become more cognizant of the fact that I tend to be working around and against physically based lighting rather than working with it. To create bright light over a wide area, I tend to have to make lights that blow out when something gets near them. It might be physically correct, but it's often not the effect I'm going for.
It turns out, changing the light falloff curve is actually pretty easy to do, though it does have two annoying downsides:
- You copy the URP package into your project's package folder, which means if you change Unity versions for your project you will have to resolve this.
- Whenever I finish playing in the Editor, the Editor will focus on some random file in the URP package files. Over time, this started to really drive me crazy because I had to constantly re-select something I was working on.
Still, it is really awesome getting more control over the light falloff and brightness. I changed it so that you set the radius, and the intensity is how bright the light is within that area. It's not at all "correct" but it gives me the lights I was trying to make.
Download
Development log
- 1.1 Patch3 hours ago







Comments
Log in with itch.io to leave a comment.
why are you ok
No. This is a cry for help.