Skip to content

Latest commit

 

History

History
85 lines (51 loc) · 2.47 KB

README.md

File metadata and controls

85 lines (51 loc) · 2.47 KB

Mausoleum

Metroidvania inspired 2D platformer written Rust using the SDL2 library.

Download

A demo of this software will eventually be available on itch.io.

For now, download the latest precompiled executable for your platform under Releases.

Installation

For building from source.

Rust

You will need to Install Rust.

SDL2

You will need to install the SDL2 libraries. I've had little success with the SDL3 wrapper, plus it's still technically in beta.

I've found Microsoft VCPKG to be a simple (and multiplatform) method.

Install the necessary SDL2 dependencies with

make install

There are other installation methods not involving VCPKG described in the SDL2-Rust Repository, but I've not tested any of these.

SDL2 unsafe_textures Flag

I've enabled the unsafe_textures feature for the sdl2 crate in Cargo.toml which omits the generic lifetime annotations for the sdl2::rendering::Texture struct.

This removes the need to propagate lifetime annotations throughout the codebase when dealing with textures. As textures are dropped before their owning TextureCreator, there is no risk of dangling references or memory leaks.

Compilation

Build and run the executable on your platform.

make

Bundling

Bundling is the process of packaging the application, its dependencies, and resources into a single easily shareable file.

MacOS

Install all the SDL2 frameworks (.framework directories) SDL2, SDL_image, SDL_ttf and SDL_mixer.

Make sure these are stored in /Library/Frameworks/ or wherever you store your frameworks.

And run

make bundle

Windows

Unfortunately, I've not found any ways to successfully bundle a Rust application on Windows as cargo-bundle does not build .msi files correctly. I've not had success with the WiX Toolset or either.

To ship the application, you can provide the mausoleum.exe and the asset/ and data/ directory.

References

See CREDITS.

ChatGPT 3.5 was used to aid my understanding of algorithmic concepts and design patterns while learning Rust. Not for the generation of production code.

GitHub Copilot was used to generate code I understood and would have written myself. An autocompletion tool.