mission change + demo
This commit is contained in:
parent
464ca751a8
commit
32f615f5a9
36
README.md
36
README.md
@ -2,6 +2,8 @@
|
||||
|
||||
_The Watchers Lament_
|
||||
|
||||
[latest demo](https://youtu.be/x9l2zzIlhNE)
|
||||
|
||||
# Game description and functionality
|
||||
|
||||
Bastion is a Tower Defense type of game.
|
||||
@ -58,6 +60,7 @@ The Mission screen has the following content:
|
||||
## Game screen
|
||||
|
||||
Every game screen (Buy or Combat phase) has the following content:
|
||||
|
||||
- Game map
|
||||
- Options button - Opens the Options panel
|
||||
- Sidebar - Content changes based on the phase
|
||||
@ -70,6 +73,7 @@ Example:
|
||||
|
||||
The map is covering the majority of the screen (80%). There is no zooming or panning. Depending on the map aspect ratio, the map may be cropped on the sides. The map is a grid where the player can place towers and through which the creeps will travel.
|
||||
There are two types of ground on the map:
|
||||
|
||||
- Path - The path where the creeps will travel
|
||||
- Buildable - The ground where the player can place towers
|
||||
- Non-buildable - The ground where the player can not place towers
|
||||
@ -117,6 +121,7 @@ _(razmisljam o tome da se gemovi na pocetku buy phasea moraju kupit i/ili mogu s
|
||||
_(takodjer razmisljam da ima market tower koji se moze buildat)_
|
||||
|
||||
## Game screen - Combat phase
|
||||
|
||||
During this phase the player has no input (excep the Options menu) and the game is played 'automatically'.
|
||||
At specific points in time the creeps will spawn at the entrance of the map and start moving towards the exit traversing the preset path.
|
||||
If a tower has an ability to attack a creep it will do so automatically. Type of attack depends on the tower type and the Gems empowering it.
|
||||
@ -125,6 +130,7 @@ Player may invoke the Options menu at any time during the combat phase. This wil
|
||||
Combat phase will end when all creeps are dead / passed the exit or the player's HP reaches 0.
|
||||
|
||||
### Sidebar - Combat phase
|
||||
|
||||
In the combat phase the sidebar displays same information but it is disabled.
|
||||
|
||||
## Towers
|
||||
@ -137,20 +143,25 @@ Towers on their own can not be upgraded, only the Gems that are empowering them
|
||||
Not all towers can be empowered (via Gems) and they would serve more for utility purposes instead of attacking creeps.
|
||||
|
||||
### Tower effects
|
||||
|
||||
There are several possible tower effects which describe the general behavior of the tower:
|
||||
|
||||
#### Shooter
|
||||
|
||||
This is standard effect available to each tower.
|
||||
It enables the tower to attack the creeps by shooting projectile(s) at them.
|
||||
|
||||
#### Trap
|
||||
|
||||
The tower places a trap on the ground which will deal damage to the creeps that pass over it.
|
||||
The trap is placed in the range of the tower randomly
|
||||
|
||||
#### Necromancer tower
|
||||
|
||||
This tower spawns creeps which will attack the other creeps. The spawned creeps will have a limited lifespan and will die after a certain amount of time. When this anti-creep meets another creep then one of them will 'die' instantly depending on the their health.
|
||||
|
||||
### Shooting Tower
|
||||
|
||||
Basic tower that shoots 1 projectile at the closest creep.
|
||||
|
||||
- Damage: 1
|
||||
@ -167,7 +178,9 @@ Basic tower that shoots 1 projectile at the closest creep.
|
||||
### Chain tower [WIP]
|
||||
|
||||
### Damage types
|
||||
|
||||
We have several types of damage within the game:
|
||||
|
||||
- Physical (default damage type)
|
||||
- Divine
|
||||
- Fire
|
||||
@ -184,6 +197,7 @@ Creeps may go through another creep if they are faster (they may overlap).
|
||||
Creeps may have special attributes.
|
||||
|
||||
### Creep resistance and weaknesses
|
||||
|
||||
Creep may be resistant or weak to a specific type of damage.
|
||||
For each creep there will be a percentage of damage reduction/increase for each damage type.
|
||||
|
||||
@ -218,6 +232,7 @@ Requires tower to be empowered with a divinity gem to deal damage, otherwise imm
|
||||
- FrostFire: 100%
|
||||
|
||||
## Creep waves
|
||||
|
||||
Each round may have multiple waves of creeps.
|
||||
Each wave may have different types of creeps and different amounts of creeps.
|
||||
A new wave may start at any time, even if the previous wave is not finished.
|
||||
@ -234,6 +249,7 @@ The player starts the game with 200 Gold and can not go below 0 Gold.
|
||||
|
||||
Gems are not a number resource like Gold is, rather you earn one of the possible Gems upon completing a round. They are placed in your Gem bag which is accessible via the sidebar.
|
||||
Gem has the following properties:
|
||||
|
||||
- Name
|
||||
- Color (used for visual representation)
|
||||
- Description
|
||||
@ -241,9 +257,10 @@ Gem has the following properties:
|
||||
- Game effects (used for empowering towers)
|
||||
- Level
|
||||
|
||||
|
||||
#### Possible gem effects
|
||||
|
||||
Games can only be sloted in towers. When slotted the gem may provide following effects for that tower:
|
||||
|
||||
- Increase damage
|
||||
- Change the damage type
|
||||
- Increase attack speed
|
||||
@ -252,10 +269,12 @@ Games can only be sloted in towers. When slotted the gem may provide following e
|
||||
- Increase number of projectiles
|
||||
|
||||
#### Gem level
|
||||
|
||||
Gem level is a number from 1 to 5. Each level of a Gem enhances the effect of the Gem. The higher the level the more powerful the Gem is.
|
||||
The actual effect of the level depends on the Gem type.
|
||||
|
||||
#### Gem types
|
||||
|
||||
Currently there are 6 Gems:
|
||||
|
||||
1. Fire Gem (#FF0000) (fire)
|
||||
@ -294,6 +313,7 @@ If the player loses the game, the score is always 0.
|
||||
# Data structures and algorithms
|
||||
|
||||
## Mission definition
|
||||
|
||||
- Name
|
||||
- Description
|
||||
- Map image
|
||||
@ -302,20 +322,24 @@ If the player loses the game, the score is always 0.
|
||||
- Array of Gem definitions (random type given to player at mission start)
|
||||
|
||||
### Game map definition
|
||||
|
||||
- Grid size (width, height)
|
||||
- 2d array of terrain types (Path, Buildable, Non-buildable)
|
||||
- Array of paths (array of rows and column which represent the path, first cell is the entrance, last cell is the exit)
|
||||
|
||||
### Mission round definition
|
||||
|
||||
- Array of waves
|
||||
- Array of Gem types (which the player can get at the end of the round - only 1 picked out of 3)
|
||||
|
||||
### Wave definition
|
||||
|
||||
- Tick when first creep is generated (calculated once all creeps of the previous wave are generated)
|
||||
- Ticks between creeps
|
||||
- Array of creep definitions (identified by creep definition name) together with number of creeps per type
|
||||
|
||||
## Mission instance
|
||||
|
||||
- Mission definition
|
||||
- Current round index
|
||||
- Array of waves
|
||||
@ -327,16 +351,19 @@ If the player loses the game, the score is always 0.
|
||||
- Current tick
|
||||
|
||||
## Game map instance
|
||||
|
||||
- Game map definition
|
||||
- Array of tower instances
|
||||
- Array of creep instances
|
||||
- Array of fired bullets
|
||||
|
||||
## Wave instance
|
||||
|
||||
- Wave definition
|
||||
- Array of creeps left to be generated (once the array is empty the wave is finished)
|
||||
|
||||
## Tower definition
|
||||
|
||||
- Name
|
||||
- Cost (Gold amount)
|
||||
- Gem slot count (0 if not empowerable)
|
||||
@ -348,8 +375,8 @@ If the player loses the game, the score is always 0.
|
||||
- Array of initial tower effects (enumeration)
|
||||
- Array of allowed Gem types (enumeration)
|
||||
|
||||
|
||||
## Tower instance
|
||||
|
||||
- Tower definition
|
||||
- Grid row and column (position on the map)
|
||||
- Gems (array of Gems)
|
||||
@ -360,6 +387,7 @@ If the player loses the game, the score is always 0.
|
||||
- Array of tower effects (enumeration)
|
||||
|
||||
## Trap instance
|
||||
|
||||
- Position (x, y in Grid units)
|
||||
- Damage type
|
||||
- Damage amount
|
||||
@ -368,6 +396,7 @@ If the player loses the game, the score is always 0.
|
||||
- Image (sprite)
|
||||
|
||||
## Bullet instance
|
||||
|
||||
- Current position (x, y in Grid units)
|
||||
- Target position (x, y in Grid units)
|
||||
- Damage type
|
||||
@ -375,6 +404,7 @@ If the player loses the game, the score is always 0.
|
||||
- Image (sprite)
|
||||
|
||||
## Creep definition
|
||||
|
||||
- Name
|
||||
- Maximum HP
|
||||
- Speed
|
||||
@ -383,6 +413,7 @@ If the player loses the game, the score is always 0.
|
||||
- Special attributes (hardcoded attribute types)
|
||||
|
||||
## Creep instance
|
||||
|
||||
- Creep definition
|
||||
- Current position (x, y in Grid units)
|
||||
- Current HP (also represents damage dealt to player if reaches exit and damage dealt to other creeps if it is an anti-creep)
|
||||
@ -391,6 +422,7 @@ If the player loses the game, the score is always 0.
|
||||
- Anti-creep damage type (if anti-creep)
|
||||
|
||||
# Future work
|
||||
|
||||
- Add leaderboard functionality to [Mission screen]
|
||||
- Ability to restart at the current round of the mission [Options panel]
|
||||
- When in combat phase the 'Go' button should be replaced with 'Speed up' toggle button [Sidebar - Combat phase]
|
||||
|
@ -3,29 +3,29 @@
|
||||
"description": "This is the first mission",
|
||||
"gameMap": {
|
||||
"rows": 15,
|
||||
"columns": 15,
|
||||
"columns": 20,
|
||||
"cells": [
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
|
||||
],
|
||||
"paths": [
|
||||
[
|
||||
|
BIN
public/maps/mission_01.png
Normal file
BIN
public/maps/mission_01.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.5 MiB |
Loading…
x
Reference in New Issue
Block a user