You're correct, I did replace the core hit detection & damage functions. I was, however, extremely careful to recreate the same behavior that the stock game has.
So what did you change?
You're correct, I did replace the core hit detection & damage functions. I was, however, extremely careful to recreate the same behavior that the stock game has.
So what did you change?
Does this still allow for leading targets due to travel time? Or is it just like in hitscan games now where you just hit exactly on the player?
A server-side latency compensation method is a completely different project that shares nothing in common with how I've approached it. I'm not very up on doing that just as a comparison larkThis might be something off to ask, but could you perhaps add multiple lag compensation methods and gain some statistics on user evaluation.
Basically.
- No lag compensation
- Client side lag compensation
- Prediction based lag compensation (move a player forward from his current direction and speed by the ping amount)
- State based lag compensation (after a shot is fired move a player back to where he was by the amount of ping)
Bullets in my mutator are not ever hitscan. That was one of my major goals in making it. The default RO2 has this weird amalgamation of hitscan and ballistic projectiles where it can hitscan a bullet for the first 50 meters of shot distance, and it always hitscans everything past a wall penetration. I've eliminated both of those, it's 100% ballistics, 100% of the time.Does this still allow for leading targets due to travel time? Or is it just like in hitscan games now where you just hit exactly on the player?
If there is still some lead then maybe a further tweak would be to slow all projectiles down a good amount so you still have to allow for travel time over distance. It was good in Ostfront, and you had to account for bullet dip more. Made long range shots harder or something to learn as you played
Bullets in my mutator are not ever hitscan. That was one of my major goals in making it. The default RO2 has this weird amalgamation of hitscan and ballistic projectiles where it can hitscan a bullet for the first 50 meters of shot distance, and it always hitscans everything past a wall penetration. I've eliminated both of those, it's 100% ballistics, 100% of the time.
What they -are- is moving how they're supposed to be. 800 meters per second is very, very fast. At close range, it's almost the same thing as hitscan. I suppose I could add a projectile speed multiplier...but that's kind of weird...
The reason RO2 (and RO1) use a hybrid pre-fire trace before launching a projectile is because spawning actors is a VERY expensive operation. I did many tests to determine the range at which bullet drop actually became a factor (which was usually 25 meters for SMGs, 50 meters for rifles). Then I used that for the pre-fire trace to see if the bullet would hit something close by before actually spawning one. It saves a LOT of performance on the server (and likely would help on a client in your model as well).
Yep! I figured that was why you guys did it that way, it makes perfect sense. But, naturally, when the spawning is being done on only the clients, it neatly solves the problem of scaling up to a full server's worth of weapons quite handily. Instant distributed computing. Thus I feel like I can afford to go to 100% projectile firing, which produces higher fidelity behavior and simplifies the code dramatically. The hitscan & projectile split makes for some pretty tortured logic paths and duplication in your stock methods.It saves a LOT of performance on the server (and likely would help on a client in your model as well).
Mekhazzio, FYI, I just had a crash playing on Ducky's server. Maybe too much hit markers on the screen...?
Oh yes, the game will implode if you go over the top with those. Unreal provides those graphics as a debug tool, they're not at all optimized. You can erase them by performing an ammo check (hold the reload key). I was tempted to turn them off entirely for the public test version, but they make it so much easier to diagnose a problem - someone can just post a screenshot of it and bam, everything I need is right there.Mekhazzio, FYI, I just had a crash playing on Ducky's server. Maybe too much hit markers on the screen...?
Oh yes, the game will implode if you go over the top with those. Unreal provides those graphics as a debug tool, they're not at all optimized. You can erase them by performing an ammo check (hold the reload key)
Yep! I figured that was why you guys did it that way, it makes perfect sense. But, naturally, when the spawning is being done on only the clients, it neatly solves the problem of scaling up to a full server's worth of weapons quite handily. Instant distributed computing. Thus I feel like I can afford to go to 100% projectile firing, which produces higher fidelity behavior and simplifies the code dramatically. The hitscan & projectile split makes for some pretty tortured logic paths and duplication in your stock methods.
Yep, I discovered that one early and addressed it.Another thing to watch out for when spawning projectiles very close to the player is that sometimes their collision doesn't take effect for a frame. So sometimes this can cause very fast moving projectiles to go through someone if you are shooting a person very close to you.
I still thoroughly believe the best, fairest, and most balanced experience to be had in a shooter is playing with the classic server authoritative hit detection with a good ping (sub 50ms).