Giter VIP home page Giter VIP logo

gdext's Introduction

logo.png

Rust bindings for Godot 4

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

gdext is a library to bind the Rust language to Godot 4.

Godot is an open-source game engine, whose version 4 has brought large-scale improvements.
Its GDExtension API allows integrating third-party languages and libraries.

If you are looking for a Rust binding for Godot 3 (GDNative API), check out gdnative.

Philosophy

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

The primary goal of gdext 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.

Development status

The gdext library has evolved a lot during 2023 and is now in a usable state for smaller projects. However, it is still in an early stage and there are certain things to keep in mind.

Warning The public API introduces breaking changes from time to time. Most of these are motivated by new features and improved ergonomics for existing ones. See also API stability in the book.

Features: While most Godot features are available, some less commonly used ones are missing. See #24 for an up-to-date overview. At this point, there is no support for Android, iOS or WASM. Contributions are very welcome!

Bugs: Most undefined behavior related to the FFI layer has been ironed out, but there may still be occasional safety issues. Apart from that, new additions to the library are typically not feature-complete from the start, but become more robust with feedback and testing over time. To counter bugs, we have an elaborate CI suite including clippy, unit tests, engine integration tests and memory sanitizers.

Getting started

To dive into Rust development with gdext, check out the godot-rust book. The book is still under construction, but already includes a tutorial to set up a simple example.

To consult the API reference, have a look at the online API Docs.

Furthermore, we provide a small example game in the examples/dodge-the-creeps directory.

If you need help, join our Discord server and ask in the #help-gdext channel!

License

We use the Mozilla Public License 2.0. MPL tries to find a balance between permissive (MIT, Apache, Zlib) and copyleft licenses (GPL, LGPL).

The license provides a lot of freedom: you can use the library commercially and keep your own code closed-source, i.e. game development is not restricted. The main condition is that if you change gdext itself, you need to make those changes available (and only those, no surrounding code).

Contributing

Contributions are very welcome! If you want to help out, see Contributing.md for some pointers on getting started.

gdext's People

Contributors

bromeon avatar bors[bot] avatar lilizoey avatar ttencate avatar cuddlefishie avatar statismike avatar mhoff12358 avatar pgbiel avatar titannano avatar 0awful avatar mercerenies avatar t4rmin avatar vortexofdoom avatar realastolfo avatar yannick-was-taken avatar gg-yb avatar mio991 avatar jrockett6 avatar winstonhartnett avatar kuruk-mm avatar leaoluciano avatar lemiczek avatar henrywconklin avatar kkolyan avatar juliohq avatar dataphract avatar waridley avatar tcroc avatar you-win avatar supreeeme avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.