The core idea behind this game came from thoughts I had when I was very little about needing to water grass in order for it to grow. I always imagined that if we could somehow create “better water” we could watch the grass grow in an instant, rather than needing to wait days or weeks for results.
During the conception of this mechanic I also formulated a story which I considered to be a unique vessel for this idea. A conversation between me and a friend led to one of her family members, who despite getting late into his 60’s still worked as a volunteer forest firefighter. I was also told that even career firefighters were regularly paid middling amounts. I thought: with that kind of career, if you’re not fulfilled, you must have nothing. What must it be like to have that life, but to regret your choices? Perhaps your family wanted you to have a more prestigious career, like a lawyer or a doctor. How would these feelings manifest when this imaginary could-have-been “dream” version of you begins to become more and more prominent in your mind?
In this game you play as the unnamed forrest firefighter, and your goal is to recover your dear dog who has run off into the woods and has been kidnapped by the strange emanating light which roams the area. You are armed with merely your fire hose and are completely unable to jump. While this may sound like checkmate at first, the dreamy landscape you find yourself in has a few unique properties that allow you to make extra use of the fire hose. Namely, the grass grows instantaneously upon contact with water, and can be used as a hard surface to step on or hide behind.
For my goal of creating "better water", I found it was actually the grass that needed to be better, rather than the water. I first went to work creating this “better grass” which I wanted to respond accordingly when contacted by a projectile. I quickly created what was essentially a simple gun which fired a projectile about 10 times a second. I then made a cube whose z scale grew by a very small amount every time it is contacted by my projectile.
At first, I set the grass up to shrink after a certain amount of time while the player is standing on top of it. This specific scenario was initially meant to prevent the player from accidentally putting themselves too high in the air, and by having the grass otherwise stay the same height otherwise, I was hoping that this would create scenarios where the player was forced to think about how to navigate a kind of area before making permanent decisions to the landscape. This, among several other things, would later change upon an influx of feedback.
Next on the chopping block were creating the other targets for the hose. These would be the enemies scattered throughout the woods, and have some kind of projectile fire, so the player was able to take advantage of the “creating cover” part of the grass growing mechanic. Since I would also eventually make killing these targets a requirement, I gave the enemies an emissive color, and had them randomly wander within a certain range so they were easily identifiable from a long distance.
I was having trouble with making the enemy fire an actual effective threat against the player from multiple distances, so I gave them a wide spread shot that was near impossible to dodge at close range, but easier to dodge from far away as the shots scattered - increasing the risk the closer the player gets to the reward. In a vacuum, this would make the enemies completely unapproachable without any means of cover, but by spraying anywhere on the ground, the player now has an immediate barrier they can hide behind to continue their advance.
Now that I had my components functioning inside my zoo, it was time to put them together in a way that playtesters would be able to learn as intuitively as possible. Below is a simple map I made to sketch out what kind of interactions I want to force the player into to better understand the game.
1. Player start
2. Forced pit entry, player is now stuck until they understand how to escape with the grass growing mechanics
3. Introduction to both fire hydrants and water susceptible crates, similarly to the first pit, the player will be unable to proceed until they understand the player cannot push the crates, and instead need to shoot the crates to get them to go away.
4. Sun “cutscene” - establishes the sun as your goalpoint and an enemy
5. First combat encounter, player is forced to use minimal environment as cover to dodge spread shots. If player does not use environment to block projectiles, they will take damage and be sent backwards. Player can only proceed by ducking behind cover and then revealing themselves when the enemy is in cooldown. The player’s hose range forces them to put themselves at risk within the enemy’s range and spraying the enemy until they are destroyed.
6. Second combat encounter, this time with no natural cover. Player must create their own cover by spraying the ground in order to not be sent backwards by enemy fire.
7. Checkpoint and break from tension and establishing ways for player to complete their newly established goal. Also establishes this point as the goal point once several medium term goals are fulfilled.
8. Player is now encouraged to explore the forests for medium term goal points (enemies). The player will be drawn to the various points by light emitting from the enemies throughout the dark woods.
8a. This enemy will be mobile and weaving around different trees in a more dense part of the forest. The player will be forced to both chase and evade the enemy, darting from tree to tree for cover, and chasing down the enemy during cooldown. The player will find that growing the grass for cover will take too much time before the enemy darts off again, so the player either has the option to just chase down the enemy to nickel and dime it, or use the grass in order to block off paths the enemy would want to travel in order to corner it and take it out in one fell swoop.
8b. This enemy is surrounded by crates in a way that the player must content with, as the more crates the player destroys, depending on the crate, the player is either creating a line of sight for enemy projectiles to pierce and hit the player, or bringing the enemy and the player closer to each other if crates below the enemy are destroyed. (When the player is significantly below the enemy, they are in effect safe from enemy fire since they are in a projectile blindspot)
8c. This enemy will be on an elevated plateau of grass quickly moving around in a circle and firing, moving far too quickly for the player to shoot at normally. The player must watch the pattern on which the enemy is moving and block off part of the path in order to corner the enemy. If the player attempts to stay on top of the plateau and whittle down the enemy’s health, there will not be enough space to both create cover and get a good angle at which to fire.
8d. This encounter will be with two enemies simultaneously, each one tucked away in a cubby that only allows for one angle of attack. These enemies are placed across from each other so that being at the angle to hit one enemy guarantee puts the player at risk of being hit by the other enemy. Players will find the most success by blocking off the window of one enemy and then ducking and emerging to fire at the other one, paying attention to the status of the grown grass to make sure it’s still blocking off the enemy fire, and regrowing the grass if too much time has passed and the grass has shrunk.
9. Once the player returns to 7 and retrieves the sunglasses, this final section takes place over the entire level, as the player will now see that the sun is far weaker and slower and now must chase it around the level, moving around different spots it will travel to and spraying it until it's put out.
After I turned this project into a “completable game” I had a few of my friends play it for me to see how well I did. While they were able to complete the game (once I multiplied the player’s HP by ten), several things cropped up as issues, and several suggestions were offered. First and foremost, my friends found aiming precisely to be very difficult, especially when it came to firing at the grass just below the player’s feet. There were a couple potential solutions to this, ranging from creating a traditional reticle, to highlighting whatever blocks were being aimed at, to making the grass blocks more distinct from one another.
The second biggest piece of feedback I received was how the grass blocks would not shrink by themselves. I made the grave mistake of assuming players would be thinking about their actions, when at every turn they boxed themselves into a situation they could not escape. Making all grass blocks automatically shrink back to base size was the next clear change. Another smaller piece of feedback pertained to the feel of the hose itself, mainly that it didn’t feel “heavy” enough. After considering several options, I chose a combination of making the water spawn about a third of a second after the player hits the spray button, and forcing the player speed to be half of what it normally is while the hose is on.
The piece of feedback I spent by far the most time on was communicating the player’s aim better. For this I chose to both make each grass block more distinct from its siblings through texture and to create a highlight system to show the player which block they are aiming at. Eventually I had a system where while the player’s camera is at a certain angle, the game will simulate the hose and check where the water would fall (since unlike regular shooters, gravity’s effect is much more pronounced on this projectile). Then, the “hit” block would change to an emissive yellow color, and would stay that way until the simulation hit another block. This proved to be a massive improvement, and it was now much easier to make intentional decisions when it came to aim.
Upon further playtesting, the tasks and goals were much more easily understood and executed by testers, and I was very satisfied with my progress. Several things remain however, and I hope to workshop them in the future. The first and most obvious thing is how the project’s state is still closer to that of a toy rather than a game. It is technically beatable, but the mechanics are nowhere near as explored as I would like them to be. On a more granular level, there have been some inconsistent collision issues when the player is colliding with a separate surface while rising on top of growing grass. This has gone so far as causing drastic issues, making the player character despawn altogether, for reasons which I still have absolutely zero understanding of. The grass shrinking function proves to be continually buggy in multiple ways, as shrinking grass will both randomly pause in the middle of a shrink and then continue as normal, or shrink slightly too much into the ground, causing what should be level ground to be strangely uneven. On rare occasions, grass blocks will disappear entirely.
Overall, this is a concept I’m very fond of, and one that I wish I had more time to dedicate to. There are dozens of different ways I imagine expanding on grass growing and the ways that enemies or obstacles could interact with it and I will definitely return to this in the future.