轻松接入
极速畅玩

为小游戏和 H5 提供高性能原生运行时,满足多种使用场景。

已发布

Android · iOS · macOS · Linux · Windows · OpenHarmony

使用场景 →

bunnymark 同类负载 · 220 精灵 · 60 fps

峰值内存低44.3–54.3%
CPU 中位数低57.8–66.9%

同机基准数据 →

01使用场景

一个 Migo,多个场景

还有更多场景 · 邮件联系 → 12 小时内回复

02技术优势

为什么选 Migo

内存均值相对 WebView
−48.7%

3 款游戏,同机中位数对比

CPU 均值相对 WebView
−62.9%

3 款游戏,单核归一

下载成本单架构 AAR
+16 MB

装机 38.9 MB;也可按需加载

横断面同样可审计:API 面共 369 个已发布接口;一致性套件 80 条共用断言在 Linux 参考实现、模拟器与真机三端逐条全过。

Runtime boundary
版本由宿主决定

游戏跑在 Migo 里,账号、支付、发布仍在宿主手里。

MIGO RUNTIME

Rust 原生内核

自带 V8 · 单 crate 多端构建369 个已发布接口
多引擎导出即载入Pixi · Phaser · three.js
Babylon.js · PlayCanvas
Web API adapter · 浏览器产物,conformance 套件原样运行
微信包零改动wx.* 与 migo.* 同一函数引用
WebAssembly 直跑 · 分包与预取首包瘦身 · 按需加载 · DNS 预取
宿主掌握生命周期 · 业务服务 · 发布控制
窗口 · 账号 · 支付 · 广告 · 版本 · sha256 · 灰度 / 回滚
全平台覆盖 · 6 端已嵌入AndroidiOSmacOSLinuxWindowsOpenHarmony
03接入示例

6 个原生宿主 · 9 组商业化回调

// MigoGameView.java 文档用法
MigoGameView gameView = new MigoGameView(context);

RuntimeConfig config = new RuntimeConfig.Builder(context)
    .setImmersiveMode(false)   // 嵌入式视图通常为 false
    .setTargetFps(60)
    .setCodeCacheDir(cacheDir)
    // 适配层就是一段前置脚本,多次调用按顺序累加
    .addPreludeScript("<migo-web-adapter>", adapterSource)
    .build();

gameView.setConfig(config);
gameView.setGameListener(listener);
layout.addView(gameView);
gameView.loadGame("my-game", "game.js");

RuntimeConfig 另可钉住启动方向、日志级别、看门狗超时与代码签名校验。前置脚本名会出现在 V8 调用栈里,便于区分适配层报错与游戏报错。

// iOS — MigoGameView, UIKit (SwiftUI 经 UIViewRepresentable)
import MigoApplePerformancePlus

let config = try MigoGameView.Configuration.standard(contentSigning: .unsigned)
try MigoGameInstaller.install(package: gameDir, id: "my-game",
                              version: build, into: config.directories)

let gameView = MigoGameView(configuration: config)
gameView.onEvent = { event in /* .ready, .exitRequested, … */ }
parent.addSubview(gameView)
gameView.loadGame(id: "my-game")

SwiftPM 包 migo-<版本>-apple-sdk.zip, iOS 15.2+。内容 JS 跑在 WebKit 的 JavaScriptCore(带 JIT), 渲染由 Migo 在 App 进程完成(Performance+)。

// macOS — 同一个包, AppKit
import MigoMacV8

let config = try MigoGameView.Configuration.standard(contentSigning: .unsigned)
try MigoGameInstaller.install(package: gameDir, id: "my-game",
                              version: build, into: config.directories)

let gameView = MigoGameView(configuration: config)
window.contentView = gameView
gameView.loadGame(id: "my-game")

macOS 11+, V8 带 JIT 在本进程运行。App 需以 hardened runtime + allow-jit 签名, 并在构建阶段嵌入 ANGLE。

// Linux — C ABI, 挂在宿主 UI 拥有的窗口上
#include <migo/migo.h>
#include <migo/platform/x11.h>

migo_engine_create(&engine_config, &engine);
migo_session_create(engine, &session_config, &session);
migo_session_set_host_callbacks(session, &callbacks);

MigoX11WindowDescriptor x11 = { /* … */ .display = dpy, .window = xid };
migo_session_attach_surface(session, &surface, &attachment);
migo_session_load_content(session, &content);  /* my-game, game.js */

C ABI 为候选版, 尚未冻结。宿主提供 X11 或 Wayland 窗口, 用 migo_session_notify_vsync 驱动出帧; host-kit 里有 Qt 6 / X11 适配器。

// Windows — C ABI, 挂在宿主拥有的子 HWND 上
#include <migo/migo.h>
#include <migo/platform/win32.h>

migo_engine_create(&engine_config, &engine);
migo_session_create(engine, &session_config, &session);
migo_session_set_host_callbacks(session, &callbacks);

MigoWin32HwndDescriptor win = { /* … */ .hwnd = child_hwnd };
migo_session_attach_surface(session, &surface, &attachment);
migo_session_load_content(session, &content);  /* my-game, game.js */

migo.dll + 导入库与 CMake target, x64 / arm64。渲染经 ANGLE 画到 HWND 上; WinUI 集成由宿主完成。

// OpenHarmony — XComponent 绑定 native 宿主模块
XComponent({ id: 'migo_surface', type: XComponentType.SURFACE,
             libraryname: 'migohost' })
  .onLoad(() => {
    // native 侧经同一套 C ABI 挂载 surface
    migohost.start(filesDir, cacheDir, 'my-game', scaleFactor);
  })

完整 DevEco 宿主工程。HarmonyOS NEXT 不允许第三方 JIT, 那里 V8 以 jitless 运行。

// 商业化与账号留在宿主:游戏只发起,宿主决定怎么实现
class Ads   implements AdHandler         { /* 接你自己的聚合 SDK */ }
class Auth  implements AuthHandler       { /* 接你自己的账号服务 */ }
class Pay   implements PaymentHandler    { /* 接你自己的支付通道 */ }
class Perms implements PermissionHandler { /* 你决定游戏能用什么 */ }
class Sink  implements AdEventSink       { /* 曝光 / 点击 / 完播回传 */ }

// 游戏里调 createRewardedVideoAd()  -> 走到 AdHandler
// 游戏里调 login()                  -> 走到 AuthHandler
// 游戏里调 requestMidasPayment()    -> 走到 PaymentHandler
// 一个都不接也能跑,只是这些调用会明确失败

运行时不内置任何广告网络,也不持有账号体系。收款和登录都发生在你的 SDK 里。

完整接口与回调约定见 开发者文档 →

04合作方式

灯塔计划 · 免费接入

灯塔计划

现在开放
¥0集成与联调全程

在你的 App 里跑通一款游戏,含宿主集成、广告 / 支付 / 账号回调打通与灰度发布。费用为 0, 换的是一份可公开引用的真机数据报告。

  • 宿主集成与联调 · 全程免费
  • 广告 / 支付 / 账号回调打通
  • 灰度包、回滚方案、性能数据
  • 数据可写入公开 migo-bench 报告

技术支持

1 对 1 免费
2小时内回复 · 工作时间

从环境准备到上线, 你的工程师与我们的引擎作者一对一。工作时间 2 小时内回复, 紧急问题当日跟到关闭。

  • 引擎作者直连 · 不转客服
  • 工作时间 2 小时内回复
  • 紧急问题当日关闭
  • 微信群 / Slack / 线上会议

年度商业许可

接入后谈
MAU与平台计价

游戏跑通进入运营期后再谈商业条款, 按 MAU 与平台计价。灯塔客户在签约价格上享有明确的优惠。

  • 按 MAU 与平台计价
  • 版本升级与安全更新
  • 接口扩展优先级
  • 灯塔客户价格优惠 · BSL 1.1

更多评估与接入问题见 常见问题 →