Godot C# Netcode from another galaxy ๐
using Godot;
using Nebula;
namespace MyGame
{
public partial class PlayableCharacter : NetworkNode3D
{
[NetworkProperty]
public int Money { get; set; }
public OnNetworkChangeMoney(int _tick, int oldVal, int newVal)
{
// This is only called on the client-side
GD.Print("I have " + newVal + " money now! Thanks, server.");
}
public override void _NetworkProcess(int _tick)
{
base._NetworkProcess(_tick);
if (NetworkRunner.Instance.IsServer)
{
// This is only called on the server-side
Money += 1;
}
}
}
}- Tick-aligned system
- Single state authority (Dedicated-server model)
- Input authority (cheat prevention)
- Data Interpolation
- Advanced, variable-level Interest management
- Multiple "Worlds" within one Godot server instance
- Rollback / Lag compensation (blocked by Godot #2821)
- Requires Godot.NET (this is a C# library)
- Add Nebula to your "addons"
- Import Nebula in your
.csproj. For example:
<Project Sdk="Godot.NET.Sdk/4.3.0-beta.1">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
<Import Project="addons\Nebula\Nebula.props" />
</Project>- Enable the Nebula plugin in Godot
Better documentation and demo projects are coming soon. In the meantime, feel free to open a ticket with any questions or concerns.
More comprehensive documentation is available here: https://nebula.dev.heavenlode.com
Nebula is a library for developing online multiplayer games with Godot. It is a tick-aligned system, respects input authority, and all state is managed by the server.
This library is still in BETA, therefore it is not quite production-ready and is subject to changes as we approach stability.
If you have questions, comments, or concerns, please feel free to open a ticket.
If you want to contribute code and/or documentation, you're amazing! To maximize your odds of your feature/PR getting merged in, you are encouraged to first open a ticket with your proposal. Once approved, any and all work is very much appreciated.