Friday, December 29, 2023

Faire Hollow Dev Log #6 - Impatience!

It's the little things...

The player now blinks randomly every 3 to 6 seconds, and after a 15-second delay displays an "impatient" animation. This stance (with the tapping foot) always reminded me of Sonic :gdsonic: 

I've also added a color palette swap shader to the butterflies, to change their color between one of four different colors.

(I also cleaned up the code base to utilize some improved custom classes, and the state machine is now more stable.)

These little details give life to the world! 

Saturday, December 23, 2023

Faire Hollow Dev Log #5 - Clothing and Colors

Happy Holidays to everyone! To kick off Christmas break I've been busy at work this morning giving my player some clothes 😊.

When I started work on this project I knew that I'd be implementing a "paper doll" system to layer on the player's clothes, hair style, etc. This is a pretty typical approach to 2D pixel art-based game development. The idea is that you introduce layers onto the player sprite, each containing another layer of clothes in a png, with a transparent background. By adding all these layers one by one, you are able to control each element individually.

I had begun this process a few days ago, but I quickly realized that if I were to try to add each layer of clothing in the four directions, with the four active and four idle states, that the animation player timeline would quickly become unmanageable. The breakthrough this morning was that I removed all the individual sprite references in my animation node, and replaced them with actual function calls to the player script. In that script is where I then cycle through the different sprite frames, depending on the orientation, and flip the horizontal axis as-needed. For good measure I also timed the footstep sound with the corresponding frame. (I love Godot's animation node!)

And that was all fine and well, and I managed to get the player clothed this morning (hurray!), but there was one other thing I wanted to accomplish, and that was swapping out the color palette using a shader. The artwork that I'm using, by Seliel the Shaper, is absolutely incredible. The Farmer Sprite system that they have built comes with a "color ramp", containing various color spectrum choices that I can use to decorate each piece of clothing, hair style, item, etc.

The end result is this video! Take a look!

Separately, I've begun the process of creating a "Coming Soon" page on Steam. There is a $100 fee, which I've paid, and a pretty vast checklist of items to complete in order to get my game page submitted for review. The most difficult part of the process, in my opinion, are the Steam "capsules", which are essentially little ads that show off some game art and display the logo of the game. This is what I'm working on next!

Saturday, December 16, 2023

Faire Hollow Dev Log #4 - Spaghetti Code

It's been a busy few weeks! I've spent these past weeks refactoring some "spaghetti code", based on things that I've been learning about the Godot engine. The overall impact is now that the code is quite a bit cleaner and less interdependent on itself: nodes have fewer dependencies on one another, and the code is overall less fragile. And I feel like I keep learning how to do things better!

Godot has a concept of "signals", which allow any single node or code snippet to send a global message to any other script that's listening, saying, "hey, something just happened!". Any code can subscribe to listen for those signals, without needing to worry about how or where they originated. This means, for example, that I can update the date label at the top of the screen whenever a signal is fired indicating that the date has changed... and it doesn't matter how the date changed.

But like all things in programming, it's been a bit of two-steps-forward/one-step-back: for example, I experimented with an add-on called StateCharts, to replace my homegrown state machine for the Player, handling input around moving in 8 directions and standing idle in 4 directions. Ultimately I ended up ripping StateCharts back out, because I realized it was adding a lot of bloat for something that was working just fine. So there went a solid week of after-hours work. But in the process I learned a lot about state machines!

Some other updates:

  • I've introduced a versioning system. (We're on version 0.0.2!)
  • I reimported many of my 2d assets and reorganized the file structure.
  • I am more strictly typing my variables and functions, to prevent future errors.
  • I updated the engine to Godot 4.2.

Finally, I want to give a shout-out to my collaborator, Ewan, my 8-year-old, who is my new art director 😁  He has created an animated pixel art butterfly, which is now in the game flying across the screen! Ewan has been learning about pixel art and using Aseprite, a pixel art editor. He's getting really good -- he has a natural eye for this stuff!



Faire Hollow Dev Log #11 - Official Trailer

I am thrilled to share the official trailer for Faire Hollow! This has been a month-long effort to create just the right combination and var...