Devlog! Devlog devlog devlog…
Should have done this last week, but oh well, lots of things to talk about.
So last week I came to the conclusion that full-on Minecraft style block placement doesn’t work very well from a top down perspective. I was quite torn on this, as having a high level of creative freedom is very important in the design of The Long Project. The problem was that visibility and placing of blocks from the top down worked fine for a single layer, but once the third dimension was added to the mix it became very hard to keep track of what you had placed where, or where you should place your next block.
I had two choices. The first option was to drop down to a first- or third-person view. I know that configuration works in Minecraft, so if I wanted to preserve that level of creative control over the environment that would be a good (if derivative) route to take.
However, I was loathe to give up the top down perspective. At the core, The Long Project is a fortress/city sim game over an individualistic sandbox. As the overarching director of your crew’s lives, you should have minimal presence, instead relying on your crewmembers to follow your orders. Controlling from a top down perspective reinforces the fact that you are separate, different from your crew, as well as keeping you focused on the big picture. So how do I keep the top-down aspect while still allowing creative freedom?
In the end, I decided to take a page out of the Dwarf Fortress book (cribbing on design decisions being a long standing game development tradition) and separate everything out into “floors” and “walls”. Floors are one block deep and currently 4×4 blocks wide (though this latter part will likely change), and placing them places a counterpart roof block (which can act as the floor for the next level up). Walls are 3 blocks deep and 1×1 wide. I’m building everything on Minecraft scale, so players familiar with that will be able to transition easily. This means that crewmembers, like Steve, are two blocks in height. Having three blocks between floors gives a little extra room so it isn’t all too crowded.
Overall this setup is working swimmingly. Creation is a lot easier and really encourages the creation of rooms over more abstract spaces.
In other news, I’ve started working on implementing crewmembers. The first baby steps were taken earlier this week when I got a crewmember to pathfind from point A to point B. Yay! I originally had plans to use an off-the-shelf solution for pathfinding, as my surfacer can get the data need for a navigation mesh very easily. However, none of these solutions seem to be very good at working in an environment that changes arbitrarily at runtime. I’ve ended up implemented pathfinding myself, which has turned out to be a lot easier that I thought it would (protip: reusable code is good code). As an aside, I would like to put out an hearty recommendation for the iTween extension for Unity. Really good stuff.
Next up is getting the crewmembers to building things!
Ninja edits: I totally did not mess up the date when posting this. Honest.