top of page

Game Systems

Plants and Soil Systems - Chicken Scratch

Designed and implemented in Unity | C#

I designed and programmed all of the systems in this prototype, as well as modeled and animated the players and plants.

Plant System

â–º Water Consumption

A plant require an adequate percentage of water saturation in the soil block it occupies. The closer the soil block is to the optimal saturation, the faster the plant grows. This is done with graphs in the editor.

A plant can have any range of optimal water saturation, making it easy to create plants that need very little water or very much. The larger the optimal range, the more tolerant the plant is.

​

Plants will wither if the soil water saturation is outside of their optimal range. Upon being watered, the plants must first undo the wilting damage before growing again. This allows the plants to be saved, but at a time cost to the player.

Soil System

â–º Water Consumption

Soil blocks dry out over time, determined by how how much clay and/or sand is present in each block.

Sand dries out quickly, clay dries out slowly.

​

The player can restore water to the soil by using the watering cans.

Utility AI Agents

Designed and implemented in Unity | C#

This project was created completely by me (visuals and all), and I enjoyed every step of it!

AI Agent Setup

â–º Brain | The Decision Maker

Takes actions into account and determines the best possible action to take. It relays this to the body.

â–º Vision | The Sensor

Takes other objects into account and stores them in an array. It relays this information to the brain and body.

â–º Body | The Action Taker

Performs whatever action is chosen by the brain. Movement to an optimal position is determined using a number of distance factors.

AI System

â–º Action

Calculates (using an equation set in the editor) and multiplies all factors together.

Example | The action "Shoot" looks at:

Number of enemies present  |  Current ammo  |  Distance to closest enemy

â–º Factors

Specific elements that can be measured in some way.

Example | The factor "Number of Enemies" measures:

Factor (Number of Enemies) = enemies I can currently see / maximum enemies I can keep track of at one time

Movement

â–º Position

Calculates (using an equation set in the editor) and multiplies all distance factors together.

Example | "Close in" looks at:

Distance to enemy | Can I physically move there

â–º Distance Factors

Specific elements that can be measured in regards to distance.

The Ranger AI reacts to an enemy. The ticks on the ground indicate potential positions to move to within a given time. The utility for each position is displayed as a greyscale value from 0 (black) to 1 (white).

bottom of page