This project is no longer being developed.
Grumpy Visitors is a top-down 2D action arcade game. It's written in Rust and running on Amethyst game engine.
This project is highly inspired by Evil Invasion game. Unfortunately its official site is no longer available, as it's quite old and not really popular, but here is some recorded demo gameplay to get the idea: https://youtu.be/bWpWJzb9JdE.
Planned gameplay features:
- Campaign and survival modes
- Character development system with persistent progress between levels
- Co-op multiplayer (up to 4? players)
These are more like high-level goals for me, as I don't have a clearly formulated vision or design for this game. Everything's still just in my head and therefore almost anything is a subject to change.
Grumpy Visitors relies on git-lfs
to fetch game assets (images, etc.) See git-lfs for installation instructions if you don't already have it on your system. Then:
git lfs install # if this is your first time running git lfs
git lfs pull
# You can append --release flag to every command for building a better performing binary.
cargo build -p gv_server # if you want to host a server for multiplayer
cargo -Z features=itarget build -p gv_client
Please note that specifying just a binary without a package (cargo build --bin gv_server
) won't work.
Cargo tries to merge all the features of common dependencies among all the members of workspace,
which leads the build process to fail.
Feature selection in workspace depends on the set of packages compiled (cargo#4463)
Supported platforms:
- Windows 10 (Vulkan)
- Linux (Vulkan)
- MacOS (Metal)
This project is in its early stage of development. There are only some very basic features implemented:
- Multiplayer
- Casting a spell
- Spawning monsters
- Monster AI (actually just randomly walking around the map and starting to chase a player if they're close enough)
- Character moving
- Sprite animations
- Custom shaders (health HUD, missiles, repainting mage sprites in MP)
- Menu states and transitions
- New spell
- New monster type
- Statistics server (#37)
- Migration to Legion ECS (#47)
- WebSocket and WASM support (#46, tbd)
- Quality of life improvements (#44, #45)
- The multiplayer game will eventually crash because of
ExceededMaxPacketSize
error - In multiplayer missiles are a little bit clunky when launching and sometimes desync
- Current approach to run systems several times in 1 frame sucks (
ActionSystem
, I'm looking at you)
The code is shared under the MIT license.
All the assets are shared under the CC BY-NC 4.0 license (see assets/LICENSE and resources/assets/LICENSE).
Every contribution is really welcome! Please feel free to submit pull requests and create your own issues. I'll also try to be open to new ideas as much as I can, though I can't make a solid promise about that... Author's vision, you know. :)
This project's scope seems to be small, but the codebase may scare you. I can't say I've made architecture decisions to be referentially good, and it's already easy to get lost in the code.
But nevertheless don't hesitate to take a look at "good first issues", so you can get a grasp of it and bring something good to this game:
Special thanks to
- Klaudia Jankowska for the awesome assets
- The great Amethyst community for being extremely welcoming and helpful
- Erlend for noticing this game, giving me motivation and useful advice