Sprout Scout

Goals

  • Combine what I’ve learned in Godot to create a complete game experience, start to finish.
  • Learn about puzzle design. What goes into satisfying solutions?
  • Balance across all levels to achieve a steady progression in difficulty.
  • Export a web version of the game to publish on itch.io.
  • Submit the game to the GameJam (Pirate Jam #14).

Mechanics

Sunlight

  • The player radiates sunlight which will attract branches within its radius.
  • The player can toggle the sunlight on and off.
  • The sunlight will automatically toggle back on after travelling a certain distance.

Branches (“Frenemies”)

  • Branches will grow towards the player’s sunlight.
  • Branches will decay and reset if they do not receive sunlight after a few seconds.
  • Branches will dry up and reset after having grown for a certain amount of time.

Clones

  • After picking up a clone, the player can shoot a projection of themselves in a targeted direction.
  • Sunlight emitted by clones will attract branches as well.
  • The branch will favor the player’s stronger sunlight over the clone’s sunlight.

Forking branches

  • Upon making contact with thorns, branches will split into two ‘forked’ branches.
  • When forked, the branches will briefly travel in an arc pattern before rotating back towards the player.

What could be improved?

Accessibility

Regrettably, the default (and unalterable) key-bindings were not intuitive to many players. The most robust solution would be allowing players to rebind keys, since there will never be universal preference. In addition, some mechanics may be more difficult to understand with color blindness. Switches have different functionalities based on their colour, and clone vs player sunlight is subtly distinguished by colour as well. Having visual indicators that don’t rely on colour distinction may be preferable.

Framerate-independent physics

Depending on the game’s framerate, it may become impossible to complete levels. This is because my published implementation has the branches growing as a function of the framerate; if the framerate is too low, the branches won’t reach far enough before the automatically decay and reset. The fact this dependency on framerate exists at all is a byproduct of being shortsighted during development - I never considered how my game might run on less than 60 FPS. An improved solution would be to refactor the branch updates to use delta-time instead of constants (which I originally adopted to fine-tune to growth rate of branches).

Tutorial

While I personally love plunging into games and figuring them out on the go, I think having an optional tutorial would be nice. A few levels where all the player has to do is move from point A to point B would allow them to internalize how the physics feel.

Reflection

Puzzle design

Designing puzzles was hard work - but I am definitely going to design more puzzles in the future! It is so satisfying to try and come up with possible “AHA!” moments for the player. I learned about different puzzle-design approaches; for example, creating a matrix of mechanics to examine how each combination might interact, or purposely misleading the player so they can later ‘realize’ the true solution. The most valuable lesson was to minimize ’noise’ by reducing visual clutter, in order to keep the core of the puzzle as clear as possible.

Sharing the game

It was eye-opening to watch my friends play the game and see how they approached the game differently. I realized just how much I practiced the game when manually testing it! Some habits of mine created blind spots, such as my habit of jumping constantly which avoided janky branch collisions.

Based on player feedback, where I fell short was actually the very first level. Players were able to advance to the second level without interacting with the core mechanic of the game at all - if they bravely charged forward past the first sapling. I had no idea that so many players would find it natural to brute force their way forwards, but in hindsight it makes complete sense.