1. The Riftbreaker
  2. News

The Riftbreaker News

Sign Up For Multiplayer Testing Here!

Hello Riftbreakers!


Today marks a turning point in the development of The Riftbreaker Multiplayer. We are finally ready to start testing the networking aspect of the game with people outside our office. That means you - our players!

Starting today, we are going to periodically distribute access keys to The Riftbreaker Multiplayer Beta to volunteers. Let's be clear here - this is not a co-op test. Not yet. The build we're running for the purpose of this test is limited to pure necessities and only runs our deathmatch mode (you can read more about it here). We will use the data gathered during this test, along with your feedback, to improve the netcode of the game and avoid major issues once we move on to the real deal - co-op testing rounds.

For the purpose of clarity and transparency, we have started a semi-public forum on our Discord server devoted to multiplayer development only. Every member of www.discord.gg/exorstudios can see the forum, but only people with access to the Beta can send messages there. You can talk to us anywhere else on the server, but that place is for feedback and on-topic discussions only. By doing it this way, you can always check how the development is going and what we have managed to achieve so far. This also does not mean the end of our 'Co-Op When' articles - we will still summarize everything that's happening behind the scenes for you every couple of months.

If you are not a member of our Discord and would still like to know the details of this testing round, we've also got you covered. You can find the full contents of our onboarding message for our volunteer testers. This message includes most of the details about the test and the current state of the build. Reading it should answer most of your questions, but feel free to comment if something is unclear. It is the first time we're doing something like this and we want to improve anywhere it is possible.

Thank you for joining us in this stage of multiplayer development.

[h2]To sign up for The Riftbreaker Multiplayer Beta please fill in the following form:[/h2]
We reserve the right to contact only select participants.



[h3]Hello, and welcome to the closed test of The Riftbreaker online multiplayer beta![/h3]



Network play is a much different beast than single-player offline gaming. The number of variables goes up dramatically. Not only does the game and your PC matter but also the type of connection you’re on and your distance from the server. This is why we need help from as many of you as possible. Please read the following information carefully, as it will probably answer most of your questions.

The Riftbreaker Multiplayer Beta is our limited test platform on Steam. It is a hidden product that will unlock after entering our provided key. It is an entirely separate build of the game. You do not need to worry about keeping a backup copy of your files from The Riftbreaker single-player version - we keep all the data for the MP version in a separate folder. Game settings are also separated, so if you have any changes in your game's config, you will need to reapply them here.

The features of this build have been reduced to the bare minimum. Currently, it only allows you to play The Riftbreaker online in Deathmatch mode. Running the game in such a simple configuration will allow us to diagnose problems and issue fixes more quickly. This build does not allow you to play co-op (yet)!

This test aims to study the game’s behavior during online play and discover all the issues and bottlenecks. We will use the information gathered during this test to reduce the data transferred between the server and its clients. We want to find out in which areas we need to improve things and ensure that the game can handle all the different types of connections you might use to play.

This build of the game is highly experimental. It won’t receive thorough testing at all times. It may stop working altogether for lengthy periods. Please bear that in mind.


[h3]WHAT WE ARE LOOKING FOR[/h3]
We do not need you to install software to log gameplay performance or errors. The game itself gives us quite enough information on that. However, if you encounter crashes (and there will be crashes, a lot of them), please send in the crash report, including your nickname and a detailed description of what you were doing at the moment the game crashed. It will help us a lot.

We are looking for your feedback on the technical front. We want to know when connections fail. We want to know how many times you managed to switch the map before the server gave up on you. We want you to test the various connection methods and test with your friends from around the world. Try to break the game in any way you like - that is our current focus.
Gathering general gameplay and balancing information from the online deathmatch mode IS NOT the intended purpose of this closed testing round.



[h3]CURRENTLY SUPPORTED ONLINE GAMEPLAY FEATURES[/h3]
The gameplay of the deathmatch mode is very basic, and we do not plan on making any major adjustments to it. It is primarily a testing tool, not the intended way to play the game. We are aware of the various issues with this game mode, but we do not want to spend too much development time on improving it. You can tweak it yourselves via mods if you wish. We would love to hear any bug reports about gameplay features that are broken, don’t function as intended or behave in unexpected ways. That being said, we do not intend to expand the deathmatch gameplay feature set or spend much time on improving it’s balancing.

There are two main options in the Main Menu: Multiplayer and Mods. Clicking on Multiplayer allows you to either host or join a server.

When hosting a server, you can set up the following options:
  • Warmup duration - how long the warmup at the beginning of each map is going to take
  • Max player count - The maximum number of players allowed to join the server
  • Max frag count - the number of kills a player has to reach in order to win the game and finish the round
  • Time limit - The maximum amount of time the round can take
  • Bot count - how many bots should join the game alongside real players. Bots count towards the maximum player limit. However - if a human player tries to join a full server where some of the players are bots, one of the bots will leave to make room for that player. Please note that the current bot implementation is very simplistic and doesn’t provide enjoyable gameplay. We use bots primarily to stress test the game. They are only slightly smarter than an average rock.
  • You can select the starting map. We have three simple arena-type maps available at the moment. When players reach the time or frag limit, the map will rotate to the next one.
  • Public server - If enabled, your server will be visible to everyone who has this version of the game. If disabled, people can join you only by using the Steam Friends list.
  • Dedicated server - if enabled, the server will run in headless mode. This means you won’t see the game render any images. It will only handle game logic. Turns this option on if you want to use this PC only as a server, and you don’t intend to play on this computer. Hosting the game on a dedicated server machine should improve game performance and stability.


Clicking the Join Game option will take you to the server list screen, where you can see all game servers running at the moment. You can check the server name, current map, number of players, and your ping to that server. You can join any of the visible servers as long as there is room for you.

Clicking Mods will take you to the Mod Management Screen. Mods are very unlikely to be compatible with this game version, but you can still create your own mods and manage them here.

[h2]The game will likely receive updates frequently. To ensure you are on the latest version, restart the Steam client before you play. This forces Steam to check for new updates for games you have installed on your system.[/h2]

You will experience a varying amount of latency while running the game. When running the server yourself, the game is going to run mostly fine, but the more players join the game, the worse it is going to get. This is something we are actively working on and it should improve is going to change drastically as we move from build to build.



[h3]WHAT IS ALLOWED…[/h3]
  • modding
  • discussing the build in an open manner
  • streaming - we only ask that you make it obvious that this is a very early closed testing build
[h3]…AND NOT ALLOWED[/h3]
  • sharing the build without our explicit permission - we want the number of testers to be limited because the beta build is not in a good enough state to be played by people who are not REALLY REALLY REALLY interested in the game - right now it’s probably only usable by our most hardcore players
  • we don’t want to drown in too much feedback, but don’t worry, we will gradually expand the testing group


Let us know if you need any more information. We’re looking forward to getting all the useful feedback from you!
EXOR Studios

Galatea 37 Celebrates Halloween

Hello Riftbreakers!


[h2]Spooky season has arrived at Galatea 37! Get your costumes out of the wardrobe and decorate your Riftbreaker bases.[/h2]



[h3]For a limited time, until November 10th, you can enjoy the Halloween celebration event in The Riftbreaker. We have prepared a couple of cosmetic changes that will transform the look of your bases and help you get in the holiday spirit.[/h3]



As we stated in our Halloween Update Patch Notes:

During this event, the Tropical and Volcanic Zones of Galatea 37 will be illuminated by a custom-made weather event, with orange haze and a smokey atmosphere, as if you were close to a fire. Delicate ash and ember particles complete the look of a burning planet. Your Energy Connectors will be replaced with skulls and bones. Basic lamps will be decorated with Jack-o-lanterns. Rift portals you place on the ground will change into magical cauldrons filled with a strange substance of an unknown origin. The basic floors will also get an overhaul as we apply a cobweb theme to them in true Halloween fashion.




All the changes that happen during this event are purely cosmetic and can be turned off at any time. Go to the options menu, select ‘gameplay’, and change the ‘seasonal events’ option to on or off, depending on your preference. You can even switch between them back and forth - the change applies in real time!

Please note that due to technical reasons and the way this event works, if you play in the Tropical Zone or the Volcanic Region biomes during Halloween, you will NOT see weather events other than 'smoke and ash Halloween special'. If you turn the seasonal event off, the custom weather effect can take up to 10 minutes to go away. Other than this, the event has no real effect on gameplay.

Enjoy the festivities!
EXOR Studios




Co-Op Status Report: October 2023

Hello Riftbreakers!


[h3]Last time we discussed the Multiplayer version of The Riftbreaker, we told you about our happy little accident that led to the creation of the deathmatch mode. It turned out to be one of the most helpful research and development tools we could have hoped for. In today’s update on our Co-Op development progress, we will tell you what issues we have solved already, what our testing routine looks like, and what milestones we plan to hit in the immediate future.[/h3]

If you missed any of our previous Co-Op updates, you can catch up on them here:

https://store.steampowered.com/news/app/780310/view/3381659291157676103
https://store.steampowered.com/news/app/780310/view/3701435238673426124?l=english
https://store.steampowered.com/news/app/780310/view/3657536564724315072?l=english
https://store.steampowered.com/news/app/780310/view/3657539010840327508

[h2]CONNECTION THROUGH SEPARATION[/h2]

Opening bioanomalies is easier with two flamethrowers at the ready!

After the deathmatch mod came into existence, we decided to package it into a separate product and publish it as a hidden item on Steam for internal use only. This special build is stripped of all the single-player functionality and currently only supports the DM mod. We have been using it for the past few months to test connectivity. We decided to prepare a specialized build for two main reasons:

  • A separate, much smaller build allows us to test, improve, and iterate on the new game versions much faster. It also ensures that all testers are on the same game version (mismatched versions happen more often than you think!)
  • Removing the unnecessary elements lets us focus on networking and connectivity issues without the unnecessary overhead cost from the game’s content.


By removing the majority of the game’s logic flow, redundant Lua scripts, and tons of other data, we can focus on what is truly important for us at this moment - improving the online playing experience, and that comes by optimizing transfer rates.

When we first started running multiplayer tests, we brute-forced the game to transfer all the gameplay state data from the server to the client. As a result, our data transfer rates reached upwards of 25 megabytes per second. Many people don’t even have access to an internet connection quick enough to transfer that much data consistently. Yet, our first tests demanded the game to send, receive, unpack, and apply all changes to the client’s game world multiple times a second. It barely worked over the local area network. We had a long journey ahead of us.

Most of the work we described in our previous articles about co-op development aimed to reduce the amount of data transferred between the client and the server. With each iteration, we were sending less and less data through the network. The latency was still high, but less data caused the game to run at a tolerable level of performance for much longer, allowing us to collect more information about the problems we were facing. At this point, all our tests were conducted by running a Survival Mode mission with two or more players connected to the same server. Making the server run both the game logic and handle the networking simultaneously was a tall order, given how much happens in each second of The Riftbreaker’s gameplay.

That last blade bounce was totally calculated.

Many of the problems we faced while testing this way resulted from the clients desynchronizing from the server. At some point, the performance overhead for the server was too high to handle all the tasks, and the clients expecting a server update did not receive it in time, resulting in lags, disconnections, and crashes. If only there were a way of stripping the game to the bare minimum, allowing us to focus on fixing the connectivity issues first without worrying about all the overhead costs generated by the Survival Mode mission running in the background…

Enter Deathmatch. A small and simple map, a couple of basic weapons, friendly fire, and no enemy units. Running tests in this environment gave us more insight in a couple of weeks than trying to complete Survival missions in the months before. We could find problems and reach conclusions previously hidden from us underneath all the unnecessary data. Thus, we started conducting daily playtests in a variety of configurations. Sometimes, we ran a dedicated server on a PC with no other tasks. Other times, we used the listen server option to maximize the load on the host PC. Profiling all our game sessions gave our team much insight into what was happening.

Sometimes it is complete, non-stop mayhem.

Using the data gathered during our playtests allowed the programmers to introduce the necessary changes. We started a lengthy back-and-forth process, where they would push a new build to the rest of the team and ask for a playtest while keeping watch on the network stats and ongoing threads. We kept on carving off chunks of data that were not necessary to be transferred. Bit by bit, month by month, hard work started showing its effects. Looking back at the start of the multiplayer refactoring process, we managed to reduce the data transfer rate from 25 megabytes per second to 200 kilobytes per second per client. This is still far from our target (10 to 20 kilobytes would be best), but it is a significant victory overall. The DM build helped us a lot in speeding up our iteration time. Best of all, the work we've done using the PVP build is transferable to the main project.

After we published our article about the PVP mode, many feared we would neglect the Co-Op mode. We want to assure you that this is not the case. Thanks to separating the PVP-only build from the main branch of the game, we built a perfect network testing sandbox for the most basic feature set on online gameplay. It doesn’t include any bells and whistles, just the essential game elements running unobstructed - precisely what we need to focus on the basic feature set.

[h2]NECESSARY ADDITIONS[/h2]

The significant optimization of the data transfer we described in the previous chapter allowed us to start moving towards playing The Riftbreaker PvP on a PC outside the office network for the first time. To make that dream a reality without a VPN, we needed to add some features first. The list was as follows:

Host game screen with several options:
  • The option to run a dedicated server (in headless mode - the host PC does not render the game)
  • The option to run the game in listen server mode (the server PC also renders the game and allows its owner to play)
  • Map selector list
  • Basic game options, such as frag and time limit for any given map
Join game screen:
  • Public server browser, listing the server’s name, latency, map name, and player count
  • Refresh button, forcing the game to retrieve the public server list ahead of a scheduled update
  • The option to join any public server.


Looking at this list, we realized that The Riftbreaker’s main menu will not be able to accommodate all these options in its current form. Therefore, we reworked the main menu layout to separate the single and multiplayer options from each other in their own submenus (it was already quite dated and cramped, so the facelift was much needed anyway). The layout we’re currently testing looks like this (please bear in mind that it’s not final and will likely change before the public release):

The options included in the current version of the main menu are still quite limited, but given our experience with bloat from earlier, we decided to focus on the bare essentials for now.

The server browser uses the Steam Data Relay Network. Despite the ‘Steam’ name prefix, this library is not limited to the Valve platform only. It can be used to establish connections between players on different platforms without any issues. However, to make things easier for us and take it one step at a time, we limit ourselves to playing with Steam for the time being. Any team member can set up a server with just a few clicks, which will become visible to everyone on the same game version. Then, it’s just a matter of clicking ‘join’ and we’re in the game.

The bots are quite bad, to be honest, but they still get the upper hand on us sometimes!

Not all of us are always available to test how the game behaves during online play. Our jobs generally need us to be focused on things for long periods. Sometimes, it’s challenging to get into that rhythm. Drawing someone away from their current task for a test can significantly disrupt their workflow. As a partial solution to this issue, we programmed very simple bots. VERY simple bots. They know the player’s positioning at all times and simply run forward, shooting as often as possible, as long as they have the ammo. They are useless as opponents but give us the ability to run basic tests with no involvement of more people around the office. Their development took only a few days, which we will quickly get back at a profit, considering our team’s time. With the help of our bot army, we can quickly populate our servers and run automated tests of game rules. As a bonus, whenever a real player wants to join the game, one of the bots is kicked out to make room for that player, so it is still possible to call someone in for help in case you need them.

It’s worth noting that none of this work will be discarded later when we move to more advanced testing. The main menu rework, the server list, game hosting, and joining servers - all these elements are essential, and we would have to make these happen either way. Completing these tasks also allowed us to make our tests more structured and semi-automated.

[h2]COMPUTER, RUN DIAGNOSTICS[/h2]

We've taken these stats from a session hosted by a friend hundreds of kilometers away. Worked pretty well and consistently!

With the new functionality in place, we could finally keep tabs on the multiplayer build. We came up with a set of tests to help us catch bugs and measure the performance of the game. We’d love to tell you that every build that leaves the hands of programmers goes through rigorous testing, but we never lie to you - this is just a set of guidelines. However, we have a short list of basic multiplayer functionality that we try to ensure is operational. The list is as follows (in no particular order):

  • Is it possible to name your server using the game’s menu?
  • Is it possible to name your server using the configuration files?
  • Does the server name show up correctly on other PCs?
  • Does setting the warmup time limit work as intended?
  • Does setting the frag limit work as intended?
  • Does setting the time limit work as intended?
  • Does setting the player limit work as intended? Can it be set to zero?
  • Does the max bot count setting work properly?
  • What happens if you set all the game rule value sliders to zero?
  • Does the server keep the settings after loading another map?
  • Do all the settings work both in the listen server and dedicated server mode?
  • Can you use the Steam friends list to join the game? Does it break if the friend you’re joining is in the menu, loading the game, their avatar is dead, etc?
  • Does the server browser display server names or IP addresses?
  • Does the server browser display the actual number of players on the server?
  • Does the server browser work with both dedicated and listen servers?
  • Does the refresh button work correctly?
  • Does the server browser refresh automatically?
  • Does the game work as intended when a player joins a game session filled with bots?
  • Can players still join the server when the maximum player limit is met?
  • Can you set up a listen server on an external network and connect to it from the office?
  • Can you set up a dedicated server on an external network and connect to it from the office?
  • Can you set up a dedicated server on our internal network and connect to it from the outside?
  • Can you set up a listen server on our internal network and connect to it from the outside?
  • Can you see all running servers in the server browser menu in all the cases above?
  • Can you use the ‘Join Friend’ feature in all the cases above?


This list is non-exhaustive. Our testing is often focused on the areas under active development. For example, we’ve recently been trying to figure out how to fix the problem that causes the player to lose weapons permanently on death. It is made worse by the fact that the problem persists when switching maps (on the other hand, it means you won’t lose your inventory during planetary travel in co-op, yay!) Naturally, we will pay more attention to the details surrounding our current area of interest, but keeping track of the basic functionality is paramount. Testing all these things will likely continue way beyond the final release.

[h2]WHERE DO WE GO FROM HERE[/h2]

Clone wars, Riftbreaker style. Note that the game wasn't running too well during this run.

We still have a lot of work regarding optimizing the data transfer. As mentioned before, we ideally want to get the amount of incoming data down to about 10-20 kilobytes per second per player. We have already greatly reduced the amount of data transferred between the PCs during gameplay. However, we still generate more information than necessary. That is because we have not yet reworked all the in-game systems for multiplayer context. On the other hand, it gives us a couple of clear targets where we are sure to find performance gains.

Special effects are one of the significant areas of the game that still require a rework. More specifically - separating the audiovisual representation of the effects taking place in-game from the logic underneath them. We mentioned it in more detail in the first Co-Op Update article if you want to know more. Here’s the TL;DR: Currently, game logic runs exclusively on the server. For example, if a player shoots a gun, all effects happen on the server first and are then “copied” to clients. Instead of doing the same work twice, the server can command the client to spawn the effects on their end, reducing the overhead for the server. It sounds simple, but it is a monumental task, and its development is an ongoing process, as we need to rework all systems in the game to accommodate that.

In a similar vein, we are reworking the game logic so that not all of it has to be carried out on the server first. Some more minor game logic elements can be handled by the clients and later only verified by the server. However, introducing changes to how game logic unfolds carries huge implications for saving files. We still maintain backward compatibility with all (unmodded) game versions, going back to version 1.0 (PC players did not even have the chance to download it! Version 1.0 only exists in the physical disc console versions of the game. To run it, you need to have no internet connection for the entire gameplay duration. Still - it is officially supported). Even though the number of users that play such old game versions is minimal, we maintain save file compatibility as a rule.

With such a huge rework, touching almost all aspects of the game, you will find a lot of issues, even in the most unexpected places. Music is the best example - what could be so difficult about playing an .ogg file? The problem is that The Riftbreaker features an adaptive music system. When a player is fighting, the music changes to a ‘combat’ playlist. When you’re building the base, we use the ‘building’ playlist. We want to keep that feature for each player individually. However, there are certain moments in the game when the game’s logic forces a certain type of music to be played - during the final attack, for example. We want the server to be able to overrule the clients in this case, which requires reprogramming the system to work in a more complex client/server architecture. This is only one of dozens of problems we encounter, each needing a different treatment.

We discovered many issues when we started running our connection testing gauntlet. The high number of possible ways to connect to a game session and other variables, like the type of network your PC is connected to, cause numerous problems. Sometimes, they become apparent immediately, while others remain hidden for weeks. We carefully examine the causes of these issues on a case-by-case basis. We can’t possibly catch all mistakes on our own - which is also why we want to test the multiplayer portion with you.

Ragequit is one of our moderators and modders of The Riftbreaker. He immediately started modding the multiplayer build. We are not surprised at this point.

Starting this week, we have been allowing access to the multiplayer build of The Riftbreaker to people outside EXOR. Those players are handed keys to the hidden Steam product and are welcome to test the game with us and host their own sessions. This is a major milestone we are very proud of, and we hope that you will join us! The invitations will be handed out via Discord, so if you have not joined www.discord.gg/exorstudios - now is the best time to do so. The deathmatch test will eventually evolve into the real deal - a Co-Op beta test, which makes it even more exciting. We can’t wait!

[h2]CONCLUSION[/h2]

The basic deathmatch gameplay loop, coupled with the essential interface features for hosting and joining the game, gives us an excellent tool for testing network performance. It has already yielded great results, and we expect it to improve. That said, we don’t want to develop this game mode any further. Any updates we introduce will only be aimed at making the game run better. We plan to invite selected Discord members to test the game with us, slowly opening the Deathmatch demo to more and more people. However, Co-Op remains our primary focus.

We never promised a release date since we knew the development process would be very long. Nobody could predict how long. Yet, you’re here with us, reading the articles, following the latest developments, and sharing your feedback. We would like to express our enormous gratitude for your support and patience. You will be rewarded with the best multiplayer experience we can offer - that’s the only thing we can guarantee.

In the meantime, we’re going back to work. The programmers - back to unspaghettifying The Schmetterling Engine’s code. The designers - to creating a new part of the adventure in the coming World Expansion III. We hope you’ll come on both of these adventures together with us. Join our Discord at www.discord.gg/exorstudios and watch us stream twice a week at www.twitch.tv/exorstudios.

Thank you once again!
EXOR Studios

Halloween Update, October 24th 2023

Hello Riftbreakers!


We have just published a small update for the game, including some new elements and changes necessary for the upcoming Halloween seasonal event. The update also includes a couple of fixes for minor bugs - all of them are listed below.



With this update, the game now supports the new Halloween seasonal event. If you have been with us for a long time, you might remember the Halloween event we held long ago. At that time, we added a couple of decorative buildings - pumpkin lamps and tombstones for walls. However, we did not have the tech to replace those buildings in real time. The event never got the final touch necessary to make it public-worthy, so we shelved it. In the meantime, we produced Winter Holiday-themed and Lunar New Year events. With this experience, we revamped the Halloween event a little.



The new Halloween event is going to be active between October 26th and November 10th. During that time, the Tropical and Volcanic Zones of Galatea 37 will be illuminated by a custom-made weather event, with orange haze and a smokey atmosphere, as if you were close to a fire. Delicate ash and ember particles complete the look of a burning planet. Your Energy Connectors will be replaced with skulls and bones. Basic lamps will be decorated with Jack-o-lanterns. Rift portals you place on the ground will change into magical cauldrons filled with a strange substance of an unknown origin. The basic floors will also get an overhaul as we apply a cobweb theme to them in true Halloween fashion.



All the changes that happen during this event are purely cosmetic and can be turned off at any time. Simply go to the options menu, select ‘gameplay’, and change the ‘seasonal events’ option to on or off, depending on your preference. You can even switch between them back and forth - the change applies in real time!



Last but not least, here’s the full changelog for this update:

[h3]The Riftbreaker Halloween Update, October 24th, 2024 EXE: 918, DATA: 510 Changelog:[/h3]
  • Fixed a bug in one of the attack waves in Volcanic Area survival that caused an unreasonable amount of Magmoths to attack the player's base at a certain point in the game on higher difficulty levels.
  • Updated the Prologue mission. Unit placement has been improved, a couple of bugs have been fixed, and the lighting has been changed to make use of the volumetric effects.
  • Fixed a bug with Arachnoid Sentinels not setting their aggro distance properly when spawned randomly by the map generator.
  • Fixed a bug that caused Artillery Towers to be unavailable in the Prologue mission. The adverse effect of this fix is that Artillery won't be available in custom-made biomes unless the modder manually updates the condition_value "magma,jungle,desert,acid,metallic,legacy_maps,prologue,swamp" with the name of their custom biome. This line can be found in the "buildings/defense/tower_artillery.ent" and all other artillery-related buildings. You can also ignore this for the time being, as we are working on a better, permanent fix.
  • Halloween event items have been added. This seasonal event will be active between October 26th and November 10th. The event will add a special holiday weather event and replace some of the buildings and props with festive versions. The event is visual only, and it can be turned off at any time via the options menu.
  • Time windows for other seasonal events have been set. The winter event will last from December 5th to 27th. The Lunar New Year event will last from January 20th, 2024, to February 5th, 2024.


EXOR Studios

The Schmetterling Engine: Pros and Cons

Hello Riftbreakers!


Our game engine is the main focus of today's article. It is one of the reasons why we can throw THIS amount of enemies at you and not worry about the game blowing up.

The game development industry has recently gone through an earthquake of a cataclysmic magnitude. A major game engine provider recently announced changes to their pricing model, which caused an upset in the gamedev community. It left many studios wondering about how to proceed with their work in the future. Luckily, we were not affected by that since EXOR Studios’ games are made using our own engine - The Schmetterling. It is one of the advantages of working with your own technology. You are independent but, on the other hand, solely responsible for the state and features of the engine. Still - we enjoy working with our tech and decided to give you our personal view of the pros and cons of working with The Schmetterling.

[h3]The Good[/h3]

[previewyoutube][/previewyoutube]
The humble beginnings of The Schmetterling engine were captured in this making-of video for Zombie Driver.

When we started working on our first standalone project, Zombie Driver, back in 2008, we did not have the means to afford any of the ready-made solutions available on the market. We had no choice but to look for open-source solutions to make our first game a reality. Our plan was not to build an engine but to somehow piece the game together. In the process of Zombie Driver’s development, we learned what kind of tools work for us and which ones don’t quite make the cut. Over time, we started reducing the bloat of the software we were using and forming a semblance of what our engine is today. It was a naturally occurring process, and it shaped The Schmetterling engine to have all the necessary tools and features we need to make our own games in the isometric camera view. It was a set of answers to our needs at that time, which is one of the reasons why we have kept working with it ever since.

Destructible environment was one of the key features of X-Morph: Defense. We don't know if achieving this level of destruction would be possible for us in any other engine at that time.

As the tech in games evolved, The Schmetterling needed to keep up with the times and evolve as well. This is where the second advantage of the engine became apparent. Because we have the entire codebase for the engine and know it in and out, we can expand the engine with any kind of feature that we can develop within reasonable time. Whether it’s a new physics model, like in the case of X-Morph: Defense, or a new rendering technique, such as real-time raytraced shadows introduced in The Riftbreaker - if we want a new feature in our engine, it is only a matter of time and dedication before we get our hands on it. Our programmers get the experience of working with the new tech, and the designers can unleash their vision, not limited by artificial constraints.

The aforementioned "artistic vision not limited by artificial constraints." We're not quite normal.

Many of the features of our engine have been implemented with designers in mind - most files are human-readable and, as a result, can be edited by anyone with access to notepad. Thanks to how easy it is to create entities, prepare logic files, create scripts and edit databases, most developers in the studio can create entirely new game assets from scratch without ever asking programmers for help. This is also thanks to the simple Entity Component System, which works like a set of building blocks. Each component in this system adds a set of functions to a game entity. By picking and choosing the right components, we can give game assets the desired properties and have them function in-game as intended.

Tweaking sensitive values gets much easier when no baking is necessary. It allows us to fine-tune visual (or physical) effects much easier.

Another aspect of The Schmetterling engine that helps us with development is that there is no baking necessary and most assets, scripts and effects can be edited in real-time. Baking is the common name for the preprocessing of game assets. It is done to make sure that all assets load and function well and do not cause issues in-game. Since our assets are game-ready right away, we can skip this step, drastically reducing iteration time, as all our changes take effect immediately. This allows us to catch mistakes and test new solutions in a very quick manner.

Automated tests won't catch all bugs but they are a great help. We have a feeling this Gnerot will be back.

There is also a bunch of quality-of-life solutions within The Schmetterling that positively affect our workflow. Our automated crash reporter allows users to send us the data necessary to fix many errors with the game. The reporter also gives us basic stats on error occurrences, helping us prioritize the most common crashes. The engine also allows us to automate game tests and performance benchmarks. This helps us identify many issues before anyone has really had a chance to notice them in the first place. Our toolset is also very modular and easily expandable. If we’re missing any features or test setups, it is usually a matter of just a couple of days of work to add them.

[h3]The Not So Good[/h3]

You need to know what you're going for and how to achieve it. If something is possible within The Schmetterling, it's usually a matter of adding the proper components. But first, you need to know which ones will do the trick for you.

Naturally, The Schmetterling is not perfect. One of the most difficult aspects of working with the engine is the fact that there is no documentation available. You can’t refer to the manual for a list of the available features or examples of how to use them. We rely on the knowledge we gained working with the engine over the course of all these years. Programmers tell us about the new features they deliver, and designers often refer to their previous work as a makeshift ‘cheat sheet.’ However, for a person without access to any of that knowledge, the entry barrier is very high. Mastering the ways of the Schmetterling requires dedication and some reverse engineering.

When we were implementing raytraced shadows, we had to carve the path and figure out solutions to all the issues ourselves. At times, it was tough, but the end effect was well worth it.

Another thing worth mentioning is that nobody is coming to help if something is broken. You can’t count on an engine update magically being published by the developer because YOU are the developer. When there is a bug in the engine, you have to ask the person responsible for that part of the codebase to fix it for you. This can be seen both as an advantage and a disadvantage. On the one hand, you directly impact the state of the engine and can request a quick fix if you’ve encountered a critical error. However, it also means a lot of additional responsibility for our programmers, which they (probably) wouldn’t be dealing with had we chosen a ready-made solution.

[h3]The Downright Ugly[/h3]

The engine wasn't made with multiplayer in mind. Neither was the game. But it's not going to stop us.

Now, we come to the worst part of working with our engine: it is well optimized for the games that we make. It’s not well-suited for anything else. We have all the tools and features necessary to make single-player games in isometric view. However, if we want to achieve something beyond that scope, we must devote long hours of research and development to build the new features from scratch. This is, unfortunately, why developing online co-op is taking so long. We have to essentially build the entire engine for the multiplayer version of the game from the ground up. While this is probably the most hardcore task we could have taken on, we would face similar challenges if we wanted to introduce other drastic changes to the engine and move the camera to the first-person view, for example.

Testing network play on a small PvP map allows us to progress with the work on the multiplayer portion of the game much faster.

Knowing our situation, we knew going into this that adding co-op mode to The Riftbreaker would be a monumental task. Still, we want to assure you once more that we are indeed working on it. We read all your comments. We know you’re frustrated and angry that you’ve been waiting so long. However, rushing things is not the answer here. In order to develop a good multiplayer mode, we need to make sure all the engine work with each other well. A lot of manhours have gone into assuring that we won’t have problems down the line. There is no going around these things, and the unfortunate thing about that is that more often than not, we do not have much to show our progress.

The next progress report will focus on the network connections and the issues we faced while working on the multiplayer.

We hope that we can give you something playable sooner rather than later. We hope that we can meet your expectations. But until then, we need to ask for your patience. We will publish a full-length Co-Op Progress article in the coming weeks. Stay tuned for that.

If you missed any of our previous co-op progress updates, you can catch up here:


https://store.steampowered.com/news/app/780310/view/3381659291157676103
https://store.steampowered.com/news/app/780310/view/3701435238673426124?l=english
https://store.steampowered.com/news/app/780310/view/3657536564724315072?l=english

[h3]Conclusion[/h3]

The Schmetterling is not very universal, but it's VERY good for our use cases.

Developing our own engine has had a lot of benefits for us. It has given our developers lots of invaluable knowledge. We have benefitted from The Schmetterling’s flexibility and adaptability multiple times. However, maintaining and expanding the engine has been an additional, significant responsibility for our team - a responsibility that does not always show obvious benefits and can get frustrating at times.

There is a lot of craftsmanship involved in working with a custom engine. If we were to use an analogy, it is a bit like brewing your own beer. You can learn all the theory, pick your style and ingredients, and control the entire process. On the other hand, you can go to the supermarket and pick up a bottle of your favorite brand. Both will hit just as good as you wind down after a hard work day, but you won’t feel the extra satisfaction of enjoying the fruit of your work from start to finish.

The bottom line is that there are no silver bullets. Each engine has its strengths and weaknesses. Whether it’s a ready-made solution or a custom-built engine, you will have to face some issues along the way. The most important thing is to make an informed decision in the first place. In our case, we’re glad we have The Schmetterling and don’t think we will switch anytime soon.

EXOR Studios