Skip to content

Latest commit

 

History

History
138 lines (138 loc) · 6 KB

ROADMAP.md

File metadata and controls

138 lines (138 loc) · 6 KB

ROAD MAP

  • Momentum Based Momement
  • Basic obstacles
  • Single Tile Targeting
  • First Weapon System: Laser
  • Multi Tile Targeting
  • Basic UI
    • Display momentum and impulse levels
    • Display weapon information
    • Display remaining HP
  • QoL Maintenance
    • Allow the player to "set and forget" momentum level
    • Allow the player to cancel targeting entirely and restart
    • Implement a RenderOrder
  • Enemy NPC: Destroyable
    • Implement death function
    • Implement weapon damage
    • Implement a turn summary variable
  • Improve code
    • Provide adequate documentation
    • Decouple what can be decoupled
    • Move things out of engine.py
    • Create component managers
    • Consider splitting the Mech class into a Propulsion class and a Chassis class (or something else that handles defense, HP, etc)
      • Move movement code to the Propulsion class
      • Move damage code to the Chassis class
    • Create a Location component
    • Create a look function
  • Event Queue
    • Create an entity manager which adds entities to the queue
    • Update death function to remove from the queue
    • Weapons and movement are different.
      • Movement uses the EQ, and is based on speed.
      • Weapons simply have a cooldown, and ticks down at the end of the turn
  • Priority Queue
  • Second Weapon System: Ballistics
    • Code logic to handle an entity with multiple weapons
    • Allow the player to target a tile multiple times
    • Handle projectiles
  • Refactor ballistic code
    • All weapons should trigger Overseer entities that control the rate of fire during the next move phase.
  • Improve code II
    • Rename Mech class to Propulsion class
    • Create global_variables.py to store some constants
    • Rendering component
    • The "weapon component" of the Entity is really just a list of Weapon Components. Fix this.
    • Cooldown is tied to rate_of_fire
  • Pathing Improvements
    • Allow the player to set the speed at which the entity moves
    • Clean up code
  • Collision detection
    • Entities having their movement blocked
    • Projectiles are blocked
    • Projectiles continue indefinitely until blocked or outside map
  • Damage Model
    • Entities take damage from projectiles
    • Entities inherit some momentum from projectiles
  • Enemy NPC: Unintelligent movement
    • Make enemy entities spend their action points on moving.
    • Make enemy entities attempt to move in a square.
      • Move in one direction, then slow down to a stop, then change direction.
  • Terrain
    • Consider using NumPy arrays to store map information
    • Create terrain that blocks movement
    • Create terrain that slows movement
    • Create terrain that makes turning difficult?
  • Revisit turn structure
    • Consider using the Run & Gun Action/Planning turn structure
    • Decide where radar detection should happen
    • Decide where staggering should happen
    • Decide where damage should happen
    • Add a cleanup phase
  • [-] Revisit momentum logic
    • Define how staggering, staggering badly and falling down will work
    • Generalize the logic to allow for impulses greater than 1
  • Revisit UI
    • Consider changing fonts
    • Implement a more cohesive UI
    • Cursor can't be seen in the fog of war
  • QoL Maintenance II
    • Allow the player to choose a tile outside of their legal tiles to move to, and handle pathing to it over several turns.
    • Visually indicate to the user that a tile has been targeted multiple times (display a numeral on it)
    • Improve SHOW_WEAPONS_MENU
      • Have names in color. RED: can't use, WHITE: usable, GREEN: online.
      • Allow to deactivate weapons.
      • Include the state of the weapon in its name.
      • Include cooldown and descriptiono of weapons.
    • Show more pathing information to player
      • Decouple legal tiles calculation by moving the function to global variables.
      • Preview second order paths
      • Draw the "real" path to final destination
  • Revisit projectile code
    • Optimize code
    • Allow projectiles to move indefinitely
    • Highlight the path projectiles are taking
    • Add variety to weapons by changing their properties when dealing with long distances
      • Lasers: Damage loss over distance
      • Ballistics: Accuracy loss over distance
  • Enemy NPC: Firing logic
    • Ensure the player is able to die correctly
    • Ensure the NPC properly targets the player
  • Momentum based weapons
    • Weapons impart momentum on user and target
  • Radar Based Detection
  • Third Weapon System: Missiles
    • Speed may change during flight
    • Must target the ground
  • Fourth Weapon System: Artillery
  • Enemy NPC: Moving Logic
    • Having the AI move will require it lock in its momentum before starting, so that it's speed is constant
  • Fifth Weapon System: Shock Combo
  • Sixth Weapon System: Denial of Area
    • May be fire, acid, EMP, or some other element
    • Is less effective against fast moving targets
  • Seventh Weapon System: Auxillary Systems
    • Speed boosting system
    • Speed halting system
    • Smoke screen
    • Active camouflage
  • Radar Based Stealth
  • Animation
  • City Generation
  • Objectives
  • Mission Hub
  • Experience Gain
  • Loot
  • Lore
  • Player controlled entities
    • PRE_MOVE phase: set all the impulses
    • MOVE phase: Choose the tile the entity will end on. AI will move it there.
    • POST_MOVE phase: move the entities to their target according to their speed, simultaneously and according to the path
    • COMBAT phase: choose and fire weapons for each entity
  • Pilot Skills
    • Use a system like FFTA
  • Improve Code III
    • User input component
    • Ensure all player "actions" use the results variable to track events
    • Consider not using the Entity class for the cursor