25 Star 186 Fork 26

GVPI++俱乐部/Dora-SSR

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT
Dora SSR

多萝珍奇引擎(Dora SSR)

English | 中文

IppClub OpenAtom

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

intro

类别 徽章
提供游戏开发工具 Static Badge
Static Badge
Static Badge
支持编程语言 Static Badge
Static Badge
Static Badge
Static Badge
Static Badge
Static Badge
Static Badge
Static Badge
支持运行平台 Android
Linux
Windows
macOS
iOS
Playground

主要特点

功能 描述
跨平台支持 支持原生运行的架构:
Android (x86_64, armv7, arm64)
Windows (x86)
Linux (x86_64, arm64)
iOS (arm64)
macOS (x86_64, arm64)
树形节点 基于树形节点结构管理游戏场景。
ECS 易用的 ECS 模块,便于游戏实体管理。
异步处理 异步处理的文件读写、资源加载等操作。
Lua 升级的 Lua 绑定,支持继承和扩展底层 C++ 对象。
YueScript 支持 YueScript 语言,强表达力且简洁的 Lua 方言。
Teal 支持 Teal 语言,编译到 Lua 的静态类型语言。
TypeScript 支持 TypeScript 语言,一门静态类型的 JavaScript 语言的超集,添加了强大的类型检查功能。(通过 TSTL
TSX 支持 TSX,允许在脚本中嵌入类似 XML/HTML 的文本,与 TypeScript 一起使用。
Wa 支持 Wa 语言,一门简单可靠、静态类型的语言,运行在内置的 WASM 运行时和 Wa 绑定 上。
Rust 支持 Rust 语言,运行在内置的 WASM 运行时和 Rust 绑定上。
Blockly 支持使用类似 Scratch 的可视化编程语言进行编码,非常适合初学者学习编程。

Blockly
2D 骨骼动画 支持 2D 骨骼动画,包括:Spine2DDragonBones 以及内置系统。
2D 物理引擎 支持 2D 物理引擎,使用 PlayRho
Web IDE 内置开箱即用的 Web IDE,提供文件管理,代码检查、补全、高亮和定义跳转。

dora on android
数据库 支持异步操作 SQLite,进行大量游戏配置数据的实时查询和写入。
Excel 支持 Excel 表格数据读取,支持同步到 SQLite 库表。
CSS 布局 提供游戏场景通过 CSS 进行自适应的 Flex 布局的功能(通过 Yoga)。
特效系统 支持 Effekseer 特效系统的功能。
瓦片地图 支持 Tiled Map Editor 制作的 TMX 地图文件的解析和渲染。
Yarn Spinner 支持 Yarn Spinner 语言,便于编写复杂的游戏故事系统。
机器学习 内置用于创新游戏玩法的机器学习算法框架。
矢量图形 提供矢量图形渲染 API,可直接渲染无 CSS 的 SVG 格式文件(通过 NanoVG)。
ImGui 内置 ImGui,便于创建调试工具和 UI 界面。
音频 支持 FLAC、OGG、MP3 和 WAV 多格式音频播放。
True Type 支持 True Type 字体的渲染和基础排版。
2D 平台游戏 支持 2D 平台游戏 的基本功能,包括游戏逻辑和 AI 开发框架。
L·S·D 提供可用于制作自己游戏的开放美术素材和游戏 IP —— 《灵数奇缘》

LSD

示例项目

Loli War

Zombie Escape

Dismentalism

Luv Sense Digital

安装配置

Android

  • 1、在游戏的运行终端下载并安装 APK 包。
  • 2、运行软件,通过局域网内的 PC(平板或其他开发设备)的浏览器访问软件显示的服务器地址。
  • 3、开始游戏开发。

Windows

  • 1、请确保您已安装 Visual Studio 2022 的 X86 Visual C++ 可再发行组件包(包含 MSVC 编译的程序所需运行时的 vc_redist.x86 补丁),以运行此应用程序。您可以从微软网站下载。
  • 2、下载并解压软件
  • 3、运行软件,通过浏览器访问软件显示的服务器地址。
  • 4、开始游戏开发。

macOS

  • 1、下载并解压软件。或者也可以通过 Homebrew 使用下面命令进行软件安装。
    brew install --cask ippclub/tap/dora-ssr
    
  • 2、运行软件,通过浏览器访问软件显示的服务器地址。
  • 3、开始游戏开发。

Linux

  • 1、安装软件:
    • Ubuntu Jammy
    sudo add-apt-repository ppa:ippclub/dora-ssr
    sudo apt update
    sudo apt install dora-ssr
    
    • Debian Bookworm
    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
    
  • 2、运行软件,通过浏览器访问软件显示的服务器地址。
  • 3、开始游戏开发。

编译构建引擎

  • 要自行编译构建 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 的游戏场景是一个比较容易上手的选择。新手教程可以参见这里

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));
  • 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

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

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


文档


社区


贡献

  欢迎参与 Dora SSR 的开发和维护。请查看贡献指南了解如何提交 Issue 和 Pull Request。


Dora SSR 项目现已加入开放原子开源基金会

  我们很高兴地宣布,Dora SSR 项目现已成为开放原子开源基金会的捐赠和孵化期项目。这一新的发展阶段标志着我们致力于建设一个更开放、更协作的游戏开发环境的坚定承诺。

关于开放原子开源基金会

  开放原子开源基金会(Open Atom Foundation)是一个非盈利组织,旨在支持和推广开源技术的发展。在该基金会的大家庭中,Dora SSR 会利用更广泛的资源和社区支持,以推动项目的发展和创新。更多信息请查看基金会官网

Cheer

许可证

  Dora SSR 使用 MIT 许可证

[!NOTE] 请注意,Dora SSR 集成了 Spine 运行时库,这是一个商业软件。在你的项目中使用 Spine 运行时需要获取 Esoteric Software 提供有效的商业许可证。有关获取许可证的更多详细信息,请访问 Spine 官方网站
请确保遵守所有许可要求,再在项目中使用 Spine 运行时。或者可以使用同样集成的开源的 DragonBones 系统作为动画系统的替代方案。如果你只需要创建比较简单的动画,也可以使用 Dora SSR 提供的 Model 动画模块看是否能满足需要。

Dora SSR The MIT License (MIT) Copyright (c) 2016-2025 Li Jin <dragon-fly@qq.com> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

Dora SSR 是一款跨平台的游戏引擎,提供前沿或是具有探索性的游戏开发功能。它内置了Web IDE,提供了可以轻轻松松通过浏览器访问的快捷游戏开发环境,特别适合于在新兴市场如国产游戏掌机和其它移动电子设备上直接进行游戏开发和编程学习。 展开 收起
MIT
取消

发行版 (21)

全部

贡献者

全部

近期动态

不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/ippclub/Dora-SSR.git
git@gitee.com:ippclub/Dora-SSR.git
ippclub
Dora-SSR
Dora-SSR
main

搜索帮助