말씀하신대로 클라이언트에서 판정을 진행하고 결과를 쏘면 해킹 이슈가 발생할 수 있습니다. 아레나 방식의 온라인 FPS 게임(8vs8)들은 이와 같은 판정을 사용 했습니다. 서버 부하 문제도 있고, 무엇보다 10ms의 반응성 차이가 게임 경험을 크게 좌지우지하다보니 "눈에 보이는 걸 쐈을때 맞아야 한다"라는 유저들의 요구를 맞추기 위해서는 조금이라도 그 레이턴시를 줄여야 했습니다. 요즘 월드가 큰 배틀로얄 같은 게임들은 데디에서 총알의 발리스틱까지 다 계산을 합니다. 아레나 게임에선 타격감을 명목으로 빵빵하게 울리는 킬사운드와 메시지 같은 스타일은 사라지고, 킬로그가 바로 뜨지 않고 조금 늦게 뜨도록 연출하거나 하는 식으로 그 감각을 무디게 연출합니다. FPS라고 해도 일관적으로 하나의 방식을 택하진 않고, 그 세부 장르(아레나, 배틀로얄, 코옵 등)와 유저 성향에 따라 트레이드오프지점을 선택합니다.
적당한 타협점으로 클라이언트 사이드에서도 레이캐스트를 진행하고 판정하며 서버는 그 데이터를 기본적으로는 신뢰하나 서버사이드 검증로직을 넣어 실시간으로 확인하거나 로깅해서 데이터로 검출하려는 시스템을 넣는 방식도 있습니다. 서버에서 판정을 다 하더라도 클라이언트에서 역시 레이캐스트를 진행하나 히트판정보다는 시각적 요소를 위해 사용하거나 즉각적인 반응인것처럼 보이려고 사용하는 경우도 있습니다. (클라에선 맞으면 바로 혈흔효과를 뿌리지만 서버사이드에서 맞지 않았다면 데미지는 들어가지 않고, 플레이어에게 따로 정정통지는 하지 않음, 치팅유저가 아니라 정상플레이어였다면 게임 경험에 불쾌함을 느낄 수 있다는 단점)