#游戏引擎 #cairo #gtk #移动

mochi

基于 Gtk & Cairo 的移动游戏引擎

5 个版本

0.0.5 2020 年 8 月 4 日
0.0.3 2020 年 8 月 3 日
0.0.2 2020 年 8 月 2 日
0.0.1 2020 年 8 月 2 日
0.0.0 2020 年 8 月 2 日

1020游戏开发

MIT/Apache

3MB
284

摩奇 🍡

一个面向低功耗移动 Linux 手机/平板的游戏引擎。它用 Rust 编写,并使用 Gtk 和 Cairo!所有绘图都使用一个Cairo 上下文来完成一些非常常见的图形操作

这个项目虽然是 alpha 版,但可用。如果你想加入,请随意提出问题或提交 PR!

docs.rs docs

功能

  • 触摸
  • 屏幕旋转
  • 图集
  • 动画精灵

限制

  • 仅支持 8bpc RGBA png 图像

示例

pong

[dependencies]
mochi = "0.0"
init(include_bytes!("game.gresource"));

let img_mochi = image_from_resource("/game/mochi.png");
let img_mochi_eaten = image_from_resource("/game/mochi_eaten.png");

run_game(move |window, ctx, pointer, delta_time| {
    if pointer.is_down() {
        ctx.draw_image_centered(window.width / 2.0, window.height / 2.0, img_mochi_eaten);
    } else {
        ctx.draw_image_centered(window.width / 2.0, window.height / 2.0, img_mochi);
    }
});

如何构建一个游戏

Mochi 使用 Glib 资源文件中的资源。这非常简单。只需创建一个 xml 文件,该文件引用了你的图像

<?xml version="1.0" encoding="UTF-8"?>
<gresources>
  <gresource prefix="/pong">
    <file>ball.png</file>
    <file>paddle.png</file>
  </gresource>
</gresources>

构建一个 Glib 可以理解的 gresource 文件

glib-compile-resources game.xml

在初始化期间将 game.gresource 的字节内联到你的代码中

init(include_bytes!("game.gresource"));

现在你的游戏在其二进制文件中拥有所需的一切!可以使用你设置的资源路径按需获取图像。

let img_ball = image_from_resource("/pong/ball.png");

依赖项

for gtk/cairo


for sound

sudo dnf install openal-soft-devel libsndfile-devel

在 PinePhone 上编译时内存不足吗?

你可以使用 zram 扩展交换空间

sudo swapoff /dev/zram0 
sudo zramctl --reset /dev/zram0 
sudo zramctl --find --size 2048M
sudo mkswap /dev/zram0 
sudo swapon /dev/zram0

许可证

本项目根据以下许可证之一授权

由你选择。

贡献

除非你明确表示,否则你提交给 mochi 的任何贡献,根据 Apache-2.0 许可证定义,将按照上述方式双授权,不附加任何其他条款或条件。

依赖项

~18MB
~412K SLoC