Post news Report RSS Modeling Newtonian Physics in Space

We made the decision early on to make starship movement in XO as real as possible.

Posted by on

In most video games set in space, starships move like boats or aircraft. That instantaneous movement is satisfying and familiar, but it's not how starships would move in real life. Lately with movies like Gravity, Interstellar, and Ender's Game, a much broader audience has been introduced to the reality that movement in space doesn't work like it does in Star Wars or in nearly every game set in space.

While working on the design for XO, I was reading a lot of hard sci-fi; science-based works like The Lost Fleet series by James Campbell, Leviathan Wakes by S.A. Corey, and the Vatta's War series by Elizabeth Moon. I started wondering why the starships in RTS games don't move like they really would in space. During my research I found this really cool website, which we've mentioned before, that talks about how Hollywood and most video games get movement in space all wrong.

It's funny that some classic arcade game – Asteroids, Space Wars, and Lunar Lander for example – model spaceship motion more accurately than most games do today. There are notable exceptions – Kerbal Space Program for one, but I'm not aware of a single RTS game that tries to model Newtonian movement.

The more I thought about it, the more excited I got about the tactical challenges and fun involved in commanding starships in battle according to their actual physics. So we made the decision early on to make starship movement in XO as real as possible.

Anyone who's taken Physics 101 will recall that an object in motion will remain in motion without an equal and opposing reaction. This means that if your thrusters are firing, you're going to keep moving faster and faster and won't slow down – ever – until you thrust in the opposite direction. In XO, this dynamic forces you to be very thoughtful about engaging enemies, carefully consider how far away you're willing to travel from the rest of the fleet, and changes how you plan and coordinate movement orders.

Right now we're not trying to model everything perfectly. For example, at the moment we're not modeling gravity. I'm not convinced that gravity would make for an interesting game experience, and the effort it would take to do it right is high. If we have the time, I'd like to try it and see if it improves the feeling. Forgive the bad pun, but I'd love to hear your thoughts on the matter.

We've also decided to limit the gameplay to two dimensions, because as awesome as Homeworld was (and other games of that ilk) plotting courses in 3D and fiddling with the camera detracted from my personal enjoyment of the game (I know, I'm guilty of being Khan and thinking in a 2D plane). For XO, a 2D plane makes the tactical situation easier to comprehend and therefore faster to play, which helps keep the game flowing and the intensity high.

Sometimes your ship will need to travel in unusual ways to reach it's destination; the fastest course is often not the obvious one. The first time you see you battleship performing a weird loop, or spinning around as it approaches it's destination it may throw you off (as we saw while people tried our pre-alpha demo a couple weeks back). We've paid a lot of attention to that and worked hard to implement some pretty cool tools that make the experience fun and easy.

I've always wanted to be able to coordinate an attack on an enemy force and have multiple units arrive at a certain time from different places. So we've added options to flank left or right, intercept straight on or attack from behind, and then give the player the power to adjust the time it takes for each ship (or formation of ships) to arrive with an ETA slider. As you drag the ETA slider you'll see your course line change in real-time, allowing you to experiment and make adjustments on the fly as befits the tactical situation.

With these tools you can coordinate an attack to happen at the exact same time from multiple angles, with multiple groups of forces. You can plan attacks in waves, or plot a course that allows civilian ships to try to punch through enemy lines in a specific amount of time after the attack force. You can orchestrate your entire strategy while the game is paused, and then watch it unfold in real-time. Of course, you'll be able to adjust these orders at any time in case things go awry. And that, to me, is the role of an Admiral – your position in XO is that of a tactician, not a micro manager.

When we started down this path, we quickly learned that this was no easy feat; the calculations required were vastly more complex than the way it's normally done. It's taken us months of effort to hone the feeling and accuracy of movement. I'm really happy with the results so far, and I think players are ready for the challenge.

- Brian Jamison
@jmpdrv

Post comment Comments
RonixRising
RonixRising

Great write-up, Brian! When I first read the title of the article, I was a bit worried that you are going down the full 3D path, which would just add unnecessary complexity, in my opinion.

In fact, we've been tackling a similar issue with movement and verticality in our space game, Starfall Tactics. You can check the blog post here - Indiedb.com

It's funny how both of our blog posts are up on the main page =)

Reply Good karma Bad karma+2 votes
Jumpdrive-Studios Author
Jumpdrive-Studios

XO almost cracked the top 100 after this post, maybe next time ;)

Reply Good karma+1 vote
InstantRage
InstantRage

This looks promising, keep up the good work. :D

Reply Good karma Bad karma+2 votes
Jumpdrive-Studios Author
Jumpdrive-Studios

Thanks for checking it out, cheers!

Reply Good karma+1 vote
I_Love_Cat
I_Love_Cat

I don't really see why people would boast about newtonian physics as being something complex - it is perhaps the easiest thing you can opt for when making a space game. It is still a nice choice from a gameplay perspective though, i am a great fan of S.A. Corey's novels and how battles work in them.

Reply Good karma Bad karma+1 vote
Post a comment

Your comment will be anonymous unless you join the community. Or sign in with your social account: