14 个重大版本更新

0.15.0 2023年11月6日
0.13.0 2023年10月21日
0.12.0 2022年11月22日
0.9.0 2022年2月25日
0.5.0 2021年3月23日

#386游戏开发

每月 49 次下载

MIT 许可证

160KB
4K SLoC

ftw

一个用于管理你的 godot-rust 项目的 CLI 工具!

目录

一般信息

这是一个工具,通过提供命令帮助您管理游戏项目,包括:(1) 创建项目,(2) 创建类,(3) 创建单例类,(4) 构建库,(5) 导出游戏,(6) 运行项目(未来还将添加更多功能)。它就像 rails 但用于游戏开发 😉。

设置

它利用像 godot, godot-headless, godot-serverdocker (可选,仅用于交叉编译。见 下面) 这样的工具,使一切都能正常工作!在 Linux 上,您可以安装所有 godot, godot-headless 和 godot-server,在其他系统上仅安装 godot。有关额外的设置说明,请查看默认模板的 wiki

$ cargo install ftw # to install
$ cargo install --force ftw # to upgrade ftw

使用方法

ftw new <项目名称> [模板]

创建一个新的项目目录

$ ftw new my-awesome-game # this creates a new project using the default template
$ ftw new my-awesome-game default # same as above
$ ftw new my-awesome-game /path/to/custom/template # creates a new project using a custom template
$ ftw new my-awesome-game default v1.2.0 # creates a new project with the default template using a specified tag

注意:自定义模板应与 默认模板 具有相同的结构。使用标签假设您已在模板仓库中创建了标签,就像 这里 一样。

ftw class <类名> [节点类型]

创建一个类

$ ftw class MyHero # creates a class called `MyHero` that is deriving from `Node` as default
$ ftw class MyHero Area2D # creates a class that derives from `Area2D`

注意:这将创建以下文件 rust/src/my_hero.rsgodot/scenes/MyHero.tscngodot/native/MyHero.gdns 然后在 rust/src/lib.rs 中添加该类。完整的节点类型列表可以在 这里 找到。

创建一个工具类

$ ftw class MyButtonTool Button # creates a tool class called `MyButtonTool` that is deriving from `Button`

注意:与创建普通类相同,并且请注意类名末尾有 Tool 作为约定。

您还可以将 rs、tscn 和 gdns 文件组织到子模块或子文件夹中。
$ ftw class heros/marvel/avengers/IronMan Area2D # creates a class that derives from `Area2D`

注意:这将在rust/src/heros/marvel/avengers/iron_man.rsgodot/scenes/heros/marvel/avengers/IronMan.tscngodot/native/heros/marvel/avengers/IronMan.gdnsmod.rs中创建以下文件,然后在rust/src/lib.rs中添加类。

ftw singleton <类名>

创建一个用于自动加载的单例类

$ ftw singleton MySingleton # creates a class called `MySingleton` that derives from `Node`

注意:这将在rust/src/my_singleton.rsgodot/native/MySingleton.gdns中创建以下文件,然后将其添加到rust/src/lib.rs中。

您还可以按照ftw class命令中的方式将文件组织到子模块/子文件夹中。
$ ftw singleton network/Network # creates a class called `Network` that derives from `Node`

ftw build [目标] [构建类型]

为特定目标构建库

$ ftw build # builds the library for your current platform as target using `debug` as default
$ ftw build linux-x86_64 # builds the library for the `linux-x86_64` platform using `debug` as default
$ ftw build linux-x86_64 debug # same as above
$ ftw build linux-x86_64 release # builds the library for the `linux-x86_64` platform using `release`
$ ftw build linux-x86_64,macos-x86_64,macos-aarch64,windows-x86_64-gnu # this assumes cross compilation is enabled (see below)

目标可以用逗号分隔,每个目标可以是以下之一:

  • android-aarch64
  • android-arm
  • android-x86
  • android-x86_64
  • ios-aarch64
  • linux-x86
  • linux-x86_64
  • macos-x86_64
  • macos-aarch64
  • windows-x86-gnu
  • windows-x86-msvc
  • windows-x86
  • windows-x86_64-gnu
  • windows-x86_64-msvc
  • windows-x86_64

注意:构建的库 (*.so, *.dll, *.dylib, 等.) 可在lib/文件夹中找到。

ftw export [目标] [构建类型]

导出针对特定目标的游戏

$ ftw export # exports the game for your current platform as target using `debug` as default
$ ftw export linux-x86_64 # exports the game for the `linux-x86_64` platform using `debug` as default
$ ftw export linux-x86_64 debug # same as above
$ ftw export linux-x86_64 release # exports the game for the `linux-x86_64` platform using `release`
$ ftw export linux-x86_64,macos-x86_64,macos-aarch64,windows-x86_64-gnu # this assumes cross compilation is enabled (see below)

注意:导出的游戏可以在bin/文件夹中找到。在导出Android游戏之前,请首先使用'cargo make create-debug-keystore'和/或'cargo make create-release-keystore'创建密钥库(如果您尚未创建并配置您的编辑器/导出设置)。在导出Windows游戏之前,如果您计划导出gnu目标,请执行'cargo make switch-gdnlib-msvc-to-gnu-entry',如果您计划导出msvc目标,请执行'cargo make switch-gdnlib-gnu-to-msvc-entry'。

ftw run [机器类型]

使用debug构建库,然后运行您的游戏

$ ftw run # runs the game on desktop
$ ftw run desktop # same as above
$ ftw run server # runs the game as a server
# enjoy! 😆

ftw clean

清除您项目中的多余工件,类似于cargo clean

$ ftw clean

项目配置

您可以在项目根目录创建一个per-project配置文件,命名为.ftw,内容如下...

自定义可执行文件

如果您有自定义的可执行文件来运行godot,例如,如果您有一个shell/batch脚本在运行godot之前执行一些操作,您可以在项目中使用以下内容进行配置...

[ftw]
godot-exe=/path/to/custom/godot-script
godot-headless-exe=/path/to/custom/godot-headless-script
godot-server-exe=godot-server-script # assuming it's on $PATH

注意:.ftw文件和其中的键都是可选的。如果不提供它们,则使用默认值(godot、godot-headless和godot-server)。对于Windows用户,请使用正斜杠代替反斜杠(例如,godot-exe=D:/path/to/godot/bin/godot.windows.tools.64.exe)。

交叉编译

您还可以启用交叉编译,这样就可以从和到任何平台构建和导出游戏。它使用此docker镜像来设置Linux、Android、Mac、iOS和Windows工具链(WebAssembly工具链随后)。请阅读此部分以了解当前支持的内容。

[ftw]
enable-cross-compilation=true

(例如)在您的Linux机器上

$ ftw build windows-x86_64-gnu
$ ftw export windows-x86_64-gnu

联系方式

Michael Angelo Calimlim <macalimlim@gmail.com>

依赖关系

~36–52MB
~1M SLoC