1个不稳定版本
0.0.1 | 2024年5月30日 |
---|
#161 in #tree-sitter
用于 sol-lang
640KB
20K SLoC
Sol ☀️
[!WARNING] Sol 目前处于早期开发阶段,尚不可用。
Sol是一种用于应用程序和资源的数据/标记/脚本语言。作为基于文本的语言,您可以将 .sol
检入版本控制,而后端无关性意味着您可以在不同的引擎和实现之间迁移资源。Sol 本身具有高度的移植性 -- 它是用 Rust 编写的,只需要为您定义的外部符号提供实现。
特性
Sol包含许多语言特性,从合约定义到完整的编程。
模型
您可以定义类型安全的模型...
model Item
field name : text
field usage_count : text
field consume_when_used : truth
field on_use : Action
end
...并在另一个文件中实现它们。
impl Item
name = "Hamburger"
usage_count = 1
consume_when_used = yes
action on_use
* You eat the {name}.
* It tastes like cardboard.
player.stats.heal(HP, 10)
* Restored 10HP!
end
对话框
值得注意的是,Sol内置了对对话框的支持,这使得它可以创建一个 美丽的 过场场景格式,看起来像是一部剧本。
use game::chapter_1::RETURNED_TO_SCHOOL
scene "School Entrance"
with player do
.move(10, 20)
.look_at(Alexander)
end
[Alexander smiling]
- Welcome back, dude? How have you been?
wait(2.0 seconds)
[& guilty]
- Not much for talking, huh...
- Um... by the way... eh...
- Sorry for back there... when I... um... abandoned you...
[& smiling]
- No hard feelings, right?
[Player]
- *sigh*...
set RETURNED_TO_SCHOOL
end
事实
Sol允许定义类型化的 代数 事实,有助于确保您的游戏处于有效状态。
let chapter1 : some {
SCHOOL_BEGGINING,
DUNGEON_1 : some {
PART_1,
PART_2,
PART_3 : all {
BOSS_STATUS: either {
BEFORE_BOSS,
AFTER_BOSS : all {
death_count : i32,
used_violence : truth,
}
},
SECRET_PUZZLE_STATUS: {
UNDISCOVERED,
UNFINISHED,
COMPLETED_N_TIMES : i32
},
},
},
RETURNED_TO_SCHOOL,
}
事实是一个模型,而存档文件是事实模型的实现。通过使用 Sol,保存和加载变得轻松快捷。
安装
暂不可用。
贡献
暂不可用。
依赖项
~2.7–4MB
~71K SLoC