Update 5: Road to Battle Royale


So at the end of my last update a couple of weeks ago, I left you with my idea and high priority of creating a game launcher with auto-update and multi-environment capability even as early as then. I did build it and players will be able to use it once I release version 0.1.0 of the game (which should be over the weekend if all goes well, but most likely next week, and most definitely by Christmas). After that point, you won't need to uninstall and reinstall the client when a new version comes out, the launcher will pick it up automatically. The launcher allows you to choose a server region to play on and a server type, if you have access to stages other than PROD (like the continuously deployed DEV environment I was talking about in my last updates). It lets you know about whether there is a newer version to download and does download it if necessary. This is what the UI looks like:

Image attachment

Creating this launcher was the last milestone for phase 1 of my Continuous Deployment platform and while it brings its own set of interesting technical challenges, I will not cover those in this update. Instead, I'd like to get back to covering gameplay aspects, as there are lots of exciting news in that department. The reason I even went down the CI-CD rabbit whole in the first place was that I wanted to be able to iterate frequently and put players in a position to experience changes made to the game and provide additional feedback at a fast pace. So with these pieces in place, I went back to the daily grind of chipping away at the mountain of features I both want and need to implement for the game to provide a fun and compelling experience. I had a big long list of features lined up and a macroscopic, not-so-realistic roadmap for where I'd plan to be by when which looks something like this (I don't want to give away too much just yet and this is subject to vast changes):

Image attachment

But I actually decided to temporarily put this plan on hold and instead, to push harder to put the game in a state where it could be considered an actual game (or at least mini-game, for now). Not a big game. Not a long game. Definitely not a full-featured ARPG game yet, but a GAME nevertheless. And since the basic combat mechanics and map environments were already there, as limited as they were, I figured the simplest and quickest, yet potentially super fun game mode I could put out there would be a "Battle Royale" type scenario. For those of you who are not familiar with Battle Royale, it's a genre of video games named after the 2000 japanese movie (and similar to the plot of Hunger Games), in which people are stuck in a constrained area (in the movie, an island) and battle each other until only one person survives. Over the last decade, it took on a life in the gaming industry, first in the way of mods (i.e game alterations) and eventually as standalone games. You have surely heard of Fortnite which is the latest, super popular iteration of the genre. I did play some BR games in the past and I did find them very fun. As stated above, it doesn't necessarily take a lot of game logic and code to create such a game mode: once you have combat implemented and a map, all you really need is to be able to reset the battle, spawn/respawn players and count events such as kills/deaths in order to feed a leaderboard and determine who the victor is at the end. Don't get me wrong though, implementing BR is still a ton of work, and I'll mention a few things about my efforts relating to that and give you guys some of the more visual examples of things I had to do to get there and which can be of interest. My idea was to split the map into two areas: a safe area and a battleground:

Image attachment

The safe zone serves as the lobby for when the game resets and before the battle ground opens. Notice how the gates toggle and serve as a buffer zone between both areas. You can actually see this in action in this tiny bit of footage: https://www.youtube.com/watch?v=eqN7zEEtPek

And even things seemingly as "small" as maintaining a leaderboard and making the data available to the players and syncing that properly, respawning players properly, dealing with possible issues such as respawn collisions, or even things like toggling gate states between "open" and "closed" safely can be challenging. In particular, the leaderboards feature forced me to make a good chunk on progress on the UI front. I used libgdx's scene2d library to start implementing an in game window manager and connected it with my ECS systems for communication with the server. Making these two asynchronous worlds co-exist wasn't all that easy and organizign UI code (in particular listeners) is always a bit of a challenge. Luckily, I had already started using the library to implement the Launcher's UI so that helped a little initially. I did lose a bit of time on some low-level technical issues such as input wiring, focusing UI objects and such. But once I figured it out, I was able to add a decent splash screen to welcome the player as well as a chatbox which now allows people to communicate in-game, and finally a scrolling window to browse the current score for all players who have played on the server since restart. This is what the chat and leaderboard display features currently look like:

Image attachment

Obviously the UI layout itself is a bit messy right now, I'll start organising the elements visually before the upcoming release. And here is the new splash screen which will greet you when you connect to the server, prior to jumping into the map:

Image attachment

And with that, this is the end of this update. Next time I post on here, it should be a message in the Announcements section to make all of these new features available to everyone through the new release. I think it'll probably be at least another two weeks before I can post a new update. This might be the right cadence for updates. But we'll see! Peace!

Leave a comment

Log in with itch.io to leave a comment.