SetNet.Progression
1.2.0
dotnet add package SetNet.Progression --version 1.2.0
NuGet\Install-Package SetNet.Progression -Version 1.2.0
<PackageReference Include="SetNet.Progression" Version="1.2.0" />
<PackageVersion Include="SetNet.Progression" Version="1.2.0" />
<PackageReference Include="SetNet.Progression" />
paket add SetNet.Progression --version 1.2.0
#r "nuget: SetNet.Progression, 1.2.0"
#:package SetNet.Progression@1.2.0
#addin nuget:?package=SetNet.Progression&version=1.2.0
#tool nuget:?package=SetNet.Progression&version=1.2.0
<p align="center"> <img src="https://raw.githubusercontent.com/Povstalez/SetNet/master/assets/icon.png" alt="SetNet" width="96"> </p>
SetNet.Progression
Server-authoritative levels and XP for SetNet.
Game logic awards XP by player key; the hub applies a configurable level curve (rolling over as many levels as the XP fills at once), fires a LeveledUp event per level so you can hand out rewards, and pushes the new level/XP to the client for the XP bar. Clients read and subscribe but never award themselves anything. Added by composition — no base class.
Install
dotnet add package SetNet
dotnet add package SetNet.Progression
Usage
Call ProgressionRuntime.Enable() once at startup on both ends.
// server
ProgressionRuntime.Enable();
var progression = server.UseProgression(options: new ProgressionOptions
{
XpForLevel = level => 100L * level, // XP to go from `level` to `level+1`
MaxLevel = 60,
});
progression.LeveledUp += (playerKey, newLevel) => GrantLevelReward(playerKey, newLevel);
await progression.GrantXpAsync(playerKey, 250); // may cross several levels
// client
ProgressionRuntime.Enable();
var progression = client.UseProgression();
progression.Changed += s => DrawXpBar(s.Level, s.Xp, s.XpToNext);
var state = await progression.GetAsync();
API
Server: server.UseProgression(IProgressionStore?, ProgressionOptions?) → ProgressionServer — GrantXpAsync, GetAsync, event LeveledUp, KeyOf(peer).
Client: client.UseProgression() → ProgressionClient — GetAsync(), event Changed.
Options: PlayerKey, XpForLevel(level), MaxLevel.
ProgressionRuntime.Enable() — one-time bootstrap.
Notes
- Rides the unified SetNet.Protocol messaging layer on the
Channels.Progressionchannel (all modules share one envelope wire type,65447) — no per-module wire ids to reserve. Serializer-agnostic: the control protocol is hand-framedbyte[], your payloads use yourSetNetSerializer. - Multi-level rollover. A single large XP grant advances as many levels as it fills;
LeveledUpfires once per level. XP is clamped to 0 atMaxLevel. - Rewards live in your handler.
LeveledUpis where you grant items (SetNet.Inventory), currency (SetNet.Wallet), or unlocks — this package only tracks the number. - Stable player key (default = connection id) — override for durable progression, matching your other player-data modules.
Documentation & source
- 🐙 https://github.com/Povstalez/SetNet — full catalog in docs/MODULES.md
License
MIT
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 is compatible. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.1
- SetNet (>= 1.2.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.2.0 | 86 | 8/5/2026 |