Ryan Cooper • Game Developer/ Producer

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
Role: Game AI Developer
Time Frame: 9 months
Team Size: 20
Engine: Unreal 5.1
Language: C++/Blueprints
Role: Gameplay Developer
Time Frame: 3 Weeks
Team Size: 5
Engine: Unity3D
Language: C#
Role: Game AI Developer
Time Frame: 12 Weeks
Team Size: 5
Engine: Unity2D
Language: C#
Role: Gameplay Developer, Producer
Time Frame: 2 Days
Team Size: 7
Engine: Unity3D
Language: C#
Role: Gameplay Developer
Time Frame: 2 Days
Team Size: 4
Engine: Unity3D
Language: C#
Role: Producer/ Game AI Developer
Time Frame: 2 Years
Team Size: Varied
Engine: Unity2D
Language: C#
Role: Producer
Time Frame: 12 Weeks
Team Size: 16
Engine: Unreal 4
Language: C++/Blueprints
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.
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
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.
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.
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.
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 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
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#
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
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.
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.
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 run from predators. Although, given they don't attack, it looks like carnivorous Tinysaurs just want to make a friend.
Success With No Stress:
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.
In 1932, the Australian govenment declared war on the emu population. This is how we think the war went down. 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 wheat to keep your flock happy? Or will the Australians rewrite history (Because in the actual Emu War they legitimately lost).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#
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#
Insert Game Description here
Roles: Producer, Game AI Developer
Team Size: 8
Timeframe: 2 Days
Engine: Unity2D
Language: C#
Producer roles part 1: leveraging talents
Part 2: Establishing the tone.
Part 3: What to do if it rains.