carrotcake Blog 🍃


official devlog for carrotcake written by Louis Durrant

Thursday Report: Find a Way!

Posted on Oct 25, 2018

The playable character got a slight make-over, including smaller, more manageable ears and blinking eyes. It’s a nice touch that certainly makes the character feel more alive. The plan is that these features will easily be swapped out based on future customization options.

I’m somewhat averted to the idea of a character creator. I have a habit of spending far too long in them, when at my core I would love to dive into the game itself. That said, I don’t see it as something I could completely do away with — something static like skin colour might have be selected before entering the game. In theory, the character should both be potentially male or female, or anywhere in between depending on the player’s wishes. Hairstyles will help give the player the option for the character to appear more or less feminine, for instance, without the player feeling locked out by a creation screen.

The existing face is still very boyish, so I’ll need to decide if this is something the player can change, or something to homogenize.

New backpack layer is a fun addition — lots of possibilities for this slot that the player could customize and wear.

A rustling sound effect gives the backpack a sense of weight and place.

A bug I had trouble with, but didn’t share (because it looks terrible), is that characters would pick a point to walk to, and then do so regardless of whatever obstacle might be in their way. This meant characters would often get stuck against trees, or other impassable objects.

I toyed with the idea of having a zone around each impassable object that once the NPC enters, would stop, think, and redirect themselves.

Instead, I currently use a ‘Ray Cast’ node. This creates an invisible line between where the NPC is, and where they want to go. Should this line pass through any object that might potentially block the character, the character will then decide on a new location.

I think this works well because the effect is virtually instantaneous. It means that, instead of having the character walk up to a tree and realize there’s a tree in the way, they simply won’t choose a path they can’t get to. I think this seems more natural.

The NPCs do still walk into the player character like it’s nothing, continually plowing through like no tomorrow. The solution isn’t so simple here, as the Ray Cast can cover a very long distance. Ideally, the character would stop (not change direction) if the player gets too close within a certain radius, and is actively blocking their path.

A bug that had plagued me for some time was that if the player filled a small hole, all holes would be filled across the map. The hole is essentially a sprite that looks like a hole with an area surrounding it telling the game — ‘this is a hole!’. The command to remove a node in Godot is ‘queue_free()’: queue the node to be removed from the game once it’s ready (not affecting any other part of the game).

Once the player emits the signal that he wishes to fill the hole he is in front of, all holes would fill. Signals are global, so this makes sense.

All holes across the map were receiving the same signal. ‘self.queue_free()’ produced the same result, and finding the exact name of the specific hole (Godot keeps unique names of all nodes) and calling that to remove did not work either (still unsure why).

The solution was obvious, to check the distance from the player and the hole. The the hole is in range — remove this hole. If not, leave it be.

The animation is still absent, but this puts me back on track for working on the action system throughout the game.

Amusingly, I still have similar a bug where engaging with one character in conversation will lead to all characters in a certain radius joining in on the conversation.

Hey, at least they’re keen.

If you like the look of my work, a great way to support me right now is to check out my adventure games, currently both 75% off on itch.io.

Follow me on Twitter.