In our collaboration with Luxodd this week, we established a set of standards, such as the connection rules between modules shown in the image below.
The core abstraction is the module — a discrete gameplay segment with defined entry and exit conditions, physical requirements, and difficulty parameters.
Seven module types are defined, each corresponding to a distinct parkour mechanic:
| Module | Gameplay | Physical Constraint |
|---|---|---|
| B — Blank | Recovery platform | None (breather segment) |
| C — UpPlatform | Ascending traversal | Requires positive height delta |
| D — DownPlatform | Descending traversal | Requires negative height delta |
| E — PathBlock | Obstacle jumping | No directional constraint |
| F — WallRun | Lateral wall traversal | Requires straight path (no turns) |
| G — Slide | Low-clearance sliding | Requires straight path (no turns) |
| H — Rope | Narrow bridge crossing | No directional constraint |
The authoring layer also defines the adjacency table — a constraint matrix specifying which module types may follow which. This is not merely a visual constraint (as in WFC) but a physical gameplay constraint: a WallRun module cannot follow a segment where the path turns 90 degrees, because the player’s momentum would carry them away from the wall. Similarly, an UpPlatform cannot follow a segment with a negative height delta, as the resulting geometry would be physically discontinuous.
The adjacency table is encoded as a per-module list of valid successors:
B → {C, D, E, F, G, H} (blank connects to everything)
C → {B, D, E, F, G, H} (up connects to everything)
D → {B, C, E, F, G, H} (down connects to everything)
E → {B, C, D, F, G, H} (obstacle connects to everything)
F → {B, C, D, E, G, H} (wall run — restricted by direction constraint)
G → {B, C, D, E} (slide — restricted, cannot chain with wall run or rope)
H → {B, C, D, E, F, G} (rope connects to most)
This week, we also explored a new artistic direction: AI real-time texture generation based on screen capture, as shown below.
Another approach is the traditional way.
We have submitted our plugin to the UE Fab store.

