Lyo.Story
3.0.0
dotnet add package Lyo.Story --version 3.0.0
NuGet\Install-Package Lyo.Story -Version 3.0.0
<PackageReference Include="Lyo.Story" Version="3.0.0" />
<PackageVersion Include="Lyo.Story" Version="3.0.0" />
<PackageReference Include="Lyo.Story" />
paket add Lyo.Story --version 3.0.0
#r "nuget: Lyo.Story, 3.0.0"
#:package Lyo.Story@3.0.0
#addin nuget:?package=Lyo.Story&version=3.0.0
#tool nuget:?package=Lyo.Story&version=3.0.0
Lyo.Story
Domain contracts for a quest-style play graph. The system of record is nodes, choices, named actions, and trigger/condition/response reactions. Presentation (text, cutscene, or
none) is optional on a node. Scenes are optional groups, not the play cursor. Conditions persist as Lyo.Query WhereClause trees (var.* / chose.* / visited.* field prefixes)
and are evaluated by StoryPlayEngine against the play bag — not WhereClauseEvaluator. Consequence tracking is the play log (CausedByEventId), not an authoring table.
Persistence facade is IStoryStore.
Features
- Play graph.
Storywith nodes, optional scenes, declared variables, named actions, choices, and ambient reactions. - Builders.
StoryBuilderwithWhenAll/WhenOneOfand.Doresponse lists.StorySamples.TheHeist()is the canonical sample. - Engine.
StoryPlayEngineis pure: start, available moves, take choice, advance, get causes. No EF. - Query conditions. Reuses
WhereClause/GroupClause(And = All, Or = OneOf). Story sugar (Flag,Chose,Visited) emits those nodes. - Tenancy.
Story.TenantIdandStory.GameKeyscope a graph to a tenant and a game.IStoryStore.ListStoriesAsync(tenantId, gameKey)lists headers ordered by title; a null tenant lists only stories with no tenant. Slugs stay globally unique.
Examples
Author a graph
var story = StoryBuilder.New("The Heist")
.Slug("the-heist")
.Variable("alarm", StoryVariableType.Boolean, false)
.StartNode("vault_door", n => n
.Choice("smash", c => c.Do(d => d.Set("alarm", true).GoesTo("guards"))))
.Node("guards", n => n.Ending())
.Build();
What is deliberately not here
- Authorization / tenancy.
- Playing cutscene media. Store
MediaRefand compose with FileStorage. - Favorites, tags, ratings. Attach via
EntityRefandStoryEntityTypesat the host. - Characters, inventory, locations.
Layering map
| Assembly | Responsibility |
|---|---|
Lyo.Story (this) |
POCOs, builders, StoryPlayEngine, IStoryStore (netstandard2.0;net10.0). Text MIME defaults use MimeTypeInfo. |
Lyo.Story.Models |
Req/Res pairs and route constants. No StoryQuery. |
Lyo.Story.Postgres |
EF StoryDbContext schema story, PostgresStoryStore, StoryLyoMapper, AddLyoCrudServices. |
Lyo.Story.Api |
AddStoryApi + BuildStoryGroup (Req/Res CRUD, Query, graph, play). |
Lyo.Story.Client |
Typed HTTP client for graph and play. Query stays on IApiClient. |
Lyo.Story.Web.Components |
Blazor story builder: library, computed graph, editors, and play. The host registers IStoryClient. |
Dependencies
Generated from ProjectReference / PackageReference (same model as docs/Lyo.ProjectGraph.html).
Lyo.Common.Metadata(direct, lyo)Lyo.Exceptions(direct, lyo)Lyo.Query.Models(direct, lyo)Lyo.Common.Core(transitive, lyo)Lyo.Json(transitive, lyo)Lyo.Parameters(transitive, lyo)Microsoft.Bcl.AsyncInterfaces10.0.5(transitive, microsoft, netstandard2.0)System.Memory4.6.3(transitive, microsoft, netstandard2.0)System.Text.Encoding.CodePages10.0.5(transitive, microsoft)System.Text.Json10.0.5(transitive, microsoft, netstandard2.0)
| 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 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. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. 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.0
- Lyo.Common.Metadata (>= 3.0.0)
- Lyo.Exceptions (>= 3.0.0)
- Lyo.Query.Models (>= 3.0.0)
-
net10.0
- Lyo.Common.Metadata (>= 3.0.0)
- Lyo.Exceptions (>= 3.0.0)
- Lyo.Query.Models (>= 3.0.0)
NuGet packages (6)
Showing the top 5 NuGet packages that depend on Lyo.Story:
| Package | Downloads |
|---|---|
|
Lyo.Story.Models
Request and response DTOs and route constants for the Lyo Story API. |
|
|
Lyo.Story.Postgres
PostgreSQL implementation of Lyo.Story using Entity Framework Core. Stores play graphs, optional presentation, and playthrough logs. |
|
|
Lyo.Story.Client
HTTP client for the Lyo Story API: graph save and load, delete, and play. |
|
|
Lyo.Story.Api
HTTP API surface for Lyo Story: graph CRUD, playthrough play routes, and aggregate graph save. |
|
|
Lyo.Story.Sqlite
Local SQLite storage for Lyo.Story (EF Core): the same story graph and playthrough tables as the Postgres store, for offline desktop games and tools. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 3.0.0 | 157 | 10/23/2026 |