# ASEngine Mobile **Repository Path**: GProReat_admin/asengine-mobile ## Basic Information - **Project Name**: ASEngine Mobile - **Description**: 这是一个as运行的框架, 先从服务器下载as文件 然后运行 日志通过udp发送到目标主机 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-11 - **Last Updated**: 2026-06-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ASEngine — AngelScript + EGL Android Framework 基于 **AngelScript 2.34** 和 **EGL/OpenGL ES 2.0** 的 Android 渲染框架。 脚本从远程服务器实时下载执行,支持增量同步、SHA256 校验。 ## 游戏项目 项目目录 `asproj/` 和 `asproj1/` 是两套独立的 AngelScript 游戏: | 项目 | 路径 | 类型 | |------|------|------| | **地牢之大侠风云** | `asproj/` | 完整关卡游戏(BOSS战、剧情、装备) | | **小 Demo 合集** | `asproj1/` | BallGame / SpaceShooter / SensorGame 等 | App 启动时通过 `manifest.json` 同步下载脚本到手机本地,`MainActivity` 自动加载 `main.as`。 --- ## 构建指南 ### 开发版 (dev debug) ```batch # 方式 1:一键编译+安装(推荐) 双击 build debug and install.bat # 方式 2:仅编译 双击 build debug.bat # 方式 3:手动 D:\softdir\Gradle\gradle-8.10.2\bin\gradle.bat assembleDevDebug ``` APK 路径:`app/build/outputs/apk/dev/debug/app-dev-debug.apk` ### 安装到设备 ```batch # 方式 1:install 148.bat(指定设备 192.168.0.148) 双击 install 148.bat # 方式 2:手动 adb install -r app/build/outputs/apk/dev/debug/app-dev-debug.apk # 方式 3:指定远程设备 adb -s 192.168.0.148 install -r app/build/outputs/apk/dev/debug/app-dev-debug.apk ``` ### 清理 ```batch 双击 clean.bat ``` --- ## 发布版 (mobile release) 使用 `publish.bat` 构建签名版 Release APK: ```batch # 一键构建(自动生成 keystore + 签名) 双击 publish.bat ``` APK 路径:`app/build/outputs/apk/mobile/release/app-mobile-release.apk` ### 配置信息 | 项目 | 值 | |------|-----| | 包名 | `com.asengine.mobile` | | App 名 | 地牢之大侠风云 Mobile | | 签名 | jipu (CN=极普若游工作室) | | keystore 位置 | `keystore/mobile.keystore` | | 脚本源 (release) | `https://www.gprogames.fun/AEM/1` | | 脚本源 (debug) | `http://192.168.0.246:8080/asproj/` | > **注意**:首次构建发布版需要先在命令行或 Git Bash 中运行一次,之后可双击运行。 --- ## 手柄支持 Android 原生手柄 (USB/蓝牙) 已完整适配: ### 按键映射 | 手柄按键 | 功能 | 实现方式 | |----------|------|----------| | 左摇杆 | 角色移动 | `getGamepadAxis(0/1)` | | X | 轻击 | `isKeyDown(BUTTON_X)` + 0.3s 冷却 | | Y | 闪现/闪避 | `isKeyDown(BUTTON_Y)` + 0.3s 冷却 | | A | 格挡 | `isKeyDown(BUTTON_A)` 按住持续格挡 | | B | 重击 | `isKeyDown(BUTTON_B)` + 0.6s 冷却 | | START | 打开/关闭设置面板 | `isKeyJustReleased(BUTTON_START)` | | SELECT | 关闭设置面板/返回 | `isKeyJustReleased(BUTTON_SELECT)` | | 方向键 | 菜单/设置导航 | HAT X/Y 轴 | ### 源码原理 - Java `dispatchKeyEvent` 拦截 `SOURCE_GAMEPAD`/`SOURCE_JOYSTICK` 事件 - C++ `processKeyEvents()` 处理按键队列,过滤 key-repeat - 按键状态跟踪:bit0=held, bit1=justPressed, bit2=justReleased - 触摸与手柄**互斥**:触摸时跳过手柄摇杆读取(`joy.touchId >= 0`) - 触摸时自动断开"手柄已连接"提示 ### 依赖代码 ``` MainActivity.java dispatchKeyEvent 拦截 as_input.cpp processKeyEvents 队列处理 dilao.as handleInput() 按键 → 游戏行为 main.as 菜单/设置导航 ``` --- ## 下载进度 App 启动时自动显示下载进度条(屏幕底部): ``` ┌──────────────────────────────────┐ │ ████████░░░░░░░░░░ │ │ 下载中 3/28 1KB/2.0MB 255KB/s │ │ ↑文件数 ↑当前文件 ↑网速 │ └──────────────────────────────────┘ ``` - 实时网速每 300ms 自动刷新 - 文件进度逐文件实时更新(每 64KB 回调) - 下载完成后自动消失,进入游戏 --- ## 脚本部署 ### 目录结构 ``` asproj/ ← 地牢之大侠风云 脚本 ├── main.as 启动脚本 ├── dilao.as 游戏主逻辑 ├── dilao/ │ ├── player.as 玩家类 │ ├── enemy_base.as 敌人基类 │ └── ... ├── ui/ │ ├── joystick.as 摇杆组件 │ └── touchbutton.as 按钮组件 ├── assets/ 纹理/音效资源 ├── manifest.json 文件清单 └── gen-manifest.ps1 清单生成脚本 ``` ### 开发流程 1. 修改 `D:\softdir\apache-tomcat-10.1.31\webapps\asproj\` 下的脚本 2. 运行 `gen-manifest.ps1` 重新生成 manifest 3. 注意:Tomcat 路径和 git 路径 (`E:\android\asproj`) 不同步,修改后需手动复制 ### 服务端配置 | 环境 | BASE_URL | |------|----------| | 开发 (debug) | `http://192.168.0.246:8080/asproj/` | | 发布 (release) | `https://www.gprogames.fun/AEM/1` | > 脚本源 URL 自动根据 `ApplicationInfo.FLAG_DEBUGGABLE` 切换,无需手动修改。 --- ## 日志系统 日志同时输出到: 1. **Android logcat**:`adb logcat -s Engine JNIBridge EglCore Renderer AsEngine` 2. **UDP 远程日志**:自动发送到 `192.168.0.246:9876` 启动接收端: ```batch 双击 tools\udp_log_receiver.bat ``` 日志带颜色编码:`[V]` 灰色 / `[I]` 绿色 / `[W]` 黄色 / `[E]` 红色 --- ## 项目结构 ``` E:/android/ ├── build.gradle.kts / settings.gradle.kts # Gradle 根配置 ├── gradlew / gradlew.bat # Gradle Wrapper ├── publish.bat # 发布版构建 ├── build debug and install.bat # 编译+安装 ├── build debug.bat # 仅编译 ├── install 148.bat # 安装到远程设备 ├── clean.bat # 清理缓存 ├── asproj/ # 地牢之大侠风云 脚本 ├── asproj1/ # 小 Demo 合集脚本 ├── keystore/ # 发布版签名密钥 ├── tools/ │ ├── udp_log_receiver.ps1 │ ├── udp_log_receiver.bat │ └── vscode-debugger/ ├── app/ │ ├── build.gradle.kts # CMake + NDK 配置 │ ├── src/main/ │ │ ├── AndroidManifest.xml │ │ ├── java/com/asengine/ │ │ │ ├── PrivacyActivity.java # 隐私协议 │ │ │ ├── MainActivity.java # 主入口 │ │ │ └── ScriptDownloader.java # 脚本下载器 │ │ ├── cpp/ # C++ native 代码 │ │ └── res/ # 主题 + 图标 │ └── src/mobile/ # mobile flavor 资源 │ ├── res/mipmap-*/ic_launcher.png # 发布版图标 │ └── res/values/strings.xml # 发布版 App 名 ``` --- ## 版本历史 参见 [UPDATE.md](UPDATE.md) 完整更新日志。