Tree Squad

Brackey's Game Jam Attempt

Stronger Together


My Role

I worked as the Game Designer and Main Programmer.
My main tasks were:

  • Design the core loop, concept and mechanics.
  • Implement using C# and Unity3D.
  • Integrate external assets and implement UI.
  • Compile and publish the game on itch.io


The Game

UNITY 3D / C#

TECHNOLOGY

1

TEAM SIZE

7

DEV. TIME (DAYS)

WEB

PLATFORM

Features

  • Plant trees to save planets from pollution.
  • Each Season features random positive or negative events.
  • You can plant 1 new tree each Spring.
  • Trees get linked to their neighbours.
  • Linked trees purify more and are more resistant to negative events.
  • Customizable pollution ratio to increase or decrease challenge.
  • Environmentally conscious theme.

Goals

  • Create a short game using the jam time.
  • Get experience creating different types of games.
  • Represent the theme (Stronger Together) wisely.

Constraints / Risks

  • 1 week development.
  • Working as a solo developer.
  • No in-house art & sound.



Key Design Points

Neighbour Interaction





Mission 1: Deliver the idea of "plant adjacent trees to succeed in the game".

The goal of the game is to stop the pollution by purifying the air with trees. Each planted tree goes through 3 growing stages, augmenting their purifying factor as they grow.

The main idea considered making the trees more powerful based on how many neighbours they had. Therefore, having more and more neighbours was something to be encouraged.


Strategy

To achieve this, I defined the following ways of making the trees stronger:

  • Purification multiplier based on amount of neighbours.
  • In the event of a fire, it should propagate to the neighbouring trees. However, the more neighbours an endangered tree has, the lower the probability of propagation happening.

This automatically rewards the player for choosing to plant trees in larger groups and avoiding isolated soil.



Mission 2: Find a level layout that enables creating forests.

It was also needed to visually encourage the plantation of neighbouring trees.


Strategy

The first step was to add particle effects that became more visible the higher the purification ratio was for each tree.

Given the "no art" constraint, I searched for available art in the Unity Asset Store.

A layout using hexagons was a good fit for the mechanic as it allowed to have more neighbours than a square based layout, and it also fit the available art.

To add variety and some level of difficulty to the game, different types of grounds were added.

Initially, infertile ground was meant to only be an obstacle to consider when planning the forestation strategy. But later on, it became a source of gameplay as well.


Seasons' Events & Effects


Mission: Clearly show the change of Seasons and its effects

The game needed to feel dynamic and also support the concept of trees' growth stages that was a key part of their purification abilities.


Strategy

Each season was defined to have random events that could be beneficial or detrimental to the player's goals.

The events defined were as follows:

  • Summer: fire (- destroys 1 tree and has a change of propagating to the others)
  • Autumn: rainy season (+ increases growth stages on all planted trees, turns fire off)
  • Winter: freezing (- decreases growth stages on planted trees)
  • Spring:
    • Special pollination season (+ increases the amount of trees available to plant this year)
    • New fertilization technology (+ increases the growth ratio)

To align these events with the deeper message the game holds, a season agnostic event was added: "New Factory has been built".

In a planet where pollution is a serious threat, creating more factories increases the pollution ratio making the planet die faster.




Each season there is a chance that a new factory would be "approved (by Government)" and the game would become a little harder for a while.

Positive and negative effects had to be balanced in order to avoid a feeling of unfairness.


Random Content





Mission: Increase replayable value

Being a short game, more content had to be added to make it more interesting to continue playing.


Strategy

Random content generation was considered and I finally settled for a partially random strategy.

The planet's layout was divided in two. The left section holds smaller patches of land while the right section holds a larger continent.

I created various different layouts that could fit in each section and every new planet creation randomizes these layouts creating new combinations.

Additionally, the randomizer considers the following elements:

  • Tree sprites
  • Ground sprites
  • Ocean color
  • Background music
  • Approximately 10 different combinations were created and are chosen at the start of each try to create seemingly different planets with very different ambient and feeling.

  • Difficulty Progression


    Mission: Create a simple difficulty progression

    The current version of the game does not feature a difficulty progression based on clearing stages and advancing towards a game's end.

    Although this kind of progression is part of the future plans for the game, there needed to be a way to increase the challenge in the game as it is now.


    Strategy

    Currently, the difficulty is based roughly on two parameters: the pollution ratio and the probability of building a new factory each season.

    Pollution ratio is inversely proportional to the amount of years left that the planet has.

    Once the player beats the first try, a new option is added in the main screen that allows them to choose the lifetime remaining for the planets.

    • Decreasing this parameter represents a bigger challenge as pollution will rapidly increase and every player's move has to be accurate in order to win.
    • Increasing the planet's lifetime, means the pollution rises very slowly and the player has plenty of time (years in game time) to plan their strategy.
    • A minimum of 2 years had to be considered, as 1 year rendered the levels impossible to beat.

    Factory construction probability is currently not modifiable and was set on a static value based on the playtesting sessions.


    Boring Gameplay?


    Problem: The gameplay is boring...

    Waiting around from Spring to Spring to plant trees with nothing else to do during the rest of the seasons generated a very dull gameplay. It felt like an idle game without the idle games' mechanics in place.


    Strategy

    Since every season had the same duration, one option could have been to speed up the duration of the non relevant Seasons. However, the player responsibility continued to be to only to plant 1 tree every x seconds.

    To give the player something to do during the rest of the year, a new mechanic was added: Research.

    The player has the ability to research an originally infertile ground. The ground is researched for a configurable number of seasons and at the end of the research period, it has a chance of becoming fertile.


    Results

    Even though it doesn't sound like a lot of new things for the player to do, it added a lot more interaction, specially because the player can research every season except for Spring and the probability of failure makes them more invested in trying again.

    This new mechanic had to be considered in the layouts design as well.

    While in the first version of the game isolated grounds had to be avoided, in this new version creating fertile grounds surrounded by infertile but researchable grounds created little puzzles for the player to solve.

    Difficulty also needed to change and the related parameters had to be tuned. On a very lucky try, all of the infertile grounds could become fertile and the game will be over very quickly, presenting no challenge at all.


    Player Feedback





    Problem: What do I do here?

    First playtesters were very confused with the first versions of the game. They would start clicking away, not reading the tutorial on screen and not understanding what to do.


    Strategy

    This was a result of a feedback lacking interface. The tutorial served its purpose but not all players read it before starting to feel confused or frustrated.

    Using some of the playtesters' input, new feedback solutions were incorporated.

    • When in "pollinating" mode (i.e. you are planting trees)
      • Highlight the "usable" grounds (fertile grounds)
      • Add a visual reference to the trees that you can plant each season. And make it very clear when you still have trees remaining as time does not advance while the player hasn't planted all the available trees (but pollution does).
      • Same applies to researching.
    • Re-position some texts in the UI and re-write them to make the actions and effects clearer for the player.

    Results

    These simple changes made new playtesters (that had not been part of the first iteration) understand much faster all the mechanics and what they were supposed to do.

    Admittedly, the UI and feedback can still use more work but, for now the message is delivered successfully.



    Technical Achievements




    • Created a Seasons System that triggered random events each Season and interacted with the Tree's Life Cycle to acknowledge growth and new stats.
    • Created a Randomizer System that considered various visual and sound aspects of the game and generated different worlds each game.
    • Managed point & click interactions that delivered feedback about available actions and the possible outcomes of them.
    • Created a Tree Life Cycle System that acknowledged the tree's age, neighbouring trees and Seasons' events effects modifying the purifying factor accordingly.
    • Events Driven behaviour programming in Unity3D to broadcast the creation of a new tree to all the stakeholders.




    Main Takeaways




    • Even though it didn't become part of the project, the first approaches to the development allowed me to learn about Unity's Tilemap functionality.
    • Limited development time enforced a controlled scope, allowing me to finish a playable project. Most of the more complicated ideas ended up in a nice-to-have list that would further enhance the game in the future.
    • The challenge that came from the need of conveying a lot of information in a simple interface and delivering good feedback was really enlightening and a good lesson for future developments.
    • The final result ended up being a fun and unexpectedly challenging game which brought me joy to share with other people!