Added TODO

master
Mark 2023-12-31 11:19:39 -08:00
parent 0de278cb03
commit b48f5e71df
Signed by: Mark
GPG Key ID: C6D63995FE72FD80
3 changed files with 135 additions and 2 deletions

133
TODO.md Normal file
View File

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

View File

@ -2,7 +2,7 @@ use crate::consts;
use cgmath::Matrix4; use cgmath::Matrix4;
// We can draw at most this many sprites on the screen. // 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; pub const SPRITE_INSTANCE_LIMIT: u64 = 500;
// Must be small enough to fit in an i32 // Must be small enough to fit in an i32

View File

@ -81,7 +81,7 @@ impl VertexBuffer {
/// Set the buffers defined here as buffers in a RenderPass. /// 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>) { 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; let mut v_slot = 0u32;
if let Some(vertices) = &self.vertices { if let Some(vertices) = &self.vertices {
render_pass.set_vertex_buffer(v_slot, vertices.slice(..)); render_pass.set_vertex_buffer(v_slot, vertices.slice(..));