Moonforge.Core
1.1.0
See the version list below for details.
dotnet add package Moonforge.Core --version 1.1.0
NuGet\Install-Package Moonforge.Core -Version 1.1.0
<PackageReference Include="Moonforge.Core" Version="1.1.0" />
<PackageVersion Include="Moonforge.Core" Version="1.1.0" />
<PackageReference Include="Moonforge.Core" />
paket add Moonforge.Core --version 1.1.0
#r "nuget: Moonforge.Core, 1.1.0"
#:package Moonforge.Core@1.1.0
#addin nuget:?package=Moonforge.Core&version=1.1.0
#tool nuget:?package=Moonforge.Core&version=1.1.0
Moonforge.Core
A deterministic, modular RPG engine for C# projects: combat (with status effects, damage types, a Pokemon-style type effectiveness chart, mid-battle swap, capture, and per-move PP), stats, inventory, dialogue, quests, exploration, loot, encounters, interactables, party rosters, evolution, bestiary, persistence — built around a command/query/reactor pipeline with atomic state mutation.
Target framework: netstandard2.1 (Unity-friendly).
Install
dotnet add package Moonforge.Core
Hello world
using Moonforge.Core;
using Moonforge.Core.Runtime.Commands;
using Moonforge.Core.Runtime.Events;
using Moonforge.Core.Runtime.Formulas;
using Moonforge.Core.Runtime.Random;
using Moonforge.Core.Runtime.Time;
using Moonforge.Core.Economy.Commands;
using Moonforge.Core.Economy.Queries;
GameState gameState = new(); // the single mutable aggregate
InMemoryDomainEventSink sink = new(); // collects events the host can drain
// Bundle the deterministic inputs handlers are allowed to use.
CommandContext context = new(
new Pcg32RandomSource(seed: 1234), // seeded RNG → reproducible results
new SimulationClock(0), // simulated time, starting at minute 0
new NoOpFormulaEvaluator(), // placeholder — returns 0 for every formula
sink); // 4-arg ctor defaults Definitions to the empty catalog
// Create() pre-registers every built-in command handler and reactor.
CommandDispatcher dispatcher = DefaultCommandDispatcher.Create();
// Mutate state only through a command; returns a DomainResult (ignored here).
dispatcher.Dispatch(gameState, new GrantCurrencyCommand("gold", 100), context);
// Read state through a query — instantiate the handler and call Query directly.
long gold = new GetCurrencyBalanceQueryHandler()
.Query(gameState, new GetCurrencyBalanceQuery("gold"));
System.Console.WriteLine($"Gold: {gold}"); // Gold: 100
Why Moonforge
- Deterministic — seeded
IRandomSourceand explicitIGameClock; same inputs always produce the same outputs. Critical for save-resilience, replay, lockstep multiplayer. - Atomic — every command runs inside a snapshot-rollback transaction; failures revert state and discard buffered events.
- Composable — modules integrate via
IDomainEventReactor, never direct calls. - Pluggable — bring your own formula evaluator, custom commands, custom reactors.
Documentation
Full guides, architecture deep-dive, cookbook, and examples are in the repository.
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
- Newtonsoft.Json (>= 13.0.3)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.