-
Notifications
You must be signed in to change notification settings - Fork 9
Powerups
Powerups create a more fun and engaging experience by granting the user enhanced abilities, each with a unique duration and effect. Powerups are commonly found in random locations within the map and can be picked up with the 'F' key.
Powerup assets were sourced from a free asset pack, and were selected as they are aesthetic and it is simple and easy to create more. Additionally, the 16x16 pixel layout fits the overall Game Design objective.
When a player approaches a powerup and presses the F
key, the following effects will apply:
Health Powerup:
Restores the player to full health.
Movement Powerup:
Increases the player's default movement speed by 66% for 1.5 seconds.
Extra Life Powerup:
Increases the number of players' lives by 1, unless the number of players lives is already 4 (max amount allowed).
- Initialise a new
PowerupComponent
- Specify the type of powerup and PhysicsLayer.
- Apply the powerup to the entity.
Example:
PowerupComponent powerup = new PowerupComponent(PowerupType._POWERUP_TYPE_, PhysicsLayer._PHYSICS_LAYER_);
Entity entity = new Entity(); // typically the player entity
powerup.applyEffect(entity);
Powerups can be treated as regular Entities and therefore have Components as well as a scale and position within the game world (See Entities for more details). All created Powerups are automatically registered with the EntityService
and can be found in an array with the following call:
ServiceLocator.getEntityService().getEntitiesByComponent(PowerupComponent.class);
private void spawnPowerups() {
// Choose two random locations within the game map
GridPoint2 minPos = new GridPoint2(0, 0);
GridPoint2 maxPos = terrain.getMapBounds(0).sub(2, 2);
GridPoint2 healthPosition = RandomUtils.random(minPos, maxPos);
GridPoint2 speedPosition = RandomUtils.random(minPos, maxPos);
// Create a health and speed powerup
Entity healthPowerup = PowerupFactory.createHealthPowerup();
Entity speedPowerup = PowerupFactory.createSpeedPowerup();
// Spawn the created powerups at the two random locations
spawnEntityAt(healthPowerup, healthPosition, true, false);
spawnEntityAt(speedPowerup, speedPosition, true, false);
}
Initially, powerups were applied on collision with the player, however, to allow for a more engaging experience with other teams' future implementations such as mini-games or enemy death drops, an InteractableComponent
was created in collaboration with Team 5 to allow a powerup applyEffect()
to be run as the player presses a key (F).
This integration is important as in the future, it will provide the player more visual feedback on successfully completing a mini-game or killing an enemy - as previously the powerup would be instantly picked up and likely unnoticed by the player.
Powerups have been tested in accordance with the Powerups Testing Plan
To enlarge: Right click -> Open image in new tab
Escape Earth Game
Interaction Controller and Interactable Components
Game and Entity Configuration Files
Loading Game Configuration Files