Name: Chariot Madness
Engine: Unreal Engine
Team Size: 8 People
Time: 2 Weeks
Role: Scripter & Designer
This game goes under the category of mindless fun, and I love it. We only had 2 weeks to make the game and the requirements was for it to have Multiplayer. Its a pretty simple concept which is fairly similar to the battle mode in Mariokart, but for a two week project we really managed to put a lot of juicyness in there.
I did a lot of the scripting in this project, practically all of the Character related things, making all the movements feel both chaotic but also smooth giving the player the sense that he/she is still in control. I also implemented the Stage hazards that are spread around the levels such as the pitfall and spinning spikes. But what I’m the most proud of in this project is the camera system which can be seen below.
This was a up to 4 player game, and it was important that the camera always could have every character on screen at all times, and so we thought about how this could be done, in the beginning we thought that we would just have a static camera that overviewed the entire playing field at all times, but that meant the camera was pretty far off and the details of the map could not be seen. On top of that the game seemed rather boring since everything felt static and flat. I suggested that we implement a camera system which dynamicly zoomed in and out to fit all the characters on screen, so when there were fewer characters left towards the end of a match it would zoom in way closer to make the match seem more intense.
I made a Camera System that keeps track of all the characters that are alive and then zooms the camera in and out as the characters come closer or travel apart. This system is fluid and accepts any number of players to fit on screen and then finds an average position in between them to focus at and then zooms out until it can see all the players.
Each Tick the blueprint goes through an array that contains all of the Players(Ponys) and checks the highest and lowest X and Y with the simple but elegant Check Highest/Lowest XY functions one of which can be seen below.
Once the array has been gone through and the highest and lowest X Y values have been found we can calculate the target X and Y location where the camera should be, basically in the middle of the hypotenuse between the highest and lowest coordinates. Once the target location has been defined the Camera interpolates to the location.
Finally we calculate how close/far away from the target the camera should be based on the hypotenuse.
Character Movement - Under Construction
One of the core pillars of design of this game was Chaotic Fun, meaning we were trying to create an experience that would feel chaotic yet still fun, and that idea had to be conveyed through every part of the gameplay present in the game. And so, as I was presented with the opportunity to create the Character movement for the character this was something I had to keep in mind.
I wanted to make the player feel like they were in control over their character, yet I wanted it to look chaotic at the same time. So the setup I came up with was that the player controlled the horses movement directly with just a little bit of added slidyness, and then I added the chariot with the gladiator in it behind the horse which was attached to the horse through a Physics Constraint. I made the constraint in such a way that it could swing back and forth behind the horse, but it could never fall over, although I still allowed it to sometimes tilt and just go on one wheel when the player made an intense turn. Here comes the kicker though, the players aim marker and projectiles that he could launch were all focused around the gladiator, so the player usually felt like they were actually controlling the gladiator in the cart rather than the horse.
The movement is a pretty rapid and responsive so the player has control and can turn on a dime, there isn’t much finesse to it because of that, but the chariot that’s sliding around behind the horse required a lot of setup for it to work.
I Physics Constrained the chariot to the horse, and set it up so that it does not allow the chariot to be outside of an 45 degree angle from the horse which basically forces it to always be behind the horse. And then I constrained the other angles so that the chariot can’t fall over or flip out too much. It’s supposed to look goofy and chaotic, but not broken.
All in all, this was a pretty simple solution, which didn’t really require much work from my part. But that is also the reason why I took it up, this gave a lot of juice to the games look and feel while not taking up much time.