Kenney Starter Kit Racing
Overview
This sample takes the open-source Starter Kit Racing by Kenney and adds online multiplayer with Photon Fusion. Players connect to a shared room, each spawning a vehicle on a separate lane. Vehicle physics are replicated Fusion and use forecast prediction locally on every client.

Download
| Version | Release Date | Download |
|---|---|---|
| 3.0.0 | 3월 27, 2026 | Fusion Godot Starter Kit Racing |
Rolling Sphere Physics
The original Kenney demo uses a clever trick for vehicle physics: instead of simulating individual wheels, each vehicle is a single RigidBody3D with a rolling sphere collider. The visible car model is a child that follows the sphere and aligns itself to the ground via a RayCast3D.

This approach is simple and stable. Steering is applied as angular velocity on the sphere, acceleration as a linear force, and ground alignment is handled by the raycast normal. The result feels like arcade kart racing without any of the complexity of a full wheel-based suspension model.
Key physics settings on the VehicleSphere (RigidBody3D):
| Property | Value | Purpose |
|---|---|---|
| mass | 1000 | Heavy enough for stable ground contact |
| gravity_scale | 1.5 | Snappier landings after jumps |
| angular_damp | 4.0 | Prevents excessive spin after collisions |
| linear_damp | 0.1 | Light air resistance for natural deceleration |
Physics Replication with Forecast Prediction
Each vehicle uses Fusion's forecast replication mode to keep remote vehicles smooth and in sync over the same timing reference. Between network updates, remote clients predict where the vehicle should be using its velocity and small corrections adjust any drift. When the next update arrives, new data can be used to further correct, and so on.
Root node position, rotation, linear velocity and angular velocity are synced automatically by the FusionReplicator in AUTO mode. Besides this, only three other properties are replicated per vehicle:
| Property | Description |
|---|---|
net_input_x |
Steering input (-1 to 1) |
net_input_z |
Throttle/brake input (-1 to 1) |
net_yaw |
Vehicle heading in radians |
This keeps bandwidth minimal - the three custom properties plus the auto-synced physics state give every client enough information to run a smooth local simulation.
Network Setup
The multiplayer integration is minimal by design.
Connecting: A reusable FusionConnectUI widget handles connection and room management.
Players join a room and the UI displays connection status, RTT and local player ID.
Spawning: A FusionSpawner in the main scene spawns a vehicle for each player when they join the room.
Vehicles are positioned in separate lanes based on player_id to avoid spawn collisions.
GDScript
func _on_room_joined():
vehicle = vehicle_spawner.spawn()
vehicle.position = Vector3(player_id * 4.0, 2.0, 0.0)

Authority: Each player has authority over their own vehicle. Only the authority owner reads input and updates the replicated properties. Remote clients receive these values and both run the same physics locally, with forecast smoothing handling any discrepancy.
Controls
| Key | Action |
|---|---|
| W | Accelerate |
| S | Brake / Reverse |
| A | Steer left |
| D | Steer right |
Gamepad is also supported (left stick for steering, triggers for throttle and brake).
3rd Party Assets
- Starter Kit Racing by Kenney under CC0 license and MIT (included in the download).