Giter VIP home page Giter VIP logo

tower-defence's People

Contributors

kendallroth avatar

Watchers

 avatar  avatar

tower-defence's Issues

Add game stats

Add an overall game stats manager to track stats accumulated throughout the game.

Live stats

  • Health/lives
  • Currency

Total stats (cached)

  • Enemies destroyed
  • Waves survived
  • Currency earned?
  • Damage dealt?

Improve wave configuration

Wave configuration should be improved in a variety of ways, specifically to allow more variety within a wave. Waves should be able to contain multiple enemies spawned in multiple sections (either sequentially or randomly).

  • Waves can contain multiple sections
  • Section can contain multiple enemy types
  • Sections can spawn the enemies sequentially or randomly (need to implement random)
  • Configurable delays between waves, sections, and enemies
class WaveManager {
  waves: IWave[];
}

interface IWave {
  int number;
  IWaveSection[] sections;
}

interface IWaveSection {
  float sectionDelay;
  IWaveSectionEnemy[] enemies;
  IWaveSectionOrder order;
}

interface IWaveSectionEnemy {
  Enemy enemyPrefab;
  int count;
  float spawnDelay;
}

enum IWaveSectionOrder {
  RANDOM,
  SEQUENTIAL
}

Improve enemy animation

Enemies should utilize several animations over their lifecycle:

  • Create custom component to handle animation
  • Scale up while spawning (from nothing)
  • Transform/rotate enemies slightly to simulate motion
  • Scale down when exiting at destination
    • Maybe base this on distance to exit waypoint?

Enemies should have their exit animation sometime before being destroyed at the exit, in order to give a satisfactory animation time. However, a life should not be substracted until they have fully "reached" the destination (inside tower).

Support multiple tile selection

Decide if there are any reasons to allow selecting multiple tiles in-game (ie. for operations). If so, implement a similar system to the map editor.

Spawning manager

Handle spawning enemies over multiple basic waves.

  • Manage enemy wave configuration
  • Spawn enemies in waves
  • Handle basic wave flow (starting, ending, etc)

Add path editor

Create a simple path editor (toggleable tool) that can be used to create a path. This would replace the current one-by-one approach used to manually set tile pathing values (from editor). The tool would also be able to support only creating a valid path and setting valid start/end pieces.

This could also allow the pathing to be updated automatically after changes without recalculating the entire path over (wither certain limitations).

Camera movement

Implement basic camera movement (can be extended later).

  • Movement with WASD/arrow
  • Edge panning (optional)
  • Scroll (within range)
  • Drag with middle mouse

Spawn enemies from portals

Spawn enemies from portals (ideally with simple texture behind them/occluding them). Could have brief warmup period when spawning (before shutting down again), possibly coupled with some other indicator to signify a warning period?

Function for direction from world angle

Currently the prop placement tool uses a slightly dangerous method of determining the direction to the next path piece. Since it is based off the next waypoint, the underlying function does not know that the target tile is actually a neighbour (causes issues if not). Instead, a Vector3 or Coordinate extension could be created to determine the most appropriate direction based on the direction between points (from world angle, where HexDirection.N is 0 degrees).

Enemy behaviour

Implement basic enemy movement along path, utilizing the "linked" waypoint list. Enemies should be destroyed when reaching the end of the path, and eventually will need to affect lives.

  • Pathfinding
  • Handle end of path
  • Animation in/out (rough)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.