Skip to main content
UgCore is open source under the GNU GPL. Issues and pull requests are welcome at github.com/ugcore-project.

Before you start

1

Open or find an issue

Describe the bug or the feature first. Large changes SHOULD be agreed on before you write code.
2

Branch off dev

The default branch is dev. Name branches <type>/<issue>-<short-description>, such as feat/205-character-slot-selection.
3

Follow the conventions

Read Conventions and match the code around your change.
4

Pass both checks

LuaLS strict check with zero problems, and every test suite. See Testing.
5

Open a pull request

The title MUST be a Conventional Commit, such as feat(accounts): add loan accounts. CI checks it.

Design rules that never bend

Clients send intent, never results. Prices, amounts and outcomes are computed on the server.
No NUI, no notifications, no drawing. ug-core returns codes and emits events. UI resources display them.
ug-core and ug-lib never depend on each other. Runtime dependencies are OneSync and oxmysql only.
UgCore is the only global. Private code lives in UgCore.Internal.
Through UgCore.Network or UgCore.Callback, with a schema and a rate limit. No raw RegisterNetEvent.

Versioning

UgCore follows semantic versioning. Breaking changes to exports, config or database schema are MAJOR. Deprecated functions warn for one full MAJOR before removal.