Galactica/TODO.md

239 lines
6.7 KiB
Markdown

# Specific projects
## Currently working on:
- first: remove object array
- first: sticky particles
- clickable buttons
- planet outfitter
## Small jobs
- 🌟 clean up and document short sprite sections
- 🌟 Better planet desc formatting
- 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
- Fix effect interaction with sprite sections
## 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)
- Better error when sprite is missing from atlas
## 🌟 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
- Correct depth order
- Land from farther away
- Prevent collisions on unlanding
- UI: text arranger
- loading screen, menus
- Indicators (planet names, enemy ship stats)
- Start documenting
- Check for handle leaks
- Don't allocate each frame
- Sound system
- Ship death debris
- Sprite reels
- random start frame
- ship leaks
- Ship death damage and force events
- Gun fire effect
- Sprite color variation
- Multi-particle effects
- Better loading
- incremental?
- Higher texture limit (16 x 8096 x 8096 isn't enough)
- GPU limits? (texture size, texture number, particle/sprite limits)
- Particles when a ship is damaged (events)
- Sticky radar
- 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?)
- 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
- 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
- How packer and optimizations work, and why
- How big should sprite resolutions be? How about frame rate?
- Naming: atlas, sprite, image, frame, texture
- Outfits may not change unless you've landed. They might not change ever for CC ships!
- All angle adjustments happen in content & shaders
- Reserved texture: index zero
## 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.
- 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)
- Damage to ship subsystems
- Soft and highly armored ship points
- Repair your own ship