English
This issue defines a focused roadmap for improving OneGate as a high-performance GameFi/mobile web game runtime while avoiding overlap with existing PRs and avoiding previously rejected directions from Erik/admin review.
Related context: #36 covers first-party OneGate Experiences compatible with current web dApps. This issue is narrower: game runtime performance, game developer requirements, and GameFi integration quality.
Current PR overlap audit
The following open PRs already cover adjacent work and should not be duplicated here:
Erik/admin review guardrails
Future PRs from this roadmap must respect these constraints from historical Erik/admin feedback:
Proposed PR sequence
Each PR must be independently reviewable, must avoid unrelated refactors, and must include Android + iOS simulator validation with screenshots posted in the PR comments only.
1. Game Runtime Mode
Scope: Add a dedicated runtime mode for game dApps: immersive/fullscreen container, safe exit affordance, orientation handling, safe-area handling, and minimized app chrome.
Why: Heavy games need more screen space and fewer layout interruptions than normal dApps. This is different from the rejected trust bar (#47): it removes chrome instead of adding a persistent bar.
Acceptance: Android and iOS simulator launch a game dApp in runtime mode; normal dApps remain unchanged; no game-specific UI adaptation is hardcoded.
2. Game Runtime Lifecycle Controls
Scope: Pause/resume hooks, background/foreground handling, audio suspension/resume, WebGL context-loss detection messaging, and reload recovery affordance.
Why: Mobile WebView games are sensitive to lifecycle changes. OneGate should help the runtime recover cleanly without owning the game's internal UI.
Acceptance: Runtime exposes lifecycle events to dApps and handles app background/foreground transitions without crashing.
3. Game Performance HUD for Developer Mode
Scope: Add a developer-only HUD for game dApps showing FPS estimate, long-frame count, load timing, WebGL support/context-loss status, and current URL/origin.
Why: Game performance issues need concrete metrics. The HUD must be developer-only so it does not repeat the rejected always-visible trust bar pattern.
Acceptance: HUD is hidden unless developer mode is enabled; screenshots show metrics on Android and iOS; no user-facing clutter by default.
4. Game Manifest and Capability Contract
Scope: Define a lightweight onegate-game.json manifest schema: game type, preferred orientation, fullscreen preference, asset budget, required OneGate APIs, supported input methods, and version/hash metadata.
Why: OneGate needs a predictable way to decide runtime mode and preload policy without guessing per dApp.
Acceptance: Runtime reads optional manifest metadata; missing manifest falls back to current behavior.
5. CDN Asset Budget and Cache Policy
Scope: Add documented and/or runtime-enforced budgets for initial JS/WASM, textures, audio, total first-load bytes, cache headers, and hashed filenames.
Why: Current game pain points include long white screens and heavy assets. The fix should be a game publishing contract, not ad hoc OneGate-side adaptation.
Acceptance: A developer checklist and optional runtime diagnostics warn when a game exceeds budget; no blocking behavior without explicit policy.
6. OneGate Game SDK Package
Scope: Provide a small TypeScript SDK wrapper over existing dAPI/native capabilities: wallet connect, sign/send, address picker (#72), QR scanner (#73), asset picker (#74), share (#75), fullscreen/orientation/lifecycle events.
Why: Game developers should not hand-roll bridge calls. The SDK should encode OneGate best practices while respecting NEP-21 semantics.
Acceptance: SDK sample works inside Android WebView and iOS WKWebView; SDK does not add new wallet authorization semantics that conflict with Erik's NEP-21 feedback.
7. Phaser/Pixi GameFi Starter Template
Scope: Add an external/template project or docs for a mobile-first GameFi starter using Phaser or PixiJS, TypeScript, Vite, responsive canvas, loading/progress/error states, wallet connect, and deferred chain settlement.
Why: For most OneGate games, Phaser/Pixi are better mobile-web defaults than shipping heavy desktop/Unity builds. This should guide game teams without bloating OneGate app code.
Acceptance: Template demonstrates mobile canvas sizing, resource loading, OneGate SDK usage, and a mock settlement flow.
8. Game QA Checklist and Performance Gate
Scope: Create a repeatable QA checklist for game submissions: Android/iOS simulator validation, low-end-device budget, load time, FPS/jank, memory, WebGL context loss, wallet connect/sign, orientation, offline/retry, screenshots.
Why: Game quality should be enforced before listing, not patched inside OneGate after launch.
Acceptance: Checklist is usable in PR/issue review and references current screenshot policy.
9. DApp/Game Submission Form Extension
Scope: Extend the dApp listing issue form after #70 lands to include game-specific fields: manifest URL, runtime mode, orientation, resource budget, wallet APIs used, screenshots, and licensing notes.
Why: Game submissions need more metadata than normal dApps.
Dependency: Wait for #70 to land or update #70 if reviewer prefers. Do not create a competing issue template PR before #70 is resolved.
10. Runtime Diagnostics Report Export
Scope: Add a debug action to export/copy a diagnostics summary for the current game session: URL, device, WebView platform, timing, errors, native API calls summary, and app version.
Why: Game developers need actionable reports when OneGate users report performance or wallet-integration issues.
Acceptance: Report contains no private keys, seed data, or sensitive wallet data.
Explicit non-goals
- No OneGate-side per-game DOM/CSS adaptation for third-party dApps.
- No persistent dApp trust bar.
- No connected-app permission center that conflicts with NEP-21 semantics.
- No local transaction history database.
- No official dApp wrapper for existing dApps.
- No broad dashboard redesign or unrelated visual polish.
- No screenshots committed to the repository.
中文
这个 issue 定义 OneGate 作为高性能 GameFi / 移动 Web 游戏运行时的路线图,同时避免和现有 PR 重复,也避免重复做 Erik / 管理员历史上已经拒绝过的方向。
相关背景:#36 讨论的是兼容现有 web dApp 的 first-party OneGate Experiences。这个 issue 范围更窄,只关注游戏运行时性能、游戏开发规范、GameFi 钱包集成质量。
当前 PR 重合审计
以下 open PR 已经覆盖相邻工作,本 issue 后续任务不应重复:
Erik / 管理员历史意见约束
后续所有 PR 必须遵守这些历史反馈:
建议 PR 顺序
每个 PR 必须独立可 review,不混入无关重构,并且必须在 Android 和 iOS 模拟器验证,截图只放 PR 评论。
1. Game Runtime Mode
范围: 为游戏 dApp 增加专用运行模式:沉浸/fullscreen 容器、安全退出入口、方向处理、safe area、最小化普通 app chrome。
原因: 重游戏需要更多屏幕空间和更少布局干扰。这和被拒绝的 trust bar 不同:这里是减少 chrome,不是新增常驻栏。
验收: Android/iOS 模拟器能以 runtime mode 打开游戏 dApp;普通 dApp 不受影响;不写死任何具体游戏适配。
2. Game Runtime Lifecycle Controls
范围: pause/resume hooks、前后台切换、音频暂停/恢复、WebGL context lost 检测提示、reload recovery。
原因: 移动 WebView 游戏对生命周期变化敏感。OneGate 应帮助运行时恢复,而不是接管游戏内部 UI。
验收: runtime 能向 dApp 暴露 lifecycle events,前后台切换不崩溃。
3. Game Performance HUD for Developer Mode
范围: 给游戏 dApp 增加仅开发者模式可见的 HUD:FPS 估算、long frame 数量、加载耗时、WebGL 支持/context lost、当前 URL/origin。
原因: 游戏性能问题需要指标定位。HUD 默认隐藏,避免重复 trust bar 的占空间问题。
验收: 只有 developer mode 开启时显示;Android/iOS 截图展示指标;默认用户界面无额外干扰。
4. Game Manifest and Capability Contract
范围: 定义轻量 onegate-game.json:游戏类型、建议方向、是否 fullscreen、资源预算、需要的 OneGate API、输入方式、版本/hash metadata。
原因: OneGate 需要可预测地决定 runtime mode 和 preload 策略,而不是按 dApp 猜测。
验收: runtime 可读取可选 manifest;没有 manifest 时保持现有行为。
5. CDN Asset Budget and Cache Policy
范围: 为首屏 JS/WASM、纹理、音频、总首载大小、cache headers、hashed filenames 建立文档/诊断预算。
原因: 当前游戏痛点包括白屏时间长、资源过重。应通过发布规范解决,而不是 OneGate 临时适配。
验收: 有开发者 checklist;runtime diagnostics 可提示超预算;默认不做阻断。
6. OneGate Game SDK Package
范围: 做 TypeScript SDK 封装现有 dAPI/native 能力:钱包连接、签名/交易、地址簿 #72、扫码 #73、资产选择 #74、分享 #75、fullscreen/orientation/lifecycle events。
原因: 游戏开发者不应手写 bridge 调用。SDK 应编码 OneGate 最佳实践,同时尊重 NEP-21 语义。
验收: SDK 示例能在 Android WebView 和 iOS WKWebView 运行;不新增与 Erik NEP-21 反馈冲突的钱包授权语义。
7. Phaser/Pixi GameFi Starter Template
范围: 提供外部模板或 docs:Phaser/Pixi + TypeScript + Vite,移动优先 canvas、加载/进度/错误态、钱包连接、延迟链上结算。
原因: 对多数 OneGate 游戏,Phaser/Pixi 比直接上桌面化 Unity 大包更适合移动 WebView。
验收: 模板展示移动 canvas sizing、资源加载、OneGate SDK 使用、mock settlement flow。
8. Game QA Checklist and Performance Gate
范围: 制定游戏提交 QA checklist:Android/iOS 模拟器、低端机预算、加载耗时、FPS/jank、内存、WebGL context lost、钱包连接/签名、方向、离线/重试、截图。
原因: 游戏质量应该在上架前把关,而不是上线后靠 OneGate 修补。
验收: checklist 可直接用于 PR/issue review,并遵守当前截图策略。
9. DApp/Game Submission Form Extension
范围: 等 #70 合并后扩展 dApp listing issue form,加入游戏特有字段:manifest URL、runtime mode、方向、资源预算、使用的钱包 API、截图、授权说明。
原因: 游戏提交需要比普通 dApp 更多 metadata。
依赖: 等 #70 合并或按 reviewer 意见更新 #70。不要在 #70 未解决前再开竞争性 issue template PR。
10. Runtime Diagnostics Report Export
范围: 增加调试动作,导出/复制当前游戏 session 诊断摘要:URL、设备、WebView 平台、timing、错误、native API calls summary、app version。
原因: 当用户报告性能或钱包集成问题时,游戏开发者需要可操作的报告。
验收: 报告不包含私钥、助记词或敏感钱包数据。
明确不做
- 不在 OneGate 侧为第三方 dApp 做逐个 DOM/CSS 适配。
- 不做常驻 dApp trust bar。
- 不做与 NEP-21 语义冲突的 connected apps 权限中心。
- 不做本地交易历史数据库。
- 不为现有 dApp 做“官方 dApp”包装。
- 不混入 dashboard 重构或无关视觉 polish。
- 不把截图提交进仓库。
English
This issue defines a focused roadmap for improving OneGate as a high-performance GameFi/mobile web game runtime while avoiding overlap with existing PRs and avoiding previously rejected directions from Erik/admin review.
Related context: #36 covers first-party OneGate Experiences compatible with current web dApps. This issue is narrower: game runtime performance, game developer requirements, and GameFi integration quality.
Current PR overlap audit
The following open PRs already cover adjacent work and should not be duplicated here:
Improve gaming hub experience: game discovery/hub polish. Do not mix hub UI changes into runtime-performance PRs.Add dApp load failure and retry states: generic dApp load failure/retry states. Do not duplicate generic loading/error work.Add dApp address book contact picker API: native address-book picker for dApps.Add dApp QR scanner API: native QR scanner for dApps.Add dApp asset picker API: native wallet asset picker for dApps.Add dApp share API: native system share sheet for dApps.Improve dApp detail page, Add Activity Center #53Add Activity Center, Polish design system styles #57Polish design system styles, Add global search #54Add global search: avoid touching these surfaces unless a task explicitly depends on them and the PR stays narrow.Erik/admin review guardrails
Future PRs from this roadmap must respect these constraints from historical Erik/admin feedback:
authenticateis for website authentication, not generic user authorization (Add connected apps permission center #49).VaultOperation(Add Activity Center #53).Proposed PR sequence
Each PR must be independently reviewable, must avoid unrelated refactors, and must include Android + iOS simulator validation with screenshots posted in the PR comments only.
1. Game Runtime Mode
Scope: Add a dedicated runtime mode for game dApps: immersive/fullscreen container, safe exit affordance, orientation handling, safe-area handling, and minimized app chrome.
Why: Heavy games need more screen space and fewer layout interruptions than normal dApps. This is different from the rejected trust bar (#47): it removes chrome instead of adding a persistent bar.
Acceptance: Android and iOS simulator launch a game dApp in runtime mode; normal dApps remain unchanged; no game-specific UI adaptation is hardcoded.
2. Game Runtime Lifecycle Controls
Scope: Pause/resume hooks, background/foreground handling, audio suspension/resume, WebGL context-loss detection messaging, and reload recovery affordance.
Why: Mobile WebView games are sensitive to lifecycle changes. OneGate should help the runtime recover cleanly without owning the game's internal UI.
Acceptance: Runtime exposes lifecycle events to dApps and handles app background/foreground transitions without crashing.
3. Game Performance HUD for Developer Mode
Scope: Add a developer-only HUD for game dApps showing FPS estimate, long-frame count, load timing, WebGL support/context-loss status, and current URL/origin.
Why: Game performance issues need concrete metrics. The HUD must be developer-only so it does not repeat the rejected always-visible trust bar pattern.
Acceptance: HUD is hidden unless developer mode is enabled; screenshots show metrics on Android and iOS; no user-facing clutter by default.
4. Game Manifest and Capability Contract
Scope: Define a lightweight
onegate-game.jsonmanifest schema: game type, preferred orientation, fullscreen preference, asset budget, required OneGate APIs, supported input methods, and version/hash metadata.Why: OneGate needs a predictable way to decide runtime mode and preload policy without guessing per dApp.
Acceptance: Runtime reads optional manifest metadata; missing manifest falls back to current behavior.
5. CDN Asset Budget and Cache Policy
Scope: Add documented and/or runtime-enforced budgets for initial JS/WASM, textures, audio, total first-load bytes, cache headers, and hashed filenames.
Why: Current game pain points include long white screens and heavy assets. The fix should be a game publishing contract, not ad hoc OneGate-side adaptation.
Acceptance: A developer checklist and optional runtime diagnostics warn when a game exceeds budget; no blocking behavior without explicit policy.
6. OneGate Game SDK Package
Scope: Provide a small TypeScript SDK wrapper over existing dAPI/native capabilities: wallet connect, sign/send, address picker (#72), QR scanner (#73), asset picker (#74), share (#75), fullscreen/orientation/lifecycle events.
Why: Game developers should not hand-roll bridge calls. The SDK should encode OneGate best practices while respecting NEP-21 semantics.
Acceptance: SDK sample works inside Android WebView and iOS WKWebView; SDK does not add new wallet authorization semantics that conflict with Erik's NEP-21 feedback.
7. Phaser/Pixi GameFi Starter Template
Scope: Add an external/template project or docs for a mobile-first GameFi starter using Phaser or PixiJS, TypeScript, Vite, responsive canvas, loading/progress/error states, wallet connect, and deferred chain settlement.
Why: For most OneGate games, Phaser/Pixi are better mobile-web defaults than shipping heavy desktop/Unity builds. This should guide game teams without bloating OneGate app code.
Acceptance: Template demonstrates mobile canvas sizing, resource loading, OneGate SDK usage, and a mock settlement flow.
8. Game QA Checklist and Performance Gate
Scope: Create a repeatable QA checklist for game submissions: Android/iOS simulator validation, low-end-device budget, load time, FPS/jank, memory, WebGL context loss, wallet connect/sign, orientation, offline/retry, screenshots.
Why: Game quality should be enforced before listing, not patched inside OneGate after launch.
Acceptance: Checklist is usable in PR/issue review and references current screenshot policy.
9. DApp/Game Submission Form Extension
Scope: Extend the dApp listing issue form after #70 lands to include game-specific fields: manifest URL, runtime mode, orientation, resource budget, wallet APIs used, screenshots, and licensing notes.
Why: Game submissions need more metadata than normal dApps.
Dependency: Wait for #70 to land or update #70 if reviewer prefers. Do not create a competing issue template PR before #70 is resolved.
10. Runtime Diagnostics Report Export
Scope: Add a debug action to export/copy a diagnostics summary for the current game session: URL, device, WebView platform, timing, errors, native API calls summary, and app version.
Why: Game developers need actionable reports when OneGate users report performance or wallet-integration issues.
Acceptance: Report contains no private keys, seed data, or sensitive wallet data.
Explicit non-goals
中文
这个 issue 定义 OneGate 作为高性能 GameFi / 移动 Web 游戏运行时的路线图,同时避免和现有 PR 重复,也避免重复做 Erik / 管理员历史上已经拒绝过的方向。
相关背景:#36 讨论的是兼容现有 web dApp 的 first-party OneGate Experiences。这个 issue 范围更窄,只关注游戏运行时性能、游戏开发规范、GameFi 钱包集成质量。
当前 PR 重合审计
以下 open PR 已经覆盖相邻工作,本 issue 后续任务不应重复:
Improve gaming hub experience:游戏发现 / 游戏入口体验。后续运行时性能 PR 不混入 Hub UI。Add dApp load failure and retry states:通用 dApp 加载失败 / 重试状态。不要重复做通用加载错误态。Add dApp address book contact picker API:dApp 调用 OneGate 地址簿。Add dApp QR scanner API:dApp 调用 OneGate 扫码。Add dApp asset picker API:dApp 调用 OneGate 资产选择。Add dApp share API:dApp 调用系统分享面板。Erik / 管理员历史意见约束
后续所有 PR 必须遵守这些历史反馈:
authenticate是网站认证用户,不是用户授权网站(Add connected apps permission center #49)。VaultOperation这种模糊名称(Add Activity Center #53)。建议 PR 顺序
每个 PR 必须独立可 review,不混入无关重构,并且必须在 Android 和 iOS 模拟器验证,截图只放 PR 评论。
1. Game Runtime Mode
范围: 为游戏 dApp 增加专用运行模式:沉浸/fullscreen 容器、安全退出入口、方向处理、safe area、最小化普通 app chrome。
原因: 重游戏需要更多屏幕空间和更少布局干扰。这和被拒绝的 trust bar 不同:这里是减少 chrome,不是新增常驻栏。
验收: Android/iOS 模拟器能以 runtime mode 打开游戏 dApp;普通 dApp 不受影响;不写死任何具体游戏适配。
2. Game Runtime Lifecycle Controls
范围: pause/resume hooks、前后台切换、音频暂停/恢复、WebGL context lost 检测提示、reload recovery。
原因: 移动 WebView 游戏对生命周期变化敏感。OneGate 应帮助运行时恢复,而不是接管游戏内部 UI。
验收: runtime 能向 dApp 暴露 lifecycle events,前后台切换不崩溃。
3. Game Performance HUD for Developer Mode
范围: 给游戏 dApp 增加仅开发者模式可见的 HUD:FPS 估算、long frame 数量、加载耗时、WebGL 支持/context lost、当前 URL/origin。
原因: 游戏性能问题需要指标定位。HUD 默认隐藏,避免重复 trust bar 的占空间问题。
验收: 只有 developer mode 开启时显示;Android/iOS 截图展示指标;默认用户界面无额外干扰。
4. Game Manifest and Capability Contract
范围: 定义轻量
onegate-game.json:游戏类型、建议方向、是否 fullscreen、资源预算、需要的 OneGate API、输入方式、版本/hash metadata。原因: OneGate 需要可预测地决定 runtime mode 和 preload 策略,而不是按 dApp 猜测。
验收: runtime 可读取可选 manifest;没有 manifest 时保持现有行为。
5. CDN Asset Budget and Cache Policy
范围: 为首屏 JS/WASM、纹理、音频、总首载大小、cache headers、hashed filenames 建立文档/诊断预算。
原因: 当前游戏痛点包括白屏时间长、资源过重。应通过发布规范解决,而不是 OneGate 临时适配。
验收: 有开发者 checklist;runtime diagnostics 可提示超预算;默认不做阻断。
6. OneGate Game SDK Package
范围: 做 TypeScript SDK 封装现有 dAPI/native 能力:钱包连接、签名/交易、地址簿 #72、扫码 #73、资产选择 #74、分享 #75、fullscreen/orientation/lifecycle events。
原因: 游戏开发者不应手写 bridge 调用。SDK 应编码 OneGate 最佳实践,同时尊重 NEP-21 语义。
验收: SDK 示例能在 Android WebView 和 iOS WKWebView 运行;不新增与 Erik NEP-21 反馈冲突的钱包授权语义。
7. Phaser/Pixi GameFi Starter Template
范围: 提供外部模板或 docs:Phaser/Pixi + TypeScript + Vite,移动优先 canvas、加载/进度/错误态、钱包连接、延迟链上结算。
原因: 对多数 OneGate 游戏,Phaser/Pixi 比直接上桌面化 Unity 大包更适合移动 WebView。
验收: 模板展示移动 canvas sizing、资源加载、OneGate SDK 使用、mock settlement flow。
8. Game QA Checklist and Performance Gate
范围: 制定游戏提交 QA checklist:Android/iOS 模拟器、低端机预算、加载耗时、FPS/jank、内存、WebGL context lost、钱包连接/签名、方向、离线/重试、截图。
原因: 游戏质量应该在上架前把关,而不是上线后靠 OneGate 修补。
验收: checklist 可直接用于 PR/issue review,并遵守当前截图策略。
9. DApp/Game Submission Form Extension
范围: 等 #70 合并后扩展 dApp listing issue form,加入游戏特有字段:manifest URL、runtime mode、方向、资源预算、使用的钱包 API、截图、授权说明。
原因: 游戏提交需要比普通 dApp 更多 metadata。
依赖: 等 #70 合并或按 reviewer 意见更新 #70。不要在 #70 未解决前再开竞争性 issue template PR。
10. Runtime Diagnostics Report Export
范围: 增加调试动作,导出/复制当前游戏 session 诊断摘要:URL、设备、WebView 平台、timing、错误、native API calls summary、app version。
原因: 当用户报告性能或钱包集成问题时,游戏开发者需要可操作的报告。
验收: 报告不包含私钥、助记词或敏感钱包数据。
明确不做