일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 디자드
- Unseen
- JWT
- 카렌
- Ajax
- 언리얼프로그래머
- 미니프로젝트
- R
- 언리얼
- Enhanced Input System
- 언리얼뮤지컬
- Jinja2
- 게임개발
- VUE
- 정글사관학교
- 스터디
- Express
- 레베카
- 파이썬서버
- 알고풀자
- 마인크래프트뮤지컬
- 프메
- 프린세스메이커
- 스마일게이트
- EnhancedInput
- flask
- node
- 데이터베이스
- Bootstrap4
- 으
- Today
- Total
Showing
[TIL] 언리얼 네트워크 플레이어 프로그래밍 본문
세명의 플레이어가 아니라 사실상 9명의 플레이어있게된다.
https://nybot-house.tistory.com/84
참고
오직 서버만 Role == ROLE_Authority 이고 RemoteRole == ROLE_SimulatedProxy 또는 ROLE_AutonomousProxy 로 보일 것이다.
1. Lobby System
플레이어의 접속과 퇴장을 관리해야 한다.
방(Session)을 개설한 사람이 서버이자 호스트이자 클라0이 된다.
추후 참가자들은 Find Session을 통해 열린 방들을 확인하고 Session에 Join하여 호스트 및 다른 참가자들과 만날 수 있다.
2. Role
언리얼 엔진은 Replication(복제)을 통해 네트워크 동기화를 처리한다.
언리얼 멀티플레이어 프로그래밍에서 액터(Actor) 또는 플레이어 컨트롤러(Player Controller)와 관련된 역할을 나타내는 개념이 두가지가 있다. 바로 "Local Role"과 "Remote Role"
이 두 역할은 네트워크 게임에서 데이터 동기화와 상호작용을 관리하는 데 필수적이다.
- Local Role
- Remote Role
https://docs.unrealengine.com/4.27/ko/InteractiveExperiences/Networking/Actors/Roles/
롤과 리모트 롤은 이 값을 누가 조사하는가에 따라 반대가 될 수 있다. 예를 들어 서버에서 환경설정이 이렇게 되어있다면:
- Role == ROLE_Authority
- RemoteRole == ROLE_SimulatedProxy
클라이언트에서는 이렇게 보일 것이다:
- Role == ROLE_SimulatedProxy
- RemoteRole == ROLE_Authority
이는 정상인데, 액터를 담당하는 것은 서버이며, 이 액터를 클라이언트에 리플리케이트하기 때문이다. 클라이언트는 그저 업데이트를 받아 액터에 시뮬레이션을 적용할 뿐이다.
3. 리플리케이션 모드
1. ROLE_SimulatedProxy
2.ROLE_AutonomousProxy
서버는 업데이트마다 액터를 리플리케이트하지 않는다. 그러면 대역폭과 CPU 리소스를 너무 많이 잡아먹을 것이다. 그래서 서버는 AActor::NetUpdateFrequency 프로퍼티에 정의된 빈도로 액터를 리플리케이트합니다.
클라이언트에서 액터 업데이트 사이에 약간의 시간이 흐른다는 뜻이다. 이때문에 액터의 동작이 간헐적으로 끊어져 보일 수가 있다. 그에 대한 보정을 위해, 클라이언트는 업데이트 사이에 액터 시뮬레이션을 적용합니다. 발생하는 시뮬레이션 유형은 두 가지이다.
`ROLE_SimulatedProxy`
네트워크 레플리케이션 시스템에서 사용되는 역할 중 하나. "ROLE_SimulatedProxy"라는 열거형 상수로 표현
"ROLE_SimulatedProxy" 역할은 주로 클라이언트 측에서 제어되는 액터 또는 컨트롤러를 나타내며, 이러한 역할의 변경 사항은 클라이언트에서 처리. 클라이언트 측에서 다른 플레이어 또는 서버로부터 수신한 정보를 기반으로 액터를 업데이트하는 역할.(다른 플레이어나 서버로부터 정보를 받아서 그에 따라 동작)
가령, 서버가 특정 액터에 대한 업데이트를 전송할 때, 클라이언트는 그 위치를 새로운 위치쪽으로 조정한 다음, 업데이트 사이마다 클라이언트는 서버에서 전송된 최근 속도에 따라 액터를 계속해서 움직인다.
`ROLE_AutonomousProxy`
Autonomous (자율적인) 역할은 "ROLE_AutonomousProxy"라는 열거형 상수로 표현
자율 프록시는 보통 플레이어 컨트롤러에 빙의된 액터에만 사용된다. 이 액터는 사람 컨트롤러에서 입력을 받는다. 즉, 로컬 플레이어나 클라이언트가 직접 조작하는 역할을 의미한다. 예를 들어, 자신의 캐릭터를 움직이고 조작하는 것은 "ROLE_AutonomousProxy" 역할을 가진 액터 또는 컨트롤러로 간주된다.
'Today I Learned (TIL)' 카테고리의 다른 글
[비쥬얼스튜디오] 자주쓰는 단축키 모음 (0) | 2023.12.29 |
---|---|
[git, source Tree] 소스트리에서 롤백 (0) | 2023.11.29 |
[TIL] 비트연산자, 비트마스킹, 외판원 순회 (0) | 2023.03.31 |
[TIL] 어셈블리어 레지스터 기초 실습, 프로그래머용 계산기 다뤄보기 (2) | 2023.03.29 |