qnce-engine 1.2.1 → 1.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/package.json +2 -2
- package/docs/branching/PDM.md +0 -443
- package/docs/branching/RELEASE-v1.2.0.md +0 -169
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
**Quantum Narrative Convergence Engine** - A framework-agnostic TypeScript library for creating interactive narrative experiences with quantum-inspired mechanics.
|
|
4
4
|
|
|
5
|
-
> **🚀
|
|
5
|
+
> **🚀 Latest v1.2.2:** Complete state persistence, advanced branching with AI integration, autosave & undo/redo system, conditional choice display, and comprehensive UI components with React integration.
|
|
6
6
|
|
|
7
7
|
[](https://badge.fury.io/js/qnce-engine)
|
|
8
8
|
[](https://www.typescriptlang.org/)
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
- **Collapse:** Player choices "collapse" the narrative to a specific path, updating state and flags
|
|
15
15
|
- **Entanglement:** Early decisions affect later outcomes, enabling complex, interconnected stories
|
|
16
16
|
|
|
17
|
-
## ✨
|
|
17
|
+
## ✨ Current Features (v1.2.2)
|
|
18
18
|
|
|
19
19
|
### 💾 State Persistence & Checkpoints
|
|
20
20
|
- **Complete save/load system** with data integrity validation
|
|
@@ -348,7 +348,7 @@ console.log('Restored to checkpoint:', engine.getCurrentNode().text);
|
|
|
348
348
|
|
|
349
349
|
### 🔄 Autosave & Undo/Redo System
|
|
350
350
|
|
|
351
|
-
QNCE Engine v1.2.
|
|
351
|
+
QNCE Engine v1.2.2 introduces an advanced autosave and undo/redo system that automatically tracks state changes and provides instant rollback capabilities with sub-millisecond performance.
|
|
352
352
|
|
|
353
353
|
**Key Features:**
|
|
354
354
|
- **Automatic State Tracking:** Intelligently captures state snapshots on key events (choice selection, flag changes, state loading)
|
|
@@ -677,7 +677,7 @@ Features:
|
|
|
677
677
|
|
|
678
678
|
### qnce-perf
|
|
679
679
|
|
|
680
|
-
**
|
|
680
|
+
**Current in v1.2.2:** Real-time performance monitoring and analytics:
|
|
681
681
|
|
|
682
682
|
```bash
|
|
683
683
|
# Launch interactive performance dashboard
|
|
@@ -990,7 +990,7 @@ The repository includes comprehensive examples demonstrating all features:
|
|
|
990
990
|
- **Features:** Complex narrative flows, conditional branching, analytics
|
|
991
991
|
- **Story:** "The Mysterious Library" - Interactive mystery with multiple paths
|
|
992
992
|
|
|
993
|
-
### 💾 Autosave & Undo Demo (
|
|
993
|
+
### 💾 Autosave & Undo Demo (Available in v1.2.2)
|
|
994
994
|
- **File:** `examples/autosave-undo-demo.ts`
|
|
995
995
|
- **Features:** Autosave, undo/redo, performance monitoring, state management
|
|
996
996
|
- **Run:** `npm run demo:autosave`
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "qnce-engine",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.3",
|
|
4
4
|
"description": "Core QNCE (Quantum Narrative Convergence Engine) - Framework agnostic narrative engine with performance optimization",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"choice-based",
|
|
34
34
|
"typescript"
|
|
35
35
|
],
|
|
36
|
-
"author": "
|
|
36
|
+
"author": "QNCE Development Team",
|
|
37
37
|
"license": "MIT",
|
|
38
38
|
"repository": {
|
|
39
39
|
"type": "git",
|
package/docs/branching/PDM.md
DELETED
|
@@ -1,443 +0,0 @@
|
|
|
1
|
-
# QNCE Branching System - Platform Data Model (PDM) Specification
|
|
2
|
-
|
|
3
|
-
**Sprint #3 - Advanced Narrative & AI Integration**
|
|
4
|
-
**Version:** 1.0.0
|
|
5
|
-
**Date:** July 2, 2025
|
|
6
|
-
**Owner:** Body (VS Code Agent)
|
|
7
|
-
**Reviewers:** Brain (Copilot), ByteSower (Bull)
|
|
8
|
-
|
|
9
|
-
## Table of Contents
|
|
10
|
-
|
|
11
|
-
1. [Overview](#overview)
|
|
12
|
-
2. [Design Principles](#design-principles)
|
|
13
|
-
3. [Entity Definitions](#entity-definitions)
|
|
14
|
-
4. [Data Relationships](#data-relationships)
|
|
15
|
-
5. [Performance Considerations](#performance-considerations)
|
|
16
|
-
6. [AI Integration Points](#ai-integration-points)
|
|
17
|
-
7. [Usage Examples](#usage-examples)
|
|
18
|
-
8. [Migration Guide](#migration-guide)
|
|
19
|
-
|
|
20
|
-
## Overview
|
|
21
|
-
|
|
22
|
-
The QNCE Branching System PDM defines the data structures and relationships needed to support dynamic narrative branching, AI-driven content generation, and real-time story modification. Built on Sprint #2's performance infrastructure, this PDM enables complex, interconnected narratives with enterprise-grade performance.
|
|
23
|
-
|
|
24
|
-
### Key Capabilities
|
|
25
|
-
|
|
26
|
-
- **Dynamic Branching**: Runtime insertion, removal, and modification of narrative paths
|
|
27
|
-
- **AI Integration**: Rich context for procedural dialogue and content generation
|
|
28
|
-
- **Performance Optimization**: Built on object pooling and profiling infrastructure
|
|
29
|
-
- **Analytics Support**: Comprehensive tracking of player behavior and story flow
|
|
30
|
-
- **Modular Design**: Clean separation of concerns for maintainable code
|
|
31
|
-
|
|
32
|
-
## Design Principles
|
|
33
|
-
|
|
34
|
-
### 1. Performance-First Architecture
|
|
35
|
-
- All entities support object pooling from Sprint #2
|
|
36
|
-
- Minimal memory allocations during runtime
|
|
37
|
-
- Efficient data structures for frequent operations
|
|
38
|
-
- Background processing for analytics and caching
|
|
39
|
-
|
|
40
|
-
### 2. AI Integration Ready
|
|
41
|
-
- Rich context interfaces for AI systems
|
|
42
|
-
- Extensible generation hints and constraints
|
|
43
|
-
- Player profiling for personalized experiences
|
|
44
|
-
- Content quality tracking and feedback loops
|
|
45
|
-
|
|
46
|
-
### 3. Developer Experience
|
|
47
|
-
- Clear entity hierarchies and relationships
|
|
48
|
-
- Type-safe interfaces with comprehensive documentation
|
|
49
|
-
- Debugging-friendly data structures
|
|
50
|
-
- Migration paths from existing story formats
|
|
51
|
-
|
|
52
|
-
### 4. Scalability & Modularity
|
|
53
|
-
- Support for large, complex narratives
|
|
54
|
-
- Chapter-based organization for memory efficiency
|
|
55
|
-
- Dynamic loading and unloading of story content
|
|
56
|
-
- Plugin architecture for custom branching logic
|
|
57
|
-
|
|
58
|
-
## Entity Definitions
|
|
59
|
-
|
|
60
|
-
### Core Story Structure
|
|
61
|
-
|
|
62
|
-
#### QNCEStory
|
|
63
|
-
Top-level container for all narrative content with branching metadata.
|
|
64
|
-
|
|
65
|
-
```typescript
|
|
66
|
-
interface QNCEStory {
|
|
67
|
-
id: string; // Unique story identifier
|
|
68
|
-
title: string; // Human-readable story title
|
|
69
|
-
version: string; // Semantic version (e.g., "1.2.3")
|
|
70
|
-
metadata: StoryMetadata; // Author, description, creation info
|
|
71
|
-
chapters: Chapter[]; // Ordered list of story chapters
|
|
72
|
-
branchingConfig: BranchingConfig; // Performance and behavior settings
|
|
73
|
-
}
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
**Key Features:**
|
|
77
|
-
- Versioning support for iterative development
|
|
78
|
-
- Configurable branching behavior per story
|
|
79
|
-
- Metadata for discovery and organization
|
|
80
|
-
|
|
81
|
-
#### Chapter
|
|
82
|
-
Logical grouping of narrative flows with branching points.
|
|
83
|
-
|
|
84
|
-
```typescript
|
|
85
|
-
interface Chapter {
|
|
86
|
-
id: string; // Unique chapter identifier
|
|
87
|
-
title: string; // Chapter title for navigation
|
|
88
|
-
description?: string; // Optional chapter summary
|
|
89
|
-
flows: NarrativeFlow[]; // Available narrative flows
|
|
90
|
-
branches: BranchPoint[]; // Dynamic branching logic
|
|
91
|
-
prerequisites?: ChapterPrerequisites; // Access requirements
|
|
92
|
-
metadata: ChapterMetadata; // Difficulty, themes, duration
|
|
93
|
-
}
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
**Key Features:**
|
|
97
|
-
- Prerequisites for gated content progression
|
|
98
|
-
- Metadata for AI-driven content selection
|
|
99
|
-
- Flexible flow organization
|
|
100
|
-
|
|
101
|
-
#### NarrativeFlow
|
|
102
|
-
Sequence of connected nodes with defined entry/exit points.
|
|
103
|
-
|
|
104
|
-
```typescript
|
|
105
|
-
interface NarrativeFlow {
|
|
106
|
-
id: string; // Unique flow identifier
|
|
107
|
-
name: string; // Flow name for debugging
|
|
108
|
-
description?: string; // Optional flow summary
|
|
109
|
-
nodes: NarrativeNode[]; // Ordered narrative nodes
|
|
110
|
-
entryPoints: FlowEntryPoint[]; // Ways to enter this flow
|
|
111
|
-
exitPoints: FlowExitPoint[]; // Ways to exit this flow
|
|
112
|
-
flowType: FlowType; // 'linear' | 'branching' | 'conditional' | 'procedural'
|
|
113
|
-
metadata: FlowMetadata; // Complexity, timing, AI flags
|
|
114
|
-
}
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
**Key Features:**
|
|
118
|
-
- Multiple entry/exit points for complex branching
|
|
119
|
-
- Type classification for AI optimization
|
|
120
|
-
- Performance metadata for analytics
|
|
121
|
-
|
|
122
|
-
### Branching Logic
|
|
123
|
-
|
|
124
|
-
#### BranchPoint
|
|
125
|
-
Dynamic branching logic between flows with runtime modification support.
|
|
126
|
-
|
|
127
|
-
```typescript
|
|
128
|
-
interface BranchPoint {
|
|
129
|
-
id: string; // Unique branch identifier
|
|
130
|
-
name: string; // Branch name for debugging
|
|
131
|
-
sourceFlowId: string; // Origin flow
|
|
132
|
-
sourceNodeId: string; // Specific trigger node
|
|
133
|
-
branchOptions: BranchOption[]; // Available branch paths
|
|
134
|
-
branchType: BranchType; // How branching is determined
|
|
135
|
-
conditions?: BranchCondition[]; // Global branch conditions
|
|
136
|
-
metadata: BranchMetadata; // Usage analytics and preferences
|
|
137
|
-
}
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
**Key Features:**
|
|
141
|
-
- Multiple branching strategies (choice, flag, time, procedural)
|
|
142
|
-
- Runtime condition evaluation
|
|
143
|
-
- Analytics for optimization
|
|
144
|
-
|
|
145
|
-
#### BranchOption
|
|
146
|
-
Individual branching path with conditions and effects.
|
|
147
|
-
|
|
148
|
-
```typescript
|
|
149
|
-
interface BranchOption {
|
|
150
|
-
id: string; // Unique option identifier
|
|
151
|
-
targetFlowId: string; // Destination flow
|
|
152
|
-
targetNodeId?: string; // Specific entry point (optional)
|
|
153
|
-
displayText: string; // Player-facing text
|
|
154
|
-
conditions?: BranchCondition[]; // Availability conditions
|
|
155
|
-
flagEffects?: Record<string, unknown>; // State changes
|
|
156
|
-
weight: number; // For procedural selection
|
|
157
|
-
}
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
### Runtime Context
|
|
161
|
-
|
|
162
|
-
#### BranchContext
|
|
163
|
-
Complete runtime state for branch evaluation and tracking.
|
|
164
|
-
|
|
165
|
-
```typescript
|
|
166
|
-
interface BranchContext {
|
|
167
|
-
currentStory: QNCEStory; // Active story
|
|
168
|
-
currentChapter: Chapter; // Current chapter
|
|
169
|
-
currentFlow: NarrativeFlow; // Active flow
|
|
170
|
-
activeState: QNCEState; // Engine state
|
|
171
|
-
branchHistory: BranchHistoryEntry[]; // Decision history
|
|
172
|
-
pendingBranches: PendingBranch[]; // Deferred branches
|
|
173
|
-
analytics: BranchAnalytics; // Performance metrics
|
|
174
|
-
}
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
**Key Features:**
|
|
178
|
-
- Complete context for AI decision making
|
|
179
|
-
- History tracking for complex narrative dependencies
|
|
180
|
-
- Real-time analytics collection
|
|
181
|
-
|
|
182
|
-
## Data Relationships
|
|
183
|
-
|
|
184
|
-
### Hierarchical Structure
|
|
185
|
-
```
|
|
186
|
-
QNCEStory
|
|
187
|
-
├── Chapter (1..*)
|
|
188
|
-
│ ├── NarrativeFlow (1..*)
|
|
189
|
-
│ │ ├── NarrativeNode (1..*)
|
|
190
|
-
│ │ ├── FlowEntryPoint (0..*)
|
|
191
|
-
│ │ └── FlowExitPoint (0..*)
|
|
192
|
-
│ └── BranchPoint (0..*)
|
|
193
|
-
│ └── BranchOption (1..*)
|
|
194
|
-
└── BranchingConfig
|
|
195
|
-
```
|
|
196
|
-
|
|
197
|
-
### Cross-References
|
|
198
|
-
- **BranchPoint.sourceFlowId** → **NarrativeFlow.id**
|
|
199
|
-
- **BranchOption.targetFlowId** → **NarrativeFlow.id**
|
|
200
|
-
- **FlowEntryPoint.nodeId** → **NarrativeNode.id**
|
|
201
|
-
- **FlowExitPoint.nodeId** → **NarrativeNode.id**
|
|
202
|
-
|
|
203
|
-
### Runtime Associations
|
|
204
|
-
- **BranchContext** maintains references to active entities
|
|
205
|
-
- **BranchHistory** links to **BranchPoint** and **BranchOption**
|
|
206
|
-
- **PendingBranch** references **BranchPoint** for deferred execution
|
|
207
|
-
|
|
208
|
-
## Performance Considerations
|
|
209
|
-
|
|
210
|
-
### Object Pooling Integration
|
|
211
|
-
|
|
212
|
-
All frequently-created entities support object pooling:
|
|
213
|
-
|
|
214
|
-
```typescript
|
|
215
|
-
interface PooledBranchContext extends BranchContext {
|
|
216
|
-
poolId: string; // Pool identifier
|
|
217
|
-
acquisitionTime: number; // Performance tracking
|
|
218
|
-
maxLifetime: number; // Auto-cleanup threshold
|
|
219
|
-
}
|
|
220
|
-
```
|
|
221
|
-
|
|
222
|
-
### Memory Management
|
|
223
|
-
|
|
224
|
-
- **Chapter-based loading**: Only active chapters kept in memory
|
|
225
|
-
- **Flow caching**: LRU cache for recently accessed flows
|
|
226
|
-
- **Branch pruning**: Remove unused branches after timeout
|
|
227
|
-
- **Analytics batching**: Batch analytics writes to reduce overhead
|
|
228
|
-
|
|
229
|
-
### Performance Targets
|
|
230
|
-
|
|
231
|
-
| Operation | Target | Measurement |
|
|
232
|
-
|-----------|--------|-------------|
|
|
233
|
-
| Branch evaluation | <5ms | 95th percentile |
|
|
234
|
-
| Flow transition | <10ms | Average |
|
|
235
|
-
| Dynamic insertion | <20ms | 95th percentile |
|
|
236
|
-
| Analytics update | <1ms | Average |
|
|
237
|
-
|
|
238
|
-
## AI Integration Points
|
|
239
|
-
|
|
240
|
-
### Content Generation Context
|
|
241
|
-
|
|
242
|
-
The PDM provides rich context for AI systems:
|
|
243
|
-
|
|
244
|
-
```typescript
|
|
245
|
-
interface AIBranchingContext {
|
|
246
|
-
playerProfile: PlayerProfile; // Behavioral patterns
|
|
247
|
-
narrativeContext: NarrativeContext; // Story state
|
|
248
|
-
generationHints: AIGenerationHints; // Constraints
|
|
249
|
-
}
|
|
250
|
-
```
|
|
251
|
-
|
|
252
|
-
### Player Profiling
|
|
253
|
-
|
|
254
|
-
```typescript
|
|
255
|
-
interface PlayerProfile {
|
|
256
|
-
playStyle: 'explorer' | 'achiever' | 'socializer' | 'killer';
|
|
257
|
-
preferences: Record<string, number>; // Weighted preferences
|
|
258
|
-
historicalChoices: string[]; // Past decisions
|
|
259
|
-
averageDecisionTime: number; // Behavioral metric
|
|
260
|
-
}
|
|
261
|
-
```
|
|
262
|
-
|
|
263
|
-
### Dynamic Content Integration
|
|
264
|
-
|
|
265
|
-
- **Procedural flows**: AI-generated narrative sequences
|
|
266
|
-
- **Dynamic options**: Context-aware branch generation
|
|
267
|
-
- **Adaptive difficulty**: AI-driven complexity adjustment
|
|
268
|
-
- **Content quality**: Feedback loops for improvement
|
|
269
|
-
|
|
270
|
-
## Usage Examples
|
|
271
|
-
|
|
272
|
-
### 1. Basic Story Structure
|
|
273
|
-
|
|
274
|
-
```typescript
|
|
275
|
-
const story: QNCEStory = {
|
|
276
|
-
id: "cyberpunk-heist",
|
|
277
|
-
title: "Neon Shadows",
|
|
278
|
-
version: "1.0.0",
|
|
279
|
-
metadata: {
|
|
280
|
-
author: "ByteSower",
|
|
281
|
-
description: "A cyberpunk heist story with AI companions",
|
|
282
|
-
tags: ["cyberpunk", "heist", "ai"],
|
|
283
|
-
createDate: new Date("2025-07-01"),
|
|
284
|
-
lastModified: new Date("2025-07-02"),
|
|
285
|
-
estimatedPlaytime: 45
|
|
286
|
-
},
|
|
287
|
-
chapters: [
|
|
288
|
-
{
|
|
289
|
-
id: "chapter-1-planning",
|
|
290
|
-
title: "The Planning Phase",
|
|
291
|
-
flows: [
|
|
292
|
-
{
|
|
293
|
-
id: "flow-intro",
|
|
294
|
-
name: "Introduction",
|
|
295
|
-
nodes: [/* ... */],
|
|
296
|
-
entryPoints: [{ id: "start", nodeId: "intro-1", priority: 1 }],
|
|
297
|
-
exitPoints: [{ id: "to-team", nodeId: "intro-final" }],
|
|
298
|
-
flowType: "linear",
|
|
299
|
-
metadata: { complexity: 2, avgCompletionTime: 300000 }
|
|
300
|
-
}
|
|
301
|
-
],
|
|
302
|
-
branches: [
|
|
303
|
-
{
|
|
304
|
-
id: "team-selection",
|
|
305
|
-
name: "Choose Your Team",
|
|
306
|
-
sourceFlowId: "flow-intro",
|
|
307
|
-
sourceNodeId: "intro-final",
|
|
308
|
-
branchType: "choice-driven",
|
|
309
|
-
branchOptions: [
|
|
310
|
-
{
|
|
311
|
-
id: "tech-specialist",
|
|
312
|
-
targetFlowId: "flow-tech-path",
|
|
313
|
-
displayText: "Recruit the tech specialist",
|
|
314
|
-
weight: 1.0
|
|
315
|
-
},
|
|
316
|
-
{
|
|
317
|
-
id: "social-engineer",
|
|
318
|
-
targetFlowId: "flow-social-path",
|
|
319
|
-
displayText: "Recruit the social engineer",
|
|
320
|
-
weight: 1.0
|
|
321
|
-
}
|
|
322
|
-
],
|
|
323
|
-
metadata: { usageCount: 0, avgTraversalTime: 0 }
|
|
324
|
-
}
|
|
325
|
-
],
|
|
326
|
-
metadata: { difficulty: "medium", themes: ["planning"] }
|
|
327
|
-
}
|
|
328
|
-
],
|
|
329
|
-
branchingConfig: {
|
|
330
|
-
maxActiveBranches: 10,
|
|
331
|
-
branchCacheSize: 50,
|
|
332
|
-
enableDynamicInsertion: true,
|
|
333
|
-
enableAnalytics: true,
|
|
334
|
-
performanceMode: true
|
|
335
|
-
}
|
|
336
|
-
};
|
|
337
|
-
```
|
|
338
|
-
|
|
339
|
-
### 2. Dynamic Branch Insertion
|
|
340
|
-
|
|
341
|
-
```typescript
|
|
342
|
-
const dynamicBranch: DynamicBranchOperation = {
|
|
343
|
-
type: "insert",
|
|
344
|
-
branchId: "emergency-exit",
|
|
345
|
-
targetLocation: {
|
|
346
|
-
chapterId: "chapter-1-planning",
|
|
347
|
-
flowId: "flow-tech-path",
|
|
348
|
-
nodeId: "tech-decision-point",
|
|
349
|
-
insertionPoint: "after"
|
|
350
|
-
},
|
|
351
|
-
payload: {
|
|
352
|
-
id: "emergency-exit",
|
|
353
|
-
name: "Emergency Exit Option",
|
|
354
|
-
sourceFlowId: "flow-tech-path",
|
|
355
|
-
sourceNodeId: "tech-decision-point",
|
|
356
|
-
branchType: "conditional",
|
|
357
|
-
branchOptions: [{
|
|
358
|
-
id: "abort-mission",
|
|
359
|
-
targetFlowId: "flow-abort-sequence",
|
|
360
|
-
displayText: "Abort the mission",
|
|
361
|
-
conditions: [
|
|
362
|
-
{ type: "flag", operator: "equals", key: "danger_level", value: "high" }
|
|
363
|
-
],
|
|
364
|
-
weight: 0.5
|
|
365
|
-
}]
|
|
366
|
-
},
|
|
367
|
-
conditions: [
|
|
368
|
-
{ type: "flag", operator: "greater", key: "tension", value: 0.8 }
|
|
369
|
-
]
|
|
370
|
-
};
|
|
371
|
-
```
|
|
372
|
-
|
|
373
|
-
### 3. AI-Driven Content Generation
|
|
374
|
-
|
|
375
|
-
```typescript
|
|
376
|
-
const aiContext: AIBranchingContext = {
|
|
377
|
-
playerProfile: {
|
|
378
|
-
playStyle: "explorer",
|
|
379
|
-
preferences: { "dialogue": 0.8, "action": 0.3, "puzzle": 0.6 },
|
|
380
|
-
historicalChoices: ["investigate", "ask-questions", "explore-optional"],
|
|
381
|
-
averageDecisionTime: 12000
|
|
382
|
-
},
|
|
383
|
-
narrativeContext: {
|
|
384
|
-
currentTone: "mysterious",
|
|
385
|
-
thematicElements: ["betrayal", "discovery", "technology"],
|
|
386
|
-
characterRelationships: { "ally-1": 0.7, "mentor": 0.9 },
|
|
387
|
-
plotTension: 0.6
|
|
388
|
-
},
|
|
389
|
-
generationHints: {
|
|
390
|
-
maxBranchDepth: 3,
|
|
391
|
-
desiredComplexity: 7,
|
|
392
|
-
contentThemes: ["investigation", "character-development"],
|
|
393
|
-
avoidElements: ["violence", "time-pressure"]
|
|
394
|
-
}
|
|
395
|
-
};
|
|
396
|
-
```
|
|
397
|
-
|
|
398
|
-
## Migration Guide
|
|
399
|
-
|
|
400
|
-
### From Sprint #2 Core to Sprint #3 Branching
|
|
401
|
-
|
|
402
|
-
1. **Story Data Format**:
|
|
403
|
-
- Wrap existing `StoryData` in `QNCEStory` structure
|
|
404
|
-
- Organize nodes into `NarrativeFlow` entities
|
|
405
|
-
- Group flows into logical `Chapter` divisions
|
|
406
|
-
|
|
407
|
-
2. **Choice Enhancement**:
|
|
408
|
-
- Convert simple choices to `BranchOption` entities
|
|
409
|
-
- Add conditions for complex choice logic
|
|
410
|
-
- Implement weight-based selection for AI
|
|
411
|
-
|
|
412
|
-
3. **State Integration**:
|
|
413
|
-
- Extend `QNCEState` with branching context
|
|
414
|
-
- Add analytics tracking to existing workflows
|
|
415
|
-
- Integrate with object pooling for performance
|
|
416
|
-
|
|
417
|
-
### Backward Compatibility
|
|
418
|
-
|
|
419
|
-
The PDM maintains compatibility with existing QNCE engines:
|
|
420
|
-
|
|
421
|
-
- **Legacy node format**: Direct mapping to `NarrativeNode`
|
|
422
|
-
- **Simple choices**: Automatic conversion to `BranchOption`
|
|
423
|
-
- **Existing state**: Seamless integration with `BranchContext`
|
|
424
|
-
|
|
425
|
-
## Conclusion
|
|
426
|
-
|
|
427
|
-
This PDM provides a comprehensive foundation for Sprint #3's advanced narrative features while maintaining the performance optimizations from Sprint #2. The design supports:
|
|
428
|
-
|
|
429
|
-
- ✅ **Dynamic Branching**: Runtime story modification
|
|
430
|
-
- ✅ **AI Integration**: Rich context for content generation
|
|
431
|
-
- ✅ **Performance**: Built on proven optimization infrastructure
|
|
432
|
-
- ✅ **Analytics**: Comprehensive player behavior tracking
|
|
433
|
-
- ✅ **Scalability**: Support for complex, large-scale narratives
|
|
434
|
-
|
|
435
|
-
The next step is to implement the **Branching API** that operates on this PDM, providing the runtime functionality needed for the complete Sprint #3 feature set.
|
|
436
|
-
|
|
437
|
-
---
|
|
438
|
-
|
|
439
|
-
**Next Actions:**
|
|
440
|
-
1. **Brain Review**: Architectural alignment and performance considerations
|
|
441
|
-
2. **ByteSower Validation**: Use case coverage and content creator workflow
|
|
442
|
-
3. **Implementation**: Build the Branching API on this PDM foundation
|
|
443
|
-
4. **Testing**: Comprehensive test suite for all entity relationships
|
|
@@ -1,169 +0,0 @@
|
|
|
1
|
-
# 🎉 QNCE Engine v1.2.0 - Advanced Branching & AI Integration
|
|
2
|
-
|
|
3
|
-
**Release Date:** July 2, 2025
|
|
4
|
-
**Version:** 1.2.0
|
|
5
|
-
**Status:** ✅ **PRODUCTION READY**
|
|
6
|
-
|
|
7
|
-
## 🚀 Release Highlights
|
|
8
|
-
|
|
9
|
-
This major release introduces the **Advanced Branching API & Platform Data Model (PDM)**, delivering a comprehensive foundation for sophisticated interactive narratives with AI integration.
|
|
10
|
-
|
|
11
|
-
## 📋 Deliverables Summary
|
|
12
|
-
|
|
13
|
-
### ✅ 1. Platform Data Model (PDM)
|
|
14
|
-
**File:** `docs/branching/PDM.md` (26 pages, comprehensive spec)
|
|
15
|
-
|
|
16
|
-
- **20+ TypeScript interfaces** defining the complete entity hierarchy
|
|
17
|
-
- **Story → Chapter → Flow → Node** structure with branching logic
|
|
18
|
-
- **AI integration points** for procedural content generation
|
|
19
|
-
- **Performance optimization** interfaces compatible with Sprint #2
|
|
20
|
-
- **Migration guide** from existing QNCE formats
|
|
21
|
-
|
|
22
|
-
### ✅ 2. UML Entity Relationship Diagram
|
|
23
|
-
**File:** `docs/branching/ERD.md` (visual documentation)
|
|
24
|
-
|
|
25
|
-
- **Mermaid ERD diagrams** showing all entity relationships
|
|
26
|
-
- **Data flow documentation** for runtime operations
|
|
27
|
-
- **Cross-reference mapping** between entities
|
|
28
|
-
- **Performance and pooling integration** diagrams
|
|
29
|
-
|
|
30
|
-
### ✅ 3. Runtime Branching API
|
|
31
|
-
**File:** `src/narrative/branching/engine-simple.ts` (340 lines)
|
|
32
|
-
|
|
33
|
-
**Core Operations:**
|
|
34
|
-
```typescript
|
|
35
|
-
// Branch evaluation and execution
|
|
36
|
-
await engine.evaluateAvailableBranches()
|
|
37
|
-
await engine.executeBranch(optionId)
|
|
38
|
-
|
|
39
|
-
// Dynamic content management
|
|
40
|
-
await engine.insertDynamicBranch(operation)
|
|
41
|
-
await engine.removeDynamicBranch(branchId)
|
|
42
|
-
|
|
43
|
-
// AI integration
|
|
44
|
-
engine.setAIContext(aiContext)
|
|
45
|
-
await engine.generateAIBranches(maxOptions)
|
|
46
|
-
|
|
47
|
-
// Analytics and monitoring
|
|
48
|
-
engine.getBranchingAnalytics()
|
|
49
|
-
engine.exportBranchingData()
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
### ✅ 4. Comprehensive Test Suite
|
|
53
|
-
**File:** `tests/branching.test.ts` (24 tests, 100% passing)
|
|
54
|
-
|
|
55
|
-
**Test Coverage:**
|
|
56
|
-
- ✅ Engine creation and initialization
|
|
57
|
-
- ✅ Branch evaluation with conditions
|
|
58
|
-
- ✅ Branch execution and state transitions
|
|
59
|
-
- ✅ Dynamic branch insertion/removal
|
|
60
|
-
- ✅ AI integration and context management
|
|
61
|
-
- ✅ Analytics tracking and export
|
|
62
|
-
- ✅ Condition evaluation (equals, greater, custom)
|
|
63
|
-
- ✅ Performance benchmarks (<5ms evaluation, <10ms execution)
|
|
64
|
-
|
|
65
|
-
## 🏗️ Technical Architecture
|
|
66
|
-
|
|
67
|
-
### Entity Hierarchy
|
|
68
|
-
```
|
|
69
|
-
QNCEStory
|
|
70
|
-
├── BranchingConfig (performance settings)
|
|
71
|
-
├── Chapter[] (logical groupings)
|
|
72
|
-
│ ├── NarrativeFlow[] (node sequences)
|
|
73
|
-
│ │ ├── NarrativeNode[] (story content)
|
|
74
|
-
│ │ ├── FlowEntryPoint[] (entry conditions)
|
|
75
|
-
│ │ └── FlowExitPoint[] (exit transitions)
|
|
76
|
-
│ └── BranchPoint[] (decision logic)
|
|
77
|
-
│ └── BranchOption[] (player choices)
|
|
78
|
-
└── Metadata (author, version, etc.)
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
### Key Features
|
|
82
|
-
- **Dynamic Branching**: Runtime insertion/removal of narrative paths
|
|
83
|
-
- **Conditional Logic**: Flag/choice/time/custom condition evaluation
|
|
84
|
-
- **AI Integration**: Rich context for procedural content generation
|
|
85
|
-
- **Performance Ready**: Built on Sprint #2 object pooling infrastructure
|
|
86
|
-
- **Analytics Support**: Comprehensive player behavior tracking
|
|
87
|
-
- **Type Safety**: Complete TypeScript interface coverage
|
|
88
|
-
|
|
89
|
-
### Performance Characteristics
|
|
90
|
-
- **Branch Evaluation**: <5ms (target achieved)
|
|
91
|
-
- **Branch Execution**: <10ms (target achieved)
|
|
92
|
-
- **Memory Efficient**: Compatible with object pooling
|
|
93
|
-
- **Scalable**: Support for large, complex narratives
|
|
94
|
-
|
|
95
|
-
## 🤖 AI Integration Ready
|
|
96
|
-
|
|
97
|
-
The PDM provides comprehensive context for AI systems:
|
|
98
|
-
|
|
99
|
-
```typescript
|
|
100
|
-
interface AIBranchingContext {
|
|
101
|
-
playerProfile: PlayerProfile; // Behavioral patterns
|
|
102
|
-
narrativeContext: NarrativeContext; // Story state & tension
|
|
103
|
-
generationHints: AIGenerationHints; // Content constraints
|
|
104
|
-
}
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
This enables:
|
|
108
|
-
- **Personalized branching** based on player behavior
|
|
109
|
-
- **Context-aware content generation**
|
|
110
|
-
- **Dynamic difficulty adjustment**
|
|
111
|
-
- **Quality feedback loops**
|
|
112
|
-
|
|
113
|
-
## 🔗 Sprint #2 Integration
|
|
114
|
-
|
|
115
|
-
Built on the performance infrastructure from Sprint #2:
|
|
116
|
-
- **Object pooling** interfaces for memory efficiency
|
|
117
|
-
- **Performance monitoring** hooks for analytics
|
|
118
|
-
- **Hot-reload compatibility** for live development
|
|
119
|
-
- **Background processing** support for AI operations
|
|
120
|
-
|
|
121
|
-
## 📊 Test Results
|
|
122
|
-
|
|
123
|
-
```
|
|
124
|
-
✅ 24/24 tests passing (100% success rate)
|
|
125
|
-
✅ Performance targets met:
|
|
126
|
-
- Branch evaluation: <5ms ✅
|
|
127
|
-
- Branch execution: <10ms ✅
|
|
128
|
-
✅ All entity relationships validated
|
|
129
|
-
✅ AI integration functionality confirmed
|
|
130
|
-
✅ Dynamic operations working correctly
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
## 🎯 Sprint #3 Impact
|
|
134
|
-
|
|
135
|
-
This PDM enables all remaining Sprint #3 features:
|
|
136
|
-
|
|
137
|
-
- **S3-T2: Procedural Dialogue Module** → AI context interfaces ready
|
|
138
|
-
- **S3-T3: NLP Choice Parser** → Branch option framework prepared
|
|
139
|
-
- **S3-T4: Narrative Analytics Dashboard** → Analytics export implemented
|
|
140
|
-
- **S3-T5: In-Engine Debug Console** → State inspection APIs available
|
|
141
|
-
|
|
142
|
-
## 🎊 What's Next?
|
|
143
|
-
|
|
144
|
-
### Immediate Actions
|
|
145
|
-
1. **Brain Review** 🧠 - Architecture alignment and performance validation
|
|
146
|
-
2. **ByteSower Validation** - Use case coverage and content creator workflow
|
|
147
|
-
3. **Core Engine Integration** - Extend existing QNCE engine with branching
|
|
148
|
-
|
|
149
|
-
### Sprint #3 Progression
|
|
150
|
-
- **S3-T2**: Build procedural dialogue on this PDM foundation
|
|
151
|
-
- **S3-T3**: Implement NLP choice parsing using BranchOption structure
|
|
152
|
-
- **S3-T4**: Extend analytics dashboard with branching metrics
|
|
153
|
-
- **S3-T5**: Add debug console with branch state inspection
|
|
154
|
-
|
|
155
|
-
## 🌟 Key Achievements
|
|
156
|
-
|
|
157
|
-
✅ **Complete PDM**: 20+ interfaces covering all branching scenarios
|
|
158
|
-
✅ **Working API**: Full runtime implementation with 100% test coverage
|
|
159
|
-
✅ **AI Ready**: Rich context interfaces for procedural content
|
|
160
|
-
✅ **Performance Optimized**: Built on Sprint #2 infrastructure
|
|
161
|
-
✅ **Documentation**: Comprehensive specs and visual diagrams
|
|
162
|
-
✅ **Extensible**: Plugin architecture for custom branching logic
|
|
163
|
-
|
|
164
|
-
**This foundation positions QNCE for advanced narrative AI integration while maintaining the stellar performance achieved in Sprint #2!** 🚀
|
|
165
|
-
|
|
166
|
-
---
|
|
167
|
-
|
|
168
|
-
**Branch:** `feature/sprint3-branching-pdm`
|
|
169
|
-
**Ready for merge after review and validation** ✅
|