diff --git a/.editorconfig b/.editorconfig index 941e639..182c7ae 100644 --- a/.editorconfig +++ b/.editorconfig @@ -6,4 +6,8 @@ indent_size = 4 end_of_line = lf charset = utf-8 trim_trailing_whitespace = false -insert_final_newline = false \ No newline at end of file +insert_final_newline = false + +[*.md] +indent_style = space +indent_size = 2 \ No newline at end of file diff --git a/TODO.md b/TODO.md index ddf14d0..22c77b3 100644 --- a/TODO.md +++ b/TODO.md @@ -1,7 +1,129 @@ +# Specific projects + +## Currently working on: + - player selection + - planet outfitter + + +## Small jobs +- Procedural suns +- 🌟 Back arrow -> reverse +- No wobble for ai ships & autopilot +- 🌟 User-configurable outfit space types +- 🌟 Sticky radar +- Configurable radar +- 🌟 Ship damage events, unify spawners +- Better landing animation (slow down) +- Land from farther away +- Ship collapse: damage + force events +- Redesign UI elements +- Background haze: 3d perlin? + - nova dust parallax +- Motion blur +- 🌟 Generate outlines and colliders + - Then: outline self in status +- Reverse engines + flares +- Turn flares (physics by location?) +- Angled engines & guns + +## Misc fixes & Optimizations +- 🌟 Better errors when content/asset dirs don't exist +- Clear `// TODO:` comments +- Correct drawing order (player on top, landing ships) +- Faster handles (better than a hashmap?) +- Check for handle leaks +- 🌟 Log/warning system +- Clean up & faster frame timings +- 🌟 Handle lost focus +- User config file +- 🌟 Document content +- 🌟 Clean up content: one ship per file, autodetect +- CLI: pack sprites(?), check content, content location, logs, etc +- Better WGSL preprocessor? +- Projectile performance +- Starfield clusters, shader instead of an array? +- Collider groups for factions? (projectile optimization) + +## 🌟 Player selection +- Planet name, ring, and distance +- Selection UI (around game object) +- Selection UI (radar arrow) +- Selection keys +- Select ships + - Selection UI (HUD) + - attack selected ship, even if friendly + +## 🌟 Planet outfitter +- UI, show ship on land +- Money +- Display name != key +- then: non-removable outfits +- then: cargo space + - then: collectible flotsam + - then: mass from cargo and outfits + - then: space conversion + - then: heat + energy stats + - then: damage type (heat, energy, disrupt, etc) + - then: debuffs +- then: assign guns to points +- then: guns with consumable ammunition + - then: enable/disable weapons + + +## Ship Spawning +- requires: Basic ship AI (disable collision for now?) +- requires: Fleets +- Spawn ships from planets +- Land ships on planets (destroy) +- Start with player on planet, respawn + + +## Debris (requires: flotsam) +- Destroyed ships leave debris +- Destructible & floatingdebris +- Orbiting debris: asteroids +- ES-style asteroid field (how should we do this?) + + +## Camera physics +- lookahead +- damping +- Don't jump when landing/taking off +- wobble / ship thrown when hit? +- UI/effects when damaged? +- Focus important objects + +## Sprite reels +- Sprite reels in content +- Trigger sprite reel during collapse sequence +- Trigger sprite reel when firing (requires: non-removable outfits) +- then: ship tint +- then: frame timing randomness +- then: leaks during collapse (needs particle physics) +- then: passive engine glow, ease in/out +- Sprite color variation + +## Texture loading +- loading screen & menu +- GPU limits? +- Cache direcory +- How to pack? + +## Particle physics +- Particles should stick to their ships. How? +- Particle compute shader +- Land and unland particles +- Effect on fire gun +- Particle / sprite color variation + +## Sound effects +- Sound effects +- User-configurable music (?, game config or user config?) + + ## Specific Jobs - - Fix angles (point, land) + - Correct depth order - Land from farther away - - Take off - Prevent collisions on unlanding - UI: text arranger - loading screen, menus @@ -27,122 +149,50 @@ - Arbitrary size resource names ----------------------------------- + +---------------------------------------------------- +---------------------------------------------------- + +# Ideas and long-term goals + + +## Features (not soon) +- Multiplayer +- Configure key bindings, controller support +- Save game state +- Dynamic relationships (get angry when attacked) +- Jump between systems + - Story: how? + - Conversations, trade, missions + - Lightweight whole-universe simulation +- Documentation site & front page +- Dynamic lighting (planets & ships) +- Lens flare? +- Active abilities +- Galaxy date system, slowly orbiting planets +- Parallelize frame computations +- Advanced AI: avoid collisions + ## Game & Story - - 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.) - - Enforce: silently teleport to the other end - - 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) - - Back arrow: reverse thruster or reverse ship - - 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, improved ai - - Collision avoidance - - 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 - - Advanced particle physics (must move to cpu. Maybe both?) - - Background simulation (two modes) - -## 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? - - Actions against one faction affect another - - -## Internal - - Logging/warning system - - Only compute timings when necessary - - Elegantly handle lost focus - - Pause game - - Clear all `// TODO:` comments littered in the source - - CLI options (debug, save location, content location, check content) - - Config file and compile options, remove all those consts. - - Better error when run outside of directory - - Documentation site & front page - - Random animation delay/fps? - - Better WGSL preprocessor - - Depth buffer (z-axis when landing!) - - Compute shader for particles - - Better performance for projectiles - -## Content - - Angled engines - - Angled guns - - Turn engine flares - - Turn engine physics? - - Reverse engine & flares - - Better ship colliders (need a tool or an algorithm) - - Turrets - - Weapons with ammunition - - Enable/disable weapons - - Cargo space - - Display name != internal key - - Conversations - - Trade - - Missions - - Procedural suns - - Heat and energy - - Non-removable outfits - - Space-converting outfits - - Damage struct and debuffs - -## 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 - - Dynamic lighting (planets & ships) - - Motion blur - - Zoom parallax (?) - - Background haze - - Nova dust parallax - - Engine flare ease in/out - - Lens flare - - Clustered starfield - - Redesign UI - - Passive engine glow - - Landing atmosphere burn - +- 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.) + - Enforce: silently teleport to the other end +- How to handle death -- save scum should not be the norm (hollow knight?) +- Locks and keys -> variation? +- 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? +- Actions against one faction affect another, dynamic relationships ## Write and Document - Parallax