umut-sahin / mythmallow

A top-down arena shooter roguelite in which you're a mythical marshmallow god fighting against peasant munchies such as chocolates, jellies, or candies!
Apache License 2.0
5 stars 0 forks source link

Mythmallow

A top-down arena shooter roguelite in which you're a mythical marshmallow fighting against peasant munchies such as chocolates, jellies, or candies!

Goal

Mythmallow is created after playing excessive amount of Brotato as a Rust enthusiast. The purpose is to learn how to develop a game from start to end with Bevy using best practices, and share it with the community as an example.

Installation

Mythmallow is free and open source! It'll be released on Steam and Epic Games Store for a small price in the future for those who want to donate or want to have the convenience of having the game on a gaming platform.

For the time being, the only way to play is to build the game yourself. The game is still in its infancy, so the release process is non-existent.

Steam

Coming soon...

Epic Games

Coming soon...

Pre-built

Coming soon...

Browser

Coming soon...

Crates.io

Coming soon...

Building

You need Nightly Rust Toolchain, Bevy OS Dependencies and LLD or Mold Linker to build the game.

Native (Debug)

To build the game for development in your native platform, you can run:

cargo build

Native (Release)

To build the game for release in your native platform, you can run:

cargo build --release --no-default-features --features native-release

WebAssembly (Debug)

To build the game for development in WebAssembly, you can run:

cargo build --target wasm32-unknown-unknown --no-default-features --features wasm-development

WebAssembly (Release)

To build the game for release in WebAssembly, you can run:

cargo build --release --target wasm32-unknown-unknown --no-default-features --features wasm-release

Usage

Arguments

--configuration \

Specifies the configuration directory.

--data \

Specifies the data directory.

--seed \

Specifies the seed for random number generation in the game.

If not set manually, a random seed will be used.

Warning: This argument is only for debugging purposes. Same seed can result in a different game, in different versions of the game.

--game

Starts the application directly in-game, bypassing menus.

--mode \

Specifies the game mode when starting the application in-game.

Available Game Modes:

If not set manually, a random game mode will be selected.

--player \

Specifies the player when starting the application in-game.

Available Players:

If not set manually, a random player will be selected.

--enemies \

Specifies the enemies when starting the application in-game.

Available Enemies:

If not set manually, random enemies will be selected.

--inventory \

Specifies the additional starting items, separated with commas, when starting the application in-game.

Available Items:

If not set, the inventory will only contain the starting item of the selected player.

--level \

Specifies the level of the player when starting the application in-game.

If not set, level of the player will be set to 1.

--experience \

Specifies the experience of the player when starting the application in-game.

If not set, experience of the player will be set to 0.00.

--balance \

Specifies the balance of the player when starting the application in-game.

If not set, balance of the player will be set to 0.00.

--free-refreshes \

Specifies the number of free refreshes to give to the player when starting the application in-game.

If not set, player won't have any free refreshes.

--god-mode

Enables god mode.

Arguments for game modes

Survival mode

--wave \

Specifies the wave when starting the application in-game.

If not set manually, or set incorrectly, the first wave will be selected.

Documentation

API Documentation

To view the API documentation, you can run:

cargo doc --open

Design Documentation

To view the design documentation, you can run:

mdbook serve --open

(requires mdbook).

License

Mythmallow is free, open source and permissively licensed!

All code in this repository is dual-licensed under either:

This means you can select the license you prefer!