Angle Asteroids
Organization
Playpower LabsRole
Unity DeveloperTeam Size
2Duration
3 MonthsTech Stack
Unity • URP
Angle Asteroids helps grasp concepts about angles on Cartesian plane. Rotate the ship to correct angle and destroy the oncoming asteroids before they collide with the ship.
Move the slider to the desired angle and release it to rotate the ship. At the end of the rotation, the ship will fire it's weapon in the direction it's facing.
The game features multiple levels with increasing difficulty, and players can earn points for each asteroid destroyed.
Key Contributions
End-to-End Development & Technical Ownership · Architecture · Delivery
- Sole engineer responsible for architecture, implementation, and deployment.
- Designed and implemented all core gameplay systems.
- Worked with a 2D artist while keeping gameplay logic decoupled from assets.
- Made technical decisions with focus on extensibility, performance, and maintainability.
Level Authoring System · Data-Driven Design · Tooling
- Implemented a data-driven level system using Unity ScriptableObject assets.
- Separated level configuration from runtime gameplay logic.
- Enabled non-technical collaborators to add, remove, and reorder levels directly from the Inspector.
- Centralized level metadata to support rapid iteration and balancing.

Modular Health System · Interfaces · Decoupling
- Designed a generic
IHealthinterface for all damageable entities. - Decoupled damage sources (weapons, collisions) from health implementations.
- Allowed entity-specific health behaviors without branching logic.
- Exposed events for feedback systems such as audio or camera effects.
View Interface
1public interface IHealth
2{
3 float HP { get; }
4
5 event Action<float> OnHpPercentChanged;
6 event Action<Vector2> OnHit;
7 event Action OnDeath;
8
9 void SetInitialHp(float hp);
10 void TakeDamage(float damageValue, Vector2 contactPoint);
11}
Extensible Weapon System · Abstractions · Gameplay Systems
- Implemented weapon abstraction using an
IWeaponinterface. - Easy addition of new weapon types without modifying existing logic.
- Separated targeting logic from weapon firing behavior.
- Example: Model-View-Presenter architecture based laser weapon on URP, use
LineRenderer,ParticleSystem, and raycast to interact with targets viaIHealth.
View Interface
1public interface IWeapon
2{
3 float WeaponRange { get; set; }
4
5 void Shoot(float damageMultiplier);
6 void ResetState();
7}
Object Pooling · Optimization · Runtime Performance
Implemented object pooling to minimize allocations & garbage collections for high-frequency runtime entities.
Asteroid Spawning
- Spawned asteroids based on level-specific parameters.
- Randomized spawn angles, positions, and visual variants.
- Reused asteroid instances through pooling to reduce runtime overhead.
Explosion Effects
- Spawned explosion effects via events on asteroid destruction.
- Reused explosion prefab instances using object pooling.
- Reduced garbage collection spikes during active gameplay.
Additional Features & Product Polish
- Created custom input slider using Unity's
Slidercomponent and implementingIDragHandler,IEndDragHandler. - Ensured UI & game scene both worked on various device resolutions.
- Showing in-game tutorial on first launch.