Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/defold-rs/dmsdk
Experiments in writing Defold extensions in Rust
https://github.com/defold-rs/dmsdk
defold ffi native-extension rust
Last synced: about 1 month ago
JSON representation
Experiments in writing Defold extensions in Rust
- Host: GitHub
- URL: https://github.com/defold-rs/dmsdk
- Owner: defold-rs
- Created: 2022-09-11T19:27:08.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-05-05T20:56:07.000Z (over 1 year ago)
- Last Synced: 2024-04-28T22:43:12.542Z (8 months ago)
- Topics: defold, ffi, native-extension, rust
- Language: C
- Homepage:
- Size: 498 KB
- Stars: 13
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
![defold-rs](assets/defold-rs.svg)
# defold-rs
[![Crates.io](https://img.shields.io/crates/v/dmsdk)](https://crates.io/crates/dmsdk)Tools for creating [Defold](https://defold.com/) native extensions in Rust.
# Quick Start
You will need:
- [Defold](https://defold.com/download/)
- [Docker](https://www.docker.com/)
- [The template project](https://github.com/JustAPotota/defold-rs-template)
- [The extension build server](https://github.com/JustAPotota/defold-rs-extender)Follow the instructions in the build server's README to get it built and running. Once it's up, open the template project in Defold and open `/myextension/src` in a Rust-compatible IDE. To tell Defold to use your build server, select `File > Preferences > Extensions` and set `Build Server` to `http://localhost:9000`. Once that's done, you can just press `Ctrl+B` in Defold to begin compiling your project! The first build will take some time while it downloads files from Defold's servers and compiles the crate from scratch.
# What is Defold?
[Defold](https://defold.com/) is a free and open-source game engine focused on making fast, lightweight games for desktop, web, mobile, and console with zero setup. Almost all game logic is written in [Lua](https://en.wikipedia.org/wiki/Lua_(programming_language)) scripts, but the engine also provides a way to extend its functionality with C++ using [native extensions](https://defold.com/manuals/extensions/).# What are native extensions?
[Native extensions](https://defold.com/manuals/extensions/) allow you to extend Defold's functionality using C++ or any platform-specific language. You can write extensions in JavaScript for web games, Java for Android, or Objective-C for macOS/iOS. Defold's extension SDK (dmSDK for short) grants you much deeper control of the engine than standard Lua scripts and is great for performance-sensitive processing.# So what's `defold-rs` then?
It's two main pieces that come together to let you write native extensions in Rust:- [`defold-rs`](https://github.com/JustAPotota/defold-rs) - This repository is home to the [`dmsdk`](https://crates.io/crates/dmsdk) and [`dmsdk_ffi`](https://crates.io/crates/dmsdk_ffi) crates. In short, `dmsdk_ffi` contains auto-generated bindings to the dmSDK and `dmsdk` wraps those unsafe bindings into a nice Rust-y package.
- [`defold-rs-extender`](https://github.com/JustAPotota/defold-rs-extender) - A fork of Defold's extension build server with added Rust support. You'll need to run one of these yourself in order to use this project.