• Stars
    star
    180
  • Rank 206,223 (Top 5 %)
  • Language
    Rust
  • License
    MIT License
  • Created almost 5 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

An action 2D platformer made with Amethyst game engine

Space Menace

An action 2D platformer made with the Amethyst game engine.

This is my firstish attempt at a game (I did write a basic snake game some time back). Through this project, I aim to get better at coding in Rust, get familiar with the Amethyst game engine and start learning game development in general. I also hope that this project will help other Amethyst and game dev beginners like me in some way or the other.

Currently, it is a ⚠️WORK IN PROGRESS⚠️ and there is still a lot to be done before it reaches a playable state. Also, the code is far from perfect and there is a lot of scope for improvement. I will keep enhancing the code incrementally, as I go along.

Configure Cargo.toml

The default render target feature is set to metal for macOS users.

# Cargo.toml

[features]
default = ["metal"]
metal = ["amethyst/metal"]
vulkan = ["amethyst/vulkan"]

If you are on Windows or Linux, you will have to set that default to vulkan:

# Cargo.toml

[features]
default = ["vulkan"]
# ...

Running the game

Note: This game requires Rust nightly

# Clone the repo
git clone https://github.com/amethyst/space-menace.git
cd space-menace

# Set the toolchain to nightly for the current directory
rustup override set nightly

# Run
cargo run β€”release

Game controls

Use the left arrow key and right arrow key to move the player and the up arrow key to jump. Use spacebar to fire.

Features:

  • Basic map using Tiled
  • Animation using prefabs (Main character run, jump, shoot, etc.)
  • Basic 2D physics (gravity, velocity, collision detection, etc.)
  • Lazy spawning of entities
  • Parallax
  • One complete level (enemies, full map, etc.)
  • Start, Pause and Game Over screens
  • Game mechanics / rules (points, lives, etc.)
  • Audio
  • Consider nphysics integration (using specs-physics)
  • Documentation
  • Tests

More details about the features, roadmap and the game in general can be found here on Amethyst's discourse.

Contributions:

Any and all kinds of contributions are more than welcome, whether it be feature implementation, bug fix, art assets creation, documentation, issue logging or simply ideas, suggestions and feedback.

If you are new to Rust or Game Development and are looking for issues to get started, I have added few good first issues.

In case you have any doubts or have an idea / feedback that you want to discuss, feel free to log an issue or drop me a message on Discord. You can find me on the Amethyst channel.

Credits / Thanks:

  • The awesome Amethyst community for helping me out whenever I got stuck. Special thanks to Ben, doomy, JoshMcguigan, Alve, azriel, Dispersia, Moxinilian, torkleyy, Jojolepro, kel, jaynus, Frizi.
  • ansimuz for all the cool assets used in this game.

More Repositories

1

amethyst

Data-oriented and data-driven game engine written in Rust
Rust
7,977
star
2

specs

Specs - Parallel ECS
Rust
2,382
star
3

rlua

High level Lua bindings to Rust
C
1,628
star
4

legion

High performance Rust ECS library
Rust
1,570
star
5

bracket-lib

The Roguelike Toolkit (RLTK), implemented for Rust.
Rust
1,425
star
6

rustrogueliketutorial

Roguelike Tutorial in Rust - using RLTK
Rust
873
star
7

rendy

State of the art "build your own engine" kit powered by gfx-hal
Rust
817
star
8

distill

Asset pipeline system for game engines & editor suites.
Rust
359
star
9

shred

Shared resource dispatcher
Rust
227
star
10

evoli

An ecosystem-simulation game made with Amethyst
Rust
217
star
11

amethyst-starter-2d

Seed project for 2D games
Rust
200
star
12

shotcaller

A moddable RTS/MOBA game made with bracket-lib and minigene.
Rust
143
star
13

serde-diff

Utility for comparing two structs and re-applying the differences to other structs
Rust
118
star
14

hibitset

Hierarchical bit set container
Rust
107
star
15

voxel-mapper

Make beautiful voxel maps.
Rust
106
star
16

specs-physics

nphysics integration for the Specs entity component system
Rust
94
star
17

sheep

Modular and lightweight spritesheet packer πŸ‘
Rust
90
star
18

tools

Game development tools for the Amethyst engine
Rust
80
star
19

grumpy_visitors

πŸ§™β€β™‚οΈπŸ§™β€β™€οΈ A prototype of a top-down EvilInvasion-like 2D arcade/action (with co-op!)
Rust
77
star
20

amethyst-imgui

imgui integration for Amethyst
Rust
66
star
21

legion_transform

A Unity-inspired hierarchical transform implementation using Legion ECS
Rust
51
star
22

editor-core

Crate that allows an Amethyst game to communicate with an editor.
Rust
44
star
23

rfcs

RFCs are documents that contain major plans and decisions for the engine
32
star
24

dwarf_seeks_fortune

A 2D puzzle platformer made with the Amethyst game engine.
Rust
25
star
25

amethyst_iced

Iced rendering plugin for the Amethyst game engine
Rust
24
star
26

pong_wasm

WASM end-to-end proof of concept -- work in progress
Rust
22
star
27

web_worker

Rust
19
star
28

ludumdare42

A game made by the Amethyst team for Ludum Dare 42
Rust
16
star
29

website-legacy

Project website and blog (DEPRECATED)
HTML
11
star
30

website

Official Amethyst website
JavaScript
9
star
31

amethyst-rhusics

A bridge between Amethyst and rhusics (unmaintained)
Rust
9
star
32

awesome-specs

A curated list of projects that use or help with using Specs.
6
star
33

crystal-editor

Svelte
6
star
34

ludumdare43

Rust
2
star
35

resources

Files that are important to keep around but not tied to any specific code base
1
star
36

builder

The docker container used in amethyst's CI/CD infrastructure.
Dockerfile
1
star
37

wasm_rush_report

Report about adding WASM support to the Amethyst game engine.
1
star
38

laminar-ffi

Crate that exposes Laminar functionality to C
Rust
1
star
39

amethyst-docs-builder

Webhook server that builds amethyst's book and documentation
Go
1
star
40

amethystup

Setup script for Amethyst dependencies
Shell
1
star
41

documentation

Non-rustdoc documentation and policies
1
star