Guide for Unity Unreal Godot
Godot

Godot guide

Multiplayer with no server to run and nothing to configure. Pure GDScript — no native library to build. Local mode starts a bundled host when you press Play. Nodes handle connection, input, and server-authoritative motion.

Shipping addons/nulltick  ·  Godot 4.4+  ·  networked mode

There is no Godot SDK download yet. The addon isn't published — no link on this site, no public URL anywhere else. This guide documents the SDK as it ships so you can judge the design now; the install steps below aren't something you can run today. Tell us what you're building and we'll follow up when it's out.

Quickstart

Press Play and you're multiplayer

Networked mode only. The Godot addon always talks to a host (Unity and Unreal also offer an in-process mode). Local mode still means zero terminal setup — the bundled host starts for you on Play.

  1. Add a connection. Add a NullTickConnection node anywhere in the scene. Defaults are right: 127.0.0.1:9999, room 1, Connect On Ready. On Play it starts (or reuses) the bundled local server.

  2. Make the avatar. Under your character's Node3D / CharacterBody3D, add:

    • NullTickPlayerController — Style: FPS, Third-person, Top-down, Click-to-move, or None. Finds the connection, manages a camera, auto-adds jump for FPS/third-person. If no connection is nearby it tells you what to add.
    • NullTickAgent3D — moves the parent to match the server. Place the parent at the spawn point (that origin maps to the server's zero).
  3. Press Play. WASD moves, camera works, motion is server-authoritative.

#1 gotcha — naming. Godot reserves connect / disconnect for signals. Use connect_to_server() and disconnect_from_server(). Everything else reads as you'd guess: join_room, send_chat, get_var, and signals like connected / chat_received / var_changed.

Local mode is Windows zero-setup. The bundled host is a Windows program. On other platforms, use Live against a reachable server.

Install

Enable the addon

  1. Copy addons/nulltick/ into your project.

  2. Keep the bundled server with it: the addon looks for nulltick_host.exe under res://server/, next to the addon, or (exported) next to the game binary.

  3. Enable the plugin: Project > Project Settings > Plugins > enable NullTick. This adds the NullTick dock — a live status/test panel that works even while the game runs out-of-process.

The addon folder is itself an openable Godot project if you want to poke around the demos and tests.

Player

Controllers, movement & facing

The player controller turns real speeds into server input; NullTickAgent3D applies server motion (and optional local rotation when enabled). A player standing still sends no movement. Clients send rates, not coordinates — a client cannot move itself; position is the server's own integral, with no coordinate on the movement wire to forge mid-game.

Demos

See it all working first

Open the NullTick addon project and run the demo scenes:

  • arena.tscn — every feature
  • lastlight.tscn — Last Light (survival)
  • sproutvalley.tscn — Sprout Valley (farming)

Multiplayer

See a second player

Run a second instance on the same computer — both join the same local server and room. Two machines need Live mode via the dashboard, or self-hosting.

You can also use the NullTick dock as a second client from the editor: join the room, chat, refresh the lobby.

Rooms

Rooms & lobby

The connection node owns rooms and lobby: join_room, create_room, request_room_list, plus signals when the list arrives. Rooms isolate visibility; entity ids are unique within a room.

Messages

Chat, RPC & reliable events

Use send_chat and send_event for reliable, in-order messages. Listen on chat_received / event_received.

Rule of thumb: continuous values → NetVars. One-shots (muzzle flash, hit spark) → reliable events, not spawned objects.

Network variables

Health, gold & game state

Create a NullTickVarSchema resource (rows of NullTickVarDef), assign it on the connection's Var Schema field, then read with get_var("health") and the var_changed signal. Server-authoritative; unchanged values send nothing. Keep the same declaration order on every client build.

Spawned objects

Pets, mounts & projectiles

  1. NullTickNetworkObject3D on the spawnable scene (archetype, spawn/despawn, follow-owner).

  2. NullTickObjectSpawner next to the connection with a NullTickArchetypeTable mapping number → scene so remote objects appear automatically.

Signals object_spawned / object_despawned are available if you want custom handling.

Editor tools

The NullTick dock

Godot runs your game out-of-process, so the dock is its own live test client: join or create rooms, chat with running clients, refresh the lobby, watch counters, and use Production settings / Ping Host from edit mode.

Production

Going live

You can't provision a managed server yet. Managed online hosting isn't available, so there is nothing for Live to point at unless you run a host yourself. Local mode works today — the bundled host starts on Play — and that is where testing belongs for now. (Our own showcases, like CapTown in the demos, run on hosts we operate.)

When managed hosting lands: paste a one-time link code from app.nulltick.com into the dock's Production settings — host, App ID, and API key fill Project Settings and res://nulltick_config.tres. App ID ships in the build; API key stays managed-tier.