MCPcopy Create free account
hub / github.com/IppClub/Dora-SSR

github.com/IppClub/Dora-SSR @v1.8.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.8.1 ↗ · + Follow
77,850 symbols 221,544 edges 5,004 files 14,254 documented · 18% updated 4d agov1.8.1 · 2026-06-25★ 4979 open issues

Browse by type

Functions 61,714 Types & classes 16,136
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

多萝珍奇引擎(Dora SSR)

Dora SSR Web IDE · Coding Agent 真机开发游戏引擎 Dora SSR hero

English | 中文

IppClub OpenAtom Ask DeepWiki QQ Group Discord Badge

  Dora SSR 是一个用于多种设备上快速开发游戏的游戏引擎。它内置易用的 Web IDE 开发工具链,支持在手机、开源掌机等设备上直接进行游戏开发。

快速入口

技术概览

方向 内容
开发方式 Web IDE + Coding Agent + 在目标设备运行引擎、通过浏览器接入的实时游戏开发流程
语言生态 Lua / TypeScript / TSX / Teal / YueScript / Wa / Rust / C#
运行平台 Android / Windows / Linux / macOS / iOS / 鸿蒙

Android Linux Windows macOS iOS

Playground

主要特点

开发体验

  • Web IDE:内置开箱即用的网页开发环境,提供文件管理、代码检查、补全、高亮与定义跳转。
  • Coding Agent:内置 coding agent,把基于 LLM 的 AI 辅助开发集成进游戏引擎,结合项目技能、持久记忆、文件搜索、Dora API 查询、安全文件编辑、构建检查和子智能体派发完成开发任务。
  • 真机实时开发:支持在手机、掌机等目标设备上运行引擎,并通过浏览器接入 Web IDE 进行实时开发与调试。

dora on android

语言与扩展

  • Lua:升级的 Lua 绑定,支持继承和扩展底层 C++ 对象。
  • TypeScript / TSX:通过 TSTL 支持静态类型脚本开发与声明式场景构建。
  • Teal / YueScript:兼容 Lua 生态的不同风格语言选择。
  • Wa / Rust:支持通过内置 WASM 运行时扩展引擎能力。
  • C#:支持通过动态库方式调用引擎进行原生开发。
  • Blockly:支持类似 Scratch 的可视化编程,适合教学与初学者入门。

Blockly

运行与表现

  • 跨平台支持:原生运行于 AndroidWindowsLinuxiOSmacOS鸿蒙
  • 场景系统:基于树形节点结构管理游戏对象,并提供易用的 ECS 模块。
  • 异步处理:支持文件读写、资源加载等异步任务。
  • 2D 动画与物理:支持 Spine2D、DragonBones、内置骨骼动画与 PlayRho 2D 物理。
  • 视频与音频:支持 H.264 视频播放,以及多格式音频播放、3D 空间音效、距离衰减与多普勒效果。
  • 图形运行时:支持跨平台图形 shader 运行时编译,以及 Effekseer 特效、NanoVG 矢量图形、ImGui 调试界面与 True Type 字体渲染。
  • 游戏类型支持:提供 2D 平台游戏 的基本逻辑与 AI 开发框架。

内容与工具链

  • 数据与配置:支持异步操作 SQLite 与 Excel 数据同步。
  • Animation Editor:Web IDE 内置动画编辑器,可用于创建和编辑 2D 模型动画资源,并提供树形结构、关键帧、动画片段、播放预览和变换工具。
  • 场景与叙事:支持 CSS Flex 布局、Tiled TMX 地图与 Yarn Spinner 故事系统。
  • 创作扩展:内置机器学习玩法框架,并提供开放美术素材与游戏 IP —— 《灵数奇缘》

LSD

从这里开始

  • 功能示例:参考 Dora-Example 了解各项 API 与引擎能力的最小用法。
  • 完整项目:参考 Dora-Demo 了解如何组织资源、脚本与游戏逻辑。

精选示例项目

Loli War

Zombie Escape

Dismentalism

Luv Sense Digital

安装配置

Android

  • 获取:在目标设备上下载并安装 APK 包。
  • 运行:启动软件,并通过局域网内 PC、平板或其他开发设备上的浏览器访问软件显示的地址。
  • 开始:进入 Web IDE 开始游戏开发。

Windows

  • 依赖:先安装 Visual Studio 2022 的 X86 Visual C++ 可再发行组件包,可从微软网站下载。
  • 获取:下载并解压软件
  • 运行:启动软件,并通过浏览器访问软件显示的地址。
  • 开始:进入 Web IDE 开始游戏开发。

macOS

  • 获取:下载并解压软件,或通过 Homebrew 安装: sh brew install --cask ippclub/tap/dora-ssr
  • 运行:启动软件,并通过浏览器访问软件显示的地址。
  • 开始:进入 Web IDE 开始游戏开发。

Linux

  • 获取:按系统版本安装软件。
    • Ubuntu Jammy sh sudo add-apt-repository ppa:ippclub/dora-ssr sudo apt update sudo apt install dora-ssr
    • Debian Bookworm sh sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 9C7705BF sudo add-apt-repository -S "deb https://ppa.launchpadcontent.net/ippclub/dora-ssr/ubuntu jammy main" sudo apt update sudo apt install dora-ssr
  • 运行:启动软件,并通过浏览器访问软件显示的地址。
  • 开始:进入 Web IDE 开始游戏开发。

Linux 软件源

  • Ubuntu Jammy: sh sudo add-apt-repository ppa:ippclub/dora-ssr sudo apt update sudo apt install dora-ssr
  • Debian Bookworm: sh sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 9C7705BF sudo add-apt-repository -S "deb https://ppa.launchpadcontent.net/ippclub/dora-ssr/ubuntu jammy main" sudo apt update sudo apt install dora-ssr

编译构建引擎

  • 需要自行编译 Dora SSR 项目时,详见官方文档

快速上手

  • 第一步:创建一个新项目

    • 在浏览器中,打开 Dora Dora 编辑器左侧 工作空间 的右键菜单。
    • 点击菜单项 新建,选择新建文件夹。
  • 第二步:编写游戏代码

    • 在项目文件夹下新建游戏入口代码文件,选择 Lua (YueScript, Teal, TypeScript 或 TSX) 语言命名为 init
    • 编写 Hello World 代码:
  • Lua

local _ENV = Dora

local sprite = Sprite("Image/logo.png")
sprite:once(function()
  for i = 3, 1, -1 do
    print(i)
    sleep(1)
  end
  print("Hello World")
  sprite:perform(Sequence(
    Scale(0.1, 1, 0.5),
    Scale(0.5, 0.5, 1, Ease.OutBack)
  ))
end)
  • Teal
local sleep <const> = require("sleep")
local Ease <const> = require("Ease")
local Scale <const> = require("Scale")
local Sequence <const> = require("Sequence")
local Sprite <const> = require("Sprite")

local sprite = Sprite("Image/logo.png")
if not sprite is nil then
  sprite:once(function()
    for i = 3, 1, -1 do
      print(i)
      sleep(1)
    end
    print("Hello World")
    sprite:perform(Sequence(
      Scale(0.1, 1, 0.5),
      Scale(0.5, 0.5, 1, Ease.OutBack)
    ))
  end)
end
  • YueScript

  有关 Dora SSR 所支持的 YueScript 这门小众语言的故事在这里

_ENV = Dora

with Sprite "Image/logo.png"
   \once ->
     for i = 3, 1, -1
       print i
       sleep 1
     print "Hello World!"
     \perform Sequence(
       Scale 0.1, 1, 0.5
       Scale 0.5, 0.5, 1, Ease.OutBack
     )
  • TypeScript
import { Sprite, Ease, Scale, Sequence, sleep } from 'Dora';

const sprite = Sprite("Image/logo.png");
if (sprite) {
  sprite.once(() => {
    for (let i of $range(3, 1, -1)) {
      print(i);
      sleep(1);
    }
    print("Hello World");
    sprite.perform(Sequence(
      Scale(0.1, 1, 0.5),
      Scale(0.5, 0.5, 1, Ease.OutBack)
    ))
  });
}
  • TSX

  使用 TSX 语言来创建 Dora SSR 的游戏场景是一个比较容易上手的选择。toNode() 适合一次性的静态场景构建;需要根据数据变化更新 TSX 树时,可以使用 createRoot() 配合 signal() 进行 diff 渲染。新手教程可以参见这里

import { React, toNode } from 'DoraX';
import { Ease } from 'Dora';

toNode(
  <sprite file='Image/logo.png'>
    <sequence>
      <event name="Count" param="3"/>
      <delay time={1}/>
      <event name="Count" param="2"/>
      <delay time={1}/>
      <event name="Count" param="1"/>
      <delay time={1}/>
      <scale time={0.1} start={1} stop={0.5}/>
      <scale time={0.5} start={0.5} stop={1} easing={Ease.OutBack}/>
    </sequence>
  </sprite>
)?.slot("Count", (_, param) => print(param));
import { React, createRoot, signal } from 'DoraX';
import { Director } from 'Dora';

const count = signal(0);
const root = createRoot(Director.entry);

root.render(() => (
  <label fontName="sarasa-mono-sc-regular" fontSize={30}>
    Count: {count.value}
  </label>
));

count.value += 1;
  • Wa

  你可以使用 Wa 作为一门脚本语言,运行在 Dora SSR 内置的 WASM 运行时上,并获得热重载的开发体验。

import "dora"

func init {
  sprite := dora.NewSpriteWithFile("Image/logo.png")
  sprite.RunActionDef(
    dora.ActionDefSequence(&[]dora.ActionDef{
      dora.ActionDefEvent("Count", "3"),
      dora.ActionDefDelay(1),
      dora.ActionDefEvent("Count", "2"),
      dora.ActionDefDelay(1),
      dora.ActionDefEvent("Count", "1"),
      dora.ActionDefDelay(1),
      dora.ActionDefScale(0.1, 1, 0.5, dora.EaseLinear),
      dora.ActionDefScale(0.5, 0.5, 1, dora.EaseOutBack),
    }),
    false,
  )
  sprite.Slot("Count", func(stack: dora.CallStack) {
    stack.Pop()
    param, _ := stack.PopStr()
    dora.Println(param)
  })
}
  • Rust

  Dora SSR 也支持使用 Rust 语言来编写游戏代码,编译为 WASM 文件,命名为 init.wasm 再上传到引擎中加载运行。详情见这里

use dora_ssr::*;

fn main () {
  let mut sprite = match Sprite::with_file("Image/logo.png") {
    Some(sprite) => sprite,
    None => return,
  };
  let mut sprite_clone = sprite.clone();
  sprite.schedule(once(move |mut co| async move {
    for i in (1..=3).rev() {
      p!("{}", i);
      sleep!(co, 1.0);
    }
    p!("Hello World");
    sprite_clone.perform_def(ActionDef::sequence(&vec![
      ActionDef::scale(0.1, 1.0, 0.5, EaseType::Linear),
      ActionDef::scale(0.5, 0.5, 1.0, EaseType::OutBack),
    ]));
  }));
}
  • 第三步:运行游戏

  点击编辑器右下角 🎮 图标,然后点击菜单项 运行。或者按下组合键 Ctrl + r

  • 第四步:发布游戏
    • 通过编辑器左侧游戏资源树,打开刚才新建的项目文件夹的右键菜单,点击 下载 选项。
    • 等待浏览器弹出已打包项目文件的下载提示。

  更详细的教程,请查看官方文档

文档

社区

  • [QQ群:512620381](https://qm.q

Extension points exported contracts — how you extend this code

Core symbols most depended-on inside this repo

Shape

Method 31,887
Function 29,827
Class 12,228
Enum 2,264
Interface 886
Struct 650
TypeAlias 78
FuncType 30

Languages

C++63%
C14%
TypeScript10%
Go6%
C#4%
Rust3%

Modules by API surface

Source/3rdParty/bgfx/3rdparty/khronos/vulkan-local/vulkan_core.h1,446 symbols
Source/3rdParty/SDL2/src/video/khronos/vulkan/vulkan_core.h1,170 symbols
Source/3rdParty/httplib/httplib.h718 symbols
Tools/dora-dora/src/3rdParty/CodeWire/public/javascript/Dependencies/Konva/konva.min.js702 symbols
Source/3rdParty/imgui/imgui.cpp645 symbols
Tools/dora-dora/public/tic80/tic80.js625 symbols
Source/3rdParty/tmxlite/detail/pugixml.cpp545 symbols
Tools/dora-dora/src/3rdParty/CodeWire/public/javascript/Dependencies/CodeMirror/codemirror.js462 symbols
Tools/dora-cs/DoraCS/Dora/Dora.cs439 symbols
Tools/dora-cs/DoraCS/Dora/ImGui.cs433 symbols
Assets/Script/Lib/Dora/zh-Hans/Dora.d.ts412 symbols
Assets/Script/Lib/Dora/en/Dora.d.ts412 symbols

Datastores touched

(mongodb)Database · 1 repos

For agents

$ claude mcp add Dora-SSR \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page