Open World, Sandbox | Unreal Engine 4 | PC/PS4
UP IN THE AIR
Up in the Air is zany, open-world game about a balloon dog exploring a demented carnival populated by crazy children. Players must use a variety of power ups, from water balloons to ground pound, to fend the kids off and collect carnival tickets. Players can burn Big Weenie, knock over a castle, trap children in a cardboard jail, master hopscotch, become radioactive, turn off the sun, or get popped by a cactus. If they are particularly unlucky, they could even find the notorious child Chunkles and his gaping maw.
ABOUT
INFO
Role: Programmer
Team Size: 13 (4 Programmers)
Genre: Open World
Engine: Unreal Engine 4
Development Time: 6 months
CONTRIBUTIONS
Children AI
Technical Art
Static Power Up
Input Remapping
Item Carrying
Sit in Trigger
Gameplay Bites
CHILDREN AI
One of the features that grabbed us right away and added huge amounts of value instantly was the children in our game. The children looked twisted and crazy, but their actions through out development made for zany and fun moments that would boost the teams morale and fill us with laughter! Having the most experience with UE4's AI systems, I was responsible with creating, improving, and maintaining the children and their AI. The main requirements were: they had to be consistent, designer friendly, and most of all fun! This is one of the things I spent the most time on and I'm proud of the results.




DESIRES AND FEARS
Children can have many different desires and fears with varying levels which help determine what objects the child will go after. All of this can be easily edited for each child individually so that they can all be unique.




ACTIONS
Once a child reaches something they desire they can take any action, set by a design, on that object. Currently actions include Eat, Kick, Carry, and Destroy.



WANDER AND PATROL
To make the park feel more alive, children can wonder around. Designers can select from any wonder volume placed around the level to determine where a child can wonder off to. Designers can also set a child to patrol an area by giving them a set of patrol nodes placed in the area.
TECHNICAL ART
ANIM BLUEPRINTS
Handle the process of creating animation blueprints, triggering frame specific events, and adjusting physics assets for characters.

KID ACCESSORIES
Programmed a way for artists and designers to easily change a kids clothes, skin, hair, and attach other accessories to their hands, shoulders, back, waist, and head.

CLOUDS
Created the system that generates and moves clouds in the sky in a believable way. The system allows artists to easily make adjustments.

GAMEPLAY BITES
Gameplay bites are small challenges that reward the player with a ticket once completed and can be found through out the world. Midway through development, it was discovered that level designers were having to spend more time programming these gameplay bites than designing and placing them in the world. We immediately changed our pipeline for creating gameplay bites to a system where a designer will write out their idea and communicate back and forth with the programmer tasked with programming it. This allowed both disciplines to combine their strengths to rapidly create new gameplay bites! The following are the gameplay bites I contributed to.




THING IN A THING
This is one of the generic gameplay bites used for any gameplay that involved having a thing in a thing, hence the names. The bite allows designers to chose how many objects of a certain class, or which specific actors in the world, are required in the bite's boundaries to earn a ticket. This was used in herding sheep, jailing kids, golf, and more. It also lead to the creation of the generic gameplay bite Remove Thing from a Thing.



RING RACE
This is a gameplay bite designed by one of the level designers, where the player must go through all the rings within a set amount of time.



WACK-A-MOLE
Another bite designed by one of the level designers, that was unfortunately cut due to time constraints. This bite was designed to utilize the ground pound power up. The player would have to ground pound "moles", or mole kids, that would randomly pop in and out of their mole holes through out the world. When the player finally "wacked" enough moles, the boss mole, Chunkles, would appear, requiring the player to hit him multiple times before collecting their ticket. However, there were more challenges than initially anticipated leading to the cut.
MISCELLINOUS
The following are the rest of the features I worked and helped create for my team's game that, while are important, do not fit into a common section like the previous ones.




STATIC POWER UP
The static power up allows for the player to draw in many objects and children toward the player with ease. When activated, a sphere of electicity spreads out from the player and begins to lift anything in its radius off the ground and into balloon dog's gravitational field. This power up went through plenty of fun iterations early in development before becoming what it is now.




ITEM PICK UP/CARRYING
In the game, the player and children can pick up objects certain objects in the world. These objects, once picked up, can be stolen by others and dropped when desired. An object becomes highlighted when it can be picked up by the player.




SIT IN TRIGGER
A trigger box that snaps children and the player into a specific position when entered. This class's simple concept lead to an easy and fast creation process of the rides seen in the game and more.



AXE SWING RIDE
This was the first ride created in the game. Once entered and activated, the player can enjoy a riding in a swing shaped like an axe. For every passenger added the swing moves faster.



INPUT REMAPPING
Created code in C++ for UE4 and programmed the widget menu that allows the player to remap their input keys and buttons. I also made blueprint nodes that made it easy for all UI to display the correct key/button for any action. This code later assisted another programmer with embedding icons into UI text.



SKIN SELECTION
Programmed menu and in game display for skin selection.