Skip to content

Jenova Runtime is an extension library for the Godot 4 Game Engine that brings fully-featured C++ scripting directly into the Godot Editor.

License

Notifications You must be signed in to change notification settings

Jenova-Framework/Jenova-Runtime

Repository files navigation

Projekt J.E.N.O.V.A :: Jenova Runtime (Core)

This repository contains source code of Jenova Runtime for Godot 4+ and It's a part of Projekt J.E.N.O.V.A

image

Jenova Runtime (Windows-x64) Jenova Runtime (Linux-64)

Overview

Projekt J.E.N.O.V.A is a comprehensive series of extension libraries for the Godot 4+ Game Engine that brings fully-featured C++ scripting directly into the Godot Editor. It allows the use of modern C++20 standards within the Godot Engine similar to GDScript.

By using Jenova Framework you can easily program your entire game or application in C/C++ without any issues. You can also integrate OpenCV, CUDA, Vulkan, OpenMP and any other modern C++ features seamlessly, All supported by the powerful backend.

Jenova Framework comes with a fully-featured scripting backend offering almost all the features of GDScript that are not available in any other third-party language at the moment. It’s not just an automated GDExtension; It’s a complete scripting backend with many features.

Structure of Projekt J.E.N.O.V.A

  • Jenova Framework: The framework contains Jenova Runtime, Jenova Utilities and Jenova SDK.
  • Jenova Runtime (Core): The heart of the framework, It includes the Jenova Interpreter, Jenova Compiler Interface, Jenova Packer etc.
  • Jenova Package Manager: A utility included in Jenova Runtime for installing, removing and managing Jenova packages.
  • Jenova SDK: An optional component of Jenova Runtime, providing helpers and APIs for Hot-Reloading, Global Allocation/Access etc.

Full feature list can be found here.

Issue/Bug Reports and Questions

  • If you want to report an issue or bug create a new thread at Issues.
  • If you have any questions you can create a new thread at Discussions.
  • More details on the build process can be found at Documentation.

Dependencies

Jenova Core has following dependencies :

Important

  • Edit base64.hpp namespace to base64
  • Only header file libtcc.h is required from TinyCC beside static library
  • In FileWatch.hpp change _callback(file.first, file.second); to _callback(_path + "/" + file.first, file.second);
  • By using Jenova Builder, All the dependencies are downloaded, manipulated and compiled automatically.

Build Systems

Windows x64

Building fully-featured Jenova Runtime for Windows x64 requires Visual Studio 2022 with C++20 Support.

Using GigaChad Toolchain

For Windows, Jenova Framework provides a massive compiler collection including all standard compilers :

  • Microsoft Visual C++ (msvc)
  • Microsoft Visual C++ LLVM (clang-cl)
  • LLVM Clang (clang/clang++)
  • Minimalist GNU for Windows (gcc/g++)

You can use Jenova Builder to build Jenova Runtime for Windows using GigaChad Toolchain. Everything is automated and all dependencies will be compiled by Jenova Builder. The compiled dependencies from Jenova Builder can be used in Visual Studio as well.

# Running Builder
python3 ./Jenova.Builder.py

# Build using MSVC
python3 ./Jenova.Builder.py --compiler win-msvc --skip-banner

# Build using MSVC LLVM
python3 ./Jenova.Builder.py --compiler win-clangcl --skip-banner

# Build using MinGW Clang
python3 ./Jenova.Builder.py --compiler win-clang --skip-banner

# Build using MinGW GCC
python3 ./Jenova.Builder.py --compiler win-gcc --skip-banner

The toolchain is only 150MB and contains all compiler toolchains All-in-One. You don't need to install anything extra, including Visual Studio.

Note : Using Jenova Builder with win-msvc also compiles a fully-featured Jenova Runtime. It serves as an alternative to Visual Studio 2022 with C++20.

Linux x64

Building Jenova Runtime for Linux x64 can be done using Jenova Builder. To build using Jenova Builder, Install Python 3 and then use the following commands from VSCode or Terminal:

# Running Builder
python3 ./Jenova.Builder.py

# Build using Clang++
python3 ./Jenova.Builder.py --compiler linux-clang --skip-banner

# Build using G++
python3 ./Jenova.Builder.py --compiler linux-gcc --skip-banner

Jenova Runtime source code is fully compatible with both Clang++ (18+) and G++ (13+). Additionally, Visual Studio Code compatibility files are provided.

Note : Code::Blocks project files have been deprecated and removed following the significant update to Jenova Builder.

Builder Prerequisites

Before using Jenova Builder you need to install following prerequisites on both Windows and Linux.

  • Python (3.10+)
  • CMake (3.20+)
  • Ninja (1.11+)

Additionally, the following Python packages are required for Builder :

pip install requests py7zr colored

Open Source vs Proprietary

While the public source code of Jenova is ~90% identical to the proprietary version, a few specific features have been removed or disabled.

These changes include :

  • Jenova Emulator Connector is removed and will be made available later as an addon in the Package Manager.

  • A.K.I.R.A JIT is removed from the public source code. This component was responsible for executing obfuscated code using a proprietary highly secured VM.

  • Code Encryption and Key System has been omitted from the public version to protect critical proprietary algorithms. However, Code Compression is fully included, Developers can add their own encryption on top of the existing buffering system.

  • Jenova Code Virtualizer/Sandbox removed due to reliance on the proprietary SecureAngel™ 2.0 technology.

Cross-Platform

Jenova Proprietary version includes only Microsoft Visual C++ (MSVC) and Microsoft LLVM Clang (Clang-cl) compilers and is compatible only with Windows. Open-Source version, however, is fully ported to Linux and includes support for MSVC, Clang-cl, MinGW GCC and LLVM on Windows as well as GCC and LLVM Clang on Linux.

Important

The Jenova Runtime Proprietary version is no longer available for public access. The last version released was 0.3.6.0 Alpha. Open-Source version will continue to receive all future updates from the proprietary version, Except those related to security.


Developed & Designed By Hamid.Memar (MemarDesign™ LLC.)

About

Jenova Runtime is an extension library for the Godot 4 Game Engine that brings fully-featured C++ scripting directly into the Godot Editor.

Topics

Resources

License

Stars

Watchers

Forks