Coder Social home page Coder Social logo

hoangpq / grumpy_visitors Goto Github PK

View Code? Open in Web Editor NEW

This project forked from amethyst/grumpy_visitors

0.0 1.0 0.0 1.28 MB

๐Ÿง™โ€โ™‚๏ธ๐Ÿง™โ€โ™€๏ธ A prototype of a top-down EvilInvasion-like 2D arcade/action (with co-op!)

Home Page: https://mvlabat.github.io/

License: MIT License

Rust 98.04% GLSL 1.96%

grumpy_visitors's Introduction

Grumpy Visitors

GitHub pull requests

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.

This is my first gamedev project (not the first attempt to make one though). My ultimate goal is to make a finished product (and maybe start selling this game if I ever accomplish it, who knows). At the same time I want to keep this project open-source and available for everyone to build it on their local machine and play for free.

Grumpy Visitors screenshot

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.

Fetching Game Assets

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

Building

cargo build -p gv_server # if you want to host a server for multiplayer
cargo -Z features=itarget build -p gb_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)
    • though I myself failed to build it on my system because of (shaderc-rs#61)
  • MacOS (Metal)

Current state

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

Roadmap to 0.2

  • Rewrite networking with the upcoming version of amethyst_net
  • Try to rework ActionSystem (current approach to run systems several times in 1 frame sucks)
  • Add profiling
  • Implement possibility to pause/unpause writing profiler traces
  • Look for weak spots in performance and optimize them if found and possible
  • Add visual indicators for better debugging (mobs health, network state, fps, latency etc)
  • Refactor UI code (current definition files and the system are huge)
  • Polish UI (transitions, resetting game states and menu screens, input validations)
  • Better visuals (polishing animations, adding some nice shaders for spells)
  • Implement defining spells and monsters with *.ron files (no more hardcoded values)
  • Unit tests

Known issues

  • Starting a multiplayer game before the connected peers pop up in the players list may cause a crash
  • The multiplayer game will eventually crash because of ExceededMaxPacketSize error
  • In multiplayer missiles are a little bit clunky when launching and sometimes desync

License

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).

Contributing

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:

GitHub pull requests

Credits

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

grumpy_visitors's People

Contributors

canadaduane avatar doimhneacht avatar jstnlef avatar mvlabat avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.