Month: April 2024

Tip Top Visuals

For Tip Top Table Tennis, we wanted Tip Top Visuals…so lets talk about what we have done to get Tip Top looking Tip Top 

Settling on art style
From the outset, we had some guidance from the publisher on what they wanted the title to look like, which was leaning more towards a realistic art style. At first, we were on the other side of the fence, feeling like the game could look great utilising a playful stylized art style referencing the classic wii sports resort.

In the end, we realised that the decision was somewhat out of our hands, because with the time constraints and budget of the title, we were required to use asset packs to create the environments. Which means we are now at the mercy of the availability of assets on the store that match the style we wanted to aim for.

With that in mind, the main thing for us was consistency. We wanted to ensure we could create multiple levels that all match in art style, preferably these environments would also be created by the same studio, and so we got to searching the asset store.

After a solid few days deliberating and searching for the right packs, we settled on a studio called Dekogon, who have an expansive library of environments all matching in quality and style, perfect for what we need and so the decision was made for us. Realistic art style it is! 

From a technical perspective, these packs were also very well put together and even for going onto switch they required very little work to be performance compatible at 60fps, so props go to the Dekogon team for creating these awesome packs. 

Since we are getting closer to release, and i’m sure you are all just itching to get a sneaky peek at what the game is going to look like, here are some nice in game screenshots for you 🙂

With great visuals, comes great expectation

Visuals instead of power, expectation instead of responsibility. And yet the responsibility is still on us to make sure that, alongside the high fidelity graphics of the title, we provide gameplay that is also representative of that. 

Possibly more significant for sports games but with the realistic environments and art style of the game, a perception is made by the user, potentially even unconsciously that the gameplay would also be a realistic representation of the sport.

So what we have done by choosing to implement this realistic art style, is restricted the gameplay somewhat to being something that matches somewhat with the realism of those graphics. So this is something that we needed to consider carefully as we moved forwards with the title.

Something about UI

For our game’s UI style, we wanted something that included elements of table tennis iconography. At first, we considered achieving this by having all of our menus rendered in world space on top of table tennis tables and paddles. While we felt like this style had a lot of potential, we ultimately decided against doing this due to how long it would take to implement new menus and elements. We were also concerned with the readability and localisation problems that this could cause, since it’d be harder to fit potentially longer text in boxes and ensure that it’s readable.

Even though we couldn’t use our original idea of using a world space UI system, we still wanted to include table tennis iconography. In the end, we decided we wanted to incorporate a halftone effect reminiscent of the pip pattern on table tennis paddles

With this in mind, we went back to the drawing board (literally) and made several mockups for UI designs that could utilise this pattern in some way.

While bringing these mockups to life, we took inspiration from the family friendly vibe of the Wii Sports series, and experimented with a style full of bright colours, round edges and shiny buttons.

We enjoyed the overall aesthetic that the designs were conveying, but we felt like it looked too childish, so we ended up adding diagonal lines to the buttons and adding grey to the colour scheme, as well as changing the font to a more geometric one. We also ended up replacing the shiny effect with the halftone effect that we wanted to add.

So that concludes this little blog about how we went about some of our design processes for the visuals and interfaces for the game. The next entry we plan to talk about taking the game into BETA and what the iterative process to get their looked like.

See you dreckly!

The First Playable

Milestone Complete

As the title and subtitle of this blog might suggest, we passed a milestone, the first milestone for Tip Top Table Tennis! 

The first milestone was 1 month into development, and the requirements for this milestone were simply “First playable proof of concept”…and that is all. There were some other details, mainly around final decisions on visual style of the game, but the main meat of this checkpoint was the proof of concept playable. 

So this entry in the series is going to talk about just that. The first playable and what was included in that build, how we got there and we will of course give you some behind the scenes on what that actually looked like. 

Also we want to talk a little bit about what we have set up internally and the processes we use in order to deliver these milestones to the publisher. We feel it could be valuable to any other new studios or even those outside of game dev, who are looking for insight on build delivery and other aspects of those pipelines. 

Proving the Concept

Before you continue on a 6-8 month development journey creating a game, you first need to find out whether the game you intend to create is something that works, feels good and can even be done. 

We are in a lucky position as mentioned before, in that our game is already made and the rules determined. So in this instance, we are not validating the concept of Table Tennis as a sporting game, but the implementation of systems that replicate them. 

We already know that table tennis is fun for the right audience, more importantly for us, we need to quickly find out whether table tennis replicated with motion controls on the switch is something that is fun, feels good and engaging, as well as if it is technically possible. 

As we set out and started prototyping after having done some initial experiments, we wanted to focus on 3 main systems for the first milestone which we felt even in a rudimentary state, could provide a solid representation of what the game could be. Those were: Ball Physics(not those balls you naughty nelly), Shot mechanics and Paddle representation.

Ball Physics

Ball gets hit by a paddle, ball flies to the other side of the table. Simple right?

Whilst down the line, we know we would be implementing some custom physics in order to get as much control over the ball’s flight as possible, initially, we needed just a simple solution to allow players to bat a ball around with at least some semblance of real life. 

Unreal’s built in projectile components provided us with just that, allowing us to quickly create a projectile we could use as the ball, with all the built in physics we needed to start with. 

The projectile system inside Unreal allowed us to use motion controls to hit a ball back and forth in splitscreen fairly quickly, which is great right? Well, sort of. We very quickly found that the projectile system was quite limited.

Jamie, our Art Director and Unreal Engine generalist continued to experiment in Blueprints with the projectile system to see how far we could go with it. On its own the projectile system had no ‘bounce’ function, so you would therefore need to get the last hit location of each projectile calculation and create a new calculation from that hit. You can see how this can get very tedious.

Thankfully ping pong balls can only bounce a maximum of two times, so we did not need to worry about using a for loop on these projectile nodes for the prototype! What was great is that the projectile calculation could tell us where the ball would be at any given time, meaning we could position the paddle in that location to test our late and early shots! There were some more calculations for adjusting velocity and ball curve based on it’s distance from the table and height, however these were not particularly complex.

The built in projectile system had brought us a long way, and allowed us to get something working quickly that was relatively entertaining, but after playing it a few times the novelty had worn off. We needed some sort of control over the ball, both with direction, spin and maybe power. We had to think about shot mechanics…

Shot Mechanics

The lengthiest discussions and experiments for this initial playable were spent answering the questions, “What determines if the user has swung to hit the ball? Is it forehand or backhand? Which way does the ball go and based on what?

To be honest, at first, we just didn’t have answers to any of these questions, especially during planning phases where we had to guesstimate what features would look like. Given this was our first interaction with the Nintendo Switch and Joycons, all we could do was start getting as much data back from the controllers as possible to see what was happening as we made a swing. 

There was lots of guess work and just trying things to see what they did during this first month period. As is with many other elements of working with the Nintendo Switch, we can’t really go into detail here around the implementation. But we started by tracking the motion of the joycons over a number of frames, using the data to infer what kind of shot the user is making and then determining a position on the opposite side of the table for the ball to hit. 

Accumulating data like this allowed us to create a fuller picture of what the player was doing, we previously had issues where deceleration would trigger a shot as opposed to acceleration within the gyroscope as the user may swing back before swinging forward for a hit, this is standard in any gyro you would find on the market but did present a challenge. Because often a user would swing back quickly but for a shot period of time triggering a hit, to add to this problem, this hit would be the opposite of the desired hit. For example, a forehand would end up being detected as a backhand, and vice versa.

When using accumulation we are able to better flatten these outliers and inconsistencies with the users movement, instead of tracking frame by frame data, we can gather data over many frames to see how the user is swinging and the magnitude of that swing far more accurately.

Throughout the prototyping phase we played with many different values & methods. If you are interested in using motion data in Unreal Engine, the node ‘Get Input Motion State’ is extremely useful, targeting the player controller. Initially we attempted to get the users exact rotation to determine shot trajectory, however this proved quite challenging, as the way players would swing could be quite unpredictable in many ways. Often, players would flick their wrist towards the end of the shot and the rotation is then thrown off.

Another method we tried was gathering data over a given number of frames, then when a shot is triggered, look forwards and backwards a given number of frames and look at the difference between the start and end of a shot. We could then use acceleration to determine if this was a backhand or forehand shot. This gives us a fairly accurate understanding of the direction of both the forehand and backhand shots.

Paddle Representation 

On top of having the ball behave as you’d expect and also having basic motion controlled shot mechanics, we knew that we wanted to have a paddle on screen to represent each user and have this paddle move around with your motion. 

Even in initial playables, it’s important, or at least we feel it is, that the game is readable. So being able to see your paddle and have it replicate your movement was something we felt was key to the first proof of concept. 

We had already done some initial experiments on this kind of thing in the first weeks of development, you can see what that looked like in our previous blog entry, but we needed to expand on that for the first playable.

After some more improvement to those systems we were able to get something together that worked quite well for the first playable.

Bringing it together 

All on their lonesomes, these systems won’t mean much, so we of course had to bring them together into a level where we could test how it all works together. Once all said and done and the set was complete, this is what the proof of concept looked like: 

And that was that, first milestone complete. Now we just have to make the rest of the game…

See you in the next one!

Scroll to top