Image of Ryan Cooper

Hey, I'm Ryan Cooper. I'm a Game Design and Development Masters student at RIT. I've been yearning to get into the games industry since I was a kid playing Mario on my sister's DS. My love for video games has never faded away, and the influence of video games in the world seems to grow year after year.If you are seeing this, you are looking for someone to join your team and I hope you consider that someone to be me. I have great experience in using engines like Unity and Unreal and have a great grasp of C#, C++, and low-level C.Please take a look at some of the projects I have previously worked on. I take great pride in them all, whether they were game jams, short-term projects, or projects still in development.I look forward to talking with you,
Ryan Cooper

Video

Eternal Machination

Role: Game AI Developer
Time Frame: 9 months
Team Size: 20
Engine: Unreal 5.1
Language: C++/Blueprints

Click here to learn more

Asteroid Rush

Asteroid Rush

Role: Gameplay Developer
Time Frame: 3 Weeks
Team Size: 5
Engine: Unity3D
Language: C#

Check out the game here!

Emu War promo poster

Emu War

Role: Game AI Developer
Time Frame: 12 Weeks
Team Size: 5
Engine: Unity2D
Language: C#

Read More here

Tinysaurs

Role: Gameplay Developer, Producer
Time Frame: 2 Days
Team Size: 7
Engine: Unity3D
Language: C#

Read about it here

Video

Tetherpunk

Role: Producer/ Game AI Developer
Time Frame: 2 Years
Team Size: Varied
Engine: Unity2D
Language: C#

Check out the game here!

Changeling logo

Changeling

Role: Producer
Time Frame: 12 Weeks
Team Size: 16
Engine: Unreal 4
Language: C++/Blueprints

See our website and play the game yourself!

Circuit Breaker

Role: Producer
Time Frame: 12 Weeks
Team Size: 16
Engine: Unreal 4
Language: C++/Blueprints

Read more here

Eternal Machination

Video

Download the game here!

Eternal Machination is a fantasy action game where the player wields the power of shadows to defeat mage-punk golems, and liberate the holy spirits they have imprisoned within themselves. The protagonist, Seethe, is an ancient darkness that has been locked away long ago to save humanity from extinction. Archons, the same powers that had imprisoned you, now offer you freedom in exchange for your servitude. As Seethe, the players get to explore different regions, where they have to rely on their control of shadows to both traverse these dangerous lands and face the challenging foes within them. Only after all golems have been defeated can Seethe truly gain their freedom.

Roles: Game AI Developer
Team Size: 20
Timeframe: 9 Months
Engine: Unreal 5
Language: C++/Blueprints

Given the scope of this capstone, two semesters, we wanted that the content we put out for everything we did was as high quality as possible. In other words, quality over quantity.

Goals:

1. Create three enemy variants that serve separate roles in combat
2. Establish creative behaviors for each enemy for each individual enemy
3. Tie the experience together with a boss fight that tests the player on their combat skills
4. Insure as little frustration as possible by researching tells and indicators for each enemy

Designing Enemy Behaviors

Outside of the boss, each enemy held many similarities. Each enemy had a vision, hearing and sight component that would be able to detect the enemy and engage in agravated behavior. Each enemy had a universal damage component that would take damage inputs from all sources, including from other enemies.

Changeling logo

Enemy behaviors were designed using Unreal's Behavior Tree and blackboard system to hold variables that can be evaluated by the behavior tree and tasks. While the behavior tree showcased to the left is to large to break into detail, every enemy behavior tree roughly broke into three parts. The non combat state (where an enemy looks around or patrols), the player spotted and pursuit stage, and the attack phase.

The Madkar Drill was the base grunt of the game, tpyically group with other Madkars. They have two attacks, a swift chop of the pickaxe and a wide up drill that deals more damage. To give them exra flavor, and not to overwhelm the player, there is a separate manager that gives only one Madkar the right to attack at once. Madkars will also premptively maintain their distance and take turns attacking to give the illusion of coordination even though its just self preservation and cowardice.

Thezven Saws control the tempo and force the player to be aware of their charge. They rev up their hard hitting saw and charge at rapid speeds towards the player. Given the biggest area takes place in a poisonous swamp, I wanted to introduce a sense of recklessness in the Thezven Saw. As such, I reworked their attack to use physics propulsion instead of obeying the nav-mesh. If the enemy ends up out bounds, by falling into a dangerous area not covered by the nav-mesh, it will die

The Gulluch Cannon wants to keep its space and fire shots at Seethe from a distance. Between firing shots, it will back pedal away from the player if it gets too close to have a clear shot.

However, if the time calls for it, the Gulluch cannon will charge at the player and self destruct.

Video

Video has audio!

The last enemy waiting is the engine of haste. The final encounter mixes up his physical strikes with a laser barrage. Once it drops health below quarterly intervals, it will fire a special attack like the shockwave that drains the user's focus.

Finding Flavor

While we did have a large animator and artist pool, there were still moments where we needed to test the game and interactions but didn't have the animations ready. As such I made some features for playtesting that eventually got into the final build.

When came to death animations, I noticed that anything we could use to cut down on the animator's work load would be optimal. Especially for something as menial as a small death animation. So I decided that I could come up with a way to save the animators work while getting the players excited about scoring a kill. Using Unreal's Chaos engine, I was able to break apart the enemy model into bits when the player scored a kill. Under the hood, when an enemy is killed, it is added to the enemy pool and then a "killed enemy" model is spawned.At the beginning of developing this feature, I really wanted to go all out on the amount of broken parts and the force in which they would be propelled at.

Obviously overboard; but we wanted to sell the effect first and work backwards.The end product was much more subtle break while still being satisfying to perform.

For the Artists

I will not claim to be a quality artist. However one luxury of this project was having a very robust artist pipeline from concepting down to the final animations. Since I oversaw the development of enemies, I worked with every member of the art team to insure the vision myself and teammates had was fuffiled.

After I presented the three enemies, and boss to the team, the work got handed off to the concept artist.

Madakar Unit Concept Art

Afterwards the concept art would get back to the rest of the team where we would make sure that it was everything we asked for. Once that was approved, the modelling of the enemy would begin.

Once the modelling was done, it would be passed to the rigger and animator to begin working on the animation hot list while it was being textured.

The animators had a list of animations that we would need for each character in the game. An industry professional gave the advice that a standard practice is to make sure the wind up and recovery phases of the animation have three key poses. He also mentioned that the speed of the animation can only be altered by 15% in either direction before it looks off. To insure that they were modeled with the correct amount of exaggeration I modeled out each animation for the enemies.

Successes and Lessons learned

Eternal Machination taught me the most about proper polishing and the best ways to make Game AI feel good. Constant testing both from mandated playtests and QA tests showed in the level of polish we were able to bring to the final product. The level of polish gave us the confidence to show off what we've done to our peers and industry professionals at GDC.

This also fared well at my college's events outside of passing with no marks against us. We were selected to present our game in the main hub of the school's showcase, Imagine RIT. In the expo for the game dev major, Eternal Machination won an award for best polish selected by industry professionals from Blizzard.

Tetherpunk

Play as Arya: junker, ship jockey, and fighter. Lacking working thrusters, her ship is equipped with her latest contraption, the Rope Tool — a grappling hook and a stapler duct taped together.Swing through the corpse of an asteroid mining gold rush. Gather rockets from the rubble of all-consuming corporate rivalry to propel yourself to blinding speeds. Launch those rockets to take down abandoned drones or set off the industrial explosives left lying around. Everything in this physics-led zero-gravity world is an opportunity for chaos and speed.While this project started as a class project, it evolved into a passion project for many people. I work as the AI developer, designer and producer for the game. I worked on nearly all the enemies and all of the bosses as well as our tutorial system.

Roles: Producer, Game AI Developer
Team Size: 8
Timeframe: 2 Days
Engine: Unity2D
Language: C#

Changeling

Changeling is a VR mystery, first-person 3D platformer game built upon the idea of magical realism and a sense of unease and wonder. You play as Aurelia, a dream-walker who has the ability to see through the eyes of anyone she touches. You are tasked with helping this family figure out what is wrong with their child, and as you contact each member, you see through the lens of their hopes and fears of what the child is.In the summer of 2021, I was the production lead on this project. This was my first time being a producer, and managing 15 other developers plus working with other teams was a challenge. I helped get 4 of the levels built while working alongside the sound team to implement voice acting into the game.

Roles: Producer
Team Size: 12 weeks
Timeframe: 16
Engine: Unreal 4
Language: C++/Blueprints

Asteroid Rush

It is said that the first trillionaire will be whoever figures out how to mine asteroids. Your company has asked you to fulfill that mission in mining the special ore located on these rocks. However, aliens that reside do not take kindly to visitors. Guide your crew to mine rocks and get out without any casualties, lest you provoke the company's wrath.As part of the Master's curriculum, this class asked us to develop rapid prototypes only based on a theme for each game. For this one, we were given the prompt RPG and had 4 weeks to develop. I was in charge of the game state, player behavior and win and loss conditions.

Role: Gameplay Developer
Time Frame: 3 Weeks
Team Size: 5
Engine: Unity3D
Language: C#

Tinysaurs

Check out the game here!

The only dinosaurs still around can fit in your pocket! Make fossilized creatures out of spare bones, use them to dig up more!While the team was formed under the context of a "low stress game jam" We ended up doing very well. We finished in the top 25% of all games in nearly all categories.

Role: Gameplay Developer, Producer
Time Frame: 2 Days
Team Size: 7
Engine: Unity3D
Language: C#

Goals

- Create a working prototype within the 48 hour time limit.
- Keep team on pace and coordinated while keeping stress low.
- Create creatures with unique behaviors based on the parts put together while working with limited art assets.

Make an abomination adorable

I programmed all parts of the game with the exception of the assembly and combination of bones. Regardless, most of my development focus was on how Tinysaurs interacted with the world.

When a head, body and legs of a dinosaur are put together, it creates a Tinysaur which gains autonomy!

Tyran-Nosaurus-Rex

We had an array of parts to choose from that we made in house. You could create a complete T-Rex or mix it up to create a cute afront to god. The entymology of each Tinysaur is put together by taking the genus from the head and body and the species from the name.

Ptera-Hippus-Mammoth

Getting new parts is as easy as digging up mounds. To not make digging so tedious, and give the Tinysaurs some more purpose, I gave them the functionallity to dig up mounds when assigned.

Each Tinysaur had its own aggression score based on the parts it was made of. Parts from herbivores give a lower score than carnivorous parts. If a Tinysaur has a high enough or low enough score, they will chase prey with a low score. Likewise low aggressors will run from predators. Although, given they don't attack, it looks like carnivorous Tinysaurs just want to make friends and the prey do not want that.

Success With No Stress:

A good potion of the team was coming from another project and after trying to make a deadline we were pretty stressed out. Thus my pitch to get them on board was a "low stress jam".

One method to lower the stress was to focus less on picking a game idea and then giving people roles, but asking people what they wanted to do before hand and adjusting our scope around that. Rule one of scrum is that people come before the process.

While we did our own thing, we had check ins every two hours to see how progress was going. Everyone but our musician attended these meetings to keep ourselves aligned. This removed confusion on tasks without needing a formal task board. It also allowed for knowledge sharing for technical features that stumped people earlier.

Lessons Learned and Successes

As previously mentioned our team finished in the 70th percentile of all teams despite not wanting to go all out.As a developer, I learned that you can do a lot with a little. I had to fill my hands with a lot of boilerplate outside of gameplay. Keeping my scope small and keeping the joy centered around the little ways Tinysaurs interact with the world.From a producer perspective, the biggest lesson learned here is that an appropriate scope and insuring that everyone is excited to do their part is as good of a motivator as a pressing deadline. It decreased burnout, kept people wanting to improve their work and stuck around long enough to review other games as is Ludum Dare tradition.

Clueless friend who thought the game was only about crinoids

If this project were to keep going the first thing to implement would be more ways to interact with the Tinysaurs. As of right now this is more of a sandbox than it is a game. We had some ideas for minigames to do with the Tinysaurs, Google's dinosaur runner came up a lot, but there were many different options.
I would also like to add more behaviors outside of chasing based on parts. With more time to create bones comes with more time to make something unique. We do feature some aquatic based creatures such as the crinoids and the anomalocaris; introducing tinysaurs with these parts to water would be very interesting.

Emu War

Check out the game here!

In 1932, the Australian govenment declared war on the emu population. This is how we think the war played out. In Emu War! you must join General Emunel and his emu horde by eating wheat and avoiding the watchful eyes of the Australian hunters who want you dead. Will you collect enough food to keep your flock happy? Or will the Australians rewrite history (Because in the actual Emu War they lost and I am no joking).This project is unique compared to many other courses as we were only permitted 2 hours of work per week throughout the entire semester. I was in charge of the AI and making the hunters as a legitimate threat to the player while still allowing for the player to work around them. This was one of my first cracks into making engaging enemies as AI. If I had more time, there is a lot I wish I could have done in terms of bug squishing, but given the constraint I'm content.

Role: Game AI Developer
Time Frame: 12 Weeks
Team Size: 5
Engine: Unity2D
Language: C#

Goals

- Create a fair hunter AI that punished players for merely being spotted.
- Balance my development time to accommodate for the "two weekly hours of development time" rule.
- Incorporate biweekly sprint cycles to ingest feedback to prepare for the capstone program.

An Ethical Emu Hunter

As mentioned earlier, time was limited working on this project and I couldn't afford to make complex enemies. The team agreed on one hunter enemy that would shoot the player on sight. The player has no defense outside of running and no way to heal, meaning the best combat with the hunters is a lack of combat.

Level designs we built around enemy patrol patterns and general Emunel avoiding their line of fire by timing how they moved and rotated staying out of the on screen line of sight.

Too many Bullets?

We knew we didn't want single shots as it would be too easy for the player to avoid them. Rapid fire gave the players the chance to dodge the shots and keep things from being too unfair. We decided the best balance was a five round burst, inspired by the Short Magazine Lee Enfield Mark III or the SMLE. Doing our research, we discovered that this gun was used in WW1 and was in circulation through the Korean War making them accurate to them time and a good balance of attacking and cool down.

What was created was a hunter that showed no quarter to Emunel or his feathered allies.

I see you see me see you!

While the base AI was complete, a new problem existed. Players noted that the line of sight of the hunters were not accurate, clipped through walls, and didnt properly reflect real line of sight

Previously, I used the blue triangle and a polygon collider to check if the player or other emus were inside. However if we wanted the player to use walls as a cover the vision would have to reflect that. I switch to a raycasting system for this new iteration. It fired a set number of raycasts spaced out over the total angles of an arc.

Afterwards each point on the raycast is fed into a mesh creating a visual for what the hunter sees. Under the hood, I am drawing several triangle over the arc.

Lessons Learned and Successes

Biggest takeaway is to expect the best but plan for the worst. Keeping scope small while constantly elaborating on proven concepts make a very tight demo. Our faculty remarked that already this was a good set up for a capstone project even impressing the toughest professors in the program.

Also fun fact, this game is the project that got me my current position. I was stunned when the first thing my coworkers asked me about was Emu War on my first day.

Looking For Beans

Mark for delete?This project was created during a game jam in 2020. The theme was dreams and frankly I have no earthly idea how we ended up here. You guide a shadow demon to the fridge to get him beans while clearing the obstacles that stand in his way. Once again, How did we get here?During this project I was responsible for creating the automatically moving shadow demon, implementing points of navigation, the camera, obstacles and looping. This project is special to me. It was my first time working with an automated character. Even though the game is simple and crude, it one second place at the game jam and was the first time I saw that games I make can be enjoyed by people.

Role: Gameplay Developer
Time Frame: 2 Days
Team Size: 4
Engine: Unity3D
Language: C#

Circuit Breaker

This game was made in 48 hours for Global Game Jam 2026
In Circuit Breakers, you use your astral projection mask to slip past guards and escape this cyber punk city!

Play the game here!

Roles: Producer, Game AI Developer
Team Size: 8
Timeframe: 2 Days
Engine: Unity2D
Language: C#

Goals

1: Make a polished MVP within the 48 hour time limit.
2: Establish proper communications with a team who I have never worked with before.
3: Juggle communicating with the team while also fulfilling my programming repsonsiblities.

What can we do for eachother

One of the scariest parts about this jam was understanding what my teammates could do. I had never worked with any of them before, some people I didn't know what their skillsets were before starting the jam.With the theme of mask, we came up with the idea of a puzzle stealth game where you could astral project yourself by putting on a mask to slip passed enemies. While we had many ideas prior to agreeing on this, I stressed the most important thing is that we can all be aligned to an idea that we all can get something out of.

Next was figuring out what people were good at. Since we all agreed ahead of time that we wanted a portfolio piece, I knew everyone would want to do something they were already doing in college and wanted to make a career out of. I asked people if they would prefer to be a programmer or a designer on the project or if they could be moved around. Therfeore I could look at the tasks and move people wherever.

As for task management, the majority of the team seemed abrasive to Trello or a formal task management board. Instead of fighting with them to use it, I kept a Trello board for myself to internally track progress, while creating an intermittent write-up for the team on our game design doc. This may be controversially done, but I believe the best task management system for teams is something they will use.

Roadmap write-up for team

Trello board for me

Establishing the Pipeline

One time saver from this jam was that I was able to repurpose old code I had done previously and make it more generic for future use. I made improvements to my vision mesh script from Emu War, menu boilerplate from Tinysaurs, and the player detection and event handler from Tetherpunk to be more modular and easier to plug and play.

The modular code base allowed for other members of the team to reuse the code without fear of coupling. As such every feature that was designed to go into the game after the planning phase made it in.

The biggest accomplishment for me this jam was creating an easy level design pipeline that was worked on across multiple people. Given the havok of other events people had to take care of, more on that later, many designers couldn't be on their computer nor could they be contacted instantly. So the pipeline I had to be compartmentalized in a way that anyone could jump in to pick up any work.

As such there was a three part system. Level sketches, grayboxxing and then adding visuals and finishing touches.This turned out incredibly successful. In the three examples below, each level was sketched by a different person, grayboxxed by someone different and then the visuals were added by someone different.

Level Sketches and Final Level

What to do if it rains

This level of preparation was tested by the uncontrollables and team member availability.

One set from the tournament that went longer than an hour and a half in waiting and playing; it wasn't even the last game!

Several members of the team agreed to help out someone run a charity gaming tournament part time, and then work on the game when they are not helping. But the tourney organizer got sick and matches ran on a lot longer then they should have.

The other element is team members that get sick or burned out. While a good portion of the team was occupied by the tournament on Saturday, another handful of people were incapable of working on the project on Sunday. So the team was never at full capacity outside of the initial planning day

However we never had to make sacrifices for the end goal. We reached our intended goal of ten levels with visual assets included. In fact, we were able to have playtesters before the deadline because of our preperation.

Lessons Learned and Successes

When working with a new team, learning what people are good at and want to do is great for managing talents you've never worked before. Additionally, making code modular and the level design pipeline compartmentalized allowed for people to pick up work from others. Additionally, some members on the team admitted they were never on a project that they were able test and gain feedback before the deadline.

If we had more time, I would have appreciated making more assets. Clarity and readability were not optimal and better assets for buttons and objectives would go a long way.

You aren't supposed to be here... these are some extra games, a full archive of what I've done. Take a look.

Looking for Beans logo

Looking for Beans

Role: Gameplay Developer
Time Frame: 2 Days
Team Size: 4
Engine: Unity3D
Language: C#

Check out the game here!