Skip to content

Development Gotchas and Common Mistakes

Development Gotchas and Common Mistakes

Lists of things that we expect in your PRs, and common mistakes / things to look out for when developing and testing.

PR Acceptance

  1. Code should follow our Development Standards
  2. Code should compile without new errors or warnings.
  3. PR should be tested in editor (most PRs should be tested hosting in editor and joining in a standalone build).
  4. Any new or changed components should follow the Component Development Checklist
  5. Any new objects / items follow the Creating Items and Objects Guide (especially concerning the use of prefab variants)

Common Issues

  1. Your changes break...
    1. when there's 2 clients (rather than just 1 host player and 1 client). Testing with a local headless server can make this more feasible if your computer can't handle running 3 full instances of the game
    2. when the round restarts (try Networking > Restart Round to quickly restart)
    3. on moving matrices or when matrices rotate
    4. when crossing matrices or engaging with the feature across matrices
  2. You forgot to think about how an object should work when it is in inventory.
  3. You depended on Awake() being called before mirror hooks (SyncVar hooks, OnStartClient, OnStartServer), even though Mirror doesn't guarantee that (this often is the source of NREs). See SyncVar Best Practices
  4. You didn't use syncvars as per our recommendations. See SyncVar Best Practices

Debugging

  1. If you're getting an error spammed in the logs, make sure to check the point where the error spamming begins to see if there's some other error that is triggering the spammed error. Oftentimes the root cause of a spammed error is some other error that only happened once.