Convert Figma logo to code with AI

JasonXuDeveloper logoJEngine

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

2,166
340
2,166
3

Top Related Projects

9,939

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

7,278

Reactive Extensions for Unity

2,829

Dependency Injection Framework for Unity3D

1,983

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

9,939

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,278

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,829

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,983

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 Logo

License Last Commit Top Language FOSSA Status CodeFactorAsk DeepWiki

An out-of-the-box Unity framework for hot updatable games

📖 Documentation • 🇨🇳 中文文档

Analytics

⭐ Overview

JEngine is a powerful Unity framework that enables runtime hot updates for your games. Designed for both beginners and professionals, it provides secure, high-performance features out of the box.

🚀 Quick Start

Requirements

  • Unity 2022.3+

Branch Information

BranchStatusDescription
master✅ RecommendedLatest stable version with the most powerful features
0.8.x🔒 LegacyMost popular 2023 version (no longer maintained)
0.7.x🔒 LegacyMost popular 2022 version (no longer maintained)
0.6.x🔒 LegacyComplete with full documentation (no longer maintained)
0.5.x🔒 LegacyUsed by some commercial projects (no longer maintained)
development🔧 DevelopmentActive development branch - PRs welcome!

📦 Packages

Core Package

PackageDescriptionType
JEngine.CoreHot update support with secure, high-performance featuresBuilt-in

Additional Packages

PackageDescriptionLink
MetaJUICustomized UI framework for JEngineRepository
MetaExcelDataToolExcel table guide toolRepository

🛠️ Major Dependencies

DependencyDescriptionRepository
ObfuzCode obfuscationGitHub
HybridCLRRuntime code executionGitHub
YooAssetsRuntime resource updatesGitHub

🎉 Latest Features (v1.0.4)

  • Fixed AddComponent<T> and GetComponent<T> issue under editor

📋 View Complete Changelog

📊 Project Statistics

Stargazers over time

🎮 Showcase

If your project uses JEngine, feel free to contact the author - we'd be happy to showcase your work here!

爱丽丝造梦空间肝到发慌割韭菜明明消消乐

爱丽丝造梦空间

肝到发慌

割韭菜

明明消消乐

兔子与餐厅沧元世界Kz之灵无界电影

兔子与餐厅

沧元世界

Kz之灵

无界电影

🤝 Contributors

💡 Recommendations

Check out these other excellent Unity frameworks:

  • IFramework - Simple Unity Tools
  • QFramework - Your first K.I.S.S Unity 3D Framework
  • TEngine - Unity framework solution
  • BundleMaster - Unity resource loading master
  • Nino - Ultimate high-performance binary serialization library for C#.

⭐ If JEngine helps you, please give it a Star! ⭐