본문 바로가기
반응형

Unreal Engine16

[오류 해결] 4.27.2 엔진 풀소스 빌드시 Engine modules are out of date / GeometryCacheTracks.dll 오류 해결법 - Engine modules are out of date 오류 프로젝트 소스에 별다른 수정도 하지 않았는데 갑자기 프로젝트 에디터가 크래쉬가 났다. 로그에는 AddOnScreenDebugMessage가 문제가 있는 것 처럼 나오길래 해당 코드를 모두 없앤 후 빌드해 봐도 계속 크래쉬가 났다. 그래서 결국 git reset --hard 로 이전 버전으로 돌려서 실행을 해봤지만 failed to launch editor 창이 뜨며 에디터가 실행되지 않았다. 프로젝트 솔루션 파일을 다시 생성해서 빌드해봐도 / 엔진 소스를 다시 빌드해봐도 modules out of date 창만 계속해서 떴다. - 해결 내 프로젝트 폴더의 {프로젝트이름}.Target.cs 와 {프로젝트이름}Editor.Target.cs 코드.. 2022. 7. 11.
6. Dedicated Server 네트워킹 - Anim Montage이용한 플레이어 무기 모드 변경 기능 RPC 플레이어 캐릭터는 현재 칼과방패, 활 두가지의 무기 모드를 갖고 있다. 플레이어 캐릭터는 무기 모드를 변경할 때 무기를 변경하는 AnimMontage를 Play한다. - 무기 변경 기능 동기화를 위한 RPC 클라이언트에서 Change Weapon 입력 발생시 서버에서 모든 클라이언트에게 montage를 실행시키게 하는 흐름으로 구현했다. - OnSwordAndShieldMode(), OnBowMode() : Change Weapon 입력에 바인드 된 함수 - ServerSwitchWeaponMode(서버에서 실행) : SetCurrentWeaponMode 함수를 Call - SetCurrentWeaponMode(멀티캐스트) : CurWeaponType을 바꿔주고 플레이어 캐릭터의 ChangeWeapon .. 2022. 7. 7.
5. Dedicated Server 네트워킹 - Sprint 기능 Replication 기존의 싱글플레이 게임 코드에서 데디케이티드 서버를 사용하는 멀티플레이 게임으로 구조를 변경중이다. 여러 머신에서 같은 플레이 화면을 보기 위해서는 Replication을 통한 동기화가 필요하다. 캐릭터의 입력,애니메이션 부터 동기화를 시작해보자. 일단 Sprint 기능부터 동기화 하려 한다. - Sprint 상태 동기화 Sprint키를 눌렀을 때 캐릭터의 bIsSprinting=true 가 되었다는 것을 다른 클라이언트들에게도 알려주기 위해 함수 리플리케이션을 통해 다른 클라이언트에 함수를 똑같이 실행시켜준다. - Character.h Replicated 속성을 사용하기 위해서는 GetLifetimeReplicatedProps() 함수에 Replicated할 속성값을 등록해줘야 한다. - Charact.. 2022. 7. 1.
[짤막 팁] UE4 클래스 생성 시 FObjectInitializer 사용법 UE4에서 FObjectInitializer 구조체를 이용해서 특정 맴버를 초기화 시키는 방법이 있다. (코드에서 해당 구조체로 검색해보면 여러가지 나온다.) 사용방법은 아래 두가지 방법중 하나를 이용하면 되므로 입맛대로 사용하자. 1. 클래스 생성자 매크로를 GENERATED_BODY() -> GENERATED_UCLASS_BODY() 로 변경하고 const FObjectInitializer& ObjectInitializer 가 있는 생성자를 구현하는 방법 // .h 파일 UCLASS() class XXXX_API ClassA : public APawn { GENERATED_UCLASS_BODY() // 언리얼에서 클래스를 생성하면 GENERATED_BODY()가 디폴트 // 기타 클래스 세팅... }.. 2022. 6. 30.
[짤막 팁] UE4의 벡터 정규화(Normalize) 점 A에서 점 B로 가는 벡터 = B벡터 - A벡터 (시작위치 A, 목적지 B 라면 목적지-시작위치) 일정한 속도로 이동하려면 이 벡터를 정규화(normalize) 해야 한다. == 크기를 1이 되게 만든다.(언리얼 단위는 cm로 취급됨) -> 틱 단위로 적절한 속도의 움직임을 만들기 위해 속도를 곱할 수 있다. - FVector의 정규화(Normalize) 함수 Normalize: 실제로 벡터 자체를 수정함. GetSafeNormal: 새로운 벡터를 생성. 정규화된 벡터는 보호된다. (언리얼에서의 Normal은 정규화된 벡터를 의미, 법선벡터 의미X) -> 벡터 자체를 수정하지 않는 것이 좋은 습관. 소스가 변형되면 버그 찾기 힘들다. -> 정확한 계산이 가능하다.(아주 작은 오차는 존재) GetUns.. 2022. 6. 25.
반응형