Skip to content

alec-mccormick/chess

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

59 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Chess

This project's primary role is to serve as a framework for an isometric turn-based game written in Rust with Bevy engine.

Run the following commands to launch:

  1. Launch the first client on port 12351 with the title "Chess A".
$ cargo run -- --port 12351 --title "Chess A"
  1. Launch second client on port 12350 with the title "Chess B" & configure it to connect to client "Chess A".
$ cargo run -- --port 12350 --title "Chess B" --remote "127.0.0.1:12351"
  1. Launch a game on the first client by pressing "Start"
  2. Join the created game on the second client by pressing "Join"

Set the environment variable RUST_LOG="chess=debug" for debug logs.

Roadmap

  • GameState, swap turns with each move (needs to be fixed to not work on invalid moves)
  • Validate move before executing
  • Highlight moves
  • Show current player with text
  • Implement attacking
    • Handle health changes in various modules (despawn + remove sprite)
  • Implement Knight
  • Implement King
  • Add robust logging
  • Update rendering to isometric
  • Add Networking
    • Serialize/deserialize board
    • Serialize/deserialize messages
    • Add reconnection functionality
  • Migrate to using SpriteConfig
  • Migrate to animated sprites
  • Show movable squares on hover
  • Add Bot AI
  • Add startup screen
    • Allow user to select team
  • Build Action UI
    • Add Icon
    • Add Description
  • Add events for action executed, etc.
  • Update Action to no longer rely on Query
    • Maintain internal list of all units in UnitStore?
    • Migrate to ObjectId

Bevy Stages

This is just here for reference

app::FIRST
    + core::time_system
    + core::timer_system

app::PRE_EVENT

app::EVENT
    + input::keyboard_input_system
    + input::mouse_button_input_system
    + input::gamepad_event_system
    + input::touch_screen_input_system

scene::SCENE_STAGE
    + scene::scene_spawned_system

asset::LOAD_ASSETS
    + asset:filesystem_watcher_system

app::PRE_UPDATE
    + core::entity_labels_system    // Updates entity labels, used to id -> entity mapping
    + asset::free_unused_asets_system
    + render::clear_draw_system
    + ui::ui_focus_system

app::UPDATE

ui::UI
    ui::widget::text_system
    ui::widget::image_node_system
    ui::z_system
    ui::flex_node_system

app::POST_UPDATE
    + transform::transform_systems
    + render::active_cameras_system
    + render::camera_system
    + render::camera_visible_entities
    + sprite::sprite_system
    + sprite::asset_shader_defs_system
    + audio::play_queued_audio

asset::ASSET_EVENTS

render::RENDER_RESOURCE
    + render::mesh_resource_profider_system
    + render::texture_resource_system

render::RENDER_GRAPH_SYSTEMS
    + render::render_graph_systems

render::DRAW
    + render::draw_render_pipelines_system
    + ui::widget::draw_text_system

render::RENDER

render::POST_RENDER
    + render::shader::clear_shader_defs_system


app::LAST

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages