< '언리얼엔진5' 태그의 글 목록 (2 Page)

언리얼엔진5 28

[이득우의 언리얼 프로그래밍 Part3 필기] 7. 액터 리플리케이션 로우레벨 플로우

우선권이란?   우선권을 설정할 때 대역폭보다 커서 전송하지 못한 후순위의 액터를 다음 틱에서 전송할 방법이 필요한데 그것이 우선권 설정이다. 우선권 설정 로직   액터의 휴면 이란?  flushnetdormancy() 함수를 통해 휴면 해제가 가능하다. 네트웍 트래픽 포화(Saturation) 예시  위와 같이 우선순위가 밀려 전송되지 못한 패킷은 다음 틱에 전송된다.  액터 리플리케이션의 흐름   액터 리플리케이션을 진행할 때 가장 먼저 진행되는 것이 네트워크로 업데이트할 액터의 목록이다.서버가 매 틱마다 이들을 클라이언트로 전송하는데 각 액터의 정보는 FNetWorkObjectInfo 라고 하는 구조체에 정리가 되어 있다. (대표적 필드: 다음 전송 시간을 나타내는NextUpdateTime, bPe..

[이득우의 언리얼 프로그래밍 Part3 필기] 6. 액터 리플리케이션 빈도와 연관성

언리얼 인사이트 언리얼 프로그램의 다양한 퍼포먼스를 체크할 수 있는 강력한 프로파일링 도구언리얼 엔진에 포함되어 있음프로그램 프로파일링 뿐만 아니라 네트웍 상태도 확인할 수 있다.   액터 리플리케이션의 빈도   주요 액터에 설정된 빈도 값   네트웍 데이터 줄이기규칙적으로 움직이는 액터의 네트웍 통신 데이터를 줄이는 예제NetUpdateFrequency 속성 값을 1로 설정데이터 공백을 클라이언트에서 부드러운 움직임으로 보완하기이전 복제된 데이터에 기반해 현재 틱에서의 회전 값을 예측클라이언트에서 예측된 값을 보간해 회전   ABFountain 의 소스 코드 // Called every framevoid AABFountain::Tick(float DeltaTime){ Super::Tick(DeltaTi..

[이득우의 언리얼 프로그래밍 Part3 필기] 5. 액터 리플리케이션 기초

액터 리플리케이션특정 플레이어에 속한 액터의 정보를 네트웍 내 다른 플레이어에게 복제하는 작업클라이언트 - 서버 모델에서는 대부분 서버에서 클라이언트로 전달함.리플리케이션의 방법에는 크게 두 가지가 있음.1. 프로퍼티 리플리케이션2. RPC (Remote Procedure Call)   기본 액터의 로딩클라이언트가 초기화 될 떄 모든 액터 정보를 서버로부터 받는 것은 비효율적따라서 기본 배경에 관련된 액터는 맵을 통해 스스로 로딩하도록 설계되어 있음.고정으로 제공하는 액터와 동적으로 생성하는 액터고정으로 제공하는 액터의 예 : 레벨을 구성하는 배경 액터동적으로 생성하는 액터의 예 : 플레이어 컨트롤러와 폰고정 액터에 대해 NetLoadOnClient속성을 체크해야 함 (기본값)   리플리케이션 작업에서 ..

[이득우의 언리얼 프로그래밍 Part3 필기] 4. 액터의 역할과 커넥션 핸드셰이킹

서버와 클라이언트에 위치한 액터의 역할클라이언트 - 서버 모델에서는 항상 서버에 있는 액터만이 신뢰됨.이를 Authority(권위)를 가진다고 표현함.클라이언트의 액터는 대부분 서버 액터를 복제한 허상에 불과함.이러한 액터를 Proxy라고 표현함.   로컬 역할과 리모트 역할리슨서버의 경우 플레이어로서 게임에도 참여하므로, 어플리케이션의 게임 로직을 사용한다.어플리케이션의 게임 로직은 서버 액터에 대해서만 게임에 관련된 작업을 수행해야 한다.이를 구분하기 위해 현재 동작하는 어플리케이션에서의 역할을 로컬 역할(Local Role), 커넥션으로 연결된 어플리케이션에서의 역할을 리모트 역할(Remote Role)이라고 한다.    액터 역할의 종류None : 액터가 존재하지 않음.Authority : 서비스..

[이득우의 언리얼 프로그래밍 Part3 필기] 3. 커넥션과 오너십

액터의 준비와 게임의 시작   PostInitializeComponents 는 게임과 무관한 액터 설정의 초기화 함수이다. 따라서 네트워크 접속 클라이언트를 위해 PostNetInit 함수를 제공한다. PostNetInit 은 원격 클라이언트에서 호출되는데 서버에서 변경된 내용, 속성, 다양한 값들을 모두 전달받아 액터 세팅이 모두 마무리 될 때 호출된다.  하이레벨 게임을 구성하는 단위인 액터, 컴포넌트 , 월드 등 이 콘텐츠를 구성하는 오브젝트의 상태와 속성에 관련된 상위 개념  로우레벨 위 같은 상태와 속성을 네트웤을 통해 전달하기 위해 만들어진 데이터 스트림  네트웍 통신을 담당하는 주요 클래스   PlayerController : 네트워크 커넥션을 관리하는 콘텐츠를 대표하는 액터 UNetConn..

[이득우의 언리얼 프로그래밍 Part3 필기] 2. 게임 모드와 로그인

Standalone네트워크 연결 X , 모든 플레이어가 로컬 플레이어.멀티플레이어를 고려하지 않고 막 짜면 멀티플레이어 전환 시 코드 사용 불가하다. Client서버 측 로직을 실행 않고 서버에게 받은 콘텐츠를 보여주는 프록시 Listen Server게임이 서버의 역할을 가지고 있음로컬 플레이어를 서버에 직접 배치 Dedicated Server원격 클라이언트의 연결을 허용하지만 로컬 플레이어가 없음MMORPG 등에 사용신뢰할 수 있는 고성능 서버가 필요한 게임에 사용  리슨 서버의 게임 서비스 게임 서비스 준비스탠드얼론 게임 시작 -> 게임모드 생성 -> 플레이어 컨트롤러 0 생성 게임 서비스 시작리슨서버로 게임 서비스 시작 -> 로비 생성 등등 ..

[언리얼엔진5 Part2 복습 / 개인 프로젝트] 2. 캐릭터와 입력시스템

캐릭터와 입력시스템 1인칭 기본 템플릿과 이득우 님의 강의 코드를 기반으로 캐릭터 이동 및 카메라 회전까지 구현하였다. 코드를 복습하면서 2번 브랜치에 주석을 달아 놓았다. https://github.com/chataeg/GunBattle/tree/2 GitHub - chataeg/GunBattle Contribute to chataeg/GunBattle development by creating an account on GitHub. github.com 이해하기 가장 애먹었던 부분은 Move 함수였다. 직접 만든 Move 함수 void AGBCharacterPlayer::Move(const FInputActionValue& Value) { FVector2D MovementVector = Value.Ge..

[언리얼엔진5 Part2 복습 / 개인 프로젝트] 1. 복습용 게임 기획 및 개발 기획

이득우의 언리얼엔진 게임 프레임워크 Part2 수강을 완료했다. 복습을 위해 직접 이득우 님의 프레임워크를 모방하여 클론 코딩함과 동시에 나의 개인 프로젝트를 만들어 보고자 한다. 이득우 님은 3인칭 2.5D TopView / ShoulderView RPG 장르의 게임 을 제작하였는데, 나는 여기에 살짝 변주를 주어 1인칭 / 3인칭으로 전환 가능한 FPS 게임을 만들고자 한다. 무한 맵 제작은 생략하기로 하고 개발을 시작하기 전 틀을 짜보았다. 틀은 이득우 님의 강의 순서를 기반으로 작성했다. 메인 브랜치 캐릭터와 입력 시스템 아이템 습득 및 사용 캐릭터 애니메이션 설정 캐릭터 공격 판정 캐릭터 스텟과 위젯 아이템 시스템 게임데이터 관리 행동트리 모델의 이해 행동트리 모델의 구현 헤드업디스플레이의 구현..

[이득우의 언리얼 프로그래밍 Part1 필기] 15. 언리얼 빌드 시스템

언리얼 에디터의 동작 프로젝트 폴더의 uproject 확장자를 더블클릭하면 에디터가 트리거 됨. 에디터의 실행 방식 uproject 확장자는 윈도우 레지스트리에 등록되어 있음. 등록이 안되어 있다면 런처를 실행해 등록 UnrealVersionSelector 프로그램으로 프로젝트 정보가 넘겨짐 UnrealVersionSelector 는 런처가 저장한 에디터 정보로부터 버전에 맞는 에디터를 실행함 UnrealVersionSelector 소스는 에픽게임즈 GitHub에서 확인 가능 언리얼 에디터 구성 게임 제작을 위해 에픽 게임즈가 제공하는 저작 도구 언리얼 엔진의 구성 에디터 : 게임 제작을 위해 제공되는 응용 프로그램 (일반적으로 인식하는 언리얼 엔진) 게임 빌드 : EXE 파일과 리소스로 이루어진 독립적..

[이득우의 언리얼 프로그래밍 Part1 필기] 14. 오브젝트 관리 II 패키지

언리얼 오브젝트 패키지 단일 언리얼 오브젝트가 가진 정보는 저장할 수 있지만, 오브젝트들이 여러 개 조합되어 있다면? -> 복잡한 계층 구조를 가진 언리얼 오브젝트를 효과적으로 저장하고 불러들이는 방법을 통일해야 함. 언리얼 엔진은 이를 위해 패키지(UPackage) 단위로 언리얼 오브젝트를 관리함. 패키지의 중의적 개념 언리얼 엔진은 다양한 곳에서 단어 패키지를 사용하고 있음. 언리얼 오브젝트를 감싼 포장 오브젝트를 의미함. 개발된 최종 콘텐츠를 정리해 프로그램으로 만드는 작업. DLC와 같이 향후 확장 콘텐츠에 사용되는 별도의 데이터 묶음을 의미하기도 함. 패키지(Package) 와 에셋(Asset) 언리얼 오브젝트 패키지는 다수의 언리얼 오브젝트를 포장하는데 사용하는 언리얼 오브젝트. 모든 언리얼 ..