Steam Download: https://store.steampowered.com/app/1149630/Project_Gemini/ 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 […]
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.