Angle Asteroids

Playpower Labs
Unity Developer
2
3 Months
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.

Level Authoring Screenshot

Modular Health System · Interfaces · Decoupling
  • Designed a generic IHealth interface 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 IWeapon interface.
  • 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 via IHealth.
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 Slider component and implementing IDragHandler, IEndDragHandler.
  • Ensured UI & game scene both worked on various device resolutions.
  • Showing in-game tutorial on first launch.