Quick answer: Error codes that change between releases break support workflows. A stable code scheme (category.subsystem.code) lets support documentation outlive any single release.

Players Google your error code. If the code changes between versions, your docs and forum threads become useless.

Three-part code

Format: NET.MM.0042 = Network.Matchmaker.error 42. Categories are stable; subsystems rarely change; specific codes append-only.

Reserve ranges

0001-0999 for network, 1000-1999 for storage, etc. Adding a new subsystem opens a new range; old codes stay valid.

Append-only

Codes are never reused. A deprecated code stays deprecated; the documentation explains why.

Per-code documentation

One docs page per code. URL pattern: /errors/NET.MM.0042. Support links directly; SEO accumulates.

“Error codes are an API. Stable APIs build trust over time.”

Audit your error codes for the next release. Renumbering is painful; keeping them stable forever is the reward for one careful audit.

Related reading