Made a new Game: Ultra Ball!

I spent a couple of weeks making a new game! I wanted to jam something new out for a couple of reasons:

  • I want to get better in Unreal 5, my other games are all in UE4 and UE5 has so much cool new tech in it

  • My main game Freerunners is taking forever to complete

  • I have a backlog of little game ideas that I want to make

So I picked a simple idea, something I had been wanting to make for a while, that I thought had potential for fun and that I could make quickly, called…

Ultra Ball!

Ultra Ball blends traditional arcade gameplay with a modern feel. Combining elements from classics like Breakout, Pong and Superhexagon to create challenging gameplay that seems simple but quickly gets harder and will keep you on the edge of your seat!

Test your reflexes against the games increasing intensity!
Play for FREE on my itch.io HERE

INITIAL IDEA:

I had the idea a good few years ago and just hadn’t had a chance to make it yet. Below you can see the initial design that I wrote down. Super simple concept, keep the ball bouncing for as long as possible. Hold the left mouse button to move the top paddle and hold the right mouse button to move the bottom paddle, with obstacles getting in your way to make it more difficult.

DEVIATING FROM THE IDEA:

However, when I came back to the idea and started actually thinking about making it, I quickly realised that holding a specific mouse button to move a specific paddle was going to make things over-complicated and wasn’t going to feel good. So I decided to deviate from my initial idea. I simplified the mechanic so no mouse clicking was needed. Instead, you only control the paddle in the direction the ball is moving. This created a nice focusing in feeling of attention just in front of the ball (almost how in vampire survivors you are just looking for that next place to move to and don’t have to worry about clicking buttons).

DEVELOPMENT PROGRESS:

I thought it be interesting to reflect on the progress of making the game. I didn’t track my time rigidly but I think making the game took around 20 hours, which was split across a few weeks. 25-ish hours total if you include stuff outside of the core development: making an itch store page, uploading the game, creating screenshots, a trailer and writing this blogpost about making the game. Below are rough chunks of how I spent my time and the progress I made:

CHUNK 1 : Around 5 hours

Kicking a project off is always exciting so I spent a bigger chunk of time here. I setup the project, starting from the Top-down Default Project Template but it would probably have been better starting off with a completely clean project because I ended up removing pretty much everything, only keeping some of the template meshes. I got a lot done here, my initial goal was to get the core game loop in as soon as possible, to test out if it would actually be fun. So I ended up getting in:

  • The core bouncing ball mechanic and moving the paddles around

  • Match states (Into, game in-progress and match over)

  • Level data system and each level having a unique time to complete

  • Save system to track best time got on each level

  • A simple UI

  • Making sure I could cook off a build (a little tip I found from doing game jams in the past)

I was very happy with the progress, it’s a simple game mechanic but I was getting that 1 more go feeling from it already.

CHUNK 2 : Around an hour

I got a lot more done here than I was expecting, I wanted to carry on getting the core mechanics in so I focused on the rest of the structure of the game, things like:

  • Implementing the other core system of the game which would allow me to add “modifiers” to the level data to activate and deactivate obstacles and other modifiers e.g. changing the shape of the paddles

  • Setting up placeholder level data for the 10 levels I had planned

  • Making it so you could pick levels in the UI and see information about those levels

In the video, past 20 seconds, you will see how I am now able to change the paddles to be a different shape. This was a good proof of concept for the game.

CHUNK 3 : Around an hour

Next up I wanted to get some music in, to start solidifying the games feel. It took me agggeess to find something that I thought worked which in-turn made me feel like I wasn’t making a lot of progress. I used the Unreal Marketplace to find the music (£5) and also an 8-bit sound effect pack (£7.60). These were the only things I spent money on for the project: Totaling to £12.60. I implemented a simple music-switching system which you can hear in the video above, but ran out of time to implement any new sound effects.

CHUNK 4 & 5 : Around 1 hour total

I got busy in life and so work on Ultra Ball slowed down for a bit. I tried working on it but I only got like 30 min chunks of time to work on it. Which was making it hard to get into the flow of work and make meaningful progress. I did some misc stuff, adding a bit of juice to make the game feel better (paddles tilt when you move, ball scales on bouncing, on level start made the paddles scale in). I also changed the colour of the ball.

Design-wise I was finding it a bit hard to add juice to the game because the gameplay gets so fast. Camera shakes and sounds when the ball bounced seemed cool to start with, but ended up being constant when the ball sped up. So everything had to be very short and tight e.g. the bounce sounds had to have a very quick attack and release.


CHUNK 6 : Around an hour

I was getting a bit annoyed at not making a lot of progress. The juice stuff I was doing was interesting but it felt like I was getting distracted from driving the game towards being finished. So I decided to focus in on what mattered most: the level designs. I felt like if I had the levels designs I would have something to aim towards even if I only had hour chunks of time. Above you can see my sketches of what I thought the levels could be. I first drew down the ideas and then tried to number them in order of difficulty (from the players’ perspective not development difficulty). I felt better about things after creating this plan of action.



CHUNK 7 : Around 4 hours

Things started to come together here. I think this was due to having the level design plan but also because of the longer chunk of time again, allowing me to get more into a flow state. Here I worked on:

  • Blocking out most of the obstacle/modifier mechanics needed for the rest of the levels

  • Improved the UI across the board and added some fun juice to it

  • Fixed a bunch of misc bugs that had been building up


CHUNK 8 : Around 4 hours

I got another bigger chunk of time and put it to good use. As I was getting closer to finishing the game I wanted to start tying things up. So I made a pass on the art of the game. Art is by far my weakest area (I’m colourblind), but something I want to practice and improve on in making these little prototypes. I also worked through the last of the level designs and then made up a lock system to allow for actual progression in the game. I then gave things a balancing once over. I had to make some balancing tweaks to levels because some of them were just too hard:

  • I removed the Switcharoo level because it was so hard (inversed controls)

  • The spinning triangle obstacle in cooked builds seemed to spin faster than in-editor, making the level impossible, so I had to really slow them down


CHUNK 9, 10 : Around 2 hours total

Now I was on the path to finishing the game. I wanted to playtest the game and then wrap things up. I cooked off a build and gave it to a couple of people to play and get feedback on. They seemed to enjoy the game and I got a handful of bugs to fix, suggestions for opportunities to add more juice and some other general thoughts on the game. I playtested it myself and then acted on the feedback: fixing bugs, adding some more juice and then quickly added a couple of new things to the game:

  • 3 new levels. One with multiple routes. One with pinball-style flappers (you can see in the video above) and lastly a level at the very end of the whole game called “The Impossible Lvl”. An intentionally super hard level (one I haven’t been able to beat yet). For this last level I reintroduced the inversed controls that I decided to remove earlier on in the project. I wanted to have a super hard challenge right at the end of the game.

  • I also added a second-level complete timer to each level called “Ultra Time” that is harder to reach than completing the basic level complete time. I thought this fit the overall game and would add a little extra challenge to the player (plus it was an easy win development time-wise)

I could have continued working on the game, adding further levels and more juice, but I got to a point where I felt like I was just drawing out the whole process. The point was to have some fun, practice making games and then move on! So that was it I called it finished!

CHUNK 11 : Around 5 hours

Did I say finished… well I meant almost finished. One thing I’ve learnt from making my bigger game Freerunners is that the marketing side of it is super important. Although I’m not planning on marketing Ultra Ball fully, there are still some basics that I can do and practice to build up pipelines for marketing any games I make in the future. Funnily enough, this stuff took me much longer than I planned for at almost a fifth of my total development time! Making up gifs and recording footage always take a while and are fiddly but there are also a bunch of little things and steps that I always forget about. Like needing to create a custom thumbnail for the Youtube trailer video. Here is a list of the broad things I did that I will build on for future game:

  • itch store page setup

  • Media, GIFs, trailer, videos for store page and social media etc

  • This postmortem blog

  • Social media posts

  • Updating my website with the game

  • Post on IndieDB.com

And then I really was FINISHED!

Below is the quick trailer I made for the game

Overall Thoughts and Learnings:

  • Bigger chunks of time can help you be creative: I struggled to make meaningful progress when working for an hour or less, bigger chunks of time were more useful for getting into a flow and being creative

  • Taking breaks from your game can help: 20 hours of development split across several weeks was far better than 20 hours of solid work. It gave me time to passively think about the game in-between and come back with fresh ideas and perspectives

  • Make a plan: When I felt like I wasn’t making much progress making a plan of action helped a lot. Splitting bigger tasks into more manageable pieces for the time chunks I had available

  • Always Playtest: Getting people to playtest the game is always useful as people will see things that you are completely blind to

  • Get the ideas out of your head fast: Some ideas in your head don’t actually work when you try to put them into practice (for example my deviation from the initial idea)

  • Watch out for ‘Scope Creep’: I started to extend the project, adding more juice and further levels. Luckily I caught myself doing this and forced myself to just finish it. Remembering the goal here is to make lots of tight fun prototypes, not to make full games

  • Marketing should be part of the process: Uploading and doing some basic marketing (store page, marketing trailer/screen shots) is all part of the progress and I didn’t account for this when I was estimating how long the game was going to take to make. There are so many little bits and like I said further up it ended up being like a fifth of my whole time used (roughly 5 hours). Marketing is one of the areas that I’d like to improve on, so this is something I’ll need to consider when making future prototypes/jams.

FINAL THOUGHTS:

I’m happy with how Ultra Ball turned out. I think the game is fun and pretty tight. I can see ways that I could extend it further, but for now I’m content with leaving it as is. I feel more comfortable using Unreal Engine 5 and I am looking forward to prototyping out some other game ideas I’ve had on the backburner!

If you enjoyed this go play ULTRA BALL HERE and let me know what you thought!