godot

Crates.iogodot
lib.rsgodot
version
sourcesrc
created_at2016-05-30 16:32:00.509225
updated_at2024-12-08 18:00:38.515745
descriptionRust bindings for Godot 4
homepagehttps://godot-rust.github.io
repositoryhttps://github.com/godot-rust/gdext
max_upload_size
id5241
Cargo.toml error:TOML parse error at line 22, column 1 | 22 | autolib = false | ^^^^^^^ unknown field `autolib`, expected one of `name`, `version`, `edition`, `authors`, `description`, `readme`, `license`, `repository`, `homepage`, `documentation`, `build`, `resolver`, `links`, `default-run`, `default_dash_run`, `rust-version`, `rust_dash_version`, `rust_version`, `license-file`, `license_dash_file`, `license_file`, `licenseFile`, `license_capital_file`, `forced-target`, `forced_dash_target`, `autobins`, `autotests`, `autoexamples`, `autobenches`, `publish`, `metadata`, `keywords`, `categories`, `exclude`, `include`
size0
Jan Haller (Bromeon)

documentation

https://docs.rs/godot/0.2.1

README

logo.png

Rust bindings for Godot 4

Website | GitHub | Book | API Docs | Discord | Mastodon | Twitter | Sponsor

The godot crate integrates the Rust language with Godot 4.

Godot is an open-source game engine, focusing on a productive and batteries-included 2D and 3D experience.
Its GDExtension API allows integrating third-party languages and libraries.

Philosophy

The Rust binding is an alternative to GDScript, with a focus on type safety, scalability and performance.

The primary goal of this library is to provide a pragmatic Rust API for game developers. Recurring workflows should be simple and require minimal boilerplate. APIs are designed to be safe and idiomatic Rust wherever possible. Due to interacting with Godot as a C++ engine, we sometimes follow unconventional approaches to provide a good user experience.

Example

The following code snippet demonstrates writing a simple Godot class Player in Rust.

use godot::prelude::*;
use godot::classes::{ISprite2D, Sprite2D};

// Declare the Player class inheriting Sprite2D.
#[derive(GodotClass)]
#[class(base=Sprite2D)]
struct Player {
    // Inheritance via composition: access to Sprite2D methods.
    base: Base<Sprite2D>,

    // Other fields.
    velocity: Vector2,
    hitpoints: i32,
}

// Implement Godot's virtual methods via predefined trait.
#[godot_api]
impl ISprite2D for Player {
    // Default constructor (base object is passed in).
    fn init(base: Base<Sprite2D>) -> Self {
        Player {
            base,
            velocity: Vector2::ZERO,
            hitpoints: 100,
        }
    }

    // Override the `_ready` method.
    fn ready(&mut self) {
        godot_print!("Player ready!");
    }
}

// Implement custom methods that can be called from GDScript.
#[godot_api]
impl Player {
    #[func]
    fn take_damage(&mut self, damage: i32) {
        self.hitpoints -= damage;
        godot_print!("Player hit! HP left: {}", self.hitpoints);
    }
}

More

For more information, check out our Website or GitHub page!

Commit count: 2094

cargo fmt