Convert Figma logo to code with AI

JasonXuDeveloper logoJEngine

The solution that allows unity games to update in runtime. 使Unity开发的游戏支持热更新的解决方案。

1,957
331
1,957
3

Top Related Projects

8,004

Provides an efficient allocation free async/await integration for Unity.

7,065

Reactive Extensions for Unity

2,469

Dependency Injection Framework for Unity3D

1,772

Nez is a free 2D focused framework that works with MonoGame and FNA

Quick Overview

JEngine is an open-source game framework for Unity, designed to enhance development efficiency and performance. It provides a suite of tools and features to streamline game development, including hot update capabilities, resource management, and various optimization techniques.

Pros

  • Supports hot updates, allowing for easy game modifications without rebuilding
  • Includes a comprehensive set of tools for resource management and optimization
  • Provides cross-platform support for various Unity deployment targets
  • Offers detailed documentation and active community support

Cons

  • Learning curve may be steep for developers new to the framework
  • Some features may be overkill for smaller projects or simpler games
  • Dependency on Unity engine limits its use to Unity-based projects
  • Regular updates may require occasional adjustments to existing projects

Code Examples

  1. Initializing JEngine:
using JEngine.Core;

public class GameEntry : MonoBehaviour
{
    private void Start()
    {
        GameManager.Initialize();
    }
}
  1. Loading a hot-updateable scene:
using JEngine.Core;

public class SceneLoader
{
    public static async void LoadScene(string sceneName)
    {
        await GameManager.LoadSceneAsync(sceneName);
    }
}
  1. Using JEngine's localization system:
using JEngine.Core;

public class LocalizationExample : MonoBehaviour
{
    private void Start()
    {
        string localizedText = JEngine.Localization.Get("key_example");
        Debug.Log(localizedText);
    }
}

Getting Started

  1. Install Unity (2019.4 or later recommended)
  2. Clone the JEngine repository:
    git clone https://github.com/JasonXuDeveloper/JEngine.git
    
  3. Open the project in Unity
  4. Import JEngine into your project:
    • Copy the Assets/Dependencies/JEngine folder to your project's Assets folder
  5. Initialize JEngine in your game entry script:
    using JEngine.Core;
    
    public class GameEntry : MonoBehaviour
    {
        private void Start()
        {
            GameManager.Initialize();
        }
    }
    
  6. Explore JEngine's features and documentation to leverage its capabilities in your game development process.

Competitor Comparisons

8,004

Provides an efficient allocation free async/await integration for Unity.

Pros of UniTask

  • Highly optimized for Unity-specific asynchronous programming
  • Extensive documentation and examples for easy integration
  • Lightweight and focused solely on async/await functionality

Cons of UniTask

  • Limited to Unity environment, not suitable for general C# development
  • Steeper learning curve for developers unfamiliar with async programming
  • May require additional setup and configuration in Unity projects

Code Comparison

UniTask:

async UniTaskVoid Start()
{
    await UniTask.Delay(1000);
    Debug.Log("Delayed execution");
}

JEngine:

public void Start()
{
    this.Delay(1000, () =>
    {
        Debug.Log("Delayed execution");
    });
}

Summary

UniTask excels in Unity-specific async programming with optimized performance, while JEngine offers a broader framework for game development. UniTask provides a more modern approach to asynchronous operations, but may be more complex for beginners. JEngine, on the other hand, offers a wider range of features beyond just async programming, making it a more comprehensive solution for Unity game development.

7,065

Reactive Extensions for Unity

Pros of UniRx

  • Robust reactive programming framework for Unity
  • Extensive documentation and community support
  • Seamless integration with Unity's coroutine system

Cons of UniRx

  • Steeper learning curve for developers new to reactive programming
  • Can introduce complexity in simpler scenarios
  • Potential performance overhead for excessive use of observables

Code Comparison

UniRx example:

Observable.EveryUpdate()
    .Where(_ => Input.GetKeyDown(KeyCode.Space))
    .Subscribe(_ => Debug.Log("Space key pressed"));

JEngine example:

public class SpaceKeyListener : JBehaviour
{
    public override void OnUpdate()
    {
        if (Input.GetKeyDown(KeyCode.Space))
            Debug.Log("Space key pressed");
    }
}

Summary

UniRx offers a powerful reactive programming paradigm for Unity, with extensive features and community support. However, it may introduce complexity and have a steeper learning curve. JEngine provides a more traditional approach to Unity development, focusing on performance optimization and ease of use. The choice between the two depends on project requirements and team expertise.

2,469

Dependency Injection Framework for Unity3D

Pros of Zenject

  • More mature and widely adopted in the Unity community
  • Extensive documentation and community support
  • Powerful dependency injection system for better code organization

Cons of Zenject

  • Steeper learning curve for beginners
  • Can introduce complexity in smaller projects
  • Requires more setup and configuration

Code Comparison

Zenject:

public class Foo : MonoBehaviour
{
    [Inject]
    public void Construct(Bar bar, Baz baz)
    {
        // Dependencies injected automatically
    }
}

JEngine:

public class Foo : JBehaviour
{
    public void Awake()
    {
        Bar bar = ClassBind.Bind<Bar>();
        Baz baz = ClassBind.Bind<Baz>();
    }
}

Summary

Zenject offers a robust dependency injection system with extensive community support, making it ideal for larger projects. However, it may be overkill for smaller games and has a steeper learning curve. JEngine provides a simpler approach to class binding and lifecycle management, which can be more accessible for beginners but may lack some of the advanced features found in Zenject.

1,772

Nez is a free 2D focused framework that works with MonoGame and FNA

Pros of Nez

  • More comprehensive 2D game framework with built-in systems for physics, rendering, and scene management
  • Larger community and more extensive documentation
  • Better suited for complex 2D game development with a wider range of features

Cons of Nez

  • Steeper learning curve due to its more extensive feature set
  • Less focused on performance optimization compared to JEngine
  • May be overkill for simpler projects or those primarily targeting mobile platforms

Code Comparison

Nez scene setup:

public class MainScene : Scene
{
    public override void Initialize()
    {
        AddEntity(new Player());
        AddRenderer(new DefaultRenderer());
    }
}

JEngine scene setup:

public class MainScene : JBehaviour
{
    public override void Init()
    {
        CreateGameObject("Player").AddComponent<Player>();
    }
}

Both frameworks offer scene management, but Nez provides a more structured approach with built-in renderers and entity systems, while JEngine focuses on simplicity and performance optimization for mobile platforms.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

JEngine

license last topLanguage status badge

Documentation »
(The documentation is yet in Chinese and can use Google Translated version from here)
·
中文页面 »

JENGINE v0.8.0f7

Alt

JEngine is an out-of-the-box framework designed for Unity developers. It encapsulates powerful functions. Beginners can also get started quickly and easily create games that can be updated in runtime.

The master branch is the latest version that the developers think can be used normally and will not have too many problems. It is recommended to use and has the most powerful functions (also it fixes the bugs in the old versions);

The 0.7.x branch is currently in use by most commercial projects, it is the most popular version in 2022 with various useful and high performance features, this branch will not be updated or maintained any more (this branch has full documentations but few official tutorial videos);

The 0.6.x branch was used by most commercial projects, it has complete content, sufficient documentation and videos, and will not be updated or maintained any more;

The 0.5.x branch is being used by some commercial projects, will not be updated or maintained;

The development branch is the development branch. You are welcome to make changes and PRs in this branch after fork, and you are also welcome to submit issues!

If you think JEngine is helpful to you, please give this framework a Star!

Requirement

  • Unity 2020.3.4+
  • .net framework 4.x / .net 4.x / net framework

Packages

Different built-in and additional packages for JEngine

Package NameDescriptionTypeLink
JEngine.CoreSupports hot update in runtime.
In addition, it provides secure, high performance features.
Built-inJEngine
JEngine.AntiCheatPrevents memory hack
(i.e. using GameGuardian to dump and modify memory).
AdditionalJEngine.AntiCheat
JEngine.LocalizationProvides multi-lnguage feature in game.AdditionalJEngine.Localization
JEngine.MiscAdditional miscellaneous features.AdditionalJEngine.Misc
LitJsonSupports JSON serialization/deserialization
(as C# objects or JsonData)
AdditionalJEngine.LitJson
Protobuf-netSupports protobuf serilization/deserializationAdditionalJEngine.Protobuf-net
MetaJUIMetaJUI is a UI framework customized for JEngine. Of course, you can also transplant it to your own engineering projects through simple modifications.AdditionalMetaJUI
MetaExcelDataToolMetaExcelDataTool is an Excel table guide tool customized for JEngine. Of course, you can also transplant it to your own project through simple modifications.AdditionalMetaExcelDataTool

Dependencies

Stargazers over time

Stargazers over time

Contributors

v0.8.0 New Features

  • Supported WebGL
  • Removed JUI (will be redesigned shortly)
  • Optimized LifeCycleMgr performance
  • Optimized ThreadMgr features
  • Optimized JStream performance
  • Optimized JBehaviour performance
  • Optimized MonoBehaviour performance
  • Optimized FpsMonitor performance
  • Optimized CryptoMgr interfaces
  • Optimized JBehaviour/ClassBind Object/MonoBehaviour GC
  • Optimized GetComponent(s)/FindObject(s)OfType performance
  • Switched to YooAsset for asset management module (instead of Bundle Master)
  • NEW FEATURE UnsafeMgr which provides unsafe (use for optimization) features
  • NEW FEATURE UnmanagedMemoryPool which supports allocating unmanaged memory with pooling
  • NEW FEATURE CoroutineMgr which supports executing/stopping coroutines from non-MonoBehaviour class
  • NEW STRUCTURE Split JEngine source code to multiple packages

Click here to see the change log

Recommendations

  • IFramework - Simple Unity Tools
  • QFramework - Your first K.I.S.S Unity 3D Framework.
  • TEngine - Unity框架解决方案
  • BundleMaster - Unity资源加载大师
  • Nino - Definitely useful and high performance modules for C# projects, especially for Unity.