Developer postOriginal post (opens in a new tab)

Verdant Village News #4

I’m back, and still unsure of how I want to handle updates, but I figured the old method will work for the moment at least.  I’m not going to commit to once a month or something because this is a little on the fly, but I’ll try to keep some sort of frequency up.  The very short update is that things are going well, certainly speedier than before.  Things could perhaps be faster, but I prefer to keep processes on a leash.  I’ve already had to catch and correct certain things along the way, but overall, I’m still moving much faster.

As for the details I should probably start with the big one first.  Some of you who have been here for a while may have heard me talk about multiplayer and how it isn’t going to happen because it would involve gutting basically the entire game.  Right, so turns out AI is pretty helpful with that sort of thing.  I was already doing a basic retrofit for everything I’d written and about two days in I thought to myself, ‘well I have no excuse now’.  I wanted to do it; it was just always such a huge undertaking I didn’t think it was worth it.

This actually hits on a point I probably didn’t express before, but it’s something that I want to mention.  I know AI is a touchy subject even for coding.  I don’t want to restart that chat because it might never end.  That said, while I’m not particularly keen on AI I will say one thing.  For coding it gives much more breathing room when it comes to designing systems.  It’s no longer an excuse to say ‘that would take too long’.  There is still some amount of time cost involved and as a dev I still need to know how to do something to inform the AI.  For the most part thought I feel that few features are beyond me at this point when it comes to pure conceptual code.  Networking for example is something I very much understand conceptually in terms of how to make it works and how to make it efficient.  However, if you asked me to write it out myself it would have taken quite some time to do with all the googling and trial and error, not to mention having to remake basically the entire game on top of that.

I bring this up to hopefully soothe some concerns about the application of AI here.  I guess I just want to hit it home that this is a tool I want to use to genuinely improve this game to make it even better by doing things that I simply didn’t have the time to do before.  Obviously, there is still game direction to consider (I probably shouldn’t add a third person shooter section to this for instance) but I think multiplayer fits nicely into the gameplay.  In short, it’s a tool to be used properly, not an easy button, but I’ll get off my soapbox now.

So back to multiplayer.  So, what does that mean?  Well, that’s sort of why I’m here.  I have a general idea, but it’s fairly loose.  So I thought it might be good to ask players and see if you all know any pain points, things to avoid, things you’d like to see, etc.

To give the basic scope, currently a player can host their world whenever they like.  They can also take their multiplayer game offline if they like and play it solo, its all seamless.  Hosting does work through steam at the moment, but there are plans to make it independent eventually.  Especially if this were to go to console at some point.  So, you can host your world, friends can join.  Players can drop in and out on a whim.   I’ve limited it to 4 for now but that number could likely be increased fairly easily (8 for stardew always seemed like overkill to me, maybe I just don’t have enough friends).  The game is intended to play mostly the same.  There will be some balancing to pricing and things, but otherwise it should be fairly similar.

The general concept I have is keeping the players separated but the world joined.  What I mean by that is certain things you might expect like inventory, gold, skills, will all be local to the player.  The larger world is planned to be shared.  For instance, quests would be a group task where you only complete it once and everyone gets the rewards.  Things like learning recipes for cooking, alchemy, etc would all be shared I think.  I’ve been thinking about the main story and relationships and the best I’ve come up with so far is to share the main story and side story conversations, but lock further relationships (dating and marriage) to individuals.

So basically, the story treats all players as the same person, but if you choose to romance someone that would be individualized and only one person could romance an NPC.  I assume it will also be possible to marry other players cause that’s a fairly obvious thing to do.  As for the story I could allow each player to do it separately, but it would be sort of weird and actually I think it would cause some sync issues eventually.  Instead, it sort of works like old games with coop where there are multiple players during gameplayer but in the cutscenes its just the host.  An easy example for something like this is something like Halo co-op.  Aside from that I think I’d have an item or mechanic that basically lets any player rewatch cutscenes on their own and it will use your player instead of the world host during the scene.

This also gets into character customization because as you are all probably aware at the moment you really just get male or female.  I don’t want to overpromise on this because it’s one of the real issues I’m trying to sort through at the moment.  My artists are currently colluding.  There is planned to be some level of customization for your character.  I’m not sure how much because with how many frames and general animations the player has producing alternatives is basically a nightmare.  As I said the artists are thinking.  At worst you would probably get shaders for clothes, skin, hair, etc and a few different hairstyles.  Like I said though this is all in the works.

For other things, houses would be separated if you choose, probably a cabin system similar to stardew or you can all share one house.  Sleeping I’m not 100% on, but I think the compromise is basically when one player sleeps the others get an option to idle in place while the sleep timer quickly moves ahead and maybe they get some sort of half stamina recovery.  Or you can continue in real time in the case where the other players are also heading to bed but haven’t gotten there yet.

Combat would be shared as well so you could help each other.  That’s another system I’m deliberating on because why stop now, but I’ll come back to that at a later date.  The mines would also be shared regardless of what they turn out to be like, I’ll come back to that in a minute.  Basically, it should be a fully shared world with the only current compromise being story.  As I said at the start however I’d be curious to know about any concerns or requests for this sort of thing.

To move on to a different topic I’ve been thinking about the mines.  I’ll try to keep this brief.  The current version of the mines in the live version is semi random.  The rooms are templates and they get randomized dressing to make them feel a bit different each time.  The focus for that system was exploration.  Basically wandering to find the next floor or looking for minerals.

The version I’ve been working on was basically the opposite.  Just a few large handcrafted floors with more of a focus on developing the mine floor and opening it up.  You’d start off with a small area but be able to break into other areas, light up certain places, repair certain things, etc.  It has more depth I’d say but at the cost of it being a one time deal.  Once you do things in the mines they stay that way and repeat visits become about getting minerals.

I’ve been contemplating for a bit and I think I may have a compromise on these ideas that I like more than either of them, but I’m open to opinions.  I’ve been doing some looking into algorithms relating to random tile generation.  I’m already fairly familiar but I’ve learned a few things.  The idea I have at this point is to have each biome be a single floor.  That floor would consist of a grid of rooms similar to what exists now, say maybe 5x5.  Those rooms are randomly generated and connected together to keep the exploration element.  Then I add in more details, things that are permanent to the floor.  Obstacles, light sources, ore veins, treasure, maybe gated switches.  Nothing that requires any real puzzle solving but enough to give the mines a bit of flavor besides just hitting rocks.

The rocks in the mines would probably refresh on a daily basis or something but you could also regenerate the layout through some sort of mechanic.  If you regenerate the floor then you lose all the permanent little bonuses you set up on that floor like lit torches etc.  But you get to explore a new layout and certain one-time things like hidden treasure or something would regenerate too.  So sort of a tradeoff.  I’d be curious to know what people think of this sort of idea.  I think it blends the two fairly well but its usually a good idea to get outside opinions.

I think that’s it for now.  Lots to do, I’ll hopefully have more to report soon.  Below is the list of things that have been accomplished since the last update in brief.  I’m having the AI track things as we do them so if this list sounds oddly official its because I didn’t type it out, but I did verify the accuracy.

Farming & Crops

- Rebuilt farming from the ground up — tilling, watering, planting, growing, and harvesting all work smoothly now.

- Fixed crops not withering correctly when out of season.

- Fixed watering issues, plus irrigation pipes and sprinklers not surviving a save/reload.

- Hybridizers (for cross-breeding crops) and the full irrigation system are working end-to-end.

Trees

- Trees now remember their growth stage, whether they've been tapped for sap, and the current season, no more random resets or lost progress.

- Chopping, tapping, and regrowing all save and load correctly.

Multiplayer

- Invite friends directly through Steam, or browse your friends list to see who has a world open to join.

- Host your own world right from the title screen, whether starting fresh or continuing a save.

- New players create their own character; returning players reconnect seamlessly to the same world.

- The world stays in sync for everyone — crops, trees, tilled ground, time of day, and lighting all match up between host and guests.

- End-of-day now works properly for the whole group — everyone waits together before the new day starts.

- Fixed several sneaky multiplayer bugs: other players' animations not showing correctly, the camera occasionally following the wrong player, and a crash on minimizing the game window.

Shops

- Buying and selling looks and feels much better, with clearer pricing and item info.

- You can now buy in bulk (x1, x5, x10) instead of one at a time.

- Sold items properly show up in the "buy back" tab.

- In multiplayer, gold and inventory are now reliably saved no matter who's shopping, with extra safeguards against losing track of purchases or sales.