17 Star 65 Fork 13

Li Jin / Dora-SSR

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

Dora SSR

多萝珍奇引擎(Dora SSR)

English | 中文

Static Badge Static Badge Static Badge Static Badge Static Badge Static Badge Static Badge Static Badge Android Linux Windows macOS iOS

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

Playground

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

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

关于开放原子开源基金会

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

主要特点

  • 基于树形结点结构管理游戏场景。

  • 基础的2D平台游戏功能,包括游戏逻辑和AI开发框架。

  • 易用的ECS模块,便于游戏实体管理。

  • 异步处理的文件读写、资源加载等操作。

  • 升级的Lua绑定,支持继承和扩展底层C++对象。

  • 支持Yuescript语言,强表达力且简洁的Lua方言。

  • 支持Teal语言,编译到Lua的静态类型语言。

  • 支持 TypeScript,一门静态类型的 JavaScript 语言的超集,添加了强大的类型检查功能。

  • 支持 TSX,允许在脚本中嵌入类似 XML/HTML 的文本,与 TypeScript 一起使用。

  • 支持Rust语言,运行在内置的WASM绑定和VM上。

  • 2D骨骼动画和物理引擎支持。

  • 内置开箱即用的Web IDE,提供文件管理,代码检查、补全、高亮和定义跳转。

  • 支持异步操作SQLite,进行大量游戏配置数据的实时查询和写入。

  • 支持Excel表格数据读取,支持同步到SQLite库表。

  • 内置用于创新游戏玩法的机器学习算法框架。

  • 支持Yarn Spinner语言,便于编写复杂的游戏故事系统。

  • 提供矢量图形渲染API,可直接渲染无CSS的SVG格式文件。

  • 内置ImGui,便于创建调试工具和UI界面。

  • 支持FLAC、OGG、MP3和WAV多格式音频播放。

  • 支持True Type字体的渲染和基础排版。

  • 提供可用于制作自己游戏的开放美术素材和游戏IP —— 《灵数奇缘》

  LSD


安装配置

  • 快速上手

    • Android

      • 1、在游戏的运行终端下载并安装APK包。

      • 2、运行软件,通过局域网内的PC(平板或其他开发设备)的浏览器访问软件显示的服务器地址。

      • 3、开始游戏开发。

    • Windows、macOS

      • 1、下载并运行软件

        • 在macOS上也可以通过 Homebrew 进行软件安装。
          brew tap ippclub/dora-ssr
          brew install --cask 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项目开发的安装配置,详见官方文档


快速入门

  1. 第一步:创建一个新项目

    • 在浏览器中,打开Dora Dora编辑器左侧游戏资源树的右键菜单。

    • 点击菜单项New,选择新建文件夹。

  2. 第二步:编写游戏代码

    • 在项目文件夹下新建游戏入口代码文件,选择 Lua (Yuescript, Teal, Typescript 或 TSX) 语言命名为init

    • 编写Hello World代码:

  • Lua
local _ENV = Dora()

local sprite = Sprite("Image/logo.png")
sprite:schedule(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 once <const> = require("once")
local Sprite <const> = require("Sprite")

local sprite = Sprite("Image/logo.png")
if not sprite is nil then
  sprite:schedule(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
_ENV = Dora!

with Sprite "Image/logo.png"
   \schedule 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, once, sleep} from 'dora';

const sprite = Sprite("Image/logo.png");
if (sprite) {
  sprite.schedule(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
import { React, toNode, useRef } from 'dora-x';
import { ActionDef, Ease, Sprite, once, sleep } from 'dora';

const actionRef = useRef<ActionDef.Type>();
const spriteRef = useRef<Sprite.Type>();

const onUpdate = once(() => {
  for (let i of $range(3, 1, -1)) {
    print(i);
    sleep(1);
  }
  print("Hello World");
  if (actionRef.current && spriteRef.current) {
    spriteRef.current.perform(actionRef.current);
  }
});

toNode(
  <sprite
    ref={spriteRef}
    file='Image/logo.png'
    onUpdate={onUpdate}
  >
    <action ref={actionRef}>
      <sequence>
        <scale time={0.1} start={1} stop={0.5}/>
        <scale time={0.5} start={0.5} stop={1} easing={Ease.OutBack}/>
      </sequence>
    </action>
  </sprite>
);
  • 也支持使用 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),
    ]));
  }));
}
  1. 第三步:运行游戏

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

  2. 第四步:发布游戏

    • 通过编辑器左侧游戏资源树,打开刚才新建的项目文件夹的右键菜单,点击Download选项。

    • 等待浏览器弹出已打包项目文件的下载提示。

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


示例项目

Loli War


Zombie Escape
Dismentalism
Luv Sense Digital

文档


社区


贡献

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


许可证

Dora SSR使用MIT许可证。原为Dorothy SSR项目,项目名称现处于更名程序中。

空文件

简介

Dora项目,Special Super Rare的新版本。Dora SSR是一个新的2D游戏开发框架,目标是沿用原Dora项目的Lua API和游戏编辑器,使用跨平台的bgfx图形接口和SDL2框架重写底层代码,让Dora游戏框架更具有发展力。 展开 收起
取消

贡献者

全部

近期动态

加载更多
不能加载更多了
C++
1
https://gitee.com/pig/Dora-SSR.git
git@gitee.com:pig/Dora-SSR.git
pig
Dora-SSR
Dora-SSR
main

搜索帮助