🎉 Celebrating 25 Years of GameDev.net! 🎉

Not many can claim 25 years on the Internet! Join us in celebrating this milestone. Learn more about our history, and thank you for being a part of our community!

Overwatch 'Predicted Rockets' Analysis

Started by
4 comments, last by JohnnyCode 5 years, 3 months ago

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

 

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 ?)

 

enum Bool { True, False, FileNotFound };

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)

@hplus0603I just found this forum post by you that has advice that I probably will want to follow:

 

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?

This topic is closed to new replies.

Advertisement