Fighting game:

Sumo Ball

So what is Sumo Ball
and how do you play it?

Objective

It's a 1-on-1 fighting game where the players compete over occupying the center circle to gain score.

The player that fills all their score bars wins the round! Winning 3 rounds makes you the winner of the game.

Mission statements for Sumo Ball

  • Easy to pick up and play

  • Enjoyed by both hardcore & casual players

  • Enables meta discussion with many layers of strategy

  • Unlockable skills that hook the players to play more

Dash

All players have a standard move called Dash. Dashing into an opponent sends them away. 

The longer you charge the move, the harder you hit and further you go. 

Dashing is the players main tool for fighting, and the whole game is single-handedly affected by how the dash works. The game had to be fun to play even if both players only had the Dash. 

If you get hit while charging Dash, your charge will be canceled and depleted.

The dash canceling prevented the hit opponent to immediately dash back, and also promotes offensive play and charging for longer riskier.

Score Bar

The score bar went through a lot of iterations during the development as it had a large impact on the gameplay. 

Here's a summary of the biggest changes I made and why.

Version 1:

Non-segmented (prototype)

GOOD:

I wanted the score bar to be seen well in the peripheral vision. (so the player could focus on the action instead of looking to the sides).

BAD:

Having one long bar made it hard to estimate how much score one needed left. 

Since the bar wasn't decaying the losing player would have a hard time making a comeback. I wanted the game to have "clutch" moments so I wanted the end to feel intense.

Version 2:

Segmented & colored

GOOD:

 - Segments

 It became easier understanding the score as the player could think of how many segments they had filled in comparison to their opponent instead of thinking of the percents.

 - Decay

Now the players had to hold their ground until the segment got filled. With this the rounds got divided into smaller battles of who would get their segment filled, and successfully fending off the opponent for long enough gave a sense of triumph and relief.

 - Bar filling state colors

 One could in their peripheral vision easily see the state of their score bars (whether their score was increasing, decreasing, paused etc.)

BAD:

 - Bar filling state colors

Not knowing what bar belonged to what player made it confusing and the colors had nothing to do with the player colors

Version 3:

Animated Scrolling

GOOD:

 - Scrolling Animation

 I made the bar filling states extra clear with scrolling movement on the bar, to emphasize if the score is decaying, filling, or paused.

 - Player color

Having animations displaying the state of the bar instead of colors allowed me to use the player colors on the bars, to easily see what player is using what bar.

 - Animation when segment got filled

To show the player they've successfully filled a segment of the bar.

Abilities

Instead of having a character select like you normally would in a fighting game, I felt it would be more interesting to be able to select a number of abilities as a "loadout" to use when fighting.

Active abilities

These are activated for a duration of time with a button press. 

Cloak

The player becomes temporarily invisible

Duration: 1.2 seconds

Cooldown: 3 seconds

Speed Boost

The player becomes temporarily faster

Duration: 2 seconds

Cooldown: 5 seconds

Noclip

Temporarily pass through your opponent

Duration: 1 second

Cooldown: 3.2 seconds

Passive abilities

These are constantly active "buffs" that affects the stats of the player.

The player becomes heavier, making them harder to get pushed around

Sturdy

Swift

Become smaller and accelerate faster

Passive abilities

currently in development:

  • Strong Dash

  • Rapid Scoring

  • Stun Dash

  • Fast Charge

Active abilities

currently in development:

  • Shield

  • Slow Trap

  • Detonate Mine

While making the abilities I constantly had the Dash in mind and thought of how the ability complimented the gameplay around it.

Ability Select

&

Input Assigning

I wanted the player to be able to make any combination of any abilities, but to have pre-determined inputs for the abilities would feel awkward. My solution was to merge the process of selecting and assign the ability to the player.

Assign any key to your active ability

I wanted the players to have full control over what inputs or set-ups they wanted. So I let the abilities get bound to any key, with a few exceptions like the Dash button or Pause button.

The input icon for the keyboard keys changes depending on the key that got pressed. Since the name of the key is displayed, I had to automatically scale the text and select image accordingly.

For gamepad buttons I chose to make icons that would somewhat work for all types of controllers, since unique icons for all of them would take too long.

What I want to change:
Clearer differentiation between Active and Passive abilities

I'm not happy with how the player tends to get confused why passive abilities are missing an input icon, or not understanding how to assign it. I wish to make the process for the player more simple and intuitive.

Scripting

Everything in this game is scripted.

The most important thing I aimed for when I scripted was cleanliness. I wanted the game to be easy to iterate upon; if I wanted to remake something I wanted it to be fast and easy, so I aimed for scripts to "know of" as few other scripts as possible. Because if I changed a script I'd have to make sure nothing broke in how they were used. So the less scripts knew of other scripts, the better.

Also, since I aim for this to be a complete game I had to think of how I could continue working on it in the long run. The system design of my game had to be on point and make sense.

The Player Blueprint

The most complex single script in Sumo Ball

The System Design &

the main blueprints of the game

The most challenging system was the collaboration between the Player Pawn, Player State and the Player Controller.

I wanted their use to be different and clear though they are so heavily reliant on each other.

Also adding the abilities and support for real-time key bindings was difficult but eventually I found a system I was happy with that made the process of adding new abilities easier.

Player Onboardning & Tutorialization

I didn't have enough time to complete what I had in mind for the onboardning of Sumo Ball, but I'll show what I plan to do in the future.

Tutorial Phase

When the game boots up for the first time, the tutorial appears. There are 3 main steps in it.

  1. Spawn: The game waits for any input from two different controllers (keyboard included)

  2. Dash: An input prompt for the dash appears. This step ends when one player dashes into the other.

  3. Occupying Circle: The circle and the score bars appear. When a player enters the circle it works just like in a normal game, but instead of having to fill 4 bars, they only have to fill 1 long bar. No text is shown, and I rely on the intuitive feedback to teach how scoring works. This step ends when one player fills their bar.

  4. Tutorial is finshed: The players that now hopefully understand the basics of the game are taken to the ability select screen.

Onboarding

Keeping the player busy until they get used to the mechanics

This is one thing Smash Bros. Ultimate does very well. After every 10 minutes of fighting, a new character appears, and winning against this character makes them playable. This keeps the player hooked and they want to keep playing and unlock more characters. By the end of unlocking everything the player has become much more comfortable with the controls and the mechanics of the game.

I want to apply this to Sumo Ball by having abilities and different level sets getting unlocked in a similar fashion as you play.

Hinting at more content to lure the player in

I want the player to see that there are a lot of level sets and abilities to unlock, that's why having question marks/ locks on the locked abilities hint at more content to explore.

Challenges I faced with the project

and closing thoughts

A lot of the things I wanted to do in Sumo Ball were things I had to learn from scratch. For example:

  • UX animations and shaders

  • System design scripting

  • Long term planning

Since there were a lot of new things I dove into I had trouble to plan and scope accordingly as I didn't know how long things would take. I had to cut down on may things and I had to largely revise my plan two times during the project.

Although it has been hard I feel like I've improved a lot in these areas, and I'm very happy that I took on the challenge. I hope you look forward to the end product!

©2020 by Noel Toivio