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
Some of the new creatures are quite menacing, but aren't aggressive.
...unless you come too close for their comfort.
Stickrids are so delicate you can just stomp them.
Fungor in its ‘rigging pose’ - all the appendages are extended as far as they go and add the animation rig to the model. Essentially, Fungor is T-posing here.


The notes next to the arrow say: [top] the tail fin is helpful when living in a swamp. and [lower, next to the hand] fangs so that the creature can climb.
Stickrids' design allows us to place them directly in bodies of water.

One Stickrid is not that threatening...
...but there is never just one!
Blender. Throughout this article, you will see what we're working on at the moment. Pay attention to details!
Zbrush. New creatures are coming to life right as you're reading this!
Substance Painter is where all models get their colors. And materials. And basically, everything else that makes them not look like an unpainted Warhammer mini.
Photoshop. Layers, keyboard shortcuts, 20 gigs of RAM usage. Photoshop in a nutshell.
After Effects. Even the animations you can see in the game's main menu were born in After Effects.
Visual Studio and Visual Studios Code. For non-programmers out there: spot 5 differences.
SVN keeps track of all changes ever made to a file. You can't hide your mistakes, even if you really want to!
TeamCity. This list goes on and on, as we have multiple configurations for all platforms and all our games there.
REAPER. After a little while you stop seeing weird shapes and start seeing sounds. Is this synesthesia?
Notepad++. You can edit the majority of the game's files in this program. Very much recommended.
Paint dot net. Photoshop for people without talent or skills. Or both!
Fun Fact #1: The promo art for this biome featuring Drilgor arrived when we were quite deep into the development process, when we had the creature's appearance finalized.
Fun fact #2: the first destructible rocks were reused props from the Metallic Valley biome.
Survival gameplay is never an afterthought - in fact, we have survival ready before the campaign starts to take shape.
Even playing with a limited and prototypical creature set can give us valuable insight into what we want the biome to look like.
At this stage we also learn how to build new map tiles.
There's always going to be a massive battle at some point during the campaign. The big question is - how do we get there?
We design and test various objectives. The ones that are potentially problematic are discarded to make place for better ones.
Some new tech items have to wait for the proper treatment a little longer than others. Here you can see the Acid Spewer Towers in their final form. However, the traps around the base are just recolored Acid traps.
Fun Fact #3: Drilgor had a bug that rendered it unable to hit more than one target at a time. It became a killing machine that wrecks your walls only after it was described as 'weak' in playtesting.
Fun Fact #4: The 'Brittle' achievement used to be possible only with Level 1 Crystal Walls. Luckily, we caught that pretty quickly.
No bugs in this GIF, only a lot of explosions.
The addition of Volumetric Lighting came in the final weeks of the project. It added a lot of character to the biome.
A LOT of character. We even rerecorded the entire trailer, even though some scenes were good already.
The cycle started anew, with World Expansion III now in the works. You can help us by dropping a wishlist here:







A sample scene we used for development. It features multiple sources of light, which sets a good benchmark for us.
64 layers of the light scattering model data generated from the sample scene. They are presented one by one, going from the bottom to top.
The same data presented after the light scattering transmittance accumulation step. You can see the influence that the underlying layers have on their neighbors.

Sample scene from the Jungle biome.
Sample scene from the Magma biome.
Sample scene from the Caverns biome.
Sample scene from the Acid biome.