ZeroEngine is the shared Unity codebase I maintain for ZeroGameStudio projects. It is split into Unity Package Manager packages so a game can pull in only the systems it needs.
Most of these packages came out of production work on POB: runtime helpers, editor tooling, data systems, save logic, UI, analytics, and 2D platform navigation. The repository is kept public so those reusable pieces can be used and tested outside a single game project.
Unity projects tend to accumulate the same glue code over time: singleton and event helpers, pooled runtime objects, save data, quests, platform navigation, UI panels, editor data browsers, and debugging tools. Keeping these systems in packages makes it easier to reuse them across projects and to test them without mixing in game-specific content.
| Package | Purpose |
|---|---|
com.zerogamestudio.zeroengine.core |
Core helpers, logging, pooling, singleton patterns, and performance utilities. |
com.zerogamestudio.zeroengine.data |
Data and stat systems for game configuration and runtime values. |
com.zerogamestudio.zeroengine.data-toolkit |
Editor tooling for browsing, inspecting, and validating project data assets. |
com.zerogamestudio.zeroengine.gameplay |
Reusable gameplay mechanics and trigger helpers. |
com.zerogamestudio.zeroengine.narrative |
Quest and narrative runtime services. |
com.zerogamestudio.zeroengine.pathfinding2d |
2D platform navigation, graph generation, jump links, route costs, and diagnostics. |
com.zerogamestudio.zeroengine.persistence |
Save and persistence infrastructure. |
com.zerogamestudio.zeroengine.ui |
Runtime UI framework and toast notification systems. |
com.zerogamestudio.analytics |
Self-hostable analytics and bug feedback SDK. |
There are also packages for AI, audio, combat, economy, input, localization, network, RPG, social, world, and editor dashboard systems.
Add packages through Unity Package Manager using a Git URL with the package path you need:
https://github.com/liuzqk/zeroengine.git?path=com.zerogamestudio.zeroengine.core#main
For example, a project Packages/manifest.json can pin several packages:
{
"dependencies": {
"com.zerogamestudio.zeroengine.core": "https://github.com/liuzqk/zeroengine.git?path=com.zerogamestudio.zeroengine.core#main",
"com.zerogamestudio.zeroengine.pathfinding2d": "https://github.com/liuzqk/zeroengine.git?path=com.zerogamestudio.zeroengine.pathfinding2d#main",
"com.zerogamestudio.zeroengine.ui": "https://github.com/liuzqk/zeroengine.git?path=com.zerogamestudio.zeroengine.ui#main"
}
}For production work I usually pin a tested commit hash instead of #main.
Each top-level com.zerogamestudio.* directory is a UPM package. Most packages
follow the same structure:
com.zerogamestudio.zeroengine.<module>/
Runtime/
Editor/
Tests/
Samples~/
package.json
README.md
Not every package has every folder; small runtime-only packages stay minimal.
The repository includes a GitHub Actions workflow that builds a temporary Unity project and runs EditMode tests through GameCI.
For local work, open a Unity 2022.3 project that references the package under test, then run the relevant EditMode tests from Unity Test Runner. Keep new tests narrow and package-scoped.
- Use GitHub issues for reproducible bugs and focused feature requests.
- See SUPPORT.md for the information maintainers need.
- See SECURITY.md for private security reporting guidance.
POB depends on multiple ZeroEngine packages, including analytics, core, data, data-toolkit, economy, gameplay, narrative, pathfinding2d, persistence, and UI. That is the main production feedback loop for this repository.
See CONTRIBUTING.md before opening issues or pull requests. Small, tested fixes are preferred over broad rewrites.
ZeroEngine is available under the MIT License.