Monthly Newsletter

September 2024 Recap

Sep 29 • 7 min read

In September, we've managed to add a variety of new features to our tools. We've also made some significant progress towards reworking more maps.

Author

Kev

Editor

Kev

Welcome back to another monthly recap blog post. September has been a month filled with tons of new features and tools, as such this post will mainly focus on technical changes. But don't worry, we also have a little surprise from our building team, just like last month.

As always, most of the assets, maps and effects shown in blog posts is subject to change before release.

With that out of the way, let's dive into the first topic for today:

 

Animation editor

Before we get into the exact details of how our new animation system works, I'd like to give some context to how we used to do animations in the past and why we've decided to create a new system for it.

 

The tedious process of early cutscene implementation

Previously, we always had to write code in order to create animations and cutscenes for PaintSquad and Rush. Although this system is fine on a technical level, it comes with a lot of disadvantages whenever we want to combine animations with in-game events.

Let's take the one of the cutscenes from Invasion as a example: In City Ruins, there is a cutscene where the Warden breaks through a barrier, destroying the barrier in the process. In order to combine both the camera movement & the Warden's animation into one cutscene, we had to try out many different parameters to get the timing for the explosion, sound effects & entity movement right. Additionally we had to restart our development server every time we wanted to try out different parameters.

 

This didn't just slow down development but also caused tons of other issues since PaintSquad's various systems weren't designed to work with cutscenes aside for match intro & outro animations. This came especially apparent during Invasion's development and caused tons of issues like the player's special charge or selected main weapon getting reset after a cutscene ends. 

 

Some other inconsistencies were caused by necessary workarounds that were added to circumvent certain technical limitations. Unlike Bedrock Edition, the Java version of Minecraft doesn't have any commands or dedicated features for modifying the player's camera without also changing the player's position. Even when a player spectates another entity, the player's position is set to the same position as the entity that they are spectating.

 

The reason for why this is important is that some cutscenes require the player to be visible at some position in the world to make it seem more immersive. However, as I mentioned previously the player's camera is always bound to the location of the player object itself. In order to work around this we can just spawn another player object that uses the same skin and equipment as the original player. In fact, something similar is used for PaintSquad's match intro & outro cutscene.

 

However, you might have noticed that this isn't the case in PaintSquad's Invasion mode. Fortunately, this didn't cause too many technical problems since the player's camera can be freely moved in most cutscenes, but it still ruins the immersion at certain points. This is yet another case of having code that only works in some scenarios of the game since there is no unified system behind it. Since we don't want to take any shortcuts during PaintSquad 3.0's development, we decided to spend some time in designing a new system that will take care of all the problems we've faced up to this point.

 

A projection of a virtual reality

Although it took a few weeks of prototyping, we've finally ended up with a new system called Projector which is designed to handle all the heavy lifting for moving players along camera paths, spawning "mimic" players, displaying screen effects and much more. Although Projector is still in development, we've already finished some basic features, so let's take a look at how this system works in practice:

 

 

As with most of our systems, everything is abstracted in a way to make it possible to work on different server implementations meaning we can finally create, edit and view cutscenes on our building server. Additionally we are now also able to adjust parameters on the fly which makes the fine tuning process for cutscenes & animations a lot easier.

 

Yet another reworked map?

Just like last month we have another surprise for you. Our building team has been working hard on ensuring that when PaintSquad returns, all maps will feature a consistent level of quality. Here are some screenshots of what our building team has been working on:

Desert Map Screenshot 1

Desert Screenshot 2

Desert Screenshot 3

As always, we're excited to hear what your thoughts are on these map changes. Feel free to share your opinion with other players on our Discord server.

 

Shader tool development

A few months ago, we've started working on a new tool for developing shaders outside of Minecraft. Another goal we set was to improve the developer experience by introducing an easy to use interface that allows the server to trigger certain shader effects on the player's screen.

 

What shaders are and how they are used on Xenyria

Before we get into the exact details we should first talk about what shaders are and what they are used for on our server. Most players probably think about shaders in the context of improving the looks of the game by adding shadows, improved lighting and other effects. However, on a technical level, shaders are essentially just code that is run on your graphics card whenever blocks, models and other geometry is rendered.

 

Although it's not officially supported by Mojang, it's possible to replace some of the core shaders Minecraft uses by default. Most notably, Minecraft also uses a shader when text is rendered on the UI. Without going too much into the technical details, text shaders are able to access the font texture as well as the color the text is supposed to be rendered with, which means that some parameters like the text color or font texture can be controlled by the server.

 

Now let's take PaintSquad as a example: Certain HUD elements like the damage vignette (ink overlay on your screen, indicating you've been hit by something), ink tank display and crosshair are implemented by utilizing a custom text shader. Although this technique has a lot of potential for improving the gameplay experience without utilizing mods, there are quite a few challenges involved in getting it to work reliably.

 

Introducing Spectrum

Back when we started using custom shaders in PaintSquad 2.0, we didn't have any experience with graphics programming or shaders in general, which resulted in a implementation that was prone to errors. This also introduced a lot of complexity into the code which is also part of the reason why PaintSquad is receiving a full rework. Now that we've been able to gain some experience in developing shaders for both PaintSquad and Rush, we've decided to move as much complexity as possible into a new tool. And hence, "Spectrum" was created.

 

Although Spectrum is still in development, we've already been able to develop, test and integrate a new shader effect into the game. Spectrum also improves the developer experience by providing a live preview, making it possible to develop & test shaders outside of Minecraft.

 

 

At this point, I'd also like to mention that we're working towards creating new versions of all of the shader effects we've used in PaintSquad up to this point. This means that all crosshairs and other HUD elements are getting a major overhaul in order to make the UI more clean and give PaintSquad it's own visual identity.

 

Future plans

As of right now, we still got a few projects that need to be finished before we can fully focus on PaintSquad's game code again. Most importantly we still need to update our custom Minecraft server implementation "Orion" to 1.21.1 and also implement a few more features into our level object system.

We're also working towards creating a fully custom game client which is dedicated to automating the testing process for PaintSquad and Rush. Expect a new developer blog post regarding this topic sometime in the future.

 

And with that we've arrived at the end of this monthly recap. If you're interested in Xenyria's development, feel free to check out my Twitch channel. I regularly stream Xenyria's development and give some insights into what happens behind the scenes.

Thank you for reading and stay tuned for more updates!

about the author

Kev

I am Founder and the Development Lead of Xenyria, so I'm responsible for developing new games, features, and services for Xenyria. I love pushing the boundaries of Minecraft.