v0.3.0 Housekeeping

Hi Everyone,

 

I'm back from the dead. My last post was well over a year ago, announcing v0.2.0.

v0.2.0 was a bit of a mess, strung together to make nice looking GIFs and screenshots. The code was an absolute nightmare, and there were some fundamental problems with my engine that really worried me about the reality of this becoming a game. It became really daunting to work on, and I ended up falling out of the project entirely for a few months.

 

During this lapse in progress, I was able to spend a lot more time making pixel art. A lot more time writing. A lot more time with the piano. A lot more time playing other people's games. It was a needed reminder that I was making a video game because video games are made out of the things I enjoyed doing, not the other way around.

So, here we are. Version 0.3.0, and its quite the doozy. Grab a snack because this is going to be a long one.


Highlights 

World Design

We have a new town! The town design has been fleshed out pretty well now, though it looks rather incomplete here. There is still a lot of art to go.


The town is the first region in the game. It is accompanied by a small forest seen to the left. The small forest will serve as a "tutorial" region to learn the basics of brewing and combat before gearing up for a more dangerous region. The small forest will serve as the focus of the next update as I focus on aesthetics.

I want regions to have a very Zelda feel to them, with lots of moving back and forth between different regions, acquiring new solutions to previous obstacles, and slowly unlocking new areas.


Visuals

 Art Rework

Much of the art has been reworked. Tiles used to be 12x24px for some reason. They've been upped to 32x32 (16x32 foot print). This allows the tiles to have a bit of depth and has really allowed me to condense sprite sheets. I've also re-visited the art style, developed a palette, and added a ton of new art:

  • Improved Trees
  • Shrubs
  • Grass
  • Buildings
  • More detailed tiles
  • New Prop tiles
  • Forest outline tiles
  • Water Tiles
  • Flowers

And of course, I had to embark on a side mission to add in procedurally-generated flower patches:


Menus

The game now has a main menu. Its a bit barebones for now, but there is a working inventory, and tabs for future items, gear and player information that I plan on adding.


 

Brewing

 Brewing, the main point of the game, also got a huge makeover. It has some pretty menus, and under the hood is a really solid framework for making potions in the game. Brewing has a lot of work to go, and you can expect a more dedicated post to it's inner workings once I'm ready to share.



Under The Hood

The code was almost entirely reformatted, which improved performance dramatically. The game always ran with ~60 FPS, but there were still frame drops, and that was with some limitations on my end like limited collision entities and a 100x100 max size for tile maps. There was no way it would've been able to support future features. With the refactor, I've reduced CPU and memory usage by about 80%. This is also helped by the full support of threading and coroutines.

IYKYK

These huge performance gains have allowed me to make maps enormous. I'm currently limiting regions to 200x200 tiles for maintainability.

Maps used to be limited by the tile sorting algorithm. Something I haven't discussed much in this blog is how tricky it is to work with isometric tiles in 2D space. Since tiles are essentially 3D objects with height, width and depth, projected into flat 2D textures, they behave non-intuitively in a 2D game. Tiles need to be sorted front to back, but, large tiles (buildings, big props) can sometimes be simultaneously behind and in front of objects with the same "sort value". I made a quick example of what I mean:
 
Notice that both barrels have the same position on the Y-axis, however, the blue box is in front of one but behind the other. If I were to sort solely based on Y-coordinate, this would look broken.
 
Lots of math was involved, but I managed to get these tiles sorted correctly with an implementation of Radix Sort that makes this happen in essentially O(n) time.
 

 Future Plans

The next update I am working on, v0.4.0, will be a big aesthetic upgrade. I can't make many promises about the details, but I plan on integrating a new lighting system and implementing some animated tiles.

I'd also like this to include other fun environmental effects, like various critters running around, birds, clouds, fog, etc. We will see just how far I get.

 

 As always, thanks for reading!

- Nick

Comments

Popular posts from this blog

First Post

v0.2.0 A Whole New(ish) World

March Update