Commit Graph
14 Commits
Author SHA1 Message Date
Cursor Agentand西风逍遥游 c38654d504 Add MapFog SLG large-map war-fog overlay
Implement dual-scrolling cloud fog with RGBA mask bridge (R unlock,
G select blink, B dissolve) and a pre-pass shadow, plus example and
unit tests following the common SLG FoW presentation pattern.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>
2026-09-11 14:16:10 +00:00
西风逍遥游 9d6a6cf231 fix(map): preserve tilemap editor data 2026-09-09 23:27:04 +08:00
西风逍遥游 66dc4e8f3d feat(rpg): restore classic product loop after CI fix 2026-08-31 23:16:42 +08:00
西风逍遥游 775ac0c7cc Revert "Merge pull request #317 from EVEngine/codex/rpg-classic-product-loop"
This reverts commit 6541e5ac83, reversing
changes made to 3c21fe396a.
2026-08-31 23:04:39 +08:00
西风逍遥游 2319ae0118 feat(rpg): complete classic RPG product loop 2026-08-31 19:49:32 +08:00
西风逍遥游 245510ccad feat(map): add production autotile pipeline 2026-08-30 10:45:57 +08:00
西风逍遥游 e571651ac6 feat(map): add production tilemap foundations 2026-08-25 00:02:54 +08:00
西风逍遥游 861b69ba2e docs(map): document render spacing getters 2026-08-24 13:44:01 +08:00
西风逍遥游 aa79d70200 feat(map): add composable 2.5D tileset workflow 2026-08-24 13:38:11 +08:00
西风逍遥游andCursor Agent c0d9fe4a7d test(hex): 程序化六边形关卡套件(FOV / 光照 / 寻路 / 拾取 / 粒子) (#50)
* test(hex): add procedural hex dungeon levels for engine QA

Cross-module simulation levels exercise hex tilemap procgen, FOV,
2D lighting, spatial pickup + inventory, and particles. Includes a
playable examples/hex-levels demo with level select and a pipeline crawl.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* test(hex): expand levels 06–15 and fog-raid pipeline

Add Flow Field swarm, cell-cost detours, multi-revealer perception,
FoW mask/algorithms, camera pick, dual-grid, procgen variants,
QuadTree cull, multi-light, particle/stash transfer, and a fog-raid
pipeline. Update the playable hex-levels demo for levels 6–9.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* test(hex): add fixture JSON data and data-driven hex tests

Expand catalog/items/loot/seeds/perception fixtures, handcrafted maps,
and particle configs. Wire the hex-levels demo to load items and particle
JSON plus fixtures.nut loot tables. Register hex_level_data.cpp coverage.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* test(hex): fix data fixtures assertions for zeroerr and sparse gens

Avoid CHECK_EQ on bag->addItem (double-eval), and only enforce minWalkable
on dungeon.bsp in the seeds matrix smoke.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* feat(hex): boot each level from distinct catalog configs

Enrich catalog/fixtures with per-level FOV, light, cell-cost, and enable
flags. Wire examples/hex-levels to apply those boot settings on level
switch. Add hex.data.catalog.bootEachLevelDistinctConfig to verify each
catalog entry starts with its own applied configuration.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* docs(hex): note per-level boot configs in data README

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* test(hex): add levels 16–20 and extra data-driven coverage

Expand simulation with facing-cone FOV, flow+cell-cost, seed
reproducibility, corner peek, equipment equip, and torchEscort /
catalogRaid pipelines. Add fixture tests for perception gates, all loot
tables, enable-flag consistency, seed path samples, map markers,
defaults, equipment slots, and mist particles on dungeon.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* docs(hex): clarify expanded test coverage in README

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* test(hex): add levels 21–25 and broader fixture validation

Cover hex world↔tile roundtrip, FOV memory clear, findGroupPath,
multi-algo FOV smoke, blocked-cell sync, and costlyFogPickup pipeline.
Add data tests for loot/item referential integrity, feature tags,
particle schema, algorithm registration, ring-door path, categories,
detection margin, and door walkability.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* feat(hex): expand catalog to 31 levels (0–30) and playable cycle

Add levels 16–30 with distinct boot configs (facing cone, flow+cost,
maze/WFC/drunkard, mist particles, raid combo). Regenerate fixtures.nut
with LEVEL_IDS; main.nut cycles all catalog levels via N/B. Add
simulation cases 26–30 and catalog presence tests.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* fix(hex): harden level 02/17 against non-portable procgen paths

macOS CI failed hex.level.02.dynamicFov (empty path) and
hex.level.17.flowPlusCellCost (path length == 2) because spawn↔exit
layouts from DTL/std distributions differ across libstdc++ vs libc++.
Use handcrafted hex maps so FOV memory and flow+cost assertions are
platform-stable.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-08-13 11:54:41 +08:00
西风逍遥游andCursor Agent 0a2e56cb34 feat(map): 动态视野系统 Phase A/B/C (#21)
* docs: design 2D/3D compatible dynamic FOV system

Add a map-module FOV/FoW design based on public shadowcasting and
3D visibility references, with staged grid2d/heightmap/volume APIs
aligned to Pathfinder conventions.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* feat(map): implement Phase A dynamic FOV with shadowcasting

Add Fov facade with multi-revealer recursive shadowcasting, explored
memory, and opaque-GID sync; expose Map.newFov / newFovSize bindings
and cover behavior in map_fov tests.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* feat(map): implement FOV Phase B heightmap, volume, and masks

Add raycast/permissive algorithms, heightmap cliffs, volume slice
shadowcasting with vertical extend, dirty-skip compute, and CPU R8
mask export; cover with map_fov Phase B tests and docs.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* feat(map): complete FOV Phase C hex, rectangle, and GPU masks

Add hex topology shadowcasting, rectangle-based occlusion FOV,
soft perception/stealth detection helpers, and RGBA8 mask Texture
upload via buildMaskTexture; cover with Phase C map_fov tests.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-08-11 02:12:33 +08:00
西风逍遥游andCursor Agent 1dbea1ebe7 feat(map): Tilemap dual-grid autotile resolve (#15)
* feat(map): add dual-grid autotile resolve for TileLayer

Implement Oskar Stålberg-style dual-grid: logic layer paints fill/empty,
display layer gets a half-tile offset 15-tile resolve. Document that Tiled
has no native dual-grid (Terrain/Wang Corner Set is same-grid only).

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* fix(map): use ComponentRef for DualGrid config access

TileLayer::config() returns ecs::ComponentRef, not a raw pointer.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* test(map): fix dual-grid filledGid expectations and clean layers

Correct corner sampling for a single logic cell (BR vs TL) and clear
layers after resolve tests to avoid ECS draw pollution.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* test(map): fix ComponentRef usage in dual-grid orientation tests

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-08-10 14:03:37 +08:00
西风逍遥游andCursor Agent 372f2c66b6 feat(map): 可扩展格子寻路与群体 Flow Field 优化 (#13)
* feat(map): add extensible grid pathfinding with group Flow Field

Implement A* and same-goal Flow Field pathfinding on PathGrid with
pluggable topologies (ortho4/ortho8/hex) for orthogonal, isometric,
staggered, and hexagonal maps. Expose Pathfinder/Path/FlowField via
Map::newPathfinder and document the design.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* fix(map): use ComponentRef accessors in PathGrid sync

TileLayer::config()/tiles() return ComponentRef, not raw pointers.
Also cast PathTopology in zeroerr CHECKs for streamability.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* fix(map): shrink Windows export surface for pathfinding

MSVC LNK1189 (65535 library objects) is hit when WINDOWS_EXPORT_ALL_SYMBOLS
exports every PathGrid/topology symbol. Collapse grid/topology into an
internal Pathfinder impl (anonymous namespace) and a single TU so eve.exe
stays under the export limit.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* fix(windows): disable WINDOWS_EXPORT_ALL_SYMBOLS to avoid LNK1189

MSVC cannot export every symbol from eve.exe once the binary grows past
the 65535-object limit. Plugins already import EVENGINE_API symbols
(ModuleManager / ModuleRegister); keep ENABLE_EXPORTS without exporting
the entire object set.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-08-10 13:02:57 +08:00
西风逍遥游 28f778d2c4 docs: review every user module chapter 2026-08-09 21:41:58 +08:00