The road to ABYSS® Engine 4.0: Ten years of developing our proprietary mobile games technology, pt. 2
Welcome back to the second part of our Head of Core Technology Johannes' tech blog on the development, maintenance and refurbishment of our in-house ABYSS® Engine. As a follow-up to the piece we published two weeks ago, he will now go a bit deeper into the matter, focusing on our technology’s most striking features and capabilities. Again, this content was originally published as a guest feature on Develop Online in September 2016.
The reddish LOD-level visualizer shown in the screenshot above illustrates which object is drawn using which level of detail.
Tour of the engine – What makes our technology stand out
ABYSS® Engine 4.0 covers a great range of functionalities that you need to create a game. It offers window, graphics context and configuration management. It supports reading inputs from devices like mice, keyboards, gamepads, and touch screens. It provides low-level device information as well as a thin platform abstraction for everything that can be hidden from developers without impacting performance. The engine also includes essential systems for resource management, rendering, and task scheduling. An entity-component-system makes up the scene graph and allows for easy gameplay integration.
Our programming language of choice is C++, which makes up almost 100% of our code base. Additionally, some Objective-C and Java is used for certain platforms. While game developers can wield the full power of C++ when implementing their games with our engine, Lua is also supported as an efficient scripting language.
The renderer of the ABYSS® Engine 4.0 is very flexible. It is split up into two integral parts, the rendering pipeline and the renderer itself. The rendering pipeline is configurable by users of the engine. Its responsibilities include culling, sorting, draw call generation and other rendering preparations. The renderer itself receives and processes output of the pipeline. In its implementation, we resorted to the usage of different graphics APIs (such as Metal, OpenGL, OpenGL ES) on different platforms. Since we are always eager to leverage cutting-edge technology, our renderer takes full advantage of the latest generation of 3D APIs such as Metal, Vulkan, or DirectX 12.
As is state of the art, all of the engine’s work is distributed over multiple threads and CPU cores using a generic task scheduler. For example, the renderer is completely independent from any game logic and resources are always loaded asynchronously. These tasks run parallel to all other things that make up the game.
Another area where the ABYSS® Engine 4.0 has a lot to offer is debugging tools and statistics. We have great support the investigation of the activities of most of the engine's subsystems. Furthermore, we also have a built-in profiler that indicates what code runs slow and what systems are in danger of being overloaded. Last but not least, on-device overlays give access to real-time data while a built-in debug server provides the user with more extensive statistics.
The wireframe mode of the ABYSS® Engine 4.0 shows the composition of the rendered meshes in Galaxy on Fire 3 - Manticore.
Summary – Using today’s engine to craft tomorrow’s games
ABYSS® Engine 4.0 is a 3D game engine specifically made for mobile devices. We base our decisions on mobile CPUs, GPUs and APIs. The engine is tailored towards AAA mobile titles with action-packed gameplay and elaborate 3D graphics – i.e. games that require a lot of power and advanced rendering techniques. Constantly pushing the envelope on next-generation mobile devices, we like to speak of our ABYSS® Engine 4.0 as “the engine of today that allows us to craft the games of tomorrow”. As was the case two weeks ago, we are eager to read your feedback in the comments and answer whatever questions you have.
If you want to stay in the loop regarding the development of our ABYSS-powered sci-fi epic Galaxy on Fire 3 - Manticore, pre-register via http://bit.ly/gof3-signup-blog. And if you want to join our R&D team and help make the ABYSS® even more powerful and performant, check our open vacancies and apply!