# 2D Action Platformer

A 2D Action Platformer Experiment made with ECS/DOTS

This project was created when ECS was just starting to roll out. It was made as an exploration of Unity's ECS.
Even thought it is updated to work with the latest ECS, there were lots of ECS features that were not present at the beginning.
For more info on the project check out the post on [My Personal Blog](https://simeonradivoev.com/blog/post/ecs-2d-action-platformer) copied from Unity Connect

Project was update to work with **Unity 2019.4.34f1 LTS**

[![IMAGE ALT TEXT](https://i.imgur.com/D3xo0gH.png)](http://www.youtube.com/watch?v=8ibcvMOpvmE "ECS 2D Action Platformer")

# Controls
W/A/S/D - movement
G - throw grenade
R - Reload
Tab - Open Inventory
Space - Jump
F - Vault

# Gameplay
Given that this was more of a learning experience and a personal project there isn't much of a gameplay to it. I wanted to make the movement and the overall feel more slow pace and heavy. But looking at it now this might limit the gameplay opportunities since it is in 2D.

# Notes
This repository used [Git LFS](https://git-lfs.github.com/)

This was more of a educational project testing all the latest unity features at the time. This means there isn't much documentation in code, but I did use pretty verbose and self explanatory naming. This combined with the ECS structure should help with readability.

I Also stripped or replaced lots of the assets used that were from the unity asset store with open source ones. There are some left over that are no longer on the asset store so I decided to alter them and leave them in (like robots used from Anima2D)

# Links
* [Blog Post Breakdown](https://simeonradivoev.com/blog/post/ecs-2d-action-platformer)

# Tech Used
* Dependency Injection (Extenject)
* Unity Entity Component System - ECS
* Unity Adressables
* Goal Oriented Actions - GOAP
* 2D Lighting engine
* 2D Platformer Pathfinding
* Unity 2D Inverse Kinematics
* Unity 2D Tilemap
* Unity Cinemachine 2D
* Unity Post-Processing Stack
* 2D Motion Blur

# Main Packages
* 2D IK
* 2D Tilemap Editor
* Addressables
* Cinemachine
* Collections
* Entities
* Input System
* Newtonsoft Json
* Post Processing
* Text Mesh Pro
* Vector Graphics
* Extenject

# Credits

## Graphics
* Simple UI - https://opengameart.org/content/simple-ui
* Sci Fi Platform Tiles - https://opengameart.org/content/sci-fi-platform-tiles
* Guns - https://opengameart.org/content/2d-guns
* Survival Icons - https://opengameart.org/content/free-survival-props-pack
* Crosshairs and Reticles - https://opengameart.org/content/crosshairs-and-reticles
* Particles - https://opengameart.org/content/particle-pack-80-sprites
* Blood - https://opengameart.org/content/animations-blood-hit-and-both-d
* Blood - https://opengameart.org/content/blood-effect-sprite-sheet
* Blood - https://opengameart.org/content/animations-blood-splatter-1
* Shotgun Shell - https://opengameart.org/content/shotgun-0
* Explosions - https://opengameart.org/content/2d-explosion-animations-2-frame-by-frame
* Bug - https://opengameart.org/content/hand-drawn-alien-bug-sprite-sheet
* Dust Particles - https://www.deviantart.com/kerast/art/Dust-particles-on-lens-461101707

## Code
* Propulsion Physics -  https://assetstore.unity.com/packages/tools/physics/propulsion-physics-7092
* Light2D - https://github.com/SSS135/Light2D

## Sounds
* Item Pickup - https://freesound.org/people/LittleRobotSoundFactory/sounds/270393/
* Inventory Open - https://freesound.org/people/LittleRobotSoundFactory/sounds/270392/
* Sword sheath - https://freesound.org/people/apolloaiello/sounds/328158/
* Shotgun Shell - https://freesound.org/people/JohnDelayniKIng/sounds/147261/
* Shotgun Sounds - https://freesound.org/people/lensflare8642/sounds/145209/
* Grenade - https://freesound.org/people/MultiMax2121/sounds/156896/
* Bloody Blade - https://freesound.org/people/Kreastricon62/sounds/323526/
* Nails - https://freesound.org/people/Nomfundo_k/sounds/408545/
* Gun Reloads - https://freesound.org/people/GFL7/sounds/276963/
* Balloon Pop - https://freesound.org/people/carlSablowEdwards/sounds/76801/
* Blood - https://freesound.org/people/JustInvoke/sounds/138480/
* Mud Stops - https://freesound.org/people/Motion_S/sounds/221765/
* Blood And Gore - https://freesound.org/people/Slave2theLight/sounds/157113/
* Bullet Shells - https://freesound.org/people/Anthousai/sounds/337235/
* Ricochets - https://freesound.org/people/cedarstudios/sounds/148840/
* Bullet Impacts - https://freesound.org/people/toxicwafflezz/sounds/150837/
* Assault Rifle - https://freesound.org/people/SuperPhat/sounds/404562/
* Pistol Gunshot - https://freesound.org/people/acidsnowflake/sounds/402789/
* Dirt Footstep - https://freesound.org/people/LittleRobotSoundFactory/sounds/270419/
* Concrete Footsteps - https://freesound.org/people/InspectorJ/sounds/336598/
* Water Footsteps - https://freesound.org/people/LittleRobotSoundFactory/sounds/270423/
* Aerosol Spray - https://freesound.org/people/oddmonolithsound/sounds/334156/
* Jump Steps - https://freesound.org/people/SpliceSound/sounds/170504/

## Fonts
* Manaspace - https://www.dafont.com/manaspace.font

# License
All my code has the Apache 2.0 License. Where I could I added the appropriate license files per folder for external assets.