Developing The Plant Breeding System
One of the main features of Gardeners Grove is the plant breeding system. This is because it ties the whole game together as it creates the core gameplay loop of plant, breed, take a cutting, and repeat.
In the early phases of development for Gardeners Grove, I had created an initial prototype for players to test. Throughout the playtest I quickly realised that there was a problem with the original design of the plant breeding system. Therefore, in order for the game to be playable, this system had to be reworked during the game’s development cycle.
In this development blog, I will be talking about how the plant breeding system was constructed and implemented. Additionally, I’ll also be covering the improvement of the UI, as well as the logic behind the plant breeding programming.
The Original Design
Looking back upon the original designs for plant breeding, I had simply devised a system in which plant A + plant B would = plant C.
The shape and colour of the parent plants would combine to create a new breed. This would continue down in a “family tree” style.
I had sectioned these plants into primary, secondary and tertiary types which signified how far down the breeding line they were.
The design problem began after the first prototype was tested. Players had no reason to plant slowly, and would quickly spam mouse buttons to place as many plants as possible. This did not align with the original intended experience which was supposed to be slow and relaxing. Furthermore, players couldn’t tell that some of the sprites were plants and thought that they were just shapes. This caused some confusion around the aim of the game.
In conclusion, there needed to be a solution to this problem, so I wrote down a list of potential fixes in this blog post. After ruling out any fixes that would be too large for the scope of the project, I set about testing the solutions that could work.
Testing The Solutions
I tested out the initial ‘objective’ solution that I came up with, on paper. This involved the player being given the next plant (as if it was the top card from a deck of cards) and having to figure out where they want to place it. This was tested on paper with a grid-based system and some plant cards.
On the right, you can see a TikTok that I created which gave a sneak peek into the process of creating and testing this prototype solution.
While testing this I ran into a problem where I realised not every plant could breed with each other so the player would potentially be able to break the game by placing non-breedable plants around the edges of each other.
This meant I had to go back to the drawing board for a better solution to the original problem.
Developing the solution
The Timed ‘Light Objective’ Solution
This solution was the most promising and involved me changing the following elements in the game:
- Creating a better, well-defined plant breeding system diagram. As a result, I will know exactly which plants can breed with each other therefore I can effectively communicate the system to the player.
- Implementing a timed growing mechanic. For example, the plant cuttings will take time to grow, and can only breed once fully grown. Additionally, new plant variants will also take time to grow between parent plants.
- Adding light objectives to the game. The light objectives reinforce the player by rewarding them with decorative items. Also, it allows players to have something to do while their plants are growing.
Developing the UI
Implementing this design meant that I had to create some user-friendly UI that the player could easily navigate and understand. I called this ‘The Herbarium’ after real-life Herbarium’s, which contain preserved vascular plant specimens.
Inspiration & Case studies
To understand how to achieve a clean UI, I took a deeper look into how other collection focused games handle their interactive UI.
One of the most iconic collection games is Pokemon Go. For the most part, I want to take a look at the “Pokedex” in pokemon Go to see how that specific part of the game functions.
The Pokedex consists of a long, scrollable list of icons.
There are 3 states of icons here:
- caught pokemon
- seen pokemon
As the player scrolls through the list, they can easily see what is missing, and potentially understand what fills in the gaps because “seen” pokemon have their silhouette shown in the collection.
Each ‘set’ of Pokemon is split into regions such as “Johto” and statistics are given for how many the player has caught and how many they have seen.
There is a number assigned to each pokemon too.
I want to take inspiration from this UI as it’s simple yet effective. Allowing the player to see everything they are able to collect in a list format also helps them to understand the depth of the game and find anything they are missing.
Toca Lab: Plants
Toca Lab Plants is a children’s tablet game in which the player can explore different methods to cultivate new plants. They have a very unique collection UI which has two states:
- Found plants
- Unknown plants (Displayed as silhouettes)
The unique part is when you find a new plant type, it tells the player how they made it and what plant it originated from. The green arrows show the breeding flow between each plant that has been created.
The player can click on plants individually in the UI, and information about them will pop up at the bottom along with a fun and unique noise that tries to help the player remember the plant’s name.
One of the only downsides to the function of this UI is that it’s not a transferable experience to PC/mouse. On a tablet, the player navigates the UI by dragging their finger along to look around the UI; which is a similar experience to navigating google maps.
In Crossy Roads the player can unlock characters by completing in-game quests or goals. In addition, they can also buy characters using real money or unlock them through in-game money in the prize machine.
The UI has 3 states:
- Collected playable characters
- Purchasable Characters
- Unknown ‘quest’ characters
As the game is designed to be played horizontally, the player scrolls left to right to view their collection and can interact with each character by pressing the button below it.
There is a statistic in the bottom right which shows how many characters you have collected in that section.
The UI of Crossy Roads is clear and easily understandable. However, the single sideways scrolling line of ‘collectables’ wouldn’t work with a mouse. In the case that I wanted to use a similar technique, there would have to be a scroll bar. Also, If I were to implement a similar “horizontally scrolling” menu I would have multiple lines as opposed to just one. That way I can fully utilize the fact that the player can see a lot more on a computer monitor.
Although Minecraft Earth is being discontinued, I still want to take a look at the collection UI.
I’m focusing on the ‘inventory’ area where players can see items and mobs that they have collected. They can use these collectables by dragging them to the Hotbar and tapping to build their own little Minecraft chunk.
Gardeners Grove works in a very similar way where the player can drag collected plants to their Hotbar and place them in their garden. A major problem I had with Minecraft Earth’s approach to this was that the inventory UI would take up more space than required. For example, I was often looking at a grey bar that filled 40% of the top half of the screen which wasn’t particularly helpful to me. In short, cutting back some of the unused space in a collection UI would be great for Gardeners Grove.
After studying the UI of other games and consulting the scope of the project, I decided upon having 2 states that the plants can be under; collected and unknown.
Gardeners Grove’s User Interface was mocked up in Figma before being implemented into Unity. Changes were made over in the Unity engine such as changing the text colour, removing the “locked” icon, and reducing the size of the collection slots
A dictionary containing all the plants and their possible breedable partners was created. This allowed for further expansion when new plants needed to be added to the Herbarium. As a result, players are able to see gaps in their collection which allows them to go back and figure out what they are missing.
Moving on to what happens on the programming side of the game, I want to talk about the logic behind the plant breeding system.
Firstly, each plant is set up with a script called “Breedplants” which contains all of the unique breeding information attached to that plant. For example, this plant is a circle, the key is cir, and it can breed with 3 other plants, their keys being; cir, squ, tri.
What this means, is that each time a plant is placed it checks all the plants in close proximity to see what their breeding information is. If a plant within the breedable radius matches one of the breeding options of the current plant, it will grow a new breed. Also, if there are many plants within the breeding radius, the game will randomly pick one to breed with.
I want to reflect upon the importance of early playtesting and prototyping during development as this has made the project possible within the given time frame.
Without an early playtest I would’ve run into these issues much further into the development of the game. As a result, the scope of the project would’ve needed reducing. This could’ve caused some of the key ‘game feel’ features to be ruled out. Instead, I am able to develop the game in an agile way, iterating on the design as I go.
Overall, I am happy with how the game’s system design has developed throughout the project. I’ve built the plant breeding system in such a way that I can continue developing the game, even after the project is released because the system is easily expandable. Plants can be removed or added without affecting the game’s performance or player experience.
I’ll be looking to further develop the game in future, adding plant bundle updates and new decorative items.
Thank you for reading. If you have any questions, feel free to ask them over on Twitter: https://twitter.com/MemoPotato