Browse by type
|
|
|
Dora SSR 是一个用于多种设备上快速开发游戏的游戏引擎。它内置易用的 Web IDE 开发工具链,支持在手机、开源掌机等设备上直接进行游戏开发。
| 方向 | 内容 |
|---|---|
| 开发方式 | Web IDE + Coding Agent + 在目标设备运行引擎、通过浏览器接入的实时游戏开发流程 |
| 语言生态 | Lua / TypeScript / TSX / Teal / YueScript / Wa / Rust / C# |
| 运行平台 | Android / Windows / Linux / macOS / iOS / 鸿蒙 |



Android、Windows、Linux、iOS、macOS 与 鸿蒙。




sh
brew install --cask ippclub/tap/dora-ssrsh
sudo add-apt-repository ppa:ippclub/dora-ssr
sudo apt update
sudo apt install dora-ssrsh
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-ssrsh
sudo add-apt-repository ppa:ippclub/dora-ssr
sudo apt update
sudo apt install dora-ssrsh
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第一步:创建一个新项目
工作空间 的右键菜单。新建,选择新建文件夹。第二步:编写游戏代码
init。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)
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
有关 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
)
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 语言来创建 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 作为一门脚本语言,运行在 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)
})
}
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。
下载 选项。更详细的教程,请查看官方文档。
$ claude mcp add Dora-SSR \
-- python -m otcore.mcp_server <graph>