A demo asteroid project for portfolio purposes.
The project's archtecture focus on grouping assets based on specific priorities, so that the development team can focus on a specific folder depending on the activity. Take a look on the order below:
The bundles folder organization still isn't well organized. The idea is to separate the files by each entity instance and a shared folder for base assets like parent prefabs.
The project scripts must take in consideration their file organization and assembly definitions, either in the assets folder or in the packages. This project currently uses the dependency of:
- 2D Sprite (for UI multiple cuts and border configurations)
- New Input System (for a better control over the inputs and scalability for multiplatform)
- Device Simulation (to toggle the device orientation and check notch)
- TextMesh Pro
Other packages are already imported for possible updates:
- Addressables Content Management, Memory Performance
- Cinemachine Camera Handling (Shakes and Zooms)
- Timeline Complex Animations (Cutscenes)
- DoTween Simple Animations (Intros, Enemy Ships, Bullet Motion Patterns, UI Motion)
Universal RP could be added in the future for better graphic results, but it was best for development performance not to install it for now.
In a small project like this one, the fastest tool to help in the development process is to create ScriptableObjects ans Prefabs. The naming pattern also helps in the process to help game designers to find the desired asset. The main scriptables from the project, are found by just searching files with '@default' in their names. This is what would be displayed. Notice that I've already saved this kind of research in the favorites to even help to quickly access the files.
I've separated this projects scripts by their roles in the project:
- Entities
- Interfaces
- Managers
- Mechanics
- UI
There's also a naming pattern for their roles to better separate the components into parallel functionalities (prioritizing CPU performance). Most of the classes don't have the update method as the most frequent to have this behaviour are the ones connected with the physics and input scripting. The others that have a short time parallel operation use Coroutines to wait a condition or a Callback event for specific actions that must be shared by the managers.
For the delivery-time
tag, I couldn't finish some of the desired features, that could bring a more interesting experience for the game:
- Asteroid division in smaller versions
- Asteroid timed respawn (affraid to lose control over spawn rate and don't have time to baleance the game)
- Level balancing variables
- Sound effects and music
- Visual effects (like particles and UI juiciness)
- Improve graphics
In the long term, I wish to launch this game with some interesting features like:
- Upgrade system
- Shop system (Buy ships, Customize parts)
- Smarter threats
- Backend services
- Localization
- Ads
- Idle mode
- Campaign mode
- Multiplatform bridge