Skip to content

Commit ce4911b

Browse files
committed
docs: add roadmap and link from README
- Create doc/roadmap.md with 9 planned features: concurrent batch generation, conditional components, structured serialization, generation statistics, generic components, EnTT integration, Python/Node.js/.NET wrappers - Add roadmap link to README
1 parent e3937a4 commit ce4911b

2 files changed

Lines changed: 41 additions & 0 deletions

File tree

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,3 +99,5 @@ auto seeded = eg::instance().generate(42);
9999
```
100100
101101
For the complete feature guide — component dependencies, custom types, seed signatures, batch generation, groups, weights, validation, event hooks, and more — see the **[Usage Guide](doc/usage.md)**.
102+
103+
For planned features — concurrent generation, conditional components, structured serialization, EnTT integration, and more — see the **[Roadmap](doc/roadmap.md)**.

doc/roadmap.md

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# Roadmap
2+
3+
Planned features for the entity-generator library. Items are not in priority order.
4+
5+
## Concurrent Batch Generation
6+
7+
`generate_batch_async(count)` generates entities in parallel while preserving deterministic seeding. The approach: pre-derive N entity seeds from the engine sequentially (cheap), then dispatch N independent generation calls concurrently — each with its own pre-computed seed. Same seeds produce the same entities regardless of thread scheduling. Returns `std::vector<entity>` in seed order.
8+
9+
## Conditional Components
10+
11+
A component can declare `bool should_generate(const generation_context& ctx)` (default `true`). The generator checks this before producing the value. Unlike weights (probabilistic), this is logic-driven — e.g., "only generate `stats` if `class` is `Warrior`". Zero-cost default: the virtual returns `true`.
12+
13+
## Structured Serialization
14+
15+
`entity::to_map()` returning `std::map<std::wstring, std::wstring>` for easy integration with JSON/XML serializers. Optionally `entity::from_map()` with a component registry for deserialization/replay.
16+
17+
## Generation Statistics
18+
19+
A built-in observer (or standalone stats struct) that tracks: entities generated, components skipped (weight), retries per component, validation failures. Accessible via `eg::stats()` or as a reusable observer. Useful for tuning weights and retry limits.
20+
21+
## Generic Components
22+
23+
A library of ready-made, reusable component templates for common patterns — e.g., `choice_component<T>` (pick from a list), `range_component<T>` (uniform random in a range), `constant_component<T>` (fixed value). Reduces boilerplate for simple components that don't need custom logic.
24+
25+
## EnTT Integration
26+
27+
An adapter layer that bridges entity-generator with the [EnTT](https://github.com/skypjack/entt) ECS library. Generated component values are automatically assigned as EnTT components to an entity in a registry, enabling direct use in ECS-based game loops without manual mapping.
28+
29+
## Python Wrapper
30+
31+
A Python binding (via pybind11 or nanobind) exposing the entity-generator API to Python. Components are defined as Python classes inheriting from a base, registered with the generator, and entities are returned as typed Python objects. Enables rapid prototyping and scripting of entity generation logic.
32+
33+
## Node.js Wrapper
34+
35+
A Node.js addon (via node-addon-api / N-API) providing the entity-generator API to JavaScript/TypeScript. Components are defined as JS classes, entities are returned as plain objects. Supports both synchronous and async generation for server-side and tooling use cases.
36+
37+
## .NET Wrapper
38+
39+
A .NET binding (via C++/CLI or P/Invoke) exposing the entity-generator API to C# and other .NET languages. Components are defined as C# classes implementing an interface, entities are returned as strongly-typed objects. Targets integration with Unity and other .NET game frameworks.

0 commit comments

Comments
 (0)