1 个不稳定版本
0.1.0 | 2021年8月13日 |
---|
#1103 在 编程语言 中
360KB
8K SLoC
Sylt-lang
Sylt 是一种为游戏马拉松设计的静态检查和动态类型引用计数的编程语言。
为什么存在这样的语言?为什么使用这种语言而不是 X 语言?
哈哈!我们的标志客观上是最棒的。
入门
Sylt 完全用 Rust 编写。有两种主要方式可以使用它。
创建新仓库
$cargo new<游戏名称>
- 将此添加到您的 Cargo.toml
[dependencies.sylt]
git = "https://github.com/FredTheDino/sylt-lang.git"
branch = "main"
features = [ "lingon" ]
- 将类似以下内容添加到您的
src/main.rs
use std::path::Path;
fn main() {
let args = sylt::Args {
file: Some(Path::new("game.sy").to_path_buf()), // or read from args
is_binary: false,
compile_target: None,
verbosity: 0,
help: false,
};
sylt::run_file(&args, sylt::lib_bindings()).unwrap();
}
- 编写你的游戏!以下是一个帮助你入门的示例
x := 0.0
y := 0.0
init :: fn {
l_bind_key("w", "up")
l_bind_key("a", "left")
l_bind_key("s", "down")
l_bind_key("d", "right")
l_bind_quit("quit")
l_bind_key("ESCAPE", "quit")
}
update :: fn delta: float -> void {
x += (l_input_value("right") - l_input_value("left")) * delta
y += (l_input_value("up") - l_input_value("down")) * delta
}
draw :: fn {
rgb :: (sin(l_time()), cos(l_time()), 0.0)
l_gfx_rect! x, y, 1.0, 1.0, rgb
}
start :: fn {
init!
for _ in inf(0) {
_
if l_input_down("quit") {
break
}
l_update!
update! l_delta!
draw!
l_render!
}
}
$ cargo run
随心所欲。
分支
分支 Sylt 并进行修改可以使修改语言、标准库和 Lingon 绑定变得容易,其中后两者可能更有趣。
- 设置分支(可选)
- 克隆仓库。
$cargo run<your-game.sy>
基本使用
-
标志还可以让您查看一些调试输出。如果您想调试编译器和运行时,这可能很有帮助。
-
标志提供更多调试输出。不要期望看到您自己的程序中的任何内容!
结局
一种具有某种形式静态类型检查的语言,易于使用且运行速度快。性能应该足够好,以至于您不必真正担心它。
梦想着在游戏运行时自动重新编译和更新游戏。
依赖项
~3–17MB
~198K SLoC