Jump to content
  • Advertisement
RxMarcus

Overwatch 'Predicted Rockets' Analysis

Recommended Posts

My game heavily uses projectiles such as Rockets. As such I've been doing as much research as I can to understand how to make my rockets feel great for clients with moderate latency.

As I watched through the GDC 'Overwatch Gameplay Architecture and Netcode' for Overwatch by Timothy Ford, towards the end he is answering in a Q&A and talks about how they implemented prediction for slow moving projectiles. Tim talks about how they in fact got "predicted rockets" working even though other major FPS studios have said its not possible. Please see the video link at the bottom of this post.

I'm hoping that some people here can shed more light on what he specifically is meaning by "predicting rockets". What does the whole lifecycle of this look like? he makes it sound like something revolutionary, so I wonder exactly what they are doing?

Thanks in advance

https://youtu.be/2Hi3GeCBpd0?t=3526

 

Share this post


Link to post
Share on other sites
Advertisement

It's not a "revolutionary" thing, but it's a thing with trade-offs. Specifically, he's talking about how optimistically predicting firing rockets on the client may lead to seeing "false" things (me mentions firing rockets right when getting stunned.)

Most other FPS-es think rockets are slow enough that they'll just draw them when the server says they're OK, but you can also choose to live with the temporary mis-display, or even work out some sweet way of detecting and "fixing up" the mis-prediction with dedicated animation (say, add lots of smoke. Smoke hides everything 🙂)

 

Share this post


Link to post
Share on other sites

Ah I see, that makes sense.

I currently have it where the clients Rocket spawns but doesn't move until a latency delay time has elapsed so that in theory the rocket will match the Servers rocket. (I still need to add smoke though! :D)

Where I am a bit stuck now is understanding how I can improve the actual rocket hits for clients. One option would be to do rewinding of the simulation to verify what the client says he hit as described here: https://forum.unity.com/threads/how-would-you-approach-lag-compensation-for-a-slow-projectile.486253/#post-3169072

I've had other people tell me to simply fire the rocket and only let the server say when the rocket should explode. I have it setup this way currently, but even with a moderate ping of 60ms, I'll see my client rockets deal damage at a position where a player was but no longer is.

What forms of lag compensation would you recommend for projectiles / rockets in a fast paced shooter?

I can't seem to figure out what all these AAA shooters are doing to make their projectiles feel so darn good (Quake Champions, etc)

Share this post


Link to post
Share on other sites
8 hours ago, hplus0603 said:

It's not a "revolutionary" thing, but it's a thing with trade-offs. Specifically, he's talking about how optimistically predicting firing rockets on the client may lead to seeing "false" things (me mentions firing rockets right when getting stunned.)

Most other FPS-es think rockets are slow enough that they'll just draw them when the server says they're OK, but you can also choose to live with the temporary mis-display, or even work out some sweet way of detecting and "fixing up" the mis-prediction with dedicated animation (say, add lots of smoke. Smoke hides everything 🙂)

 

May I ask though, shouldn't lag for rockets be a thing of only controlled rockets? Does the games not establish fired rocket event on both clients and let it flow as is, exchanging through net only other data that matter eventualy?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!