Skip to content

Commit

Permalink
Merge pull request #461 from JasonXuDeveloper/development
Browse files Browse the repository at this point in the history
merge v0.8.0 update
  • Loading branch information
JasonXuDeveloper committed Apr 11, 2023
2 parents 20a042c + 2651456 commit b053836
Show file tree
Hide file tree
Showing 1,217 changed files with 42,533 additions and 62,629 deletions.
10 changes: 7 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
.DS_Store
.idea/*
UnityProject/DLC/*
UnityProject/Bundles/*
UnityProject/Assets/Dependencies/JEngine/Core/.idea/*
UnityProject/.idea/*
UnityProject/HotUpdateScripts/.vs/*
Expand All @@ -10,7 +10,11 @@ UnityProject/obj/*
UnityProject/*.csproj
UnityProject/UnityProject.sln
UnityProject/HotUpdateScripts/obj/*
UnityProject/ProjectSettings/*
UnityProject/Assets/JEngine.lock
UnityProject/Assets/JEngine.lock.meta
UnityProject/Assets/Dependencies/ILRuntime/Generated/*
UnityProject/Assets/Dependencies/ILRuntime/Generated/*
UnityProject/Assets/Dependencies/ILRuntime/Generated.meta
UnityProject/Logs/Packages-Update.log
UnityProject/Sandbox/*
UnityProject/Logs/*
UnityProject/Build/*
6 changes: 0 additions & 6 deletions .gitmodules

This file was deleted.

23 changes: 23 additions & 0 deletions CHANGE.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,28 @@
## All Versions

### 0.8.0 (April 11 2023)

- **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





### 0.7.5 (September 25 2022)

- **Updated** ILRuntime to v2.1.0
Expand Down
122 changes: 48 additions & 74 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,22 +1,14 @@
<p align="center">
<img src="https://s4.ax1x.com/2022/01/16/7tP1V1.png" alt="logo" width="256" height="256">
<img src="https://socialify.git.ci/JasonXuDeveloper/JEngine/image?description=1&descriptionEditable=The%20solution%20that%20allows%20unity%20games%20to%20update%20in%20runtime.&font=Jost&forks=1&issues=1&logo=data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAIAAAB7GkOtAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAACRZJREFUeNrs279LW3sAxuGrJCU0GAIBkdJAzJCWFiHQFtpBiLqq%2BB%2B4iG46Fuxgl7iWOji5d7ezmKl0qCBkc2h18gcERFGwHdJDXYr11nhFb3K%2BzzOUEk5RXw%2F5JCenXc1m8x8AwtNtAgABAEAAABAAAAQAAAEAQAAAEAAABAAAAQBAAAAQAAAEAAABAEAAABAAAAQAAAEAQAAAEAAABAAAAQBAAAAQAAABAEAAABAAAAQAAAEAQAAAEAAABAAAAQBAAAAQAAAEAAABAEAAABAAAAQAAAEAQAAAEAAABAAAAQBAAAAQAAABAEAAABAAAAQAAAEAQAAAEAAABAAAAQBAAAAQAAAEAAABAEAAABAAAAQAAAEAQAAAEAAABAAAAQBAAAAQAAAEAEAAABAAAAQAAAEAQAAAEAAABAAAAQBAAAAQAAAEAAABAEAAABAAAAQAAAEAQAAAEAAABAAAAQBAAAAQAAAEAEAAABAAAAQAAAEAQAAAEAAABAAAAQCgQyRM0D5WVlZWV1ftcBsajcanT5%2Fs8L%2BrVCrr6%2Bt28A6Ai6amporFoh2IsUKhYAQB4HLVarW3t9cOxNXk5KQRBIDLpdPp%2Bfn56E9TEMuX%2F5VKxQ4CwL8qFotTU1N2IH4WFhaMIABcYWRkZHx83A7ESTabnZiYsIMAcLXoTcDLly%2FtQGxEz%2F5RA%2BwgALRkbm7OTUHE6Xw2ggDQqnQ6PTs76wNhYqD8ix0EgGuI3gHMz8%2FbAS%2F%2FuQ3%2BJ3C7GxgYiBrw7ds3U9zEzs5Oo9G48GBvb%2B%2Fw8LBx7oCPf9tTV7PZtAKxV6%2FX37x582dcq9WqcQiWS0AAAgCAAAAgAAAIAAACAIAAACAAAAgAAAIAgAAAIAAACAAAAgCAAAAgAAAIAAACAIAAACAAAAgAAAIAgAAAIAAAAgCAAAAgAAAIAAACAIAAACAAAAgAAAIAgAAAIAAACAAAAgCAAAAgAAAIAAACAIAAACAAAAgAAAIAgAAAIAAAAmACAAEAQAAAEAAABAAAAQBAAAAQAAAEAAABAEAAABAAAAQAAAEAQAAAEAAABAAAAQBAAAAQAAAEAAABAEAAABAAAAEAQAAAEAAABAAAAQAgDhImIFiHh4e1Ws0OkVwu1%2FrBxWIxnU4bTQCgg21ubi4vL9vh%2Fv37IyMjrR9frVYHBgbsFgMuAUHo%2Bvv7jSAAQIjy%2BbwRBAAI8dk%2FmUzaQQCA4BSLRSMEy4fAhKtcLler1cBHuNb9P5ohABAT2Wy2UqnYgWC5BAQgAAAIAAACAIAAACAAAAgAAAIAgAAAIAAACAAAAgCAAAAgAAAIAAACAIAAACAAAAgAAAIAgAAAIAAACAAAAgAgAAAIAAACAIAAACAAAAgAAAIAgAAAIAAACAAAAgCAAAAgAAAIAAACAIAAACAAAAgAAAIAgAAAIAAACAAAAgAgACYgBLlcLpPJ2AEEgBC9evUqmUzaAQSA4ETP%2FhoAAkCgMpnM06dP7QACQIgePnzY399vBxAAQhS9CcjlcnYAASBEz58%2Fd1MQJExAECd6ItHT0%2FP7I4ODg%2Fv7%2B1tbWx36E52dnTUajSsPK%2FziBOBSXc1m0wrE3vHx8Z%2FP9bu7ux8%2FfuzQnyj6cWq12pWHLSwsvH371gnApVwCIlCpVKqjPwmo1%2Bt%2BiQgAXP%2B87%2B7OZrOd%2B%2F03fvF7RADg2qJn%2F6gBXv4jABCWdDqdSqU69%2Fv%2F%2Fv379va23yM350NggrCxsTEzM3P%2B92Qyef7y%2F%2FHjx69fv%2B64n6XF%2B3%2FOuQuIv3AbKEE4Pj6OGnDhwXv37pVKJeMQLJeAAAQAAAEAQAAAEAAABAAAAQBAAAAQAAAEAAABAEAAABAAAAQAAAEAQAAAEAAABAAAAQBAAAAQAAAEAAABAEAAAAQAAAEAQAAAEAAABAAAAQBAAAAQAAAEAAABAEAAABAAAAQAAAEAQAAAEAAABAAAAQBAAAAQAAAEAAABAEAAAATABAACAIAAACAAAAgAAAIAgAAA0IkSJiBYh4eHtVrtLr9iqVTq6en5%2BzFHR0c%2Ffvxo5936%2BvpSqZTzRwCgg21ubg4NDd3lV1xfX78yAHt7e1%2B%2BfGnn3SYnJwuFgvMnBlwCgjsyNjZ25bP%2F%2Bevr6I2CuRAAiI%2FR0dEWj4wCkM%2FnLYYAQBw8ePDg2bNnrR%2F%2F5MmTTCZjNwQAOt709PS1jk8mky9evIj%2BNB23x4fAhKtcLr979%2B5uvlYr9%2F9c%2Bq9OT0%2Fbbbe%2Bvj4njwBAZ8tms5VKpZ2%2Fw%2F%2FQDGidS0AAAgCAAAAgAAAIAAACAIAAACAAAAgAAAIAgAAAIAAACAAAAgCAAAAgAAAIAAACAIAAACAAAAgAAAIAgAAAIAAAAgCAAAAgAAAIAAACAIAAACAAAAgAAAIAgAAAIAAACAAAAgCAAAAgAAAIAAACAIAAACAAAAgAAAIAgAAAIAAAAmACAAEAQAAAEAAABAAAAQBAAAAQAAAEAAABAEAAABAAAAQAAAEAQAAAEAAABAAAAQBAAAAQAAAEAAABAEAAABAAAAEAQAAAEAAABACAmEmYIE4%2BfPhghEvt7Ow8evTowoP5fN4yCAAxefYXgL8olUoCAL9zCSgm6vW6Z39AAIJzcnLy%2Fv17OwACEJyVlZWDgwM7AAIQls%2BfP6%2BtrdkBEICwuPgDCECgFhcXowbYARCAsKyurtbrdTsAAhCWr1%2B%2Fuu8TEIAQLS0tufgD3ERXs9m0AoB3AAAIAAACAIAAACAAAAgAAAIAgAAAIAAACAAAAgCAAAAgAAAIAAACAIAAACAAAAgAAAIAgAAAIAAACAAAAgAgAAAIAAACAIAAACAAAAgAAAIAgAAAIAAACAAAAgCAAAAgAAAIAAACAIAAACAAAAgAAAIAgAAAIAAACAAAAgAgAAAIAAACAIAAACAAAAgAAAIAgAAAIAAACAAAAgCAAAAgAAAIAAACAIAAACAAAAgAAAIAgAAAIAAACAAAAgCAAAAIAAACAIAAACAAAAgAAAIAgAAAIAAACAAAAgCAAAAgAAAIAAACAIAAACAAAAgAAAIAgAAAIAAACAAAAgCAAAAIAAACAIAAACAAAAgAAAIAgAAAIAAACAAAbeunAAMAsvP8Im%2FKPJcAAAAASUVORK5CYII%3D&name=1&owner=1&pattern=Circuit%20Board&pulls=1&stargazers=1&theme=Auto" alt="JEngine" width="640" height="320" />
</p>


<h3 align="center">JEngine</h3>

<p align="center">
The solution that allows unity games update in runtime.
<br>
<a style="text-decoration:none">
<img src="https://img.shields.io/github/license/JasonXuDeveloper/JEngine" alt="license" />
</a>
<a style="text-decoration:none">
<img src="https://img.shields.io/github/last-commit/JasonXuDeveloper/JEngine" alt="last" />
</a>
<a style="text-decoration:none">
<img src="https://img.shields.io/github/issues/JasonXuDeveloper/JEngine" alt="issue" />
</a>
<a style="text-decoration:none">
<img src="https://img.shields.io/github/languages/top/JasonXuDeveloper/JEngine" alt="topLanguage" />
</a>
Expand All @@ -38,110 +30,92 @@
</p>


# JENGINE v0.7.5

**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 hotly.**
# JENGINE v0.8.0

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 (fixes bugs in versions 0.6 and 0.5 at the same time);
**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 ```0.6.x``` branch is currently in use by most commercial projects, <u>complete content, sufficient documentation and videos, and will not be updated or maintained any more</u>;
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, <u>this branch will not be updated or maintained any more</u> (this branch has full documentations but few official tutorial videos);

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

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

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

## How to Download (VERY IMPORTANT)
## Packages

> Because JEngine uses Git's Submodule module to install submodules, downloading the source code of this framework is not recommended to download zip directly from the website. There are currently 3 download methods:
Different built-in and additional packages for JEngine

1. Method 1, download the zip directly, then go to UnityProject/Assets/Dependencies, unzip the zip inside (must do if you download the zip archive)
| Package Name | Description | Type | Link |
| -------------------- | ------------------------------------------------------------ | ---------- | ------------------------------------------------------------ |
| JEngine.Core | Supports hot update in runtime. <br />In addition, it provides secure, high performance features. | Built-in | [JEngine](https://github.com/JasonXuDeveloper/JEngine) |
| JEngine.AntiCheat | Prevents memory hack<br />(i.e. using GameGuardian to dump and modify memory). | Additional | [JEngine.AntiCheat](https://github.com/JasonXuDeveloper/JEngine.AntiCheat) |
| JEngine.Localization | Provides multi-lnguage feature in game. | Additional | [JEngine.Localization](https://github.com/JasonXuDeveloper/JEngine.Localization) |
| JEngine.Misc | Additional miscellaneous features. | Additional | [JEngine.Misc](https://github.com/JasonXuDeveloper/JEngine.Misc) |
| LitJson | Supports JSON serialization/deserialization<br />(as C# objects or JsonData) | Additional | [JEngine.LitJson](https://github.com/JasonXuDeveloper/JEngine.LitJson) |
| Protobuf-net | Supports protobuf serilization/deserialization | Additional | [JEngine.Protobuf-net](https://github.com/JasonXuDeveloper/JEngine.Protobuf-net) |
| MetaJUI | MetaJUI is a UI framework customized for JEngine. Of course, you can also transplant it to your own engineering projects through simple modifications. | Additional | [MetaJUI](https://github.com/Meta404Dev/MetaJUI) |
| MetaExcelDataTool | MetaExcelDataTool is an Excel table guide tool customized for JEngine. Of course, you can also transplant it to your own project through simple modifications. | Additional | [MetaExcelDataTool](https://github.com/Meta404Dev/MetaExcelDataTool) |

1. Method 2, first git clone and then install the submodule

```bash
git clone git@github.com:JasonXuDeveloper/JEngine.git
cd JEngine
git submodule init
git submodule update
````

2. Method 3, install submodules along with git clone (recommended)
## Dependencies

- [ILRuntime](https://github.com/Ourpalm/ILRuntime) v2.1.0 - execute C# code in runtime
- [YooAssets](https://github.com/tuyoogame/YooAsset) v1.4.10 - update resource in runtime
- [Unity-Reorderable-List](https://github.com/cfoulston/Unity-Reorderable-List) v1.0.1 - additional editor inspector tool

```bash
git clone git@github.com:JasonXuDeveloper/JEngine.git --recursive
````

> Note, the github address here can be replaced with a gitee address
>
> If an error is reported when installing the submodule, you need to configure the ssh key of Github (or Gitee)



## Stargazers over time

[![Stargazers over time](https://starchart.cc/JasonXuDeveloper/JEngine.svg)](https://starchart.cc/JasonXuDeveloper/JEngine)

## JEngine Benefits

The purpose of JEngine is to provide **lean, beautiful and efficient** code functions for game developers, and to make game developers **easier to make games**

The **Unity hot update framework** on the market, **no one has a lower learning cost than JEngine**, it is more **difficult to use, and it takes a lot of time to get started , run through the framework**;

And JEngine may take a few minutes to get started quickly, and it can run through the framework in a few hours at most. **No need to pay attention to the bottom layer of any hot updates, Just write the game code and make the game scene**!

### Old Project

For projects that need to transform old projects that do not contain hot updates into hot update projects, JEngine is the best choice.

It usually only takes a few days to get familiar with the framework process. Then, you only need to classify and organize the resources that need to be updated into the corresponding folder. Next, copy the code that needs to be updated into the hot update project. Finally, use MonoBehaviour to hang all the scripts on the Inspector. Re-drag through ClassBind (you can implement a tool yourself to simplify the process).

Under normal circumstances, it only takes about 1 month to access, and 80% of the business code does not need to be modified, 15% of the business code only needs to be optimized, and the last 5% of the business code needs to be modified only in unexpected situations. At the same time, if the project has the habit of dragging MonoBehaviour to GameObject, JEngine's ready-made solution will make you do more with less and make your project easily support hot update!

### New Project

JEngine is very suitable for small and medium-sized projects, especially for independent game developers. The framework is convenient, fast, and powerful. Developers can control it in a short time and master hot update at a very small cost, basically without learning the principle of hot update.

For new projects, you only need to pull a copy of the JEngine source code, then import various plug-ins and SDKs into it, and finally formulate your own project specifications to start making games happily. Unlike other hot update frameworks, JEngine Pay more attention to development efficiency and improve the experience of operating hot update projects in the editor, so the efficiency of development under the editor is far better than other hot update frameworks.

### Summarize

**JEngine** has complete documentation and frequent maintenance. As long as there is an issue, it will usually be resolved within 3 days. At the same time, the underlying hot update source code has been verified by a large number of online projects, so there is no need to worry about quality, performance, efficiency and other issues!

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



## Contributors

<img src="https://contrib.rocks/image?repo=JasonXuDeveloper/JEngine"/>

## v0.7.5 New Features

- **Updated** ILRuntime to v2.1.0
- **Optimized** code register workflow
- **Optimized** JStream buffer strategy
- **Optimized** ClassBind performance and GC
- **Optimized** JEngine Initialize procedure and performance
- **Optimized** LifeCycleMgr performance and GC
- **Optimized** ```FindObjectsOfType``` performance and GC
- **Optimized** JBehaviour performance and GC, removed its dependence to ```MonoBehaviour```
- **Optimized** Loom (Execute Actions on Main Thread) performance and GC, removed its dependence to ```MonoBehaviour```


## 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](CHANGE.md)



## Suggestions
## Recommendations

- [IFramework](https://github.com/OnClick9927/IFramework) - Simple Unity Tools
- [QFramework](https://github.com/liangxiegame/QFramework) - Your first K.I.S.S Unity 3D Framework.
- [TEngine](https://github.com/ALEXTANGXIAO/TEngine ) - Unity框架解决方案
- [MetaJUI](https://github.com/Meta404Dev/MetaJUI) - MetaJUI是为JEngine定制的UI框架,当然你也可以通过很简单的修改,移植到自己的工程项目
- [MetaExcelDataTool](https://github.com/Meta404Dev/MetaExcelDataTool) - MetaExcelDataTool是为JEngine定制的Excel导表工具,当然你也可以通过很简单的修改,移植到自己的工程项目
- [BundleMaster](https://github.com/mister91jiao/BundleMaster) - Unity资源加载大师
- [Nino](https://github.com/JasonXuDeveloper/Nino) - Definitely useful and high performance modules for C# projects, especially for Unity.
Loading

0 comments on commit b053836

Please sign in to comment.