Skip to main content

User Interface

In this chapter, You'll learn about user interface and different parts of Jenova Runtime. When you install Jenova and run Godot you may notice some changes to Godot interface, Let's learn about them.

Main Window

Jenova adds following controls to Godot main window :

Screenshot_JenovaUserInterface

Godot Jenova Edition, Jenova User Interface Controls

After installing Jenova you will notice a Jenova menu in your Godot Main Menu. This menu gives you access to all required parts of Jenova Extension.

Screenshot_JenovaMainMenu

Jenova Main Menu, Quickly access to all parts of Jenova.

  • Build Solution: Builds the entire project’s source files and loads the compiled module.

  • Rebuild Solution: Cleans Solution and runs Build command.

  • Clean Solution: Cleans Jenova cache, object files, preprocessed files, etc.

  • Configure Build: Opens Build Configuration window to set Compiler and GodotKit targets.

  • Export to Visual Studio: Exports Jenova Solution to Visual Studio 2017+ for side-by-side integration.

  • Export to Visual Studio Code: Exports Jenova Solution to Visual Studio Code Editor.

  • Export Jenova Module: Exports the Jenova Module using various exporters like GDExtension Exporter.

  • Enable Developer Mode: Toggles Developer Mode; in Developer Mode, Jenova verbosely logs system activity and dumps data.

  • Clear Cache Database: Clears Jenova cache database; use when the compiler can't detect changes in scripts.

  • Open Package Manager: Opens built-in Package Manager to install Compilers, GodotKits, Addons, etc.

  • Documentation: Opens Jenova Framework Learning Center in the default browser.

  • Discord Server: Opens Official Discord Server in the default browser.

  • About Projekt Jenova: Opens the About window with information about version.

    Note

    Items in the menu that are not listed above are not implemented yet.

Toolbar

To ease the compile process, Jenova adds a "Build Solution" toolbar button ToolbarIcon_ToolbarBuild to quickly build the solution. If you hold Alt the build button changes to "Clean Solution" button ToolbarIcon_ToolbarClean to quickly clean entire Jenova Cache.

You can customize the placement of the toolbar icons in Jenova Settings. Additionally, you can customize the build process after pressing the button. For example, you can set it to a mode that runs the game after each build or builds the project before every game launch.

Tip : Curse of Cache

By default, Jenova always loads the built module into the Godot Editor at startup. If you experience a crash at startup due to a corrupted cache file, Simply run Godot with the --Clear-Jenova-Cache command line option.

godot --editor --path "C:\MyGameProject" --Clear-Jenova-Cache

Terminal

Jenova introduces a built-in terminal designed to provide more accurate logging and includes a high-resolution timestamp for logs. You can disable the Jenova Terminal in Jenova Settings or redirect logs to the Godot Native Output window.

Screenshot_JenovaTerminal

Jenova Terminal, A built-in compiler-friendly terminal.


Settings

Jenova Runtime adds a new tab to your Editor Settings. Jenova offers a variety of configurations that can be customized to fit user preferences. You can access it by navigating to Editor > Editor Settings... and selecting the Jenova tab.

GuideImage_JenovaSettings

Jenova Settings, You can customize Jenova configurations here.

Remove Source Codes From Build

When enabled, Jenova Deployer strips all C++ source codes from the build package. This option prevents leaking your C++ scripts in your Godot build.

Compiler Model

Sets the current Compiler backend for Build System, Available options are :

Windows Compilers :

  • Microsoft Visual C++ Compiler (MSVC++)   Implemented ✅  [ Default ]
  • LLVM Toolchain (Clang-cl)   Implemented ✅
  • MinGW Standard (G++)   Implemented ✅
  • MinGW LLVM Toolchain (Clang++)   Implemented ✅

Linux Compilers :

  • GNU Compiler Collection (G++)   Implemented ✅  [ Default ]
  • LLVM CLang Toolchain (Clang++)   Implemented ✅
 
Attention

To use MSVC++ and Clang-cl, you need a runtime distribution built with either MSVC++ or Clang-cl.
The same applies for MinGW compilers; your runtime distribution must be built with G++ or Clang++.

Multi-Threaded Compilation

When enabled, C++ scripts will be compiled in parallel using multi-threading. By using Multi-Threaded Compilation Jenova uses maximum power of the processor to compile scripts.

Generate Debug Information

When enabled, Compiler generates debug symbols and Jenova Module Mapper assigns them to the loaded module. Also if your code leads to a crash the dump file will provide full information on Call Stack, Locals etc.w

Interpreter Backend

Sets the current Interpreter backend for Runtime, Available options are:

  • NitroJIT (Powered by AsmJIT)
  • Meteora (Powered by TinyCC)

📖 Learn more about Jenova Interpreter Backends

Build and Run Mode

Defines the behaviour of the build system before/after a successful build. Available options are :

  • Run Game After Successful Build
  • Build Project Before Running Game
  • Don't Take Any Action  [ Default ]

Preprocessor Definitions

Sets custom preprocessor definitions to use within all scripts. It supports 3 types of Macros :

  • Flag Macros (#define USE_CUDA_COMPUTE)
  • Value Macros (#define LEGEND_NAME "Chester Bennington")
  • Function Macros (#define ADD_10(num) num+10)

Additional Include Directories

Sets additional paths to include external headers in Jenova Build System.

Supports .h, .hpp, .hxx, .hh, .inc and .jinc files.

Example : C:\cuda_11.7.0_516.01\include;C:\qt-5.15.3-static-msvc2019-x86_64\include

Additional Library Directories

Sets additional paths to include external libraries in Jenova Build System.

Supports .lib, .so, .a, .obj, .jlib and .jobj files.

Example : C:\cuda_11.7.0_516.01\lib\x64;C:\qt-5.15.3-static-msvc2019-x86_64\lib

Additional Dependencies

Sets additional dependencies and symbols to link against in Jenova Build System.

Supports .lib, .so, .a, .obj, .jlib and .jobj files.

Example : cuda.lib;cudart.lib;cudadevrt.lib;Qt5Core.lib;Qt5Widgets.lib;Qt5Network.lib

External Changes Trigger Mode

Defines the behaviour of execution when a script file changes externally. Available options are :

  • Build Project on Script Reload
  • Build Project on Script Change
  • Bootstrap Project on Watchdog Invoke
  • Don't Take Any Action  [ Default ]

Watchdog Invoke vs Script Reload/Script Change

There's a difference between three methods, Watchdog Invoke method is used with external build systems which works with a feature in Jenova Build System known as "Bootstrapper". The process involves compilation in an external compiler and when a module is produced, Jenova Symbol Parser kicks in and extracts Metadata then loads the compiled module. On the other hand, Script Reload watches over externally applied changes to C++ script files. If a change is detected it triggers a build inside Godot itself.

Script Change is almost identical to Script Reload. The only difference is that Script Reload uses Godot reload mechanism while Script Change uses Jenova Asset Monitor and it triggers a build even if your game engine isn’t in focus.

This feature works hand in hand with Build and Run Mode to create a seamless development experience. This feature can also be used to add any custom editor to your workflow such as VSCode, NeoVim, etc.

📖 Learn more about Jenova Hot-Reloading System

Use Hot-Reload at Runtime

When enabled, While you are running a game in Debug Mode (Play Mode) from the Godot Editor, If you build the project it automatically performs Hot-Reload in all running instances. Use this option carefully.

The process establishes a bidirectional connection between Jenova Runtime in Godot Editor and Jenova Runtime in all running instances. When a new Jenova Module is successfully created, It queues a reload command and broadcasts it to all connected instances. Upon receiving the signal the instances perform an internal Hot-Reload.

📖 Learn more about Jenova Hot-Reloading System

Editor Verbose Output

Sets the behaviour of verbosing. It switches between printing in the Godot Output Window and Jenova Built-in Terminal.

  • Standard Editor Output
  • Jenova Built-In Terminal  [ Default ]
  • Disabled

It's recommended to use Jenova Built-in Terminal but if you experience any kind of crash or error before Jenova installation in the editor, Switch to Standard Editor Output.

Use Monospace Font for Terminal

When enabled, Jenova Built-in Terminal uses a monospace font which results in a more programmer-friendly experience.

Screenshot_TerminalRegularVsMonospace

Jenova Built-in Terminal, Regular Font vs Monospace Font

Terminal Default Font Size

Sets the default font size used for the Jenova Built-in Terminal. This value is affected by the Godot global User Interface factor scale.

Compiler Package

Defines the current Compiler package used in Jenova Build System. This value is set by the Build Configuration window but can be set manually for custom compiler packages.

Godot Kit Package

Defines the current Godot SDK package used in Jenova Build System. This value is set by the Build Configuration window but can be set manually for custom compiler packages.

SDK Linking Mode

Determines how JenovaSDK links against a compiled Jenova Module. Available options are :

  • Don't Link
  • Dynamically  [ Default ]
  • Statically

It is recommended to keep this option set to Dynamically. However, if you plan to export the Jenova Module as a GDExtension and do not wish to include the Jenova Runtime extension, set it to Statically. If you are not using any features of JenovaSDK, you can set it to Don't Link.

Critical

Jenova Hot-Reload doesn't work with a statically linked Jenova Runtime SDK, For using Hot-Reload feature you must link it dynamically.

📖 Learn more about Jenova Module Exporter

Managed Safe Execution (MSE)

When enabled, the Jenova Runtime executes C++ machine code within a managed execution context ensuring crash-proof execution.

If your C++ code contains bugs or errors that would typically cause a crash, MSE feature intercepts these issues and reports them as script errors allowing the game to continue running without interruption. This feature is beneficial for beginners and newcomers to the C++ language, enabling them to experiment freely with their code without the fear of crashing the engine.

Build Tool Button Placement

Sets the placement of the Build/Clean Tool Button in the main toolbar. Available options are :

  • Before Main Menu
  • After Main Menu
  • Before Stage Selector
  • After Stage Selector
  • Before Run Bar
  • After Run Bar  [ Default ]
  • After Render Method
Note

In newer versions of Godot you may need to check the Advanced Settings to see the Jenova tab.


Now that you've reached this point in the documentation, You've gained a good understanding of the Jenova Framework. From here, you can explore both Basic and Advanced topics. Start coding with Jenova today and take your projects to the next level!