Commit Graph
14 Commits
Author SHA1 Message Date
西风逍遥游 63246b8c68 fix: complete architecture consolidation contracts 2026-08-28 00:01:55 +08:00
西风逍遥游 293be41d66 Merge remote-tracking branch 'origin/dev' into codex/architecture-consolidation
# Conflicts:
#	cmake/module_manifest.cmake
#	docs/usr/modules/procgen.md
#	src/engine/CMakeLists.txt
#	src/engine/cmdline/Run.cpp
#	src/engine/common/ScriptModule.h
#	src/modules/animation/Animation.cpp
#	src/modules/physics/World.cpp
#	src/modules/physics/World3D.cpp
#	src/modules/procgen/Procgen.cpp
#	src/modules/procgen/Procgen.h
#	src/modules/scene/SceneCapabilities.cpp
#	src/modules/schema/Schema.cpp
#	src/modules/schema/Schema.h
2026-08-27 14:52:28 +08:00
西风逍遥游 a8b8e83128 refactor: consolidate engine architecture contracts 2026-08-27 12:54:48 +08:00
西风逍遥游 112ace39c2 feat: integrate EveScript across engine tooling 2026-08-26 21:56:34 +08:00
西风逍遥游 0f7b63dd56 script: expose EveScript language server 2026-08-25 20:36:51 +08:00
西风逍遥游 88447049c1 script: validate packaged module graphs 2026-08-25 20:22:38 +08:00
西风逍遥游 fe661c2bfe feat(cmdline): cross-platform packaging + runnable-win32 SDK + unbuffered stdout
- eve package now keys off the target SDK (share/eve/TARGET_PLATFORM): win32
  targets get bin/eve.exe, linux/macosx get bin/eve, so a Linux/macOS host can
  produce a Windows game folder without a Visual Studio install.
- win32 SDKs bundle vulkan-1.dll + the VC redistributable next to eve.exe
  (cmake/win32_bundle_runtime.cmake), making packaged games self-contained and
  letting any host copy them into a package; eve package prefers those bundled
  DLLs and only falls back to a local VS redist on Windows hosts.
- main.cpp makes stdout unbuffered so startup markers from eve_init are visible
  in redirected CI logs (previously buffered and lost on force-kill).

Verified end-to-end on this machine: the packaged win32 game mounts game.eve,
loads config/main.nut, runs eve_init (EVE_VERIFY_OK) and presents the first
frame.
2026-08-22 10:22:52 +08:00
西风逍遥游 ecb84abdd0 fix(cmdline): don't inherit stale CI build outputs from the android SDK template
The official SDK's platform/apk template is compiled once by test-sdk.sh in the
release pipeline, so its app/build tree ships a leftover CI test APK inside the
zip. eve build copied the whole template (copyTree only skips top-level build
dirs), leaving a stale 123MB app-debug.apk built from a different game in every
assembled project. Skip app/build when copying the template, and stop zip-sdk.py
from packaging build/.gradle outputs in future SDK releases.
2026-08-22 09:52:43 +08:00
西风逍遥游 bad430f195 feat(cmdline): eve get android installs the official EVEngine SDK from GitHub release
eve now picks the eve-sdk-<plat>-<tag>.zip asset matching its own version
(v0.1.0-dev normalizes to v0.1.0; EVE_SDK_TAG overrides), verifies it against
SHA256SUMS, extracts eve-sdk/android into %LOCALAPPDATA%/EVEngine/sdk/android
(EVE_SDK_INSTALL_ROOT overrides), and records EVENGINE_SDK in eve-android.env
so ve build android finds it without --sdk or EVENGINE_SDK.

Also harden SDK discovery: only a share/eve/TARGET_PLATFORM marker counts as an
SDK root (build trees with a platform/ dir are no longer misdetected), and
findSdkRoot falls back to SDKs installed by ve get.
2026-08-22 09:44:07 +08:00
西风逍遥游 19775286b8 fix(cmdline): copy game assets into the APK and detect unsigned output
Real end-to-end verification (eve get android + eve build android ->
APK) surfaced two bugs:

- copyTreeContents mapped every source entry to the destination root
  instead of to/rel, so nested game files were never copied and
  top-level files collided with the destination directory; the APK
  shipped without assets/game. Copy relative paths in both modes.
- A release build without a signing config makes AGP emit
  app-release-unsigned.apk, which eve build did not recognize. Accept
  the unsigned name (with a hint) as a fallback.

The assemble test now uses REQUIRE for the asset/lib/APK assertions
(zeroerr treats CHECK failures as warnings, which CTest counted as
passing) so regressions fail the suite.
2026-08-22 08:34:57 +08:00
西风逍遥游 457b861666 refactor(cmdline): build/get work from the packaged SDK alone
Users only receive a prebuilt EVEngine SDK (runtime libs, APK template,
game shell) and have no engine source, Makefile, cmake or NDK. Rework:

- eve build android no longer shells out to make. It copies the SDK APK
  template (platform/apk) into an output dir, injects the game assets,
  copies the prebuilt lib/*.so into jniLibs/arm64-v8a, writes
  local.properties (sdk.dir), and runs the Gradle distribution
  (assembleRelease/assembleDebug). SDK root is found via --sdk,
  $EVENGINE_SDK, <sdk>/bin/eve, or cwd.
- eve get android installs what that flow needs: JDK 17, Android
  cmdline-tools, platform-tools, platforms;android-34, build-tools, and
  Gradle 8.5 (the APK template ships no gradlew.bat). The NDK is no
  longer installed because native code ships prebuilt in the SDK.
- Tests now drive a fake SDK + fake gradle to verify the whole APK
  assembly path, plus wrong-SDK-platform / missing-toolchain errors.
2026-08-22 02:18:18 +08:00
西风逍遥游 5d32a7e3ab feat(cmdline): eve get android installs the Android SDK toolchain
`eve get android` downloads and sets up everything `eve build android`
needs: Android command-line tools (via curl + tar), platform-tools,
platforms;android-34, build-tools;34.0.0, NDK 26.1.10909125 (versions
matching the repo Makefile and APK project), plus JDK 17 (Temurin)
unless JAVA_HOME is already set. It writes <sdk>/eve-android.env so
`eve build android` picks up ANDROID_HOME / JAVA_HOME when the shell
environment has not been updated. Other platforms report a clear
not-implemented error. Regression tests cover the already-installed and
unsupported-platform paths; URLs/paths are overridable via env vars.
2026-08-22 02:02:04 +08:00
西风逍遥游 303203ff86 feat(cmdline): eve build <platform> dispatches to the platform Makefile
`eve build android` now runs the repo Makefile's build/android target with
ANDROID_GAME set (so an APK is produced from the current game), and the
other platforms map to build/win32|linux|macosx|ios[-debug]. A positional
that matches a known platform is treated as the platform; otherwise it
stays the game path (legacy behavior). The engine checkout root is
auto-detected by walking up from cwd, or via --sdk / $EVENGINE_SDK.

Android builds require the Android SDK; when it is missing the command
points the user at `eve get android`. Linux builds on a Windows host use
the Makefile WSL2 targets. Adds sdk_tools helpers (platform names, env,
shell runner) and regression tests with a fake Makefile target.
2026-08-22 02:00:42 +08:00
西风逍遥游 cdf32162a0 test(cmdline): cover create/clean/doc/zip dispatch and behavior
First regression tests for the eve CLI: --help/--version wiring,
unknown-subcommand errors, create scaffolding (incl. skip-existing),
clean no longer creating a project, doc printing the URL with --no-open,
and zip producing a valid archive named after the cwd without embedding
itself.
2026-08-22 01:35:27 +08:00