With the last two devlogs focusing on the main menu, we are finally able to dig back into the “meat” of the game! First up is some improvements to the crafting interface.
The existing crafting system has worked well so far, so in this case I do not see an immediate need for a “revamp.” However, there are some nice quality-of-life items I want to implement based on recent testing. With more items being created over time, the catalog of craftable items has exponentially grown. Even though the GUI is currently able to handle tons of items, the act of scrolling through an extended list of recipes really breaks immersion.
This has encouraged me to divide objects into various categories, such as machinery, advanced resources, furniture, etc… As with most devlogs, we start with the assets which I am quite proud of how they turned out! Here is the mockup of the updated interface:
In terms of the item data, this requires an easy JSON edit. Going through each item in the ItemData.json file, a new category attribute is added and populated. Finally, the magical code is added in to handle the switches between crafting tabs and refreshing the recipe section accordingly. Everything else still functions as expected. One interesting choice I made in the design was wrapping the crafting tabs in a visibility function that other items can call in the world. This means that a basic crafting bench could purposely only display the crafting GUI with the machinery section available. Here is just one example of the advanced reagents
So in planning out future content, we can now choose different crafting stations that either choose a specific crafting category to target or any mix of them as the player progresses. It’s a neat example of clever game development where I was able to work backwards by taking an arguably “overpowered” all-purpose crafting menu, and spreading out that power to better fit progression. This also gives another aim for players who may want a late game crafting station that can handle all types of items.
Beyond tabs, I also wanted to mess around with basic cursor text displays, most notably with the recipe requirements section while crafting. All of the resources are scaled down to fit the GUI, but this also makes it difficult to see exactly what items are needed. To help players out, I added a new text field that floats above the cursor. Any part of the game can call on a special cursor function to display or hide text. In this case, when the player hovers over a resource in the recipe requirements section, it will now show the name of the item! This will certainly be leveraged more with other subsystems, so I’m glad that it’s being added in now for easier development!
New Tent Interiors
Quality of life is great and all, but what about the world? The people? The things that make Echolite more immersive?
I have you covered! This week, the tents that have been sitting in the base camp during most of development finally receive some functionality! Adding interior to tents was a multi-step process, in which I’d like to highlight some of the notable achievements.
First, tent interiors require proper player “teleportation” to reach outside of the established world map. Only the first tent was being leveraged with the first NPC and crafting table for building those features, in which movement was hard-coded. To make this more dynamic, I added logic to the tents to locate which “interior” to connect with, alongside querying that space for the desired start point (i.e. the tent opening/entrance).
This naturally goes into the next bit of work, which is establishing how interiors are mapped out. Similar to the liquid pools (water, tar, magma, etc…) that are generated in the world, I decided to use a similar auto-tiling approach with tent flooring. To keep it extra open-ended, I made basic colored tiles and hand-crafted some layouts. The outer rings represent the boundaries, while the other tiles define the shape of the interior and the location of the entrance. Here is an example layout:
Going back to player movement then, when the player (out in the world) enters the front portion of a tent, it searches the specific layout mapped to that tent to find the entrance tile. This is turned into a vector point and set as the player’s new position. In advance as well, a flooring tilemap is used and auto-tiled to form the remainder of the tent. Here is that result:
These spaces are fairly empty though, leading to many hours of piecing together artwork for starter furniture. I may allow the player to craft these same items in the future, but for now they are solely decorative to fill each interior. Finally, the NPC’s are added into their respective spaces, such as the Librarian, Syvil!
It’s only natural for a game like Echolite to include useable tools! Being in an underground environment with an open-world aesthetic, it simply makes sense. Additionally, we revisit how world generation loads, more specifically the waiting period beforehand and how a loading bar can spice up that experience!
Thank you again everyone for the amazing support!