diff --git a/TODO.md b/TODO.md new file mode 100644 index 0000000..3be4e67 --- /dev/null +++ b/TODO.md @@ -0,0 +1,133 @@ +## Game & Story + - Landmarks to determine speed? + - How to keep player in system bounds, what to do if they fly far away + - Max chase distance, physics-enforced area? + - (Soft limits, you shouldn't go too far unless you decide to.) + - How to handle death -- save scum should not be the norm (hollow knight?) + - Jumping between systems -- how? + - Locks and keys -> variation? + - Active abilities + - Hard to get outfits you've lost (hollow knight's charms do this very well) + - Missions: hunt scary targets + - The world exists outside of the system you're in + - (large-scale dynamics) + - How does information travel? + - Communication timer: destroy a ship fast, nobody needs to know + - Do we want to pay crew? + - How should ship capturing work? + - Enemy motivations + - Where does money come from? + - Changing map paths? How? + + + +## Features + - Music (user-configurable) + - Sound effects + - Debris (ship death, destructible, physics) + - Orbiting debris (asteroids) + - Collectibles (flotsam) + - UI + - Landable planets + - Back arrow: reverse thruster or reverse ship + - Loading screen, incremental texturearray loading + - Indicators (planet names, enemy ship stats) + - Multiplayer? (how does that fit into gameplay?) + - On-screen text + - Controller input & key bindings + - Save games + - Date system -> planet position + - AI fleets + - More ship behaviors + - Jump between systems + - Government color, ship tint + - Different kinds of ship behaviors: + - who to target + - how to target them + - where to go + - etc, extra flags + + +## Faction interaction + - Targeting overrides hitscan rules (only for player) + - Static and dynamic faction relationships (change with player actions/game events?) + - Dynamic relationships only for player? Other governments may be hard-coded + - Opinion towards player -> how to handle well? + - Player faction is special + - Actions against one faction affect another + + +## Internal + - Logging/warning system + - Frame timings (compute/render/physics/etc) + - Elegantly handle lost focus + - Pause game + - Better player controller? (only one shipbehavior needs inputs) + - Clear all `// TODO:` comments littered in the source + - Config file + +## Content + - Angled engines + - Angled guns + - Turn engine flares + - Reverse engine & flares + - Better ship colliders (need a tool or an algorithm) + - Better projectile colliders (box/ball/etc -- shared syntax) + - Turrets + - Weapons with ammunition + - Enable/disable weapons + - Cargo space + - List of ES content--which to implement? + - Ship stats + - Weapon stats + - Display name != internal key + - Conversations + - Trade + - Missions + +## Camera + - Shake/wobble on heavy hits? + - Camera effects on low health? + - (or are ship particles better?) + - Lookahead -> position or direction? + - Damping? + - Important objects affect camera + - + +## Visuals + - Particles + - Dynamic lighting (planets & ships) + - Motion blur + - Zoom parallax (?) + - Background haze + - Nova dust parallax + + +## Write and Document + - Parallax + - Starfield & tiling + - How the game is drawn + - transforming game coordinates to screen + - how angles work + - Computation flow + - Physics pipeline + - Outfit pipeline + - Collision detection + - Ship AI + - Handles + - Content specification and pipeline + + +## Ideas + - Improvements over ES + - Better visuals + - More interesting combat + - More interesting missions + - Big fleets shouldn't be broken (should the player even have a fleet?) + - ES Enemies don't have a real motivation. + - ES story is a bit basic + - Death matters - save-scumming shouldn't be normal + - More interesting trading? + - Death penalty + - Find your wreckage when you die (dark souls/HK) + - Lose some outfits, lose ship? Real risk for going out! (HK does this well) \ No newline at end of file diff --git a/src/render/consts.rs b/src/render/consts.rs index 9ae302f..8f90f53 100644 --- a/src/render/consts.rs +++ b/src/render/consts.rs @@ -2,7 +2,7 @@ use crate::consts; use cgmath::Matrix4; // We can draw at most this many sprites on the screen. -// TODO: compile-time option +// TODO: compile-time option or config file pub const SPRITE_INSTANCE_LIMIT: u64 = 500; // Must be small enough to fit in an i32 diff --git a/src/render/vertexbuffer/vertexbuffer.rs b/src/render/vertexbuffer/vertexbuffer.rs index 59fe8a5..d1d6fc5 100644 --- a/src/render/vertexbuffer/vertexbuffer.rs +++ b/src/render/vertexbuffer/vertexbuffer.rs @@ -81,7 +81,7 @@ impl VertexBuffer { /// Set the buffers defined here as buffers in a RenderPass. pub fn set_in_pass<'a, 'b: 'a>(&'b self, render_pass: &'a mut wgpu::RenderPass<'b>) { - // TODO: why do these lifetimes work? Write an article! + // TODO: why do these lifetimes work? let mut v_slot = 0u32; if let Some(vertices) = &self.vertices { render_pass.set_vertex_buffer(v_slot, vertices.slice(..));