Veggerby.Boards
0.1.0-prerelease0212
dotnet add package Veggerby.Boards --version 0.1.0-prerelease0212
NuGet\Install-Package Veggerby.Boards -Version 0.1.0-prerelease0212
<PackageReference Include="Veggerby.Boards" Version="0.1.0-prerelease0212" />
<PackageVersion Include="Veggerby.Boards" Version="0.1.0-prerelease0212" />
<PackageReference Include="Veggerby.Boards" />
paket add Veggerby.Boards --version 0.1.0-prerelease0212
#r "nuget: Veggerby.Boards, 0.1.0-prerelease0212"
#:package Veggerby.Boards@0.1.0-prerelease0212
#addin nuget:?package=Veggerby.Boards&version=0.1.0-prerelease0212&prerelease
#tool nuget:?package=Veggerby.Boards&version=0.1.0-prerelease0212&prerelease
Veggerby.Boards
Immutable, deterministic board game engine primitives: artifacts (Board, Tile, Piece, Player, Dice), immutable GameState history chain, declarative events, rules, phases, and safe transition execution.
This is the foundational package. Other domain/game modules (Chess, Go, Backgammon, Checkers, Ludo, Monopoly, Risk, Cards, DeckBuilding) sit on top without extending internal mutable state.
Install
dotnet add package Veggerby.Boards
When To Use
Use this package when you need to:
- Model a turn/phase based board game with deterministic replay
- Express moves as intent (
IGameEvent) separated from validation and mutation - Maintain a full immutable history for branching / analysis / undo
- Compose rules and phases declaratively
If you only need a ready-made game (e.g., Chess) and won't build custom rules, reference the game module package instead (it transitively references Core).
Quick Start
// Build a custom game (example sketch)
var builder = new GameBuilder("my-game");
// builder.AddBoard(...).AddPlayers(...).AddPieces(...).AddRules(...)
var progress = builder.Compile();
// Issue a move event (pseudo—depends on your defined artifacts)
var piece = progress.Game.GetPiece("white-pawn-2");
var from = progress.Game.GetTile("e2");
var to = progress.Game.GetTile("e4");
var pathVisitor = new ResolveTilePathPatternVisitor(progress.Game.Board, from, to);
var updated = progress.HandleEvent(new MovePieceGameEvent(piece, pathVisitor.ResultPath));
Core Concepts
| Concept | Summary |
|---|---|
| Artifact | Immutable identity created only by GameBuilder |
| GameState | Immutable snapshot linked to prior (persistent history) |
| GameProgress | Facade carrying Game + current GameState + handling pipeline |
| IGameEvent | Declarative intention (e.g., move piece, roll dice) |
| Rule | Couples condition evaluation with deterministic mutator |
| Phase | Conditional scope limiting which rules apply |
| Mutator | Pure function returning a new GameState |
Determinism & Purity
- No randomness except through explicit dice artifacts and their state.
- Same event + same state → same result. Always.
- No hidden global or time-based influences.
Validation Pipeline (High Level)
- Submit
IGameEvent - Active phase filters applicable rules
- Rule conditions yield: Valid, Invalid, Ignore, NotApplicable
- First Valid rule's mutator executes producing new
GameState - New
GameProgressreturned (state chained)
Extending
Typical extension points:
- New
IGameEvent+ corresponding mutator & rule - New pattern visitor for movement resolution
- New composite condition types
Keep extensions explicit and side-effect free.
Versioning
Semantic versioning aligned with repository releases. Breaking API changes bump MAJOR.
Roadmap (Selected)
- Decision plan executor (optimized rule dispatch)
- Deterministic timeline hashing
- Movement pattern compilation (DFA)
- Optional bitboard acceleration (game-specific)
Testing
Run the core tests:
cd test/Veggerby.Boards.Tests
dotnet test --filter "FullyQualifiedName~Core"
References
- Documentation Index: See /docs/index.md for full documentation set
- Core Concepts: See /docs/core-concepts.md for detailed concept documentation
- Extensibility Guide: See /docs/extensibility.md for extending the engine
- GameBuilder Guide: See /docs/gamebuilder-guide.md for creating new game modules
Contributing
Issues & PRs: https://github.com/veggerby/Veggerby.Boards
Follow repository contribution guidelines and style rules.
License
MIT License. See repository root LICENSE.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. 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. |
-
net10.0
- Veggerby.Algorithm (>= 1.0.0)
NuGet packages (10)
Showing the top 5 NuGet packages that depend on Veggerby.Boards:
| Package | Downloads |
|---|---|
|
Veggerby.Boards.Backgammon
Backgammon implementation components for Veggerby.Boards built atop the core engine. |
|
|
Veggerby.Boards.Chess
Chess implementation components for Veggerby.Boards built atop the core engine. |
|
|
Veggerby.Boards.Go
Go implementation components for Veggerby.Boards built atop the core engine. |
|
|
Veggerby.Boards.Cards
Cards & Decks module for Veggerby.Boards: deterministic piles, draws, discards, shuffles. |
|
|
Veggerby.Boards.DeckBuilding
Deck-building core scaffolding for Veggerby.Boards: deterministic supply and player zones built on Cards module. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.1.0-prerelease0212 | 98 | 4/13/2026 |
| 0.1.0-prerelease0211 | 96 | 2/8/2026 |
| 0.1.0-prerelease0210 | 88 | 1/26/2026 |
| 0.1.0-prerelease0209 | 85 | 1/12/2026 |
| 0.1.0-prerelease0208 | 86 | 1/11/2026 |
| 0.1.0-prerelease0207 | 82 | 1/11/2026 |
| 0.1.0-prerelease0206 | 96 | 1/11/2026 |
| 0.1.0-prerelease0205 | 98 | 1/10/2026 |
| 0.1.0-prerelease0204 | 85 | 1/9/2026 |
| 0.1.0-prerelease0203 | 89 | 1/9/2026 |
| 0.1.0-prerelease0202 | 90 | 1/9/2026 |
| 0.1.0-prerelease0201 | 91 | 1/8/2026 |
| 0.1.0-prerelease0200 | 93 | 1/8/2026 |
| 0.1.0-prerelease0199 | 90 | 1/7/2026 |
| 0.1.0-prerelease0198 | 84 | 1/6/2026 |
| 0.1.0-prerelease0197 | 95 | 1/6/2026 |
| 0.1.0-prerelease0196 | 95 | 1/6/2026 |
| 0.1.0-prerelease0195 | 97 | 1/5/2026 |
| 0.1.0-prerelease0194 | 105 | 1/4/2026 |
| 0.1.0-prerelease0193 | 273 | 12/17/2025 |