Commit Graph
29 Commits
Author SHA1 Message Date
西风逍遥游 31a2c0cc1e feat(climbing): add motion matching demo and UE converter 2026-08-31 15:26:46 +08:00
西风逍遥游 f2917d4632 feat(asset): add eva and evpack asset pipeline 2026-08-30 13:43:28 +08:00
西风逍遥游 aa79d70200 feat(map): add composable 2.5D tileset workflow 2026-08-24 13:38:11 +08:00
西风逍遥游 811eff1c3a ci(quality): warnings-as-errors gate, sanitizers, smoke, Python lint/tests
- EVENGINE_ENABLE_STRICT_WARNINGS option: MSVC /W4 /WX, GCC/Clang
  -Wall -Wextra -Werror, with documented noise suppressions and
  -isystem/-external:I for third-party headers; enabled on the
  Windows/Linux debug CI jobs.
- Fix warnings across engine, modules and tests exposed by the gate,
  including real bugs (incomplete-type deletes, Timespan microsecond
  overflow, overload hiding, enum switch gaps, dead code).
- Add Linux ASan+UBSan job, example smoke step, python-tools test
  job, ruff config (scripts+tools), weekly Linux coverage job and a
  CodeQL workflow.
2026-08-22 02:27:37 +08:00
西风逍遥游 34a9a63bfa Merge pull request #105 from EVEngine/codex/eve-mcp-host
feat(mcp): headless eve mcp host with AI-crafted MVVM editors
2026-08-18 10:40:21 +08:00
西风逍遥游 4b24d1a157 feat(mcp): headless eve mcp host with AI-crafted MVVM editors
Adds 'eve mcp': a desktop-only headless MCP host (stdio by default, --port for TCP, --root for the project). It runs the full runtime, attaches DevTools (eve_eval / eve_run_script / snapshot), and starts the new EditorHost module that renders JSON-defined editor Views (ImGui) bound two-way to Squirrel ViewModel tables (MVVM), persists editors under editors/, and exposes the eve_host_* tool family (apply/state/set_value/events/capture/script/shutdown...). The stdio transport uses a background stdin reader and keeps stdout JSON-RPC-only; script print() is routed to stderr.

Tests: stdio handshake + tools/list round trip, host editor binding (VM<->View sync, set_value -> VM write + onChange events, save/reload persistence). Docs updated (AI与MCP支持.md, 命令行设计.md, tools/eve-mcp README) with the editor JSON protocol and Codex stdio setup.
2026-08-17 22:43:08 +08:00
西风逍遥游 7b27945c88 Merge branch 'main' into codex/ai-scene-director 2026-08-17 17:10:24 +08:00
西风逍遥游 33d5e5b870 devtools: DAP output events, variable inspect, error throw-site pause 2026-08-17 14:51:32 +08:00
西风逍遥游 4e61805c69 feat(story-scene-agent): story-to-qualified-stage orchestrator + example
One-line story -> stage brief (parse_stage) -> creative-brain plan -> build
via scene_director -> scene-qc inspection/fix loop -> report + screenshots.
Reuses the in-repo creative-brain and scene-qc packages; ships a dry-run
in-memory executor and tests, an empty examples/ai-stage host, an openCode
subagent, and the AI场景导演 integration doc that doubles as the
agent-queryable scene-director spec.
2026-08-17 10:10:37 +08:00
西风逍遥游 2f2d019140 feat(scene-qc): align tool mapping to the engine scene-director tools
config.example.json now maps camera_generate/screenshot/scene_info/
scene_modify to the real engine tools (eve_camera_generate, eve_screenshot,
eve_scene_info, eve_scene_modify). screenshot() reads the engine-written PNG
back to base64 when only a path is returned, so the QC loop works even
though the agent and engine processes may have different cwds; scene_info
also accepts the kit's 'props' geometry format.
2026-08-17 10:10:29 +08:00
西风逍遥游 ad5d042654 feat(creative-brain): translate plan steps to real scene-director actions
The MCP batch driver previously emitted defensive no-op stubs (and used a
{}.fromJson table method that does not exist in Squirrel), so a plan never
actually built a scene. Plan steps now dispatch through
::scene_director.modify with grid->world coordinate conversion, and the kit
is auto-installed before the batch runs.
2026-08-17 10:10:22 +08:00
西风逍遥游 18d393c66b Merge pull request #92 from EVEngine/codex/normal-crafter
tools(normal-crafter): deployable temporally-consistent normal-map service
2026-08-16 21:33:40 +08:00
西风逍遥游 be71b46269 Merge branch 'main' into codex/scene-inspection-mcp 2026-08-16 21:31:33 +08:00
西风逍遥游 a85b9f31c0 Merge pull request #85 from EVEngine/codex/asset-pipeline-agent
feat(agent): external asset pipeline (retrieval + Blender standardization + MCP ingest)
2026-08-16 21:30:15 +08:00
西风逍遥游 a64c97f4fd tools(normal-crafter): deployable temporally-consistent normal-map service
Self-contained implementation of the ICCV 2025 NormalCrafter algorithm for
generating continuous, flicker-free normal maps from PNG frame sequences.

- server/: FastAPI GPU microservice (single-flight, preloaded model) with the
  algorithm reimplemented on stock diffusers (single denoise step + temporal
  sliding window + linear blending)
- normal_crafter/: thin CPU client bridging PNG dir <-> video and unpacking the
  returned normal PNG ZIP (no torch needed on artist machines)
- Dockerfile + docker-compose for GPU pod deployment
- test/: 9 tests incl. a stub-server end-to-end client flow (no GPU required)
2026-08-16 20:52:07 +08:00
西风逍遥游 c53fe96403 Merge pull request #87 from EVEngine/codex/scene-qc-agent
feat(scene-qc-agent): ReAct scene inspection & iterative optimization brain
2026-08-16 20:00:11 +08:00
西风逍遥游 d76a1088ae Merge pull request #86 from EVEngine/codex/creative-brain
feat(creative-brain): scene intent parsing & asset layout agent (Python CLI)
2026-08-16 19:57:03 +08:00
西风逍遥游 35670cb370 Merge remote-tracking branch 'origin/main' into codex/scene-inspection-mcp
# Conflicts:
#	src/engine/devtools/McpServer.cpp
2026-08-16 19:49:14 +08:00
西风逍遥游 6d0e53832e feat(devtools): add scene-inspection MCP tools with synchronized image/geometry snapshots
Add engine-layer scene inspection toolset for the MCP server:
- inspect_generate_scene_camera_views / set_camera_pose / get_visible_entities_screen_bbox
- capture_render_frame now exports atomically synchronized buffers: color frame
  + geometry JSON always, plus optional depth/normal (GBuffer), and a per-pixel
  render entity-ID mask (id) with a JSON id->entity mapping.

Engine support:
- Graphics::renderEntityIdMask (per-pixel mesh ID offscreen pass, Vulkan)
- Graphics::readGBufferToImageData (depth/normal readback)
- SceneInspect module: multi-camera auto sampling, atomic snapshot, temp cache

Verified with GPU tests (RenderSystem3D.entityIdMaskPixels, readTextureBackPixels).
2026-08-16 16:46:05 +08:00
西风逍遥游 5e531dc0ea tools(vision-prefilter): fix JSON enforcement + rule tuning after live deployment
Deployed and tested against llama-server with Qwen2-VL-2B Q4_K_M GGUF.
Fixes found during end-to-end testing:

- Replace hand-written GBNF grammar with llama.cpp json_schema field: the GBNF
  literal quote escaping broke across HTTP transport and Chinese enum values
  failed to parse; json_schema enforces the same token-level JSON-only output
  reliably and handles multi-byte values
- Raise max_tokens 256->512: long FIXED_PROMPT + problem_regions truncated the
  reply mid-JSON
- Tune rules: mere road mention no longer implies occlusion (only explicit
  blocked/occluded signal -> high); vegetation risk only for clusters, not any
  sparse corner tree
- Make FIXED_PROMPT conservative (balanced scene -> 0; empty problem_regions)

Verified live: road-occluded -> risk 3 / review true; clean -> risk 0;
balanced -> 2. 9/9 unit tests pass.
2026-08-16 16:14:15 +08:00
西风逍遥游 6e6320670e feat(scene-qc-agent): ReAct scene inspection & iterative optimization brain 2026-08-16 15:52:05 +08:00
西风逍遥游 3d04faa6b3 feat(creative-brain): scene intent parsing & asset layout agent (Python CLI) 2026-08-16 15:51:49 +08:00
西风逍遥游 f880cb7d5a feat(agent): external asset pipeline (retrieval + Blender standardization + MCP ingest) 2026-08-16 15:51:32 +08:00
西风逍遥游 ea92c34dab tools(vision-prefilter): switch to llama.cpp llama-server backend
Drop the heavy transformers/torch/bitsandbytes inference path in favour of
llama.cpp llama-server serving a Qwen2-VL-2B GGUF. The service becomes a thin
FastAPI gateway that forwards to the OpenAI-compatible /v1/chat/completions API.

- Add GBNF grammar (grammar.py) that enforces the standard JSON at token
  sampling level, making free-text/markdown output impossible
- model.py is now an HTTP client (LlamaServer) over llama-server; no torch
- server.py/__main__.py talk to VISION_PREFILTER_BACKEND (default :8080)
- requirements.txt now only fastapi/uvicorn/pydantic/requests
- Launchers start llama-server + gateway; add download_model.sh (Q4_K_M GGUF)
- README rewritten for the llama.cpp deployment; tests still pass
2026-08-16 15:18:07 +08:00
西风逍遥游 d8a77298ec tools(vision-prefilter): local Qwen2-VL-2B 4bit vision pre-filter service
Low-cost local VLM HTTP service that batches render snapshots + compact
geometry text and returns a strict JSON risk rating, filtering safe
viewpoints before an expensive high-precision VLM is called.

- Qwen2-VL-2B 4bit (bitsandbytes nf4) lazy-loaded wrapper with JSON-only
  output enforcement and robust parsing (no free-text leak on failure)
- FastAPI /v1/prefilter/batch + /health + /protocol endpoints
- Standardised pydantic input/output protocol (risk_score 0-3, problem
  regions with pixel bbox, need_high_precision_review)
- Deterministic business rules: road occlusion=high, vegetation cluster=
  medium, balanced layout=no risk
- Background launchers (sh/bat) + batch client example + no-torch tests
2026-08-16 15:10:36 +08:00
西风逍遥游andCursor Agent b96cf3ea48 feat(animation): 3D 骨骼播放支持(状态机 + Motion Matching) (#14)
* feat(animation): add 3D skeletal playback with state machine and motion matching

Extend eve.Animation beyond tweens with AnimSkeleton/AnimClip/AnimPose,
AnimPlayer cross-fade playback, AnimStateMachine (float/bool/trigger),
and MotionDatabase + MotionMatcher feature search. Includes tests and docs.

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

* test(animation): Mixamo Idle/Run/Jump fixtures for state machine and motion matching

Import Assimp/ModelData and compact .eva clips; bake planar root motion for
in-place Mixamo run; add integration tests and convert_mixamo tool. Logical
state switches immediately on transition while pose still cross-fades.

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

* test(animation): expand state machine and motion matching coverage

Add bool/compound conditions, float ops, trigger consume, player pause,
three-speed matching, EVA round-trip, and Mixamo run-jump-idle / stability
cases after merging main.

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

* fix(animation): avoid zeroerr ambiguous || in state machine CHECK

Wrap the compound boolean in parentheses so CHECK does not overload
operator|| against Expression (broke Linux/macOS/Windows CI).

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

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-08-10 15:00:30 +08:00
Cursor Agentand西风逍遥游 779307c80b feat(devtools): add embedded MCP server and AI panel for agent testing
Expose a localhost MCP JSON-RPC server (--mcp-port) alongside DAP so AI
agents can pause, eval, snapshot, and slice errors on a live session.
Add DevTools AI session log/ImGui panel (eve.dev.ai, F9) and a Cursor
stdio bridge under tools/eve-mcp.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>
2026-08-10 00:43:11 +00:00
sunxfancy cee6eb0266 feat(devtools): enhance debugging capabilities with DAP integration and improved CallGraph
- Added support for DAP (Debug Adapter Protocol) in the DebugAdapter, allowing for better integration with IDEs like VS Code.
- Implemented new debugging commands: stepInto, stepOver, and stepOut, enhancing script execution control.
- Updated CallGraph to use a fixed ring buffer for event storage, improving performance and memory management.
- Introduced methods for resolving source paths and managing script aliases, facilitating smoother debugging experiences.
- Enhanced documentation to reflect new features and usage instructions for debugging tools.

These changes significantly improve the debugging workflow and provide developers with more robust tools for script management and error tracing.
2026-08-09 21:51:34 +08:00
西风逍遥游andCursor Agent 8abbb134cb feat(devtools): pause, breakpoints, watches, snapshots, and VS Code DAP (#6)
* feat(devtools): pause, breakpoints, watches, snapshots, and VS Code DAP

Add a script-centric debugger: Pause key / DAP frame pause, Squirrel
breakpoints with watches, JSON snapshot of script state (stateless
engine), TCP Debug Adapter Protocol server, and a VS Code extension
under tools/vscode-eve-debug.

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

* fix(devtools): correct Snapshot JSON (Poco Ptr) and DAP includes

Use Poco::JSON::Object/Array::Ptr for script-state capture/restore so
round-trips no longer BadCast; include TimeoutException via Exception.h.

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

* fix(devtools): move DebugAdapter ctor to cpp for MSVC unique_ptr

MSVC rejects unique_ptr of forward-declared Poco sockets when the
default constructor is defined in the header (incomplete-type delete).

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

* fix(devtools): disable Poco auto-link on EVDevTools for MSVC

Including Poco Net/JSON without POCO_NO_AUTOMATIC_LIBS makes the
Windows linker request PocoFoundationd.lib instead of PocoFoundationmdd.

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

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-08-09 09:41:58 +08:00