After playing Fable Fortunes and the newly released Gears POP, I have been a big fan of Mediatonics work. So when I saw their new game Fall Guys, I was extremely excited. A brand new take on the idea of a "battle royale"
I'd been looking for a game to see if I design my own take on a pre-existing idea. Similar to how I took my character controller from CEOverkill and made a wholly different prototype from it. But the game was ours. So I wanted to see if I could challenge myself with expanding on others work.
Fall guys felt like the perfect challenge for this! Given it uses no combat in current pre-existing gameplay, and how it utilises environmental challenges.
First, I needed to analyse the game modes they already had so I could then create my own. This involves looking at the game modes themselves and analysing what their constraints are. For instance, where it appears there is no combat, how do you eliminate players from rounds? What are the constraints of the player? Within a level what must obstacles do?
From gameplay currently available online, I know that there are 3 game modes:
Wall of Doors
A game mode where players run down an extended, open aired corridor. Several walls with doors in a row are in the way. Some of these doors open, and others do not. You the player have to guess which door will let you through and get past all the walls as quick as you can!
The Obstacle Mountain
Players start at the bottom of a long “mountain”. At the top is a crown that the player must reach. On the way are multitudes of obstacles such as spinning gates, conveyor belts and even cannons that fire objects down the hill!
At the beginning of the game, half the players start with a tail, half don't. You can steal a tail from another player. A timer runs, and you qualify for the next round if you have a tail when the time runs out. This all takes place in an arena environment filled with ramps and some spinning hammers
From these game modes I can extract a set of rough constraints I feel I need to abide by.
Firstly, all of these game modes are “Family Friendly.” This is quite a broad statement but it works. There’s nothing offensive, there are also no overtly sharp objects in the game types themselves. Players cannot “Die” nor can they be eliminated early. You either qualify for the next round or you didn’t. Which leads to the second constraint.
Clear winners. In the Wall of doors game mode and the obstacle mountain, it would appear that when a certain amount of people reach the end/touch the crown, the game mode ends. It tells you whether or not you qualified for the next round. In Tail Tag, it’s obvious if you wont or lost due to the timer and whether you had a tail.
Another constraint is that the game modes themselves have a game show feel. It looks to take inspiration from shows like Total Wipeout and Takeshi’s Castle (even referenced in the Playstation Blog from E3 https://blog.eu.playstation.com/2019/06/10/takeshis-castle-inspired-romp-fall-guys-bounces-and-bumbles-onto-ps4-next-year/)
So making a game mode that takes inspiration from possibly an old game show and re-working it could be a great challenge.
Lastly, the levels of all of these game modes, had an open setting. Not at all claustrophobic. Players themselves are in an environment that is widely open and packed with players, so in my own work, trying to keep the level as open as possible is important.
The Falling Pit
The idea I came up with is one inspired by "Hole in the wall." A well known game show that made contestants match a position to make it through the wall. The game mode doesn't accommodate 100 players however, so what can be done differently with it, whilst also keeping it in line with the constraints laid out above?
I came up with an idea that I wanted to try
In a small tower, there are 3 platforms. These platforms are aligned vertically. Players will spawn on any of the 3 platforms at the beginning of the game.
The objective is simple. Do your best to avoid falling off your platform.
There is a catch... There will be a paddle trying to push you off amongst other obstacles.
The players with the least amount of "Falls" will qualify for the next round.
Now, immediately there are a few things that need to be considered. How does a player from the bottom platform rejoin the game? How does a player avoid the paddle? What if a player falls through more than one platform?
In concept, I plan on having a firing method that allows players that fall from the bottom to the top of the tower. In keeping with the Hole in the Wall aspect, the paddle will have gaps the player can run through to avoid falling off, whilst also trying to avoid the holes. Finally, having a detection method of falling through more than one floor will need to be implemented.
Another issue is, how do you playtest something that requires about 99 other players? Well, admittedly that is a challenge if I don't want to set up netcode! But the method I have in mind is to use a simple AI which can be affected by physics. It isn't a 1 to 1 version, but it should prove the point.
Firstly, I needed to create the rough outline of the tower itself. I did this by using a 50 x 50 grid in ProBuilder
Setting up a barrier and pillar system, as looking at the other minigames, having a “Bouncy Castle” aesthetic is key to then later adding an artistic feel. Even though this is blockout, ensuring you still get the same feel as I expect the game to give is important!
Then adding the second and third floors is the next step.
Something that needed to be fiddled with is the height itself between floors. As mentioned in the constraints, having an open aired feel is important to avoid any claustrophobic feeling.
A setting such as this looks like multi storey car park and that isn’t what we want. So I need to work out a way to make this feel more friendly. But before I block out a method to match the aesthetic, I wanted to see if the gameplay itself would work. So I separated each floor and began to poke some holes.
The grid size is 15 x 15, but allowing for the half a wall and padding, the actual grid is closer to 14 x 14. So I took a 14 by 14 grid and began to make some formations.
What was important is ensuring they didn’t overlap for fairness sake when a player falls to the next platform.
So using Photoshop and a grid, I painted combinations of tiles. Not a single tile overlaps so if a tile is red in one floor, it shouldn’t be in another. Now players are able to walk into each other so if too many players are on one floor, the spacing is as such that they will start knocking each other off, if the paddle doesn’t first! Of course this will be tested during play testing.
So using the design on the left, I have made the first stage.
Now if we have 100 players per round, upon the beginning of the game we can roughly assume there will be 33/34 players on each floor. Obviously this may change but given that should be the rough count on each floor we can assume that’s the amount.
So before doing the other floors, and adjusting hole size, I needed to see what would happen if we had 33 players on this floor.
Above is 33 players. But I need to assume they would be moving around and avoiding the wall. So the next stage will be to see if the players would be knocked into a hole by adding something for players to avoid. This includes setting up a navmesh to make a basic AI to act as our “Players”
First things first, A moving wall.
I decided creating something that spins would be the best way to approach this. So I created a large paddle, and then created a central pylon for the paddle to spin along.
Now it’s time to set up our “Players”
The only way to properly test to see if this game mode and level set up works is to try and test it using the games own systems. As mentioned in the concept, simulating 99 other real players is complex, but I can fake it slightly.
I know the player needs to be affected by physics, and they will be moving around the level. Unity however doesn't enjoy putting NavMesh agents and Rigidbodies together, but I have a rough idea as to how to get them to play nicely. First I'll add the rigidbodies.
Watching a bunch of capsules fall off is rather fun to watch.
With the players affected by physics, we now need to get them running about. This means setting them up a NavMesh agents, baking a NavMesh and creating extremely basic AI.
For the AI I have planned, constantly running an update function to certain points on a moving barrier could prove challenging. So instead, I am going to have them move to random points on the platform. It isn't quite the same but, it's similar.
So I create the player prefab, and add NavMesh agents. Write a simple script to get them to travel to random points and set them off!
Now here comes the tough part.
I had to create a script that turned off the NavMeshAgent when hit by a physics object, so that way force can be applied to the RigidBody and they can fall through the whole. The challenge is ensuring the NavMeshAgent gets turned back on when the player hits the next platform.
Via a method of locking the X and Z rotation of the players, and adding a small raycast to the bottom of the player, it will check if they are on a floor after 2 seconds of being hit by a physics object. If they are, it'll turn the agent back on, if not, it will wait another 2 seconds.
This means the players can fall through the hole if hit. Admitted, they won't accidentally fall, which players are more likely to do. But NavMeshAgents do not leave their baked navmeshes so. Below is the first result of this
And here we have our basic initial set up. A floor with a moving paddle and some simple AI!
Initial Playtesting & Expansion
As with any level design challenge, iteration is important. So my next step was to add the rest of the platforms, and a player controller to test out the current scenario, and move forward from there.
So I figured I should add the other platforms, AI, and the holes on the new platforms. Then get a player controller in there.
Okay so with the AI and extra platforms there, I need to put the holes in the paddles! Otherwise it'd be a bit difficult to play test the rough game mode!
For the paddle holes, I figured the best approach was asymmetrical. That way a player couldn't stand in the same spot and be okay. So the holes are about 3 metres wide and are Don't match up on either side. I figured 3 metres would be a good starting point as it would allow 3 players to squeeze through at a time.
Now we add the player! I used a quick rigidbody controller I had saved from a previous project and applied it to a green capsule. Having colour co-ordination makes it easier to differentiate between me and the AI I wrote.
The first thing I noticed. Which is pretty clear. THE SPEED! It was terribly slow and extremely easy to avoid! On top of that, having only 2 paddles was clearly too simple! I needed to change that.
But there was something that was bothering me first. The fact that AI if they fell, were completely out of the game and couldn't come back. Now I had several choices as to how to loop players around the tower.
- Teleporting a player if they fall to the top and moving them along the Y axis
- Rendering a camera at the bottom so the tower seems “Infinite”
- Firing the player out of a cannon back to the top through glass tubes
I felt that the cannon was most in line with the game show feel. So I got to creating funnels at the bottom of the tower and adding these tall pipes to move the player
I thought making the pipes material a more glass colour, and allowing players on the platforms to see other players flying through the pipes would be rather entertaining.
First thing I needed to do was add a way to detect a player had fallen into the funnels, and either carry them through the pipes with force, which isn't reliable, or move them through the pipes with a set of predetermined waypoints to travel through.
For the sheer fun of it and testing, I initially used physics force.
I used hidden colliders to prevent the player going too far off the level.
Fixes and Corner Shunts
Going back to the paddles, I knew it needed reworking. They were too slow and too far apart. So I decided to see what I could do to change it using a few ideas I had.
The fixes I wanted to try were increasing the speed, changing how many paddles were there, as well as the size of the holes in the paddles.
First I tried 4 paddles and increasing the speed.
The 4 prong variation is much more challenging, but it still felt a little too easy. The paddle object itself is one cube that stretches across to create 2 paddles. So I decided to make a new paddle that is just one prong to easier create variations.
I felt that by making less holes but having them be slightly bigger might be a bit more of a challenge so I decided to test it out by creating variations of paddle. Some with one large hole and some with 2 smaller ones
This felt much more engaging and actually felt like the player had to move to certain places. With only so many holes in the paddle, and players scrambling to stay on their platform, it leads to some tight squeezes.
Now with the paddles feeling much more of a challenge to the player, it’s time to remove those safe corners.
I took inspiration from pinball for this. With these constantly moving shunts that push you into the level. Using simple Unity animations and applying a collider, it kept players in.
Now players are forced to stay central. There will be temporary safe spaces, but it’s risky to stay inside that space or else the shunts may push you into the central paddle.
In play testing this made the paddle much more of a fun challenge, especially when you are able to knock players into the paddle or into a hole when you are trying to rush into the paddle hole.
Colouring, Fall Counter and Final Testing
So now with the main key elements in play with the corner shunts, the paddles, the cannons and working players, it's time to piece it all together
With the prototype almost finshed. The last steps currently are:
- Add borders to prevent players falling off the map
- Add the shunts and new paddle style to the other 2 floors.
- Add some fun coloured materials to the map to give it a more “Fall Guys” vibe
In the next gif, I added some new colours, added paddles to the rest of the levels, removed the bottom of the paddles to prevent the AI from jumping when going through the paddle holes, and also made the cannons much more reliable. I even added a small pause before you drop onto the top floor to better ready for yourself when you start the top platform.
I didn't realise until this point some of the AI had been turned off. I turned them off previously when testing and forgot to turn them back on! I later resolved this issue.
Lastly I just need to add a fall counter for the player, and maybe a nicer skybox, then get some final playtests to see if anything needs adjustments.
So after adding a Skybox (Credit to FarlandSkies on the Unity Asset Store) and colouring a few objects, I made a fall counter in the top right.
However I realised I can also solve the issue in case a player falls through more than one floor by adding a check to see if the player was grounded in between falls, acknowledging that the player fell through more than 1 floor. A player shouldn’t have their score added to if they fell through quickly.
As visible above, the count only goes up if they were grounded in between, making for a fairer scoring system.
Finally I got people to playtest the game. After getting a small sample of 8 people to play the gamemode I found a few issues:
- Players could push through the barrier towards the edges.
- Players can camp in the middle on the second floor.
So the first fix for this, was I increased the collider size on the players and the paddles ever so slightly, as there were issues with the paddle rotating due to animations, and that player physics was trying to update constantly. This solved the issue.
I then created a small hole in the second floor.
After this, I had some people come and test it again and had a great time watching people avoid falling off. Some even shoved the poor little red AI off the corners!
Conclusion/What I learned
This was definitely a fun exercise. It took a couple weeks of work in my free time to do this outside of working on a game project with my 3rd year team.
Analysing another game and trying to make my own way to play it based on a game that isn't even released was a great challenge! I admit unorthodox but it was still a lot of fun!
I definitely learned a lot making this. Learning to work to constraints can make you think creatively about how to solve problems. The cannons were something I wanted to make but and whilst the post doesn't show it, it took a lot of time to get right!
Even learning how to program quick mechanics to get a better feel for how a level would work was extremely helpful! Being resourceful and trying to work around skills that aren't my specialty was a great challenge!
If I could change the prototype in other ways, I would love to colour code the holes so they are easier to spot. Maybe even try different shapes of arenas and different paddle methods.
Thanks for reading!