Your life depends on slimes, and so does your death...
slimedown-edit-290924.mp4
Slimedown shooter is a top down 2D shooter game where the main objective is to survive the endless waves of slimes that spawn in and collect the slime particles they leave behind to replenish your health. The catch is that you also consume health when shooting them, getting attacked by slimes, or when charging them (health has become a resource).
- Boxhead is a 2.5D shooter game where you need to survive waves of zombies and devils
- Noita is a 2D rouguelite where you kill yourself easily interacting with the world and where every pixel is simulated, leading to a very chaotic and dynamic environment
On an island in the sky you gotta survive the endless slime hordes that come at you for as long as possible. You survive the waves of slimes by shooting and charging at them, and when they die they turn into slime balls that you can use to replenish your health. Deciding how and when to attack and avoid the slimes must be done tactically to ensure survival.
The game is developed to be released on windows and linux (Ubuntu 20.04) PC
- Unity 2022.3.9f1
- Code Rider for writing C# code
- GIMP for editing sprites
Singleplayer, shooter, casual
Without heavy or complicated ideas, and intuitive-to-grasp mechanics, this game is marketed to at least casual game players who are up for shooting slimes and dodging their attacks to survive as long as possible and get a high score.
Simple procedure on how to navigate in your game
Use WASD to move.
click in the direction you want to shoot slimes at
when slimes die they leave behind a slime ball. walk up to the slime ball to
collect it and recharge your health. Shooting at slime balls destroys them.
Press space to launch a charge attack in the direction of the mouse pointer
(does 2 damage to slimes, they have 4 health each)
shooting and charging slimes cost health, so you can't just spam the attacks.
After clearing 1 wave of slimes, a new wave will spawn. Each wave has 1 more slime than the previous theres a time limit for each level (above the wave number) - when you run out of time you will start taking damage every 3 seconds. You lose when you run out of health.
- Movement and slime ball collection
Use WASD to move around in the island, and the player picks up a slime ball when they come into contact with it. - Shooting mechanic
Click to fire a blaster shot at slimes, at the cost of 2 health. If it hits a slime they take damage. If a slime gets shot and its health goes down to 0 then the the slime degenerates into a slime ball. If the blaster shot hits a slime ball then it is destroyed. - Charging mechanic
Press space to launch a charge attack in the direction of the mouse pointer. If you hit a slime moving towards you while charging you deal damage to the slime You can also charge through caps between points in the island, and won't fall if you're not on the island for as long as the charge attack is still playing. - Slime movement and attack
Slimes can hop from place to place towards the player with a timed cooldown between hops, and also do a longer-range charge attack towards the player when it gets close enough to the player. If the slime hits the player during regular movement or during the charge attack, then the slime takes damage instead of the player - Falling from the island
If the player is outside the boundaries of the island, then they can fall and die. This can happen when the player charges out of the island, walks past the edges of the island or gets pushed off the edge by slimes.
Pixel art for everything - UI, game world and sprites. Sprites and game world should be bright, colorful and crisp.
Music should be retro and have action vibes
Sound effects should be retro and synthesized rather than realistic
An in-game overlay will show the score, health, wave number and time left for the current attack wave.
- Keyboard:
WASD
: movementSpace
: charge in direction of cursor screen positionLeft Mouse Click
: fire a blaster shot
- create game world tile map
- create collider tile map with house
- design, create, enemy prefab and behavior
- enemy slime animator with idle, bouncing, charging clips
- slime enemy has internal health system (4 hp) and can take and deal damage from player
- add idle, moving, charge animation to player. UI shows character health and score, updated in real time
- create 2D canvas with health and score and wave number and timer
- created health scriptable object that is shared between UI, player, and enemy scripts
- slimes spawn in waves and each wave starts after you clear the last one
- basic combat system, player can shoot and charge attack, slimes can charge attack, combat costs health (as in launching the attack drains your health also)
- movement, charge attack, aim and shoot all use InputSystem
- use scriptable object game architecture for communicating health, score changes, and when enemies are killed
- create a timer where player health wil be drained after the timer runs out (resets at the start of each new wave)
- smooth edge transitions for island tiles
- enable URP shader rendering pipeline
- make slime balls shine in and out using URP shader
- Show when damage is taken by player (sprite turns red)
- show health bar of player (URP shader turns x% of player green from the top)
- add in game crosshair, hide default mouse pointer when in-game
- show charge cooldown on crosshair
- refactor in-game HUD overlay with UIDocument
- add a pause menu w/ main menu button
- add slime animation to game loading screen, make game loading async
- debug wave spawning bug
- implement game restart functionality
- make player fall off the map when he's past the island boundaries (except when charging)
- debug charge attack (only inflict damage to slime if velocities are opposite or displacement vector aligns with player velocity vector)
- enemy death counting refactor (use GameState to track alive slimes)
- parallax clouds effect tied to time and movement
- have camera detect from player after they drop far enough
- use AI navigation for slimes
- create license file for repo
- add restart button in pause menu
- (bugfix) stop player movement being carried over on restart
- add bomb slime enemy type
- Add URP shader for charge attack
- Make the main menu look good + more features
- Add windowed mode, full screen mode
- Exit game option
- master and music audio sliders
- Add instructions page
- Add initial instructions overlay
- have slime ball shine timings be relative to time of slime ball degeneration
- Create a nice starter menu screen
- refactor game over menu using UIDocument
- dynamic tile map rules-based generation
- day / night cycle
- more weapon types
- make slimes be able to fall off the map too
- Cozy farms asset usages:
- tile map:
- dirt, water, and islands were taken from the cozy farms global sprite sheet
- all variants of flowers were from cozy farm tiles folder
- house in middle of map is from cozy farms buildings sprite sheet
- slime sprites were taken from cozy farm enemies (green slime folder)
- tile map:
- Player sprite are from pixel-adventure-1, main characters / virtual guy sprite sheet pixel adventure pack
- Sound effect when blaster shot is fired is from
shapeforms-audio-effects/Sci Fi Weapons Cyberpunk Arsenal Preview/AUDIO/EXPLDsgn_Implode_15.wav
Shapeforms Audio Effects Page - Parallax pixel art clouds background is from Free Sky Backgrounds
- Background music is Chiptronical by Patrick De Arteaga