
언리얼 엔진은 표준 서버-클라이언트 아키텍처를 사용합니다.
즉, 서버가 권한을 가지며 모든 데이터는 먼저 클라이언트에서 서버로 전송되어야 합니다. 이후 서버가 데이터를 검증하고 코드에 따라 반응합니다.

멀티플레이어 매치에서 클라이언트로서 캐릭터를 이동할 때, 직접 캐릭터를 이동시키는 것이 아니라 서버에 이동을 요청합니다.
서버는 모든 플레이어(본인 포함)에게 캐릭터의 위치를 업데이트합니다.
📒 Note
로컬 클라이언트의 “지연(lag)”되는 느낌을 줄이기 위해, 프로그래머는 종종 로컬 클라이언트가 직접 캐릭터를 제어하도록 허용합니다.
하지만 서버는 클라이언트가 치트를 시도할 경우 캐릭터의 위치를 덮어쓸 수 있습니다! 즉, 클라이언트는 (거의) 절대 다른 클라이언트와 직접 통신하지 않습니다.
다른 클라이언트에게 채팅 메시지를 보낼 때도, 먼저 서버로 메시지를 보내고 서버가 원하는 클라이언트(또는 팀, 길드, 그룹 등)에 전달합니다.
🔥 Warning
클라이언트를 절대 신뢰하지 마세요! 클라이언트를 신뢰한다는 것은 클라이언트의 행동을 검증하지 않고 실행하는 것을 의미합니다.이는 치트를 허용하게 됩니다!
예를 들어, 무기를 발사할 때 서버에서 클라이언트가 충분한 탄약을 가지고 있고 발사할 수 있는지 반드시 확인해야 하며, 바로 발사를 처리해서는 안 됩니다!