The first UE4 test

Recently, my patience ran out concerning the progress of the Unreal Engine 4 version of Supraball. Without hesitation, I prepared a dedicated server for Linux, and packaged a version of the game for all of our team members. After a year of development and zero multiplayer tests, I deemed it to be about time for a proper multiplayer sessions!

We dabbled around a bit on the field, testing out all the functionalities: kicking, pulling, sucking, boosting, scoring, jumping, dashing, you name it. The main purpose of the testing was to determine how stable the game actually was. Most of the development so far has been about implementing core functionality, where stability is crucial. The results of this first playthrough were quite surprising!

Let's start with some server stats first. The native Linux dedicated server idled at ~2.5% CPU usage, using up only around 50-70MB of RAM. With 6 players, this rose to 10-15% CPU and 128MB respectively. Given that this was all running on the cheapest of cheapest VPS from Digital Ocean, I am quite pleased with the low footprint, given that Unreal is not the smallest of engines!

The server itself wasn't that good to begin with either. There was a fair share of packet loss, and the ping was highly unstable. Yet the game didn't break; no desyncs happened and game kept functioning perfectly well. Ofcourse, there was some warping, but nothing went horrible wrong, and the engine tried to fix the lag as best as it could.

As for the game logic, we have in fact only detected some minor gameplay bugs that shouldn't be too hard to fix. Take for example the fact that you may suck ball carriers, or that when you disconnect while carrying the ball, the ball will not get released. Nothing we can't handle! This is peanuts in comparison to getting the game working as it is.

Given that C++ is a very unforgiving language, and we're not dealing with a sandbox environment like with UDK, we were also expecting crashes. All that we've got, however, was only one crash! And that crash wasn't even a crash in the sense of hell freezing over. It was merely an artificial crash, asserting some game logic. When a player picks up the ball, the ball turns invisible and follows the player around. However, people can still try to deflect that ball and thus try to influence its state. This shouldn't be possible, as the ball is being carried nonetheless. This disruption in game logic was what raised the alarm bells.

Given that this was the first proper test of the rewrite after more than a year, I am more than happy with the results. The game's core functionality seems to work surprisingly well, and proves to be very stable. There were no big and ugly crashes, and only a few minor flaws were present. This opens the road to polishing up the game, adding more content and tweaking the settings, such that it becomes the game we know and love!