Skip to main content

Getting Started

Welcome to Projekt J.E.N.O.V.A, Your gateway to integrating world's most powerful programming language as a scripting language into the Godot 4 Game Engine. In this guide We'll walk you through the essentials to help you set up and start using Jenova Framework effectively.

Let's get started!

Essence

First question comes in mind after hearing "C++ Scripting" is Why do I need it? Godot has a wonderful design on scripting backend which makes creating or integrating custom languages very simpler than any other engine. Beside Godot native scripting language "GDScript" there are many alternatives available such as C#, Python, JavaScript, Rust, Lua, Gravity, Dart and so on, So I asked myself if we can have all these languages why not C/C++? After all it's one of the most powerful and popular languages around the world and it has many features, tools and great performance.

C++ is considered as one of most difficult languages to learn and use, However the way I designed Jenova makes C++ very easy to use and fun! Jenova Framework takes advantage of C++ features and combines them with GodotSDK which is very similar to GDScript, You can easily convert any GDScript to C++ and gain a massive performance boost. Also by having C++ you can easily integrate any kind of library and software development kit in your game or application.

Jenova Framework gives you most features of GDScript besides the following benefits:

  • Language Features : Coding your game logic in C++ gives you benefits of using Macros and Templates which makes C++ an amazing language!
  • Performance Improvements : Beside the fact C++ is compiled to native machine code and gets executed very efficiently, You can easily use Multi-Threading in your code to take advantage of full capacity of CPU. Besides CPU you can also use various GPU computing like CUDA, OpenCL and Vulkan Compute.
  • Secure Code Distribution : When you export your project in other languages source codes are usually required at runtime and for this reason they will be included in exported package which anyone can extract and use your codes. Jenova on the other hand doesn't distribute any human readable code. When you export your project that is built using Jenova, Entire source code gets compiled to a binary and all the source codes will be stripped. Your distribution will not contain any code that can directly be copied and used keeping your amazing implementations secure!
  • Nested Extension Development : By using Jenova Framework, You can quickly create extensions for both Editor and Game, You can simply create any kind of Node, Menu, UI, Tool in Real-Time!
  • Stable Hot-Reload System : Jenova Runtime features a solid Hot-Reloading system called "Sakura". Unlike GDExtension, Sakura doesn't require special build of engine with specific flags, It works seamlessly with C++ Scripts and Nested Extensions. Sakura is capable of Hot-Reloading your code in Editor and even running Game instances!
  • Wrapper Free Integration : Having C++ as a scripting language makes it very easy to implement and integrate any third-party library to Godot and your Game. For example if you need SQLite in your pipeline, In languages like GDScript or C# you need a wrapper to connect script language to native code. In Jenova you simply link against libraries and use them directly!
  • Meta Lanaguage Programming : When programming in Jenova, you can seamlessly call and utilize other languages. This means you can invoke GDScript, C#, Python, etc. from Jenova's C++ script and call C++ functions from GDScript, C#, Python, etc. to harness the full power of your code! It's also possible to execute C Scripts, GDScript and Python from a string.
  • Highly Modular Ecosystem : Jenova Framework is designed with high modularity offering a comprehensive ecosystem composed of various modules that can be customized to meet user-specific requirements. We provide many modules with different purposes that you can use in Jenova. After you install a module you can directly use them in your code. No linking, No including, Simple as that!
  • Memory Management : C++ offers precise control over memory allocation and deallocation, which can lead to more efficient use of resources.
  • Low-Level Operations : C++ allows direct manipulation of hardware and memory providing more control over system resources. You can use any native code generated from other languages Delphi, Rust, Pascal etc. You can also use assembly language for more complex tasks.
  • Industry Standard : C++ is a well-established language in the game development industry with extensive documentation and a large community of developers.

Requirements

Before installing Jenova Runtime on your Game Engine, you need to check for some requirements :

  • A Compatible Godot Engine 4.2+ Fork

    Information

    All Godot forks are capable of running Jenova Runtime, but Hot-Reloading is only supported on the following distributions:

  • At the moment, Jenova is only supported on 64-bit Windows Operating Systems. You need to have a standard Windows 7 to 11.

    Note

    Linux is supported but currently not functional due to the unfinished Metadata Extractor.

  • Visual Studio 2017-2022 (Optional)

Installation

To install Jenova Runtime, you can use Jenova Installer or do it manually.

Automatic

  1. Download the official installer from here (Jenova.Installer.Win64.exe 16.1 MB 📥).

  2. Run the installer and select the path of the Godot project where you want to install Jenova Runtime.

    GuideImage_JenovaInstallerMainframe

    Jenova Installer Mainframe, Click On ... to Select your Godot project path.

  3. Click on Install Jenova Framework and wait until the installer finishes.

    GuideImage_JenovaInstallerProgress

    Jenova Installer Progress, It may take a while as it verifies everything required for correct installation.

    Note

    The official installer is only available for Windows. Linux users will need to build it from source.

Manual

  1. Head to the Release Page of the Jenova repository and download the latest framework release. It looks like this :

    Jenova.Framework.<Version>.<Release Stage>.Build.<Build Number>.Win64.zip 
  2. After downloading the zip file, extract it to your project directory. Jenova Framework must be placed at res://Jenova. Using any other path will lead to malfunctioning.

    Screenshot_JenovaInstallerProgress

    Correct Manual Installation, Jenova directory must be placed beside project.godot

  3. Run Godot once after extraction, then close Godot and open it again. (See Known Bugs)

Tutorial : Installing Jenova Runtime On Godot 4.3+

Build Configuration

Before starting your development process, you need to install the required packages depending on your requirements. Jenova has a built-in package manager. You need at least one Compiler and the GodotSDK package to start coding. However, if you have Visual Studio 2017+ and do not wish to compile code inside the editor, you can skip the Compiler package and just install GodotSDK.

  1. Open the Package Manager from the menu Jenova > Tools > Package Manager.

    Screenshot_PackageManagerInJenovaMenu

    Jenova Main Menu, Package Manager is accessible from the Jenova Main Menu.

  2. Install one of the available Compilers. Microsoft Compiler is recommended.

    GuideImage_JenovaPackageManagerCompilers

    Jenova Package Manager, Compiler package is being downloaded from the Package Center.

  3. Head to the Godot Kit tab and install one of the compatible versions.

    GuideImage_JenovaPackageManagerGodotKits

    Jenova Installer Progress, Godot SDK package has been successfully installed.

  4. Now that you have installed the required packages, open Build Configuration from the menu Jenova > Tools > Configure Build...

    Screenshot_ConfigureBuildInJenovaMenu

    Jenova Main Menu, Build Configuration is accessible from the Jenova Main Menu.

  5. Select the packages you've installed or set it to "Latest" to use the newer versions for each. If you did not install a compiler and want to use Visual Studio only, set GodotKit.

    GuideImage_JenovaBuildConfigurationWindow

    Jenova Build Configuration Window, All installed Compilers and Godot Kits will be shown here.

📖 Learn more about Jenova Package Manager

Important Note

Godot Kits provided as official packages are built upon standard releases of Godot. If you are using a custom-built fork of Godot and need to use your custom modules, singletons, interfaces, etc., you will need to build godot-cpp with your version's GDExtension Interface and Extension API dump.

To dump the GDExtension Interface and Extension API dump, simply run your Godot binary using the following command :

godot --dump-extension-api --dump-gdextension-interface

Replace the generated files in the directory gdextension in your godot-cpp path and compile. Then, replace the compiled library and generated headers in the Jenova GodotSDK package.