[h1]Hello Riftbreakers![/h1] [img]https://media.giphy.com/media/hBLpZdZBgSHrsMBqph/giphy.gif[/img] [b][i]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. [/i][/b] 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][b]The Good[/b][/h3] [previewyoutube=a-wNhKdML38;full][/previewyoutube] [b][i]The humble beginnings of The Schmetterling engine were captured in this making-of video for Zombie Driver.[/i][/b] 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 [b]have all the necessary tools and features we need to make our own games in the isometric camera view[/b]. 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. [img]https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExamJlYW01MWJnbHNuMWF4cHMwMTBxOWRla3Z5cWh3ZGc4dTZ4MnU3MiZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/xA6MT1TesaBuU0IeU1/giphy.gif[/img] [b][i]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.[/i][/b] 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, [b]we can expand the engine with any kind of feature that we can develop within reasonable time.[/b] 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. [img]https://media.giphy.com/media/7utlOMYeAZNvlsjBOM/giphy.gif[/img] [b][i]The aforementioned "artistic vision not limited by artificial constraints." We're not quite normal.[/i][/b] Many of the features of our engine have been implemented with designers in mind - [b]most files are human-readable and, as a result, can be edited by anyone with access to notepad.[/b] 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 [b]simple Entity Component System[/b], 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. [img]https://media.giphy.com/media/A3umb1eoqaIoVhzJgb/giphy.gif[/img] [b][i]Tweaking sensitive values gets much easier when no baking is necessary. It allows us to fine-tune visual (or physical) effects much easier.[/i][/b] Another aspect of The Schmetterling engine that helps us with development is that [b]there is no baking necessary and most assets, scripts and effects can be edited in real-time.[/b] 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. [img]https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExbG9ham4zYmd2NjV5YXEwYzFpYm5zZ3oyenFxbWhmMzZkYzkyMnI0dCZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/IMX43klqWu687UKYQo/source.gif[/img] [b][i]Automated tests won't catch all bugs but they are a great help. We have a feeling this Gnerot will be back.[/i][/b] There is also a bunch of quality-of-life solutions within The Schmetterling that positively affect our workflow. [b]Our automated crash reporter allows users to send us the data necessary to fix many errors with the game.[/b] The reporter also gives us basic stats on error occurrences, helping us prioritize the most common crashes. [b]The engine also allows us to automate game tests and performance benchmarks.[/b] This helps us identify many issues before anyone has really had a chance to notice them in the first place. [b]Our toolset is also very modular and easily expandable.[/b] 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][b]The Not So Good[/b][/h3] [img]https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExazNjbW8yZTByMWR4bm4xcjd0M21iN2tucTRnaDN6OXI0eHVxY2xvYiZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/vW1bpuhVLOdqu20TPh/source.gif[/img] [b][i]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.[/i][/b] Naturally, The Schmetterling is not perfect. One of the most difficult aspects of working with the engine is the fact that [b]there is no documentation available[/b]. 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,[b] the entry barrier is very high.[/b] Mastering the ways of the Schmetterling requires dedication and some reverse engineering. [img]https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExem52N2RnNHN0M2prazVqYWh0Znd4MGFlZmNkbDQzbzZldzRtazBxYyZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/CCWh0LJ5pZJonVamKm/source.gif[/img] [b][i]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.[/i][/b] Another thing worth mentioning is that[b] nobody is coming to help if something is broken[/b]. 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][b]The Downright Ugly[/b][/h3] [img]https://media.giphy.com/media/XOetMQY036Kply3Oar/giphy.gif[/img] [b][i]The engine wasn't made with multiplayer in mind. Neither was the game. But it's not going to stop us.[/i][/b] Now, we come to the worst part of working with our engine: [b]it is well optimized for the games that we make. It’s not well-suited for anything else.[/b] 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. [b]This is, unfortunately, why developing online co-op is taking so long.[/b] 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. [img]https://media.giphy.com/media/531eZtB3BI5vg0G1uU/giphy.gif[/img] [b][i]Testing network play on a small PvP map allows us to progress with the work on the multiplayer portion of the game much faster.[/i][/b] 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.[b] In order to develop a good multiplayer mode, we need to make sure all the engine work with each other well.[/b] 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. [img]https://media.giphy.com/media/VlAUUHJUI1d6ZGOoNg/giphy.gif[/img] [b][i]The next progress report will focus on the network connections and the issues we faced while working on the multiplayer.[/i][/b] 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. [b]We will publish a full-length Co-Op Progress article in the coming weeks. Stay tuned for that.[/b] [b]If you missed any of our previous co-op progress updates, you can catch up here: [/b] 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][b]Conclusion[/b][/h3] [img]https://media.giphy.com/media/q0FU32FFakUobI9n2p/giphy.gif[/img] [b][i]The Schmetterling is not very universal, but it's VERY good for our use cases.[/i][/b] 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. [b]The bottom line is that there are no silver bullets.[/b] 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