πŸ˜ βš”οΈπŸ˜ˆ A minimalistic 2D turn-based tactical game in Rust

Overview

title image

Github Actions dependency status mit license line count

Zemeroth is a turn-based hexagonal tactical game written in Rust.

Support: patreon.com/ozkriff

News: @ozkriff on twitter | ozkriff.games | facebook | devlog on imgur

Online Version

You can play an online WebAssembly version of Zemeroth at ozkriff.itch.io/zemeroth

Precompiled Binaries

Precompiled binaries for Linux, Windows and macOS: github.com/ozkriff/zemeroth/releases

Screenshots

"big" screenshot

"campaign" screenshot

web version of a phone

Gifs

main gameplay animation

Videos

youtube.com/c/andreylesnikov/videos

Vision

The initial vision of the project is:

  • Random-based skirmish-level digital tabletop game;
  • Single player only;
  • 3-6 fighters under player’s control;
  • Small unscrollable maps;
  • Relatively short game session (under an hour);
  • Simple vector 2d graphics with just 3-5 sprites per unit;
  • Reaction attacks and action’s interruption;
  • Highly dynamic (lots of small unit moves as a side effect of other events);
  • Intentionally stupid and predictable AI;

Roadmap

  • Phase One: Linear Campaign Mode

    An extended prototype focused just on tactical battles.

    • v0.4
      • Basic gameplay with reaction attacks
      • Minimal text-based GUI
      • Basic agent abilities: jumps, bombs, dashes, etc
    • v0.5
      • Basic campaign mode
      • Armor and Break stats (#70)
      • Dynamic blood splatters (#86)
      • Web version
      • Tests
      • Hit chances
    • v0.6
      • Agent upgrades (#399)
      • Flip agent sprites horizontally when needed (#115)
      • Multiple sprites per agent type (#114)
    • GUI icons (#276)
    • Sound & Music (#221)
    • Reduce text overlapping (#214)
    • Move back after a successful dodge (#117)
    • Easing (#26)
    • Path selection (#280, #219)
    • Intermediate bosses
    • Main boss
    • Neutral agents (#393)
    • Weight component (#291)
    • Basic inventory system: slots for artifacts
    • Ranged units
    • More agent types
    • More passive abilities that allow agents to make actions during enemy's turn (#354)
    • More complex multieffect abilities/actions
    • Guide (#451)
    • Save/load (#28)
    • Android version
  • Phase Two: Strategy Mode

    A not-so-linear strategic layer will be added on top of tactical battles. Simple non-linear story and meta-gameplay.

    • Global map
    • Dialog system
    • Quest system
    • NPC/Agent/Masters system

Inspiration

Tactical battle mechanics are mostly inspired by these games:

Building from Source

Install all miniquad's system dependencies.

cargo install resvg
./utils/assets_export.sh
cargo run

WebAssembly

cargo install resvg
./utils/assets_export.sh
rustup target add wasm32-unknown-unknown
./utils/wasm/build.sh
cargo install basic-http-server
basic-http-server static

Then open http://localhost:4000 in your browser.

Dependencies

The key external dependency of Zemeroth is macroquad/miniquad.

This repo contains a bunch of helper crates:

  • zcomponents is a simple component storage
  • zgui is a simple and opinionated GUI library
  • zscene is a simple scene and declarative animation manager

Also, resvg is used for exporting sprites from svg.

Contribute

If you want to help take a look at issues with help-wanted label attached:

github.com/ozkriff/zemeroth/labels/help-wanted

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

License

Zemeroth is distributed under the terms of both the MIT license and the Apache License (Version 2.0). See LICENSE-APACHE and LICENSE-MIT for details.

Zemeroth's text logo is based on the "Old London" font by Dieter Steffmann.

Comments
  • Bug: spearman moved out of his body

    Bug: spearman moved out of his body

    capture du 2018-06-25 12-57-56

    An imp_summoner hit the spearman, and knocked it back as expected. But only the image of the spearman was pushed back. His game position (the blue hexagon) didn't move. Afterwards, I could only select the spearman by clicking on his game position and not on the image of the spearman.

    bug help-wanted 
    opened by StyMaar 11
  • Doesn't run on Android

    Doesn't run on Android

    It shows a black screen.

    Logs:

    adb install -r ./target/android-artifacts/app/build/outputs/apk/app-debug.apk
    
    adb logcat -c
    adb shell am start -n rust.$PROJ/rust.$PROJ.MainActivity
    mkdir -p logs
    adb logcat -v time | tee logs/android_log_$(date +%F_%R) | grep 'Rust'
    ./target/android-artifacts/app/build/outputs/apk/app-debug.apk: 1 file pushed. 3.3 MB/s (3013552 bytes in 0.868s)
    	pkg: /data/local/tmp/app-debug.apk
    Success
    Starting: Intent { cmp=rust.zemeroth/.MainActivity VirtualScreenParam=Params{mDisplayId=-1, null, mFlags=0x00000000)} }
    09-11 17:05:27.601 D/RustAndroidGlueStdouterr(22592): Entering android_main
    09-11 17:05:27.601 D/RustAndroidGlueStdouterr(22592): Creating application thread
    09-11 17:05:28.081 D/RustAndroidGlueStdouterr(22592): thread 'main' panicked at 'Error InvalidEnum executing command: SetRasterizer(Rasterizer { front_face: CounterClockwise, cull_face: Back, method: Fill, offset: None, samples: None })', /home/vanya/.cargo/registry/src/github.com-1ecc6299db9ec823/gfx_device_gl-0.14.3/src/lib.rs:768:12
    09-11 17:05:28.081 D/RustAndroidGlueStdouterr(22592): stack backtrace:
    09-11 17:05:28.081 D/RustAndroidGlueStdouterr(22592):    0: <unknown>
    09-11 17:05:28.081 D/RustAndroidGlueStdouterr(22592):    1: <unknown>
    09-11 17:05:28.081 D/RustAndroidGlueStdouterr(22592):    2: <unknown>
    09-11 17:05:28.081 D/RustAndroidGlueStdouterr(22592):    3: <unknown>
    09-11 17:05:28.081 D/RustAndroidGlueStdouterr(22592):    4: <unknown>
    09-11 17:05:28.081 D/RustAndroidGlueStdouterr(22592):    5: <unknown>
    09-11 17:05:28.081 D/RustAndroidGlueStdouterr(22592):    6: <unknown>
    09-11 17:05:28.081 D/RustAndroidGlueStdouterr(22592):    7: <unknown>
    09-11 17:05:28.081 D/RustAndroidGlueStdouterr(22592):    8: <unknown>
    09-11 17:05:28.081 D/RustAndroidGlueStdouterr(22592):    9: <unknown>
    09-11 17:05:28.081 D/RustAndroidGlueStdouterr(22592):   10: <unknown>
    09-11 17:05:28.081 D/RustAndroidGlueStdouterr(22592):   11: <unknown>
    09-11 17:05:28.081 D/RustAndroidGlueStdouterr(22592):   12: <unknown>
    09-11 17:05:28.081 D/RustAndroidGlueStdouterr(22592):   13: <unknown>
    09-11 17:05:28.081 D/RustAndroidGlueStdouterr(22592):   14: <unknown>
    09-11 17:05:28.081 D/RustAndroidGlueStdouterr(22592):   15: <unknown>
    09-11 17:05:28.081 D/RustAndroidGlueStdouterr(22592):   16: <unknown>
    09-11 17:05:28.081 D/RustAndroidGlueStdouterr(22592):   17: <unknown>
    09-11 17:05:28.081 D/RustAndroidGlueStdouterr(22592):   18: <unknown>
    09-11 17:05:28.081 D/RustAndroidGlueStdouterr(22592):   19: <unknown>
    09-11 17:05:28.081 D/RustAndroidGlueStdouterr(22592):   20: <unknown>
    09-11 17:05:28.081 D/RustAndroidGlueStdouterr(22592):   21: <unknown>
    09-11 17:05:28.081 D/RustAndroidGlueStdouterr(22592):   22: <unknown>
    09-11 17:05:28.081 D/RustAndroidGlueStdouterr(22592):   23: <unknown>
    
    bug help-wanted android 
    opened by ip 11
  • Fix duplicated deps (HATE EPOCH)

    Fix duplicated deps (HATE EPOCH)

    • [ ] byteorder
    • [x] lazy_static
    • [ ] log
    • [x] rand
    • [ ] syn
    • [ ] unreachable
    $ cargo tree -d
    byteorder v0.4.2
    └── stb_truetype v0.2.1
        └── rusttype v0.3.0
            └── hate v0.1.0 (file:///home/ozkriff/zemeroth/main/hate)
                └── zemeroth v0.1.0 (file:///home/ozkriff/zemeroth/main)
    
    byteorder v1.2.1
    └── deflate v0.7.17
        └── png v0.11.0
            └── hate v0.1.0 (file:///home/ozkriff/zemeroth/main/hate)
                └── zemeroth v0.1.0 (file:///home/ozkriff/zemeroth/main)
    
    lazy_static v0.2.11
    β”œβ”€β”€ wayland-kbd v0.13.0
    β”‚   └── winit v0.10.0
    β”‚       └── glutin v0.12.0
    β”‚           β”œβ”€β”€ gfx_window_glutin v0.20.0
    β”‚           β”‚   └── hate v0.1.0 (file:///home/ozkriff/zemeroth/main/hate)
    β”‚           β”‚       └── zemeroth v0.1.0 (file:///home/ozkriff/zemeroth/main)
    β”‚           └── hate v0.1.0 (file:///home/ozkriff/zemeroth/main/hate) (*)
    └── wayland-sys v0.12.4
        β”œβ”€β”€ wayland-client v0.12.4
        β”‚   β”œβ”€β”€ glutin v0.12.0 (*)
        β”‚   β”œβ”€β”€ wayland-kbd v0.13.0 (*)
        β”‚   β”œβ”€β”€ wayland-protocols v0.12.4
        β”‚   β”‚   β”œβ”€β”€ wayland-window v0.13.2
        β”‚   β”‚   β”‚   └── winit v0.10.0 (*)
        β”‚   β”‚   └── winit v0.10.0 (*)
        β”‚   β”œβ”€β”€ wayland-window v0.13.2 (*)
        β”‚   └── winit v0.10.0 (*)
        └── wayland-protocols v0.12.4 (*)
    
    lazy_static v1.0.0
    β”œβ”€β”€ glutin v0.12.0
    β”‚   β”œβ”€β”€ gfx_window_glutin v0.20.0
    β”‚   β”‚   └── hate v0.1.0 (file:///home/ozkriff/zemeroth/main/hate)
    β”‚   β”‚       └── zemeroth v0.1.0 (file:///home/ozkriff/zemeroth/main)
    β”‚   └── hate v0.1.0 (file:///home/ozkriff/zemeroth/main/hate) (*)
    β”œβ”€β”€ libloading v0.4.3
    β”‚   └── dlib v0.4.0
    β”‚       β”œβ”€β”€ wayland-kbd v0.13.0
    β”‚       β”‚   └── winit v0.10.0
    β”‚       β”‚       └── glutin v0.12.0 (*)
    β”‚       └── wayland-sys v0.12.4
    β”‚           β”œβ”€β”€ wayland-client v0.12.4
    β”‚           β”‚   β”œβ”€β”€ glutin v0.12.0 (*)
    β”‚           β”‚   β”œβ”€β”€ wayland-kbd v0.13.0 (*)
    β”‚           β”‚   β”œβ”€β”€ wayland-protocols v0.12.4
    β”‚           β”‚   β”‚   β”œβ”€β”€ wayland-window v0.13.2
    β”‚           β”‚   β”‚   β”‚   └── winit v0.10.0 (*)
    β”‚           β”‚   β”‚   └── winit v0.10.0 (*)
    β”‚           β”‚   β”œβ”€β”€ wayland-window v0.13.2 (*)
    β”‚           β”‚   └── winit v0.10.0 (*)
    β”‚           └── wayland-protocols v0.12.4 (*)
    β”œβ”€β”€ shared_library v0.1.8
    β”‚   β”œβ”€β”€ glutin v0.12.0 (*)
    β”‚   └── osmesa-sys v0.1.2
    β”‚       └── glutin v0.12.0 (*)
    β”œβ”€β”€ thread_local v0.3.5
    β”‚   └── regex v0.2.5
    β”‚       └── env_logger v0.4.3
    β”‚           └── zemeroth v0.1.0 (file:///home/ozkriff/zemeroth/main) (*)
    β”œβ”€β”€ winit v0.10.0 (*)
    └── x11-dl v2.17.2
        β”œβ”€β”€ glutin v0.12.0 (*)
        └── winit v0.10.0 (*)
    
    log v0.3.9
    β”œβ”€β”€ env_logger v0.4.3
    β”‚   └── zemeroth v0.1.0 (file:///home/ozkriff/zemeroth/main)
    └── gl_generator v0.7.0
    
    log v0.4.1
    β”œβ”€β”€ gfx v0.17.0
    β”‚   └── hate v0.1.0 (file:///home/ozkriff/zemeroth/main/hate)
    β”‚       └── zemeroth v0.1.0 (file:///home/ozkriff/zemeroth/main)
    β”œβ”€β”€ gfx_core v0.8.0
    β”‚   β”œβ”€β”€ gfx v0.17.0 (*)
    β”‚   β”œβ”€β”€ gfx_device_gl v0.15.0
    β”‚   β”‚   β”œβ”€β”€ gfx_window_glutin v0.20.0
    β”‚   β”‚   β”‚   └── hate v0.1.0 (file:///home/ozkriff/zemeroth/main/hate) (*)
    β”‚   β”‚   └── hate v0.1.0 (file:///home/ozkriff/zemeroth/main/hate) (*)
    β”‚   β”œβ”€β”€ gfx_window_glutin v0.20.0 (*)
    β”‚   └── hate v0.1.0 (file:///home/ozkriff/zemeroth/main/hate) (*)
    β”œβ”€β”€ gfx_device_gl v0.15.0 (*)
    β”œβ”€β”€ log v0.3.9
    β”‚   β”œβ”€β”€ env_logger v0.4.3
    β”‚   β”‚   └── zemeroth v0.1.0 (file:///home/ozkriff/zemeroth/main) (*)
    β”‚   └── gl_generator v0.7.0
    └── zemeroth v0.1.0 (file:///home/ozkriff/zemeroth/main) (*)
    
    rand v0.3.19
    β”œβ”€β”€ cgmath v0.15.0
    β”‚   β”œβ”€β”€ hate v0.1.0 (file:///home/ozkriff/zemeroth/main/hate)
    β”‚   β”‚   └── zemeroth v0.1.0 (file:///home/ozkriff/zemeroth/main)
    β”‚   └── zemeroth v0.1.0 (file:///home/ozkriff/zemeroth/main) (*)
    └── tempfile v2.2.0
        └── wayland-window v0.13.2
            └── winit v0.10.0
                └── glutin v0.12.0
                    β”œβ”€β”€ gfx_window_glutin v0.20.0
                    β”‚   └── hate v0.1.0 (file:///home/ozkriff/zemeroth/main/hate) (*)
                    └── hate v0.1.0 (file:///home/ozkriff/zemeroth/main/hate) (*)
    
    rand v0.4.1
    └── zemeroth v0.1.0 (file:///home/ozkriff/zemeroth/main)
    
    syn v0.10.8
    └── derivative v1.0.0
        β”œβ”€β”€ gfx v0.17.0
        β”‚   └── hate v0.1.0 (file:///home/ozkriff/zemeroth/main/hate)
        β”‚       └── zemeroth v0.1.0 (file:///home/ozkriff/zemeroth/main)
        └── gfx_core v0.8.0
            β”œβ”€β”€ gfx v0.17.0 (*)
            β”œβ”€β”€ gfx_device_gl v0.15.0
            β”‚   β”œβ”€β”€ gfx_window_glutin v0.20.0
            β”‚   β”‚   └── hate v0.1.0 (file:///home/ozkriff/zemeroth/main/hate) (*)
            β”‚   └── hate v0.1.0 (file:///home/ozkriff/zemeroth/main/hate) (*)
            β”œβ”€β”€ gfx_window_glutin v0.20.0 (*)
            └── hate v0.1.0 (file:///home/ozkriff/zemeroth/main/hate) (*)
    
    syn v0.11.11
    β”œβ”€β”€ serde_derive v1.0.27
    β”‚   β”œβ”€β”€ hate v0.1.0 (file:///home/ozkriff/zemeroth/main/hate)
    β”‚   β”‚   └── zemeroth v0.1.0 (file:///home/ozkriff/zemeroth/main)
    β”‚   β”œβ”€β”€ serde v1.0.27
    β”‚   β”‚   β”œβ”€β”€ hate v0.1.0 (file:///home/ozkriff/zemeroth/main/hate) (*)
    β”‚   β”‚   β”œβ”€β”€ ron v0.1.5
    β”‚   β”‚   β”‚   └── zemeroth v0.1.0 (file:///home/ozkriff/zemeroth/main) (*)
    β”‚   β”‚   └── zemeroth v0.1.0 (file:///home/ozkriff/zemeroth/main) (*)
    β”‚   └── zemeroth v0.1.0 (file:///home/ozkriff/zemeroth/main) (*)
    └── serde_derive_internals v0.19.0
        └── serde_derive v1.0.27 (*)
    
    unreachable v0.1.1
    └── ordered-float v0.5.0
        └── rusttype v0.3.0
            └── hate v0.1.0 (file:///home/ozkriff/zemeroth/main/hate)
                └── zemeroth v0.1.0 (file:///home/ozkriff/zemeroth/main)
    
    unreachable v1.0.0
    └── thread_local v0.3.5
        └── regex v0.2.5
            └── env_logger v0.4.3
                └── zemeroth v0.1.0 (file:///home/ozkriff/zemeroth/main)
    
    help-wanted chore 
    opened by ozkriff 7
  • Panic

    Panic

    On today's master (https://github.com/ozkriff/zemeroth/commit/d218d38adfc67dd244d8658b74147bc461dc147b) when pressing Β«end turnΒ».

    (I launched the game twice, it happened every time on the first Β«end turnΒ»).

    thread 'main' panicked at 'no entry found for key', libcore/option.rs:960:5
    stack backtrace:
       0: std::sys::unix::backtrace::tracing::imp::unwind_backtrace
                 at libstd/sys/unix/backtrace/tracing/gcc_s.rs:49
       1: std::sys_common::backtrace::print
                 at libstd/sys_common/backtrace.rs:71
                 at libstd/sys_common/backtrace.rs:59
       2: std::panicking::default_hook::{{closure}}
                 at libstd/panicking.rs:211
       3: std::panicking::default_hook
                 at libstd/panicking.rs:227
       4: std::panicking::rust_panic_with_hook
                 at libstd/panicking.rs:511
       5: std::panicking::continue_panic_fmt
                 at libstd/panicking.rs:426
       6: rust_begin_unwind
                 at libstd/panicking.rs:337
       7: core::panicking::panic_fmt
                 at libcore/panicking.rs:92
       8: core::option::expect_failed
                 at libcore/option.rs:960
       9: <core::option::Option<T>>::expect
                 at /checkout/src/libcore/option.rs:312
      10: <std::collections::hash::map::HashMap<K, V, S> as core::ops::index::Index<&'a Q>>::index
                 at /checkout/src/libstd/collections/hash/map.rs:1547
      11: zemeroth::core::state::private::State::prototype_for
                 at src/core/state.rs:58
      12: zemeroth::core::execute::effect_create_object
                 at src/core/execute.rs:856
      13: zemeroth::core::execute::throw_bomb
                 at src/core/execute.rs:892
      14: zemeroth::core::execute::execute_use_ability_bomb_damage
                 at src/core/execute.rs:930
      15: zemeroth::core::execute::execute_use_ability
                 at src/core/execute.rs:981
      16: zemeroth::core::execute::execute
                 at src/core/execute.rs:37
      17: zemeroth::screen::battle::Battle::do_command_inner
                 at src/screen/battle/mod.rs:292
      18: zemeroth::screen::battle::Battle::do_ai
                 at src/screen/battle/mod.rs:255
      19: zemeroth::screen::battle::Battle::end_turn
                 at src/screen/battle/mod.rs:244
      20: <zemeroth::screen::battle::Battle as zemeroth::screen::Screen>::click
                 at src/screen/battle/mod.rs:480
      21: zemeroth::screen::Screens::click
                 at src/screen/mod.rs:61
      22: <zemeroth::MainState as ggez::event::EventHandler>::mouse_button_up_event
                 at src/main.rs:83
      23: ggez::event::run
                 at /home/stymaar/.cargo/registry/src/github.com-1ecc6299db9ec823/ggez-0.4.3/src/event.rs:243
      24: zemeroth::main
                 at src/main.rs:108
      25: std::rt::lang_start::{{closure}}
                 at /checkout/src/libstd/rt.rs:74
      26: std::panicking::try::do_call
                 at libstd/rt.rs:59
                 at libstd/panicking.rs:310
      27: __rust_maybe_catch_panic
                 at libpanic_unwind/lib.rs:105
      28: std::rt::lang_start_internal
                 at libstd/panicking.rs:289
                 at libstd/panic.rs:397
                 at libstd/rt.rs:58
      29: std::rt::lang_start
                 at /checkout/src/libstd/rt.rs:74
      30: main
      31: __libc_start_main
      32: _start
    
    opened by StyMaar 6
  • Component system

    Component system

    With a component system, I should be able to implement: Boulders, Bombs (#69), Fire, Corpses etc

    I don't think Zemeroth needs a full-featured ECS solution (like specs) as the game is turn-based. A bunch of HashMap<ObjId, ComponentType> will do the work fine.

    See:

    • https://gridbugs.org/programming-languages-make-terrible-game-engines
    • https://gridbugs.org/modifying-entity-component-system-for-turn-based-games
    • See https://github.com/rsaarelm/calx-ecs
    refactoring 
    opened by ozkriff 5
  • Fix appveyor's cache

    Fix appveyor's cache

    https://ci.appveyor.com/project/ozkriff/zemeroth/build/1.0.28/job/8cndcdxka0xpbprs#L104

    Updating build cache...
    Cache 'target' - Uploading (73,418,064 bytes)...100%Error uploading cache entry to the cache storage: The maximum cache size of 1,000 MB will be exceeded.
    Cache 'C:\Users\appveyor\.cargo\registry' - Up to date
    Build success
    

    See https://www.appveyor.com/docs/build-cache/#cleaning-up-cache (?)

    chore 
    opened by ozkriff 5
  • /usr/bin/ld : cannot find -lGL ___ /usr/bin/ld : cannot find -lXi

    /usr/bin/ld : cannot find -lGL ___ /usr/bin/ld : cannot find -lXi

    Hello, i havealready installed build-essential and assets are in right place ; when i try to cargo build --release i get:

    error: linking with cc failed: exit code: 1 | = note: "cc" "-Wl,--as-needed" "-Wl,-z,noexecstack" "-m64" "-L" "/home/laticoda/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/zemeroth-2a8deb94498c868a.zemeroth.cxe0r31s-cgu.0.rcgu.o" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/zemeroth-2a8deb94498c868a.zemeroth.cxe0r31s-cgu.1.rcgu.o" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/zemeroth-2a8deb94498c868a.zemeroth.cxe0r31s-cgu.10.rcgu.o" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/zemeroth-2a8deb94498c868a.zemeroth.cxe0r31s-cgu.11.rcgu.o" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/zemeroth-2a8deb94498c868a.zemeroth.cxe0r31s-cgu.12.rcgu.o" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/zemeroth-2a8deb94498c868a.zemeroth.cxe0r31s-cgu.13.rcgu.o" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/zemeroth-2a8deb94498c868a.zemeroth.cxe0r31s-cgu.14.rcgu.o" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/zemeroth-2a8deb94498c868a.zemeroth.cxe0r31s-cgu.15.rcgu.o" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/zemeroth-2a8deb94498c868a.zemeroth.cxe0r31s-cgu.2.rcgu.o" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/zemeroth-2a8deb94498c868a.zemeroth.cxe0r31s-cgu.3.rcgu.o" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/zemeroth-2a8deb94498c868a.zemeroth.cxe0r31s-cgu.4.rcgu.o" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/zemeroth-2a8deb94498c868a.zemeroth.cxe0r31s-cgu.5.rcgu.o" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/zemeroth-2a8deb94498c868a.zemeroth.cxe0r31s-cgu.6.rcgu.o" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/zemeroth-2a8deb94498c868a.zemeroth.cxe0r31s-cgu.7.rcgu.o" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/zemeroth-2a8deb94498c868a.zemeroth.cxe0r31s-cgu.8.rcgu.o" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/zemeroth-2a8deb94498c868a.zemeroth.cxe0r31s-cgu.9.rcgu.o" "-o" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/zemeroth-2a8deb94498c868a" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/zemeroth-2a8deb94498c868a.458op3t69xgnq6d8.rcgu.o" "-Wl,--gc-sections" "-pie" "-Wl,-zrelro" "-Wl,-znow" "-Wl,-O1" "-nodefaultlibs" "-L" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps" "-L" "/home/laticoda/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,-Bstatic" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/libenv_logger-020bfdf6267bf909.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/libtermcolor-0da8b3c133a36a7c.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/libatty-26f94e5b95bc71f7.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/libhumantime-a611f3164947d731.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/libquick_error-af8df6311fa98e72.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/libregex-d82dfc7c71c05eeb.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/libthread_local-a84670340260f076.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/liblazy_static-14afa302397059c5.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/libregex_syntax-cefc061ecdc78575.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/libaho_corasick-d5b5b2c4e252483c.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/libmemchr-a821e32d00d5e3d0.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/libron-998274975df389d1.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/libbase64-4f9f3473f0d62904.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/libzscene-2ef59e0cd7d54ac9.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/libzgui-8f54d0fdc237840c.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/libquad_rand-2f799ca1e68b9c53.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/libnum-d10e932ad36579af.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/libnum_complex-a9acfe6d163babfb.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/librand-357ebf4d704761cf.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/librand_chacha-cf07140b121aad00.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/libppv_lite86-149557f97210c15e.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/librand_core-3d428929d1ca499a.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/libgetrandom-fd485c8893166d74.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/libzcomponents-96e2eca81e0b25b4.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/liblog-4dfe60008f5d0244.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/libserde-3b92d6ea9fdd8bc7.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/libgood_web_game-3eccd5427c1961b0.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/libimage-c79aeeb4ebe08502.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/libpng-8083cbff90c1e662.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/libdeflate-c7ae1a3ee04a02be.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/libinflate-e6aa18df6ab35ed8.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/libadler32-899a62adc1b73bb7.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/libcrc32fast-c1c470a9af72effc.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/libnum_rational-4539229413816360.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/libnum_iter-554b90aaff11550f.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/libnum_integer-0b7dd474bc94fbb9.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/libbyteorder-ae8be6ae0f3ee564.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/libtar-6c7233645835df95.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/libfiletime-ba08171e63159b9f.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/libcfg_if-64c0d2409cb56520.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/libbitflags-e261184c77ad1a7f.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/liblyon-183821cc73c8885a.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/liblyon_algorithms-1fd94ed5cca42c9f.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/liblyon_tessellation-594ce3c538ac66da.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/libsid-658c72aa926a12a8.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/liblyon_path-8f3f419b90b84712.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/liblyon_geom-6dd44d34bf1412fa.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/libeuclid-4867df6dc374b758.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/libnum_traits-40c36e36cd97837f.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/libarrayvec-c18db53b63c204d4.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/libnodrop-a0abd9fa8844f5e0.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/libminiquad_text_rusttype-17bc53924a8046d1.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/librusttype-732e69bd6e38cb6f.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/libab_glyph_rasterizer-10f3b39fda730219.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/libowned_ttf_parser-9b7f699981a9dd62.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/libttf_parser-091b8f5fdfc6e80c.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/libminiquad-ea7910e1338bb2b1.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/libsapp_linux-e5a656eac884d4f0.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/libcgmath-43963b3dabbd9a56.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/librand-b20777cb61728b55.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/librand_xorshift-e582492bd2168bce.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/librand_pcg-a339ea17dfa29eb6.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/librand_hc-2a7862ee160996fa.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/librand_chacha-74f7b56b16ab4878.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/librand_isaac-6d4e5c4018cfc086.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/librand_core-1d760f77e96e81d6.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/librand_os-b2501265eac7fd19.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/liblibc-1a9983877aa79647.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/librand_jitter-c787f389e6ac707a.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/librand_core-72565076fa5b8ad0.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/libmint-416c15456d47e628.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/libapprox-f2dc7cf69ec23345.rlib" "/media/laticoda/slowdisk/zemeroth-master/target/release/deps/libnum_traits-0e84a4d8284bf66e.rlib" "-Wl,--start-group" "/home/laticoda/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-6640d3868fa846e8.rlib" "/home/laticoda/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_unwind-48481e446108229f.rlib" "/home/laticoda/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libhashbrown-bfdf9e1c331f914a.rlib" "/home/laticoda/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_alloc-991e68a3d0300af6.rlib" "/home/laticoda/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libbacktrace-74304cfed66bbabf.rlib" "/home/laticoda/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libbacktrace_sys-5db30a83f5489d12.rlib" "/home/laticoda/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_demangle-a106c3f62654e72c.rlib" "/home/laticoda/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunwind-3d6b30695af38106.rlib" "/home/laticoda/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcfg_if-d8f11f6bb46ba3ee.rlib" "/home/laticoda/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc-60c81ab95e289dd1.rlib" "/home/laticoda/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc-fd1a416f10d6c43d.rlib" "/home/laticoda/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_core-4a2bd2b60cccd1fb.rlib" "/home/laticoda/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-7ea8ebc630055039.rlib" "-Wl,--end-group" "/home/laticoda/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-f7cd12d3ecd59a89.rlib" "-Wl,-Bdynamic" "-lGL" "-lX11" "-lXi" "-lutil" "-ldl" "-lutil" "-ldl" "-lrt" "-lpthread" "-lgcc_s" "-lc" "-lm" "-lrt" "-lpthread" "-lutil" "-ldl" "-lutil" = note: /usr/bin/ldΒ : cannot find -lGL /usr/bin/ldΒ : cannot find -lXi collect2: error: ld returned 1 exit status

    opened by laticoda 4
  • Weight logic to Knockback

    Weight logic to Knockback

    Related to https://github.com/ozkriff/zemeroth/issues/291

    Impacts would only be "BombPush" ability used on ally Heavy agents.

    Features:

    • [x] Weight logic for BombPush
    • [x] Same logic for FlyOff effect
    • [x] Visualization for failed knockback
    • [x] PR for assets/objects.ron definitions : https://github.com/ozkriff/zemeroth_assets/pull/6
    • [x] Tests for Knockback
    • [x] Tests for FlyOff
    opened by Vrixyz 4
  • rendering ratio issue

    rendering ratio issue

    I just tested master branch on mac os 10.14.3 and it seems like there is a bug in rendering

    Screenshot 2019-06-07 at 16 50 46 Screenshot 2019-06-07 at 16 46 26 Screenshot 2019-06-07 at 16 46 15

    It's also difficult to press buttons, as button touch zones are a bit off (I guess, they are exactly where Sprites are supposed to be rendered.

    I was trying to debug the problem, but it was a bit too time consuming. I guess the problem is caused by aspect ratio of the screen not being correctly used (or not used) in draw function.

    bug help-wanted 
    opened by debris 3
  • Mouse clicks off

    Mouse clicks off

    The game looks awesome. I am playing on mac pro. Everything compiles and launches fine, however clicks on the screen seems to be offset or scaled incorrectly.

    For example here is where menu is vs where I need to click to hit the corresponding button:

    ____________________________
    |                          |
    |      [1demo battle]      |
    |      [2campaign]         |
    |      [3strategy mode]   1|
    |      [4exit]            2|
    |_________________________3|
    

    I'd be interested to do more digging when I have time, but fyi I am a rust newbie so my debugging skills are weak.

    More details:

    • Applies on game screens as well.
    • I can click exit button at top left corner of screen fine, which is why I thought it could be scaling issue.
    • Possibly related to ggez + hdpi?
    bug help-wanted 
    opened by daimeng 3
  • Improve an assets hash check

    Improve an assets hash check

    When I now think about how have I solved #109 issue yesterday, one thing bugs me: I'm checking a hash sum of a source SVG atlas that was used to generate png images, but zemeroth_assets repo also contains two .ron files which won't affect this hash. So if I change only them we still can end up with missync.

    I can just move these .ron files to this repo, but it won't solve the same issue with fonts or audio files - they are not generated from an .svg atlas too.

    (And I definitely hate the idea of using git submodules for this.)

    The better solution might be a small python script inside the zemeroth_assets repo that will hash all the non-hidden files. I should run it before every commit, but it can be easily backed up by a master branch protection and CI re-check of this hash.

    chore 
    opened by ozkriff 3
  • build(deps): bump regex from 1.5.4 to 1.5.6

    build(deps): bump regex from 1.5.4 to 1.5.6

    Bumps regex from 1.5.4 to 1.5.6.

    Changelog

    Sourced from regex's changelog.

    1.5.6 (2022-05-20)

    This release includes a few bug fixes, including a bug that produced incorrect matches when a non-greedy ? operator was used.

    1.5.5 (2022-03-08)

    This releases fixes a security bug in the regex compiler. This bug permits a vector for a denial-of-service attack in cases where the regex being compiled is untrusted. There are no known problems where the regex is itself trusted, including in cases of untrusted haystacks.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • build(deps): bump nix from 0.20.0 to 0.20.2

    build(deps): bump nix from 0.20.0 to 0.20.2

    Bumps nix from 0.20.0 to 0.20.2.

    Changelog

    Sourced from nix's changelog.

    [0.20.2] - 28 September 2021

    Added

    Changed

    Fixed

    • Fixed buffer overflow in unistd::getgrouplist. (#1545)

    [0.20.1] - 13 August 2021

    Added

    Changed

    Fixed

    • Locked bitflags to < 1.3.0 to fix the build with rust < 1.46.0.

    Removed

    • Removed a couple of termios constants on redox that were never actually supported. (#1483)
    Commits
    • 72d805a (cargo-release) version 0.20.2
    • 199acc7 [skip ci] update version in README
    • 94ccf88 Fix memory unsafety in unistd::getgrouplist
    • de534c1 Release 0.20.1
    • b13f73c Fix a non_fmt_panic warning with Rustc 1.52.0
    • c0a9fd7 Use memoffset::offset_of instead of homegrown macro
    • e266b7c Fix test_vsock failure on VMADDR_CID_LOCAL testing
    • feb8fe6 Remove some actually unsupported termios iflags on redox
    • 97f6ec5 Lock bitflags to < 1.3.0 to fix the build with rust < 1.46.0
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Running

    Running "./utils/assets_export.sh" will get an error "resvg: command not found" in archlinux

    It will be OK if I edit Line 14 in file "/utils/assets_export.sh" like this: _$HOME/.cargo/bin/_resvg --zoom=12 --export-id="$id" $INPUT_FILE "$OUT_DIR/$id.png" That's because that The resvg installation root maybe be changed. You can check more information in this web: https://doc.rust-lang.org/cargo/commands/cargo-install.html

    opened by lishaoxia1985 0
Releases(v0.6.0)
Owner
Andrey LesnikΓ³v
Rust enthusiast and hobby game developer. GMT+3
Andrey LesnikΓ³v
Fish Game for Macroquad is an online multiplayer game, created as a demonstration of Nakama, an open-source scalable game server, using Rust-lang and the Macroquad game engine.

Fish Game for Macroquad is an online multiplayer game, created as a demonstration of Nakama, an open-source scalable game server, using Rust-lang and the Macroquad game engine.

Heroic Labs 130 Dec 29, 2022
The video game for Fonts of Power. A tabletop roleplaying game made in Rust with Bevy!

The code and rules for Fonts of Power, a tactical TTRPG / video game about exploring magical places. You can follow its development in our Discord ser

null 25 Dec 23, 2022
Red Light, Green Light is a traditional Korean children's game, popularised by the Squid Game TV series.

Red Light, Green Light Red Light, Green Light is a traditional Korean children's game, popularised by the Squid Game TV series. This project is the di

Cedric Chee 1 Jan 10, 2022
A game inspired by the classic atari game: demon attack

rusty_demon_attack A game inspired by the classic atari game: demon attack You can play the game in the web!

null 58 Jan 4, 2023
A roguelike game in Rust

A fantasy deathcrawl in Rust Work in progress. To run, with Rust compiler and Cargo package manager installed: cargo run --release When building on W

Risto Saarelma 347 Nov 21, 2022
This is a simple implementation of the classic snake game in rust

My snake game Looks like this. This is with Roboto Mono Nerd Font. If you use a different font it may look different or distorted. Install rust In ord

Konstantinos Kyriakou 16 Apr 4, 2021
The classic tetris game written in Rust using ncurses

tetris.rs This is the classic tetris game I wrote to have a bit of fun with Rust. Installation and playing cargo install --

null 71 Jul 25, 2022
A refreshingly simple data-driven game engine built in Rust

What is Bevy? Bevy is a refreshingly simple data-driven game engine built in Rust. It is free and open-source forever! WARNING Bevy is still in the ve

Bevy Engine 21.1k Jan 3, 2023
Data-oriented and data-driven game engine written in Rust

What is Amethyst? Amethyst is a data-driven and data-oriented game engine aiming to be fast and as configurable as possible. Principles These principl

Amethyst Engine 7.9k Dec 31, 2022
Rust library to create a Good Game Easily

ggez What is this? ggez is a Rust library to create a Good Game Easily. The current version is 0.6.0-rc0. This is a RELEASE CANDIDATE version, which m

null 3.6k Jan 4, 2023
Minesweeper game developed with Rust, WebAssembly (Wasm), and Canvas

?? click here to play the game ?? Minesweeper game Revealing all the cells without hitting the mines is the task. Each number in the cell denotes how

Karthik Nedunchezhiyan 23 Dec 28, 2022
Snake Game in rust for the web

About This template shows how to create a web app using Yew and wasm-pack. ?? Usage ??️ Build When building for the first time, ensure to install depe

PsiAphex 1 Oct 24, 2021
A solver for the popular Wordle game written in Rust.

Wordle Solver A solver for the popular Wordle game written in Rust. It does not attempt to be the most efficient solver possible but tries to avoid us

William Hoggarth 2 Jul 1, 2022
A simple power 4 game wrote in Rust.

?? ?? Power 4 This is a simple power 4 game wrote in native Rust. There's only one dependencie for colored terminal. ❓ How to try it? To try this game

null 1 Apr 25, 2022
A finnish version of the word guessing game Wordle implemented in Rust.

Sanuli A finnish version of the word guessing game Wordle implemented in Rust. Live version running at sanuli.fi. Quick start Follow Rust installation

Jaakko Husso 59 Nov 29, 2022
πŸ‘Ύ The classic Space Invaders game made in rust!

?? Invaders The classic space-shooter game now in your terminal! And the good part: made in Rust! ❕ This game was made during the course Ultimate Rust

JoΓ£o Augusto Perin 1 Feb 8, 2022
A block game made in Rust and SFML

septadrop A block game made in Rust and SFML. For packaging instructions, see the build folder. Game Controls ??/?? arrow keys: horizontal movement ??

Elnu 1 Dec 19, 2022
🚒 Battleship game implemented in Rust

?? Battleship game implemented in Rust. Fully playable between 2 players on the terminal. To play on the public instance: $ nc battleship.o

Orhun ParmaksΔ±z 55 Jan 2, 2023
A space shooter game made with Amethyst and Rust.

Theta Wave Project Introduction This game was made with the Amethyst engine. It is inspired by games like Raiden and The Binding of Isaac. Game Introd

Theta Wave 192 Oct 7, 2022