β οΈ If you just want to try out the game, read both the Overview and Play Instructions sections. The rest of this README contains more technical stuff relating to running and building the source code.
π Overview
Deflectomania!, an Orange Red Yellow Game, is our first game prototype to be submitted as part of GameOff 2022.
Deflectomania! is a couch multiplayer game (up to four players) where you compete to become the last Space Ranger standing.
You have two items in your arsenal, a blazing gun and a force field.
π« Blazing Gun
The blazing gun shoots a limited amount of bullets at a time. Your bullets need to recharge to be able to shoot them again, so make sure youβre strategic about itβ¦ OR you just rain hell on your enemies what do we know.
π‘οΈ Force Field
As a Space Ranger youβre given a force field thatβll help you deflect incoming bullets. Time them correctly and youβll be able to deflect them back at your enemies. Like the bullets, force field need time to recharge so use them wisely.
Thatβs all you need to know to start playing so gear up and show-βem whoβs boss!
Latest builds
Latest builds can be found in this repos releases page
Play Instructions
Using either a mouse / keyboard or controllers, you can play against up to 3 of your friends.
- Press any key to join
- Shoot, deflect, or be killed
- Winner is the last player alive. If the last two players die at the same time, it's a draw!
- Round to automatically restarted after
π Things to know
Settings up DOTween
When opening the project for the first time, you might encounter errors regarding DOTWeen. If this happens, do the following:
- Open the project (Ignore any errors)
- Open the DOTween Utility Panel from the Tools menu
- Select Setup DOTween... from the panel that appears.
- Press Apply
DOTWeen should now be configured successfully and the project should work correctly now.
Settings up Git
Git LFS
This repo makes use of Git LFS, which allows support for adding large files (audio, video, artwork, etc...) to a git repo.
To set it up, do the following:
- Install Git LFS for your operating system
- Run
git lfs installonce to activate it (you only need to do this once per user account)
Force Git to use LF instead of CRLF (Windows)
This repo uses LF as line breaks. If you're running on Windows, you might face an issue when opening PRs, or doing any
commits in general, that any file you edit will use CRLF instead of LF.
This is most likely an issue with Git on Windows.
To fix it, run the following:
git config --global core.eol lf
git config --global core.autocrlf inputYou can read about the difference between using LF and CRLF as
linebreaks in this stackoverflow post
.
CI / CD
This repo makes heavy usage of the CI / CD workflows provide by GameCI.
All the available workflows can be found in the .github/workflows directory.
Unity HFSM
FSM in this project are implemented with the help of UnityHFSM
Documentation: https://github.com/Inspiaaa/UnityHFSM/wiki
Unity Atoms
This project makes heavy use of Unity Atoms, an event based system that encourages data-driven design.
To understand the reasoning behind using this package, feel free to watch the following two videos (If you're short on time, only watch the first video):
Shadow Casting for Tilemaps
Unity doesn't support adding shadow casting to tilemaps by default. A workaround implemented in this repo is the script described in this forum post
TLDR: If you want to generate shadow caster for a tilemap, click on Tools > Generate Shadow Casters and shadow
caster objects will be created for the tilemaps in your current scene.
Asset Usage Detector
This project has Asser Usage Detector installed. To make use of it, you can do one of the following:
- Open Window - Asset Usage Detector window, configure the settings and hit GO!
- Right click an object and select Search For References
Commit Convention
Please use the angular commit convention when adding new commits.
Not only does it make your commit more clear, but it also plays a key role in how semantic-release (see below) determines the next version number for a release.
Commit Message Header
<type>(<scope>): <short summary>
β β β
β β βββ«Έ Summary in present tense. Not capitalized. No period at the end.
β β
β βββ«Έ Commit Scope: animations|bazel|benchpress|common|compiler|compiler-cli|core|
β elements|forms|http|language-service|localize|platform-browser|
β platform-browser-dynamic|platform-server|router|service-worker|
β upgrade|zone.js|packaging|changelog|dev-infra|docs-infra|migrations|
β ngcc|ve
β
βββ«Έ Commit Type: build|ci|docs|feat|fix|perf|refactor|test
The <type> and <summary> fields are mandatory, the (<scope>) field is optional.
Type
Must be one of the following:
- build: Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm)
- ci: Changes to our CI configuration files and scripts (example scopes: Circle, BrowserStack, SauceLabs)
- docs: Documentation only changes
- feat: A new feature
- fix: A bug fix
- perf: A code change that improves performance
- refactor: A code change that neither fixes a bug nor adds a feature
- test: Adding missing tests or correcting existing tests
Releases
Releases are handled automatically using semantic-release. Its
configuration can be found in .releaserc.json.
Here's how releases are currently made:
- Pushing any commit to the
alphabranch will create a new alpha release. These will be tagged asv1.0.0-alpha.1,v1.0.0-alpha.2,v1.0.0-alpha.3, etc... - Pushing any commit to the
mainbranch will create a new (ordinary) release. These will be tagged asv1.0.0,v1.0.1,v1.1.0,v2.1.0etc...
π½ (Useful) Links and Guides
Git Setup
2D Controllers
- https://github.com/cjddmut/Unity-2D-Platformer-Controller
- https://github.com/prime31/CharacterController2D/blob/master/Assets/CharacterController2D/CharacterController2D.cs
Third Party Assets
Credits
Deflectomania! was proudly developed by:
