Cheeky Chooks

2018

A contract with the RSPCA for free range chickens

C#

Unity Engine

Gameplay Loop

The first thing I designed and balanced was the core gameplay loop present in Cheeky Chooks. This loop was basically 'spend money to earn more money', with costs and money generation increasing exponentially as the player progressed. Players also had to maintain various resources such as food and water alongside their money. A big mechanic that influenced the loop was the Happiness mechanic. This mechanic was a core design feature in Cheeky Chooks as it rewarded players for making their chooks happy and penalized them heavily if their chooks were unhappy.

Many of these core gameplay mechanics and algorithms occur primarily on the back-end, so I made sure to display everything to our players in the Farm Info menu.​

The Farm Info menu

Building System

As Cheeky Chooks was a farm building simulation type game, it needed a system that allowed players to actually build. We wanted players to express themselves while playing Cheeky Chooks, so it was decided that the building system would use no grids or snapping mechanics. My solution to this decision was to simply allow players to 'drag' their buildings around however they wanted.

I had to account for both PC and Mobile players when designing this system, so players could either tap and hold the object itself or use various buttons to place their building. Players could also rotate the object as they pleased using another button on the construction UI. To show the player whether or not the object was in a valid position, we implemented an outline shader that would glow white when valid and red when invalid.

Building a coop.

On the back-end, the building system used a list of 'base buildings' to store each building's stats, model, cost and upgrades. When the player purchased a new building I would clone that building from the base building list to another 'current building' list. This current building list held all of the actual buildings present on the player's farm, and was also used when saving and loading the player's save.

Mission System

About halfway through Cheeky Chooks' development, we received feedback from our testers stating that there simply weren't enough goals motivating players to continue playing. I proposed a solution to this problem in the form of a Mission System. This system would give players a ton of little objectives while they progressed through the game. I also used this system to gate content off from the player, extending gameplay while also giving good rewards for actually completing the missions.

I designed a custom back-end spreadsheet-esc tool to hold the missions names, requirements and rewards. The system hooked directly into the core gameplay controller to monitor relevant values for each unlocked mission. It also hooked into the Building system to unlock various buildings as rewards. As the system only monitored unlocked and incomplete missions and updated once every 2 seconds, the performance footprint was minute.

Alert System

Another piece of feedback we received from testers was a lack of explanation for some of the mechanics present in Cheeky Chooks. The RSPCA also wanted us to give players some real-world chicken facts as they played. To solve both issues, I designed an Alert system. This system would hook into some specific events that were placed within the various systems in Cheeky Chooks. There were three types of alerts in the system: Important Alerts that told the player important information, Info Alerts that told the player real-world chicken facts and Warning Alerts that warned the player about anything negative in their farm.

The popup UI for an Important Alert

UI

I was responsible for implementing all of the UI in Cheeky Chooks, from the various resource counters to the multi-paneled Shop menu. Each menu in Cheeky Chooks needed in and out transition animations, so I developed a transition manager to handle it. This manager allowed me to rest easy about transitions between every single menu, as it was designed to handle any UI fed into it.

I also designed quite a few of the more information-dense menus. These menus were the Missions menu, the Chook menu and the Farm Info menu. Each of these menus provided their own challenges for me to overcome, simply due to how much information each of them held. Below are a few videos of the menus and other pieces of UI I designed.

Audio System

As we were nearing the end of Cheeky Chooks' development cycle, I decided that the game was simply too lifeless without some atmospheric sound. I began on a simple 3D sound system before realizing I had forgotten something quite important. You see Cheeky Chooks uses an orthographic camera that is placed quite high above the actual farm. This caused major issues with 3D audio sources being placed on the actual chickens themselves.

To solve this, I devised a system that would move the audio listener(the object that actually picks up sounds) between the camera and the ground based on the current zoom level. This meant that if a player zoomed in as far as possible, they would get 3D sounds coming from the chickens, as the audio listener would be at ground level. I then designed an system to optimize the amount of audio sources used around the scene.

This system had a collection of 15 audio sources that would be assigned and used by any and all objects that created noise. I assigned a radius around the camera that would collect any object that wanted to make a sound. I then allowed the system to choose which object to assign an audio source to at random. The object would feed it's sound into the audio source before the system activated it. After being activated, the audio source would wait for the sound clip to play before returning to the collection, ready to be used once more.

Day/Night System

Finally, I needed to implement a day/night system to give the farm some more life, as well as some variation to the colors around the farm. This system was designed in a very similar fashion to the day/night system in my Honor's Project.

A farm at sunset

I iterated on that system in Cheeky Chooks by implementing a weather system along side it. This system would randomly decide if a rain storm would each morning on the farm, causing a major unhappiness spike. This caused players to think about keeping a high happiness buffer. Every morning that did NOT start raining would cause the chance of rain to increase, making rain storms inevitable.

A farm at night