Steam Download:

What is Project: Gemini?

Project: Gemini is a two player action platformer co-op game where you and a friend try to defeat the evil corporation drone army that is corrupting robots.

The team spent the first semester creating the engine and tools for the game and for the second semester and summer we spent that time developing core game mechanics and polish.

What Did I work on for Project: Gemini?

Producer Responsibilities:

  • schedule meeting with professors or general team meetings
  • organize weekly / bi-weekly plans of actions
  • help communicate information to other disciplines on the team such as art, design, programming, and audio

Programmer Responsibilities:

  • graphics programming – back end graphics using OpenGL 4.4 and particle systems
  • gameplay programming – drone and boss behaviors, interactable/environment behaviors
  • tools programming – ImGui particle system editor, drone behavior editors, and environment/ interactable behavior editors

What I Did For Particles in Project: Gemini

  • Color effects for particles during their lifetime
  • The shape in which particles spawned
  • How particles traveled based off of preset motions
  • Applying and changing of textures to particles
  • The direction in which particles traveled
  • The size of particles during their lifetime
  • How long particles should live for
  • How fast should particles spawn
  • How many particles should be spawned from a given emitter

Particle Editor I Made in Project: Gemini

To the right of the image above you see the particle emitter layout which I developed. Every thing about the particle was customizable and exposed to the designers for use.

Gameplay and Environment/Interactables

I wrote most of the enemy AI and general gameplay features. A lot of the features came from working with designers on exactly what they wanted and what specific things needed to be customize.

Gameplay Features I Implemented

  • Health Station and Health Pickups
  • Destructable Objects
  • Damage Over Time
  • Particles On Contact
  • Platform Floating
  • Turrets
  • Drones
    • Suicide Drone
      • Explodes on player contact
    • Omni Drone
      • Shoots a bullet towards a player, after some duration, it spawns X bullets in an arc like manner (my favorite drone)
    • Burst Fire Drone
      • Shoots X bullets within a short period, waits X seconds, Shoots again
    • Angled Drone
      • Shoots a bullet where after X time, the bullet switches direction
    • Bomber Drone
      • Always stays above the player and shoots bullets down at the position of the player
    • Shotgun Drone
      • Shoots 3 bullets in a spread based on offset angle
    • Boss Drone
      • three phases where first phase follows burst fire drone logic, second phase where lasers extrude out from the boss, third phase where the boss rotates making the lasers rotate with it
Omni Drone Editor Showoff

The video above shows off the Omni Drone’s customizations on the right hand side.

Some of the things that were customizable:

  • the texture for the bullet
  • speed of the bullet
  • lifetime of the bullet
  • drone’s alert range
  • drone’s attack range
  • the number of bullets that split from the initial bullet
  • the degree offset of each bullet
  • the distance at which the bullet should explode into multiple bullets
  • time between main bullet shots

There were more features under the drone’s customization such as waypoints and how the drone reaches the waypoints. I did not do that feature, the credit of that goes to my amazing tech director, Shareef Raheem.

Next is just an image of the boss drone’s editor and how it is different from generic drones. Notice that there are a lot less customizable options.

Boss Drone Editor

Above is what the boss drone editor looks like. This drone is more unique than the other ones because it has this notion of a boss. The reason behind this is that a boss is unique because it “reacts” to a player’s actions. In this case it was as simple as, when 1/3 of the boss drone health goes down, activate lasers and so on so forth. Most of its events were scripted/choreographed via code and the designer that made the boss drone, Shane Staller, sat there with me while I coded it to his liking. For choreographed events, having a designer there with you is insanely useful since we want to put their idea on screen. Having him there with me helped me be comfortable when writing such an important piece of code.

I had a lot of fun working with designers and getting their ideas into the game. It made me a better programmer because I had to match exactly what the wanted and what variables they wanted to be tweaked/exposed. Although sometimes they would want one way and then find out, “Oh this is really bad, can I tweak it in this way.” and then I would have to figure out how to use their parameters in my implementations. This helped me think of many different implementations for some of the same things which helped expand the way I thought of programming.