Update 22/05/2020
So my last post was almost exactly a year ago. I sort of abandoned the project, but recently decided to get back to it.
It took me some time to get the code up and running again, but now that's done, and I've started cleaning up some code and adding new features.
Here is a short video showing the current status of the game. It might not look much different than before, but there are many hours of coding behind very small changes, and fixing some of the architecture!
(Parts of the video are fast-forwarded. The last 40 sec shows the "mega tower".)
The changes since last year are the following:
TOWERS
Each tower is one of the following
classes:
-
AimTower: can aim at a target, and will shoot when target is in range and in sight
-
AimlessTower: shoots only direction, shoots all the time as long as a target is in range
-
MultiDirTower : can not aim, but rotates and shoot in X number of direction as long as there are mobs in range (forgot to put this in the video)
-
BlockTower : not implemented, doesn't aim or shoot, but will be used as a support tower, for example increase range or damage of other tower. TBD.
Any of the above tower classes can have different
bullet types:
-
Normal: shoot straight towards a target, does not curve to follow a mob
-
Follow: follows a target
-
AreaSpawn: not really a bullet, but an effect that can spawn on a cell and affect the mobs passing it. Used for example for giving debuffs to passing mobs.
-
Spread: not implemented yet, but will be a sort of area effect around the tower
-
Chain: not implemented yet, but will be a chain effect that goes from the tower to a target, then to other targets, as a chain...
- Any of the tower classes, with any type of bullet can have a
bullet hit effect:
-
Damage: standard, takes damage of a hit target
-
Debuff: the hit target receives a debuff that affects its properties, only speed reduction is implemented, but it could also affect max health or armor etc.
-
Teleport: not implemented, but would move the target x cells behind
-
TimeDamage: not implemented, but cause damage over time
-
AreaDamage: not implemented, but would cause damage to surrounding mobs of a target (for example explosion)
The towers available in the game are defined in an input file, where I set, for each tower, a tower
class, a
bullet type, a
bullet hit effect, and attribute values (damage, buff duration, range etc.).
The input file is read when the application is started and the different towers are defined. Which tower upgrades to which tower is also defined in the file.
This makes it very flexible for me to make different combinations and create a wide variety of towers with different effects.
UI
The UI is fixed a little:
- A frame shows mobs in current wave, and in next wave.
- A button shows the time until next wave. Can be pressed to send the wave immediately
- A frame shows button such as Menu, Pause, Sound on/off, Display debug info (for me only)
- The top frame is changed (added lives)
- When a tower is selected its range is shown
DEBUFF
- Added a system to handle debuffs on mobs
- This handles applying the debuff, removing it when its duration is over, what happens if two debuffs of the same type is applied etc.
OTHER
- Towers can now be sold/removed
- When a tower is placed on a cell, it will automatically fade in the direction with most cells. The facing direction of the tower can be changed.
TODO:
There are many things left to do:
- Define appropriate mobs and tower attribute for good game play (now speed, damage, life, is a bit random)
- Need better design of mobs, towers and map
- Money interests when a wave is cleared
- Create more tower types and make it more clear for the player what towers can do what
- Much more...
If anyone want to give feedback that would be great. What I am trying figure out right now, is a style for the game. I need a to decide how my towers, mobs and map should look.
Should it more tech style, or fantasy style? A mix? I need a better design, any suggestions are welcome.