RENKEI Engine

From AtomicTorchWiki
Revision as of 10:10, 18 February 2016 by Atomic-admin (talk | contribs)


This article is a draft and may contain incomplete or even incorrect information. You can help by expanding it.

Renkei Engine by AtomicTorch Studio

Renkei Engine - Renkei Engine is a powerful multipurpose game engine designed for rapid game development. Renkei Engine is developed in-house for our own projects to be a powerful tool for client-server game development geared towards multiplayer/massively multiplayer cross-platform games.

It is powered by the latest versions of .NET Framework on Windows and Mono on other platforms.

Client part of Renkei Engine utilizes MonoGame framework for the easier development of 2D games. But it could be replaced with any other low level library or an engine that supports the latest version of .NET/Mono (not Unity, unfortunately).

The primary philosophy behind Renkei Engine is to focus the development on implementing the actual gameplay code with C# scripting while minimizing any interruptions during the development process. Therefore the engine is designed to allow live/hot-reloading of any game code and assets (textures, models, audio, C# scripts, XAML UI markup, etc.) without recompilation or other interruptions which makes it the main feature of the engine.

The title of the engine is based on Japanese words 連携 renkei (cooperation, coordination, link) and 遠景 enkei (perspective, vista).

Features Highlights

Below is a list of the most features we think are the most important and differentiate Renkei Engine from other software tools currently available. However this list is in no way exhaustive. Hopefully we can provide a more detailed documentation and description at a later date.

  • Live editing: No recompilation or asset reloading needed during development/modding. You can edit and debug the code and add or replace asset live - the engine will detect the file change and immediately reload/recompile it (C# scripts, textures, models, audio, XAML UI markup, etc.). You don't even need to stop your debug session!
  • Networking: Renkei Engine implementation of client-server intercommunication provides the best performance and lowest throughput and at the same time it's very easy to develop and configure. The game engine utilizes Reliable UDP implementation to avoid traffic hiccups and minimize network lags. It also allows to prioritize the most-important commands with easy-to-use declarative syntax.
  • Server-based architecture: in case of multiplayer games the authoritative game server architecture makes most of the usual forms of client-side cheating impossible.
  • United data space: Renkei Engine blurs the line between Client and Server. Networking was always considered as one of the hardest part of game development requiring enormous amount of effort to develop and debug. We addressed this in many ways, some of which include: smart auto-replication of synchronized objects, easy-to-use bulletproof RPC, unified development console presenting Client and Server logs side-by-side with clear sequence of events and many other things. Effectively it means that the development of multiplayer game isn't much more difficult than developing a single-player game. The engine will take care of all the difficult parts.
  • Data-driven vector-based UI: UI is implemented by using NoesisGUI, which is a cross-platform vector-based UI library utilizing XAML markup to declaratively define UI elements and their style. It uses C# language for programming and promotes ultimately effective MVVM-pattern for data binding. It's evolution of UI technology used at WPF/UWP-applications, but with cross-platform support and specially tailored for video games. You could use variety of tools for live-editing and previewing XAML like Microsoft Visual Studio 2015 and Blend.
  • Modding: Modding is easier. Modding is fun. Both, the game core data as well as mods are treated the same by the engine. All gameplay-related C# code and assets (including UI) are stored in the "Core.cpk" or "whatever_mod_name.mpk" files which are simple zip archives or folders on the hard drive. The game could load any number of such archives or folders expanding the available game data and logic. Powerful asset management and overriding is also possible. This allows for extremely easy mod creation, including total conversions. Modding tools are also integrated (no external tools required) into the game engine itself which aids in debugging of the mods or the core game.
  • Graceful degradation: How often do you see the game crashing during development or modding? And then long and frustrating recovery process, when you restarting the game, loading latest game world save, repeating your actions... It wastes your time and kills productivity, it literally ejects you from the creative flow. With live-editing philosophy in mind, Renkei Engine lets you avoid all these issues. It gracefully handles all situations like an unhandled exceptions in scripting or missing assets. In the worst case scenario the engine will simply suspend the game cycle and report about the problem, clearly indicating about the faulty components and directing you right to the specific source code line if needed (with Visual Studio). After you fix the problem with the code or another issue - simply switch back to the game. If everything is fine it will automatically resume the game cycle. And you also can revert to the previous game data states by using hotkeys.
  • Custom VS2015 Project System: To simplify development and modding even more, we implemented a custom project system for Microsoft Visual Studio 2015 (free Community edition is supported). It's not required to use for development/modding, but it provides several important features. There is a set of useful templates for C# scripts and UI assets. It allow you to attach to the game process by simply pressing F5 and never detach from it (scripts/assets live reloading feature!). It will automatically add/remove files to/from the solution/project tree (no need to manually include files). For development of client-server games you could use the combined client-server executable, so it will be just a single process and you can simultaneously develop/debug code for client and server in one Visual Studio instance.