End of 2020 Update

by | Jan 5, 2021 | Dev Blog

Happy new year everyone!

The blog hasn’t gotten a lot of love in the last few months so it’s a little overdue for an update. There has been a lot of progress with Deepfield I’ve been meaning to share but never got round to it. I will try my best to give you a rough recap of all the noteworthy bits.

0.3.0 Released

Our goal for 0.3.0 was to have a universe MVP with all of Deepfield’s core gameplay loops. In order to make this happen, we needed to implement the Hive server.

I talked about the Hive server in an older post but let’s quickly go over it’s main responsibilities again:

  • Managing client connections and routing them to the appropriate sector server.
  • Managing sector servers, spinning them up and down as required.
  • Simple sector logic, for example movement of an entity from one sector to another.
  • Fault tolerance. Periodically saving the state of each sector server.

A pretty big task which turns up the complexity of Deepfield engineering wise. No task to big or complicated for omNomios though, he went from nothing to a rock solid Hive server in about 6 weeks, pretty impressive eh?

As well the Hive, we implemented some basic universe generation code, did a little game balancing, updated some unit models, squashed some bugs, chased down some segfaults and sprinkled in some optimisations here and there.

We finished up about a week before Christmas which gave us some time to get some playtesting in before the holidays started.

Jumping back a bit, self-hosting was originally meant to be in 0.3.0 release but we made a deliberate choice to push it back. It wasn’t something we needed to have right now and TCP & UDP NAT punch through on multiple ports wasn’t a trivial problem to solve.

With no self-hosting available, we set up a public Australia playtest server to facilitate our playtesting.

Deepfield 0.3.0 Playtest Universe Screen

Playtesting

Our playtest universe was pretty basic. It had minimal resources and enemy units at it’s edge and as you get closer to the centre, resources and enemies increase in number. We started off with a relatively small 144 (12 x 12) sector universe as we wanted to boost the chance that players would meet each other.

We harassed our friends and family to play and tell us what they think. We got a lot of positive comments about the gameplay, art style and theme as well as useful feedback about controls, quality of life and interface. Other than some minor UI bugs, there were no issues or crashes reported.

We were pretty happy with everything so far so we decided to leave the playtest server running. It was nice to see a few people jumping in and out of the universe, playing it here and there.

omNomios went away for a week or so on a much needed holiday and I took a couple of days to get out of Sydney. Of course, it was at this time, someone reported a crash. I recall debating taking my laptop with me but opted not to, rookie mistake. Luckily omNomios had his so he was able to look into what happened.

Turns out the code which places a new player in the universe was crashing. What it was supposed to do is find an empty edge sector and spawn them there but there were no safeguards if a sector could not be found.

The one and only crash we had was actually really good news. Why? Because it happened because someone had gone around the universe and captured all of the edge sectors.

Given the situation we decided to fix the crash later and reset the universe to a larger 1024 (32 x 32) sectors.

After a lot of pondering over the feedback, I decided against further playtesting because it had become clear what needed to happen next.

Upcoming in 0.4.0

It wasn’t what anyone was saying but more what everyone was doing at one point or another, AFK farming. Why was this a thing? Well, a combination of several reasons but basically combat was pretty thin and it was the optimal strategy to get as many resources as efficiently as possible. Bleh, stupid.

In the next release we will be addressing AFK farming, or, in other words, looking to increase player engagement. To do this we will be working on the following:

  • Grid based mutations system. We’re giving it another go, this was initially prototyped in Deepfield Space back in 2018 (blog post about it here). We hope this will add a little more strategy and planning into the game.
  • New and distinct enemy unit types. Combat is fun, more enemy types will make combat more fun.
  • Improved universe generation. We want to increase combat frequency and make it more interesting via the environment.
  • Faction levels. Your faction level will be determined by how many sectors you control, the higher your faction level, the more mutations your capital units will have access to. Yes, this is a carrot to get you to capture and control more sectors.
  • Autophagy and inter-sector transport. A lot of people said it sucks when you jump your capital unit to a new sector and all of the other units get left behind. We want to avoid deathballing so this was a deliberate design choice. However, we realise that wasting precious resources sucks and and starting a new sector with no units can get tedious. To alleviate these issues we’re introducing the ability to transport a small number of units when jumping sectors as well as the ability to recycle units for resources.
  • Implementing some of the feedback we got regarding controls, quality of life and interface.

I’m hella excited for this next update as I want more too. I hate AFK farming, the current mutations system is uninspiring and did someone say levels? My brain looovvveeees progress bars.

After 0.4.0 we’re looking to open up playtesting to the public. If you’re keen to give it a go when it’s ready, please join our Discord.