What is server-side hit detection?

I thought hit detection could only be done on the client side.
This is because it is impossible to physically calculate hits from firing and direction in 3D games because of server resources.
Isn’t it difficult for the server to calculate all the hit detections, taking into account the objects placed in a complex manner in a game played by 100 people?

What you makes you think it’s physically impossible? Server have master copy of game state and clients are one that tries to sync with the server, game state includes collision shapes locations, so server can deal with collision + if you run dedicated server, sever is free up from rendering code freeing up some extra CPU time. So running game on dedicated server is actually faster then running actual game on client, and server usually have quite high end specs too compered to typical client hardware

But server side hit detection is needed for entire diffrent reason… and it’s security. Client should not work on any autoritive works as anything that runs on client any data it generates is subject on altering with external programs and validating that data would require preform a hit scan on server anyway, so server generally should preform that task to make sure hit is legitimate. If you let client decide if something got hit, it opens potential to create aimbot for your game, that does not even require artificially target at enemy. Server should always be a master jurge of your game, like in sports.

If you afraid of performance, keep in mind i talking here about hit detection to calculate damage (and any other task that could be cheated), any other hit detection, like focusing item on crosshair to pick up can be perform by client as server only need pick up action and all you need to do on server side is validate distance between player and item, potentially orientation too, or peform line trace only pick up action.

Thank you for your careful explanation

I work as a network engineer and did not understand the combination of abstract components of the game engine. Thanks to your answers, I have seen the components of the game engine. As you say, clients can not be trusted.

What I understood in your explanation is below.

The server can only perform physical calculations from the client’s direction and location information.

Physics calculations that do not involve rendering do not consume many resources. (Are there any algorithms?)

This is a new discovery for me. (I thought that physical computation requires a lot of resources.)

Additional questions: If the game is such that many users like MMO fight on a big level, is it difficult for high spec servers to accommodate many matches? I heard that in the implementation done by DICE, low-latency users calculate on the client side and high-latency users calculate on the server side. Do you consider huge games like BF to be implemented as hybrids?

I would say that it is pretty normal for both the Server and Client to both simulate physics. The client can cheat all he wants while simulating but the server will then either kick the player or snap/smooth the client back into position. The client should never tell the server that it hit something but instead sends the input and time of the shot and the server would then recreate the shot and confirm or reject the hit.