diff --git a/README.md b/README.md index 4bfe11d..8e9502c 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,9 @@ a free and open source games framework > [!WARNING] > This project is in early development and is not yet ready for use. > -> It could be potentially used to make something very basic in a very hacky way but it is not a good experience +> It could be potentially used to make something very basic in a very hacky way, but it is not a good experience > -> Installation is manual as of right now but if it reaches an exaptable state I will publish the crate +> Installation is manual as of right now but if it reaches an acceptable state I will publish the crate ## Recommended setup @@ -26,10 +26,10 @@ project ``` ```toml -# Cargo.toml +# Cargo.toml # ... [dependencies] -comet = { path = "crates/comet" } +comet = { path = "path/of/the/comet/crate" } # ... ``` @@ -40,9 +40,9 @@ use comet::prelude::*; struct GameState {} impl GameState { - pub fn new() -> Self { - Self {} - } + pub fn new() -> Self { + Self {} + } } // This function will be called once before the event loop starts @@ -50,14 +50,14 @@ fn setup(app: &mut App, renderer: &mut Renderer2D) {} // This function will be called every tick fn update(app: &mut App, renderer: &mut Renderer2D, dt: f32) {} -fn main() { - App::new() // Generate a basic 2D app - .with_preset(App2D) // Pre-registers the `Transform2D` component in the world - .with_title("Comet App") // Sets the window title - .with_icon(r"resources/textures/comet_icon.png") // Sets the window icon - .with_size(1920, 1080) // Sets the window size - .with_game_state(GameState::new()) // Adds a custom game state struct - .run::(setup, update) // Starts app +fn main() { + App::new() // Generate a basic 2D app + .with_preset(App2D) // Pre-registers the `Transform2D` component in the world + .with_title("Comet App") // Sets the window title + .with_icon(r"resources/textures/comet_icon.png") // Sets the window icon + .with_size(1920, 1080) // Sets the window size + .with_game_state(GameState::new()) // Adds a custom game state struct + .run::(setup, update) // Starts app with the given } ``` @@ -70,65 +70,32 @@ use fs_extra::dir::CopyOptions; use std::env; fn main() -> Result<()> { - println!("cargo:rerun-if-changed=resources/textures/*"); - println!("cargo:rerun-if-changed=resources/shaders/*"); + println!("cargo:rerun-if-changed=resources/textures/*"); + println!("cargo:rerun-if-changed=resources/shaders/*"); - let out_dir = env::var("OUT_DIR")?; - let mut copy_options = CopyOptions::new(); - copy_options.overwrite = true; - let mut paths_to_copy = Vec::new(); - paths_to_copy.push("resources/textures/"); - paths_to_copy.push("resources/shaders/"); + let out_dir = env::var("OUT_DIR")?; + let mut copy_options = CopyOptions::new(); + copy_options.overwrite = true; + let mut paths_to_copy = Vec::new(); + paths_to_copy.push("resources/textures/"); + paths_to_copy.push("resources/shaders/"); - copy_items(&paths_to_copy, out_dir, ©_options)?; + copy_items(&paths_to_copy, out_dir, ©_options)?; - Ok(()) + Ok(()) } ``` ## Todo (not ordered by importance) -- [x] Fixed update steps (60 updates per second right now) -- [ ] Rendering - - [x] 2D - - [x] Textures - - [ ] 3D - - [ ] Meshes - - [ ] Normal maps - - [x] Texture Atlas - - [x] Shaders - - [ ] Materials - - [ ] Text - - [ ] Particles - - [ ] Animations - - [ ] Lighting - - [ ] UI - - [ ] Buttons - - [ ] Input - - [ ] Post-processing - - [ ] Multiple render passes - - [ ] Individual effects -- [ ] Sound -- [ ] Input - - [ ] Universal input manager - - [x] Keyboard - - [x] Mouse - - [ ] Gamepad -- [x] ECS - - [x] Components - - [x] Entities - - [x] Archetypes - - [x] World -- [ ] Scene - - [ ] loading - - [ ] saving -- [ ] Physics +- [ ] (out of the box) Rendering - [ ] 2D + - [x] texture rendering + - [x] world rendering - [ ] 3D -- [x] Plugin System (at least right now) - - [x] Adding custom game state struct - - [x] Adding custom renderer + - [ ] Particles + - [ ] Post-processing - [ ] Math - [x] Vectors - [x] Matrices @@ -137,14 +104,18 @@ fn main() -> Result<()> { - [ ] Bezier curves - [x] Easing functions - [ ] Noise - - [ ] White - - [ ] Perlin - - [ ] Simplex - - [ ] Worley - - [ ] Fractal - - [ ] Cellular - - [ ] Gradient - - [ ] Value - - [ ] Cubic - [ ] Ray-casting - - [ ] Pathfinding \ No newline at end of file + - [ ] Pathfinding +- [ ] ECS + - [x] Components + - [x] Entities + - [x] Archetypes + - [ ] World + - [x] general management + - [ ] saving + - [ ] loading +- [ ] Input +- [ ] Sound +- [ ] Physics +- [x] Basic Plugin System + - [x] Custom Renderer \ No newline at end of file