I have server fire working. Line traces and green debug points show up for everyone. My up/down aim offsets replicate and are seen by all players. When I spawn a projectile locally, it fires in the right direction. Once I move those nodes to run from the On Server node, the up/down direction is lost (as showin in pic, green debug is where aiming, bullet holes are where the projectile impacted). I have tried workd transform, get camera eye direction, camera rotation, etc to no avail. The local is using Muzzle socket location and rotation ( as I have seen in a few videos) and works great. What am I missing when replicating the bullet spawn?
I don’t know how to solve this using blueprints but unreal shooter game has a C++ function exposed for this using remote view function.
you can try this solution instead:
All it does is, make a replicated variable to store your pitch value taken from control rotation (Control rotation needs Player controller so this would only work on the owning client and server), once you got the rotation you just skip the owner as you don’t need to overwrite the rotation again from server to owning client.
This is a good solution, my only addition to this would be just make it a float instead of rotator.
So it turns out I already have nearly this exact blueprint for ControlRotationRep as it is used to replicate the aim up and down visuals and it works for that.
I applied it to my projectile rotation spawn and its better, but not completely accurate, The more you aim up or down the further the projectile moves from its spawn point and I can only think that the socket spawn point is staying at straight out from waist as well. ??
Edit: drew some debug spheres and I get 2 for the muzzle socket, one at end of barrel and one that stays at “waist” level and that is where the projectiles are coming from.
Okay since you are running the logic on server, what you can try is just send the server the location and rotation via client and then spawn projectile/trace not need to do the whole thing like getting socket location and rotation on the server.
I will try to reproduce this when I get home and see what happens.
Check your skeletal mesh properties under “Optimization” there’s a property “Visibility based anim tick option”.
If it is NOT set to “Always tick pose and refresh bones” then it’s not gonna update on dedicated server and your sockets transforms will always remain at default position (waist) and rotation.
So in normal circumstances you will run 2 traces one on client side(mostly for effects and other cosmetic things which won’t need any server validation i.e. hit effects and bullet tracers) and the 2nd trace is where you would deal damage this is what I believe you want to run completely on server side if I understood your question correctly.
Here is how it looks, I am only doing traces on server side for both server and client(s).
Note: If you don’t want to use control rotation you can send the Vector as an Input to the “ServerWeaponTrace” function.
To replicate the pitch simply follow the tutorial I linked above, its only for cosmetic purposes so you can see other players pointing their guns in correct direction.