Posted October 08, 2021 by Lunarium Works
Welcome back to Day 7 of Devtober, in which building a highly modular system is hard and I inch closer to insanity.
An entire week of Devtober has rolled by, and I gotta say, I've been pretty happy with my progress so far. While I still have a ways to go until I catch up to the demo version's mechanics, progress continues to be made, inch by agonizing inch.
Good news, I'm pretty much done with the striking mechanics now! While smithing as a whole still needs a few things to be finished (namely, the ability to actually finish smithing by comparing the grid to a pattern), the basic mechanics are, for the most part, done. On the other hand, it means that I'll have to go delve into the hell that is creating the set of base features required to support the rest of the features I plan to implement in the future. Not many demo videos or screencaps today either, as most of the mechanics implemented were minor enough not to warrant a full demo.
Today I implemented the "punch" action, which allows voxels to be deleted if you happen to misplace one or make a mistake while shaping it. To perform a punch, simply perform a precise strike on a voxel while it is over the "pritchel hole," the round-ish hole you might see near the end of an anvil. In real-life blacksmithing, it's meant to provide clearance for the "pritchel," which is a kind of punch typically used for making nail holes in horseshoes. Of course, the way it's being used in Voxelsmith is a bit different, but I think as an abstraction, it does the job well. In the future, I'd even like to spice things up by having the voxel physically detach and fall through the hole when performing a punch.
Among the smaller features also implemented are the "subvoxel mode" for smithing, allowing the player to toggle between targeting voxels or subvoxels, a set of bounds for both the anvil and grid movement, as well as camera zooming. Basically, smithing actions can only be performed on target voxels within the blue grid visible while smithing. Voxels outside the bounds may still be affected by the action's area-of-effect, but the initial target must still be within bounds. And of course, the grid movement bounds simply stops the player from moving the grid too far from the anvil.
And as for camera zooming, it will allow the player to freely zoom the camera in and out while smithing, which should be useful especially when in subvoxel mode. While implementing this feature, the thought actually occurred to me to actually let the player freely rotate the camera about the anvil, as well as tilt it. In my initial design, I had forgone the route of moving the camera as it had made figuring out the proper reference vectors to use for targeting voxels too much of a pain, but having learned a lot more since then, I think it'd be both feasible and worthwhile to switch to a free camera system somewhere down the line.
Anyway, now that smithing is more or less done for now, the next goals on my itinerary are the forge and pattern mechanics, after which I'll have finally "caught up" to where I left off from the demo version of Voxelsmth. Unfortunately, in trying to implement these mechanics, I've realized that I'll need to first implement a boatload of other features first in order to properly support them.
Chief among these being an item and inventory system. Since Voxelsmith will be a first-person simulation game, most item manipulation and storage will be done in-world rather than through the use of magic inventory screens. Players will have to organize their own workshop through the use of various furniture items such as shelves, tools racks, mold racks, drawers, and chests, as well as dynamic means such as ingot piles. This means that as item requirements and consequently storage requirements rise, the player will also have to develop a proper storage system to maximize efficiency around their workspace. Hopefully, this should lead to workshop customization becoming a lot more intimate a process as the player comes to know it like the back of their hand.
This ties into my new plans for the forge, and by extension, the rest of the workstations by giving them an internal inventory of specific item types. Forges, for example, will be able to hold a number of smithing grids, ingots, or crucibles at the same time. Compared to the demo version of Voxelsmith, I've chosen to simplify the heat system this time around, making it so that all items in the forge heat up at an equal rate no matter where they are placed, and that smithing grids will maintain a single heat value rather than each individual voxel. I found that having to babysit a grid by manually dragging it around the forge area to heat it evenly just wasn't as fun as I had originally envisioned, and so a more simplified version was introduced instead.
Well, this has turned out to be yet another dense devlog on Voxelsmith's game design, though I've started to enjoy posts like these. Though today didn't have much in the way of tangible progress to show, I hope this behind-the-scenes look has done well to demonstrate some of my thoughts going into Voxelsmith's design process. In any case, I hope to finish up the item system by either tomorrow or the day after, so stay tuned for future demos!
Anyway, that's about it for now. 'Till tomorrow,
- Ian, Lunarium Works