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 次下载
160KB
4K SLoC
ftw
一个用于管理你的 godot-rust 项目的 CLI 工具!
目录
一般信息
这是一个工具,通过提供命令帮助您管理游戏项目,包括:(1) 创建项目,(2) 创建类,(3) 创建单例类,(4) 构建库,(5) 导出游戏,(6) 运行项目(未来还将添加更多功能)。它就像 rails 但用于游戏开发 😉。
设置
它利用像 godot, godot-headless, godot-server 和 docker (可选,仅用于交叉编译。见 下面) 这样的工具,使一切都能正常工作!在 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.rs
、godot/scenes/MyHero.tscn
和godot/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.rs
、godot/scenes/heros/marvel/avengers/IronMan.tscn
、godot/native/heros/marvel/avengers/IronMan.gdns
和mod.rs
中创建以下文件,然后在rust/src/lib.rs
中添加类。
ftw singleton <类名>
创建一个用于自动加载的单例类
$ ftw singleton MySingleton # creates a class called `MySingleton` that derives from `Node`
注意:这将在
rust/src/my_singleton.rs
和godot/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