Hyperspace Terrain

In an earlier post, I’d talked about terrain. An astute observer might have noticed that the terrain discussed there is all more or less normal stuff – nebluas, asteroids, etc. Nothing that’s a good fit for hyperspace, which has more of a “weird” feel.


The first question is, what’s the goal of adding terrain to hyperspace? Obviously not having any terrain there would be a bit boring; spicing things up with some variety is not a bad goal, but something more specific would help guide the design better. So: “make hyperspace travel something that can be done well or poorly by the player”. This fits with the overarching goal of terrain making travel more interesting. Unlike normal terrain – which generally makes things interesting by impacting your interactions with other fleets, i.e. hiding from someone inside a nebula – the goal for hyperspace terrain is to be interesting by itself. This fits nicely with the primary role of hyperspace as a travel medium.

There are lots of ideas to be had here; as usual, a lack of ideas is not a problem. The issue is finding one that works given all the low-level design constraints. Stuff like the movement speed of fleets, the distance between stars, etc.

Being able to come up with satisfying visuals for something is also something you can’t take for granted. In my experience, the process for coming up with visuals involves a ton of iteration, the trying of a lot of ideas, and ultimately coming up with something – usually accidentally – that’s not at all like what you envisioned at the start. But, ah, I’ll stop this incipient rant here.

First, let’s talk about an idea that I had high hopes for, but that – much to my disappointment – didn’t work out. The idea was simple – you’d have wavefronts moving through hyperspace, and your fleet could catch a ride on one and be carried along. Or, if you mess it up,  be carried wildly off track. It looked something like this (click to play):

So, why didn’t it work out gameplay-wise? As usual, details. The goal was to be able to catch a wavefront to speed up your travel. So far so good, but this means that you can do it quickly enough that the benefit of catching a wave more than makes up for the time you’ve spent trying to do that.

The two main factors at work here are the distance between stars and the speed at which fleets move – these determine how long travel takes, and thus how much time can reasonably be spent looking for a wavefront before it becomes more efficient to just go.

As it turns out, stars – especially neighboring stars – are pretty close to each other, so there’s not a lot of time to play with here.  If finding a good wavefront takes longer than something less than 10 seconds, you’re better of not looking for one. We can tweak things – reduce the speed of fleets, increase the distance between stars, increase the speed of wavefronts so they pay off more  – but all come with downsides and can only really be tuned within a fairly narrow range. Unfortunately, within those ranges, the idea just didn’t work. Either wavefronts take too long to find, or fleets travel too slowly without them (which, incidentally, made finding/catching waves harder), and so forth.

It seemed like a good idea at the time, and it’s possible that it might’ve been made to work eventually, but the effort increasingly had the feel of fitting a square peg into a round hole. It was time to move on to something that didn’t clash so much with the scale of the existing design. I do still like the visuals, though – perhaps they’ll come in handy for something later.

The takeaway from wavefronts is this: there’s not enough room in hyperspace for “make the player go faster if they do something right” to work out. So, naturally, the next approach is “make the player go slower if they do something wrong.”

To distill what was the result of a rather lengthy and iterative design (and visual-making) process to its essentials: we’ve got deep hyperspace, which is rather like a nebula; there are clear areas around stars, with some winding paths between them. Being in deep hyperspace reduces your sensor range.

Deep hyperspace also has storms. Being caught in a storm is bad news – your fleet’s speed goes down to almost nothing, it’s lit up for all the world (or, at least, anyone with sensors) to see, and its combat readiness takes a beating. There’s some warning time before a storm erupts in a particular area, so you can try to avoid the worst of it. Or you can try to stick to open hyperspace as much as possible, but it’s going to be slower than doing a good job going through deep hyperspace, because the paths through open hyperspace are, as mentioned earlier, not straight.

Further, the storm cell patterns are… well, not easily predictable, but they follow a certain algorithm, and it’s one you can get a feel for after seeing it in action for long enough. So there’s potential for getting better at navigating, beyond just reacting to the “storm is about to break” signals.

(As a side note, if you’ve got an interest in computer science: the storm cells use a cellular automaton to evolve. It’s wasn’t strictly necessary to use one, but it was easier than the alternatives. Personally, I find the idea of actually using a cellular automaton for something non-academic highly amusing.)

Dev Status
The stuff above has been done for a while – I just haven’t gotten around to writing about it. Work on this version is at a point where I’m not so much adding large new features but rather transitioning from “a pile of features” to “something that’s actually fun to play”. I feel like this process is perhaps under-appreciated at times. Features are an easy sell; who doesn’t want shiny new features? I know I do. Making feature X work well with, well, everything else, is a significantly less shiny process… but let me stop another incipient rant here.

Along the way so far, we’ve got: a new minor faction, some new weapons, a new ship hull, a weapon balance pass, officer-related AI improvements, revamped campaign fleet generation (both composition and spawning), a complete overhaul of the “food shortage” event, and lots of other assorted improvements.

I’ll leave you with this: despite what I just said, I’m actually looking at adding something that would be a fairly large feature; once again in the name of improving campaign gameplay, as has been the trend in this update. Hopefully I’ll be able to post about it in the coming weeks, and not in a “tried this and it didn’t work” way.


Comment thread is here; rampant speculation on new feature is encouraged.



Tags: , , ,

This entry was posted on Sunday, September 20th, 2015 at 6:42 pm and is filed under Development. You can follow any responses to this entry through the RSS 2.0 feed. Both comments and pings are currently closed.