Dora SSR是一个用于多种设备上快速开发2D游戏的游戏引擎。它内置易用的开发工具链,支持在手机、开源掌机等设备上直接进行游戏开发。
我们很高兴地宣布,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 —— 《灵数奇缘》。
快速上手
Android
1、在游戏的运行终端下载并安装APK包。
2、运行软件,通过局域网内的PC(平板或其他开发设备)的浏览器访问软件显示的服务器地址。
3、开始游戏开发。
Windows、macOS
1、下载并运行软件。
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项目开发的安装配置,详见官方文档。
第一步:创建一个新项目
在浏览器中,打开Dora Dora编辑器左侧游戏资源树的右键菜单。
点击菜单项New
,选择新建文件夹。
第二步:编写游戏代码
在项目文件夹下新建游戏入口代码文件,选择 Lua (Yuescript, Teal, Typescript 或 TSX) 语言命名为init
。
编写Hello World代码:
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))
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
_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
)
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)
))
}));
}
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>
);
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),
]));
}));
}
第三步:运行游戏
点击编辑器右下角🎮
图标,然后点击菜单项Run
。或者按下组合键Ctrl + r
。
第四步:发布游戏
通过编辑器左侧游戏资源树,打开刚才新建的项目文件夹的右键菜单,点击Download
选项。
等待浏览器弹出已打包项目文件的下载提示。
更详细的教程,请查看官方文档。
欢迎参与Dora SSR的开发和维护。请查看贡献指南了解如何提交Issue和Pull Request。
Dora SSR使用MIT许可证。原为Dorothy SSR项目,项目名称现处于更名程序中。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型