Q&A — Planetary Annihilation Chrono Cam
October 17, 2013
Last week I released the longest, most in-depth post I’ve ever written The Tech of Planetary Annihilation — ChronoCam. Suffice to say the response was fantastic and generated a lot of interest and questions. I rounded up some of the more popular questions from the comments, Twitter, Reddit, the Uber forums, and more to answer in this post.
Question: Can players run their own servers?
Answer: Yes! Players can host their own servers and play over the internet or on a LAN. There is no DRM of any kind on either the client or server so you’ll be able to play for years to come.
Question: I like your curves.
Answer: Thank you.
Question: Can ChronoCam track and summarize what units were lost?
Answer: Sure. In a sense the curves are a database and it’s a simple task of querying that database and graphing the result. We don’t do this much right now, but you can expect to see it later.
Question: Is keyframe interpolation processed on the server or client?
Answer: All on the client. Once the server has sent keyframes the client has all the data it needs to interpolate the state of the world at any speed (normal, fast, slow) or direction (forward, paused, reverse).
Question: What requirements led to the curve and ChronoCam system?
Answer: There were a handful.
- Large games (40 players).
- Clients can not slow down the game.
- Join in progress.
- Players can come and go (sandbox).
- Robust replays that work across all game versions.
- Implementable by a small team.
Question: Are you a wizard?
Answer: Let’s go with yes.
Question: Why are they called curves?
Answer: Linear and step curves are arguably functions;
f(t) = value. That term makes them difficult to talk about. Pulse “curves” break most any term you could come up with. It’s the best we could do.
Question: A 1 megabit downstream connection is kind of a lot!
Answer: We use the analogy that it’s like a video stream. If you have a bad connection only you suffer, not everyone else. And like a video stream a slow connection will degrade gracefully instead of facing catastrophic failure. Keeping with the video stream analogy Netflix HD uses about 4 mbit. Netflix Super HD uses 7 mbit.
Question: I love that it’s client-server, p2p has always been my main complaint with RTS games, they get stupidly slow with lots of units and it makes it not very fun.
Answer: I agree.
Question: How do you handle blowing chunks out of the planet for something like an asteroid collision?
Answer: Craters are a very special case. The brush is actually sent to the client ~30 seconds before impact and calculated before the impact. Then we perform a fast mesh swap at the moment of impact. It’s super easy to implement this behavior with curves.
Question: How does save/load work?
Answer: A new server sim can be created from curve data. The curves don’t save all the internal state of every object on the sim, but they store enough that you can get a sim started. This means the game will be slightly different, but only slightly. It also means you can do cool things such as take an existing replay file and start playing from any point you want! It’s kinda like having an infinite save file.
Question: Are you guys crazy?
Answer: Probably! The more we talk about what we’re doing with Planetary Annihilation the more developer friends say, “You can’t do that! That’s crazy!”. And the more we hear that the more convinced we are that we’re onto a really special player experience that you won’t be able to get anywhere else.
I think that does it. Stay tuned as I’ll be writing more posts in the future on other fun and exciting topics related to Planetary Annihilation and more.