eiro1.PNG

Eiro

Eiro was created over a year with a team of myself, four artists and another programmer for a final year university assignment. It is a RPG/Bullet Hell game focused on colour blending and complements. My role was lead programmer and producer. 

 

Responsibilities

Graphics Programming

I did all of the technical graphics work, collaborating with artists to figure out what they need, and implementing most art assets.

  • I created vegetation shaders which fade as the camera is close, move in the wind, and displace depending on player position

  • I created a custom terrain shader for Unity built-in terrain which adds triplanar mapping and height blending

  • I implemented VFX including screen shake, post processing, and those supplied by artists

  • I did all of the optimisation work to ensure 60+ fps

 
eiro3.PNG

Combat Systems

I developed the bullet system, which was a performance challenge. We were targeting 500+ simultaneous bullets which follow terrain and can be affected by the player mid-flight. Bullets have different materials depending on their colour and type. To achieve this performance I used Unity 2018's job system for physics simulation, used a heightmap based terrain, and ensured that bullets could be batch rendered.

Player abilities was my second combat responsibility, including a 'shield', 'time slow' and a 'blank' ability. These interact with the bullet system in complex ways, and are learned as the game progresses.

 

AI System

As a content heavy game, an artist-editable AI system was required to create enemies and other game objects.

I developed this system on top of a state machine using ScriptableObjects. Artists can create states of different types such as 'ShootAtPlayer' or 'PlaceObject'. These states have configurable properties, and can trigger animations, sounds or VFX.

This system enabled an artist to take an enemy implementation role and create 5 unique enemies, without back-and-forth with programmers.

eiroai3.PNG
eiroai1.PNG
 
eiro5.PNG

Other Responsibilities

As producer, I:

  • Ensured tasks were appropriately delegated (with team input)

  • Held daily meetings (much like in Scrum) to keep everybody on the same page and update task progress

  • Managed the product backlog, task list and burn down chart

  • Was the primary communication point with lecturers (product owners) in weekly meetings

  • Prompted team when we were behind schedule and potentially cutting tasks, or re-prioritising

 

My other programming tasks included:

eiro4.PNG
  • Saving and Loading

  • Level Streaming

  • Sound implementation with FMOD

  • Skill Tree system and UI

  • Active ability UI

  • Main Menu

  • Overall software architect

  • Fixing Git issues

  • Helping others work in Unity