
I’m a little before the end of the month, but my week is shaping up to be busy so I thought I’d get this out. Really, I just want to talk direction and scope of a beta branch for the game.
For those unaware, Steam has a way to make what is called a branch for a game. This can be used for any number of things, but in this case, I want to use it for the new version of the game. What this basically does is allows for users to keep the current game as is and then also let’s them switch their install to this other branch. It’s a bit tedious to swap back and forth but I’ll probably make a sticky on how to do it in the forum once it is live so people can refer to that if they need to. I should also mention that switching shouldn’t remove saves. Saves don’t transfer between versions but you should be able to move back and forth without losing anything.
The main thing I want to talk about is scope. This is likely going to be disappointing cause believe me, I’m well aware that it’s been around 2 years now. Originally, my plan was to try and stuff as much as I could into this version before going live with a beta. I wanted to avoid showing up with a new version that lacked components of the old version. I didn’t want it to be seen as a massive step backwards. The issue with that is, it’s a lot of stuff, along with changes to many things. So, in an effort to speed the process I would create a system to the point that it was mostly done, but perhaps needed a few tweaks, pieces of art, etc. In a word, it looked sloppy. Mostly functional, but missing any sort of polish and quality control.
I’ve been thinking as I’ve been working in the past few weeks, and I came to a secondary conclusion as well. The idea of this beta has had tons of scope creep. For those unaware that means you start a project with an intention in mind, but then as you work that idea grows and grows becoming more and more work. Part of the reason nothing has happened in two years is because I just kept saying “oh just one more feature before I go live with this” and “oh I can’t possibly go live without x”.
In order to avoid all of this I want to simplify. Not the overall game, just how I’m going about this. I’m not planning to drop features, but I want to have visible progress to show rather than leaving this game to sit dead on the store. So, my plan is to effectively section things off. There are certain systems that are already written, but not quite done. I’m going to exclude access to them and create temporary stand-ins for other things I can’t get around gracefully yet.
My current plan for a go live is literally just the player farm with the ability to plant and grow crops. As I said, that probably seems underwhelming, but it’s meant as a starting point with the intent to iterate on it with more systems at a hopefully rapid pace. I should probably mention that when I say just farming, here is a rough list of all the systems involved to get that functioning. I only mention this to give some insight into how getting just something a person can play even with just one system requires a lot of random stuff.
General intro screens (title, character select, loads, etc)
A structural save system
Character movement
Tool use
Stamina
Inventory management
Tooltips
Player chests
Time cycle
Sleep
Seasonal iteration
Day/Night lighting cycle
Crop manipulation (planting, watering, harvesting, growth time, withering)
Shop mechanics
Shipping chest (selling items)
Actual creation of the game world
Everything with trees since they exist on the farm
Audio engine
Make all of that work in multiplayer
I don’t mention all this as a “Woe is me; look at all the work.” I like doing this, but I guess I’m trying to justify myself a bit and explain that there’s a bit more than just plant seed, harvest crop. I don’t know that I even expect anyone to play this raw of a version. The purpose of doing this is that I will no longer have an excuse of “Just one more feature”. It will turn into the idea that once I have something done I will add it, and the game should just steadily grow rather than people waiting for some arbitrary time when I finally deem it ready. This is probably how I should have done things from the start of this rework but what can I say, I’m always learning new things.
I think that’s mostly it for now. I have a few things that I want spruce up and I need a few pieces of art before I can move, but that hopefully won’t take long. For instance, the audio engine is currently non-existent. Given what will be available though there won’t be many sounds to add at this point so it should be fairly simple.
In any case all that aside, despite the fact that much of it won’t be available right away, below are all the things that were done this past month loosely categorized. I should probably also mention that legacy code just means I had already made it, but I went over it and spruced up the code. I should also mention a few things were omitted because they didn’t pan out, for instance random mine generation. There are also things that just aren’t relevant for the player that are excluded, like working on a tool to allow for character customization or drawing up plans for several systems.
Multiplayer
On-demand room sync on every transition, remote-player visibility, position/action broadcasts filtered by shared room.
Joiners spawn at their own last position, not "beside the host"; spawn-collision failsafe added.
Room-transition polish, players will walk out of the room rather than pausing at the transition point
Host-disconnect detection built
New "individual vs shared gold" world setting, choosable only from Host New World.
Items on the ground sync between players and act appropriately
Mining-node damage, bush uprooting, tree-fall direction all made multiplayer-consistent
A number of miscellaneous bugs fixed
Shop / Chest / Placement systems
Shop system was implemented along with item quality scaled buyback
Object placement/dismantle system rebuilt on per-room data + networking
Chest system fully migrated from old code and made to function with multiplayer allowing players to simultaneous interact with any chest
Resolution
Constructed a more robust system for allowing automatic scaling across various monitor sizes.
Tool Use
Shovel charging built and confirmed working.
Shipping Catalog
Rebuilt sell list in shipping chest as a list rather than an inventory grid.
Ensured that sell list abides by individual and shared gold in multiplayer
Rebuilt shipping catalog allowing players to order any number of items and monitor how long until they arrive.
Sleep System
Recreated sleep system from legacy code.
End-of-Day Recap
Fully rebuilt from legacy code. Currently only displays player profits from that day. Also confirmed to work and act as a sync in multiplayer.
Building System
Carpentry shop rebuilt from legacy code
Player is allowed to build structure of their choice
Buildings spawn and build over their designated duration
Buildings sync across multiplayer sessions
Title Screens
Redesigned entry screens to create a more compact system, less screen switching.
Tooltip Rebuild
Rebuilt tooltips from the ground up to be more consistent
Confirmation Prompt Rebuild
Rebuilt prompt system in the game to be more consistent with the UI
Lighting Overhaul (Still in progress)
Day/Night tint and light shift has been rewritten to be a pure function of clock time. (more stable)
Dynamic shadows on entities such as trees, buildings, the player, etc.
Lighting enhancements to create a more robust and deep lighting system