carrotcake Blog 🍃

official devlog for carrotcake written by Louis Durrant

Thursday Report: Growing Up

Posted on Aug 27, 2020

A fairly big feature has finally seen its way into The Garden Path – knees!

Mind the jest, but this was something I had been reluctant to include for quite some time, but they’ve proven pretty invaluable.

While certain animations, like running seen from the front, effectively masked the lack of functional knees, I was beginning to lose hope I could make other animations convincing. I had to face the truth that I would need to separate the top half of the leg from the bottom half.

Running as seen from the side, for instance, previously had the legs always stretched fully outward. Try running without bending you’re legs – it’s not comfortable and it doesn’t look comfortable. The new animation better matches the front and back animations, making for a smoother transition when turning.

The use of the trowel was the other key animation that I had to reluctantly admit required knees. While in the previous art-style the character digging a hole from a standing position kind of worked, the newer, likely more true-to-life style, virtually requires the character to actually kneel in order to reach the ground to convincingly dig a hole.

As it turns out, the inclusion of knees, thanks to layer masking in krita, is actually fairly simple. As all base layers in my art files are single-colour with no details, and details are all masked on top, I can split the base layers of trouser texture into two – above and below the knee – and simply toggle their visibility. The details will then overlap creating a fairly seamless joint.

I’ve been using a similar method for tree trunks – trees and legs are really quite similar.

The rework of items into Godot Objects, as mentioned in previous reports, has been the focus of the last few weeks, and things are all finally starting to settle into place.

A brief fear set upon me – that I hadn’t considered whether or not an Object would be saved onto the text-based save-file format required to save the player’s game. If not, this would require the game to break down each object, and build each one back up again, for every save and load.

Fortunately, Godot is sophisticated enough to save everything it needs, and build everything back up itself from the text – saving me a headache!

It’s been a fairly arduous process rewriting a lot of old code to work with the Item Objects, work that unfortunately doesn’t lend itself to pretty screenshots.

It’s something I both didn’t know about when starting Godot, and something I wouldn’t need to utilize giving the smaller scope of the game, so I don’t regret the time spent. It’s all a learning experience. Items and UI were always going to be the two biggest time-sinks in development, but it’s important to get them right, and important to make them scalable for future content. This change will do both.

Otherwise, I’ve been working on fleshing out the gardening itself. Players can now dig up certain plants in their garden and transplant them elsewhere.

While in real-life soil can be either acidic and alkaline, I decided such a direct imitation of the real world is both a little lacking in romance, and also much harder to balance and turn into satisfying gameplay.

So, instead, soil is on the fictitious scale of being either Rich or Aromatic. The (loose) idea here is that deeper, earthier herbs and spices prefer rich soil, whereas more floral and delicate botanicals prefer aromatic soil. While we could debate for days which herb ought to fall where, the important thing is that different soils yield different results. Players may experiment with different levels of each, resulting in different coloured flowers, for instance, and will need to figure out which plants prefer what soil.

Mosses can be added to soil to make it more aromatic, whereas dead leaves can be added to make them more rich. Our friend Buttercup, the mining pig, has the side hustle of selling the soil she digs up to gardeners in need of specific soil-types. Very high scales of either rich or aromatic will result in different, but similarly valuable yields.

Lastly, introducing flowers themselves into the game. While I had previously selected which flowers to include by their practical purposes (ie. whether they can be brewed into tea), I’ve started to expand the selection for the simple sake of aesthetics. A gardening game might feel a little empty without the ability to arrange flowers.

After long internal debate, I’ve decided flower’s growth will be determined by the number of days that plant has seen of a certain season. Some plants will need more days than others, some will bloom all at once, others will be more staggered, some are delayed, and so on.

This is important because players will have a good deal of power when it comes to controlling the seasons. Decisions on what seasons the player casts the garden in will have consequences on what’s able to grow.

As I’ll discuss in a future report, growing the right things at the right time will prove important.

Follow me on Twitter, or maybe even Mastodon.