본문 바로가기

분류 전체보기

(331)          글쓰기    
애니메이션 블루프린트 점프 랜드 에러 땅속으로 사라지는 현상 ThirdPersonCharacter를 이용 Animation Blueprint 작성후 책대로 했는데 캐릭터가 플레이시작시 점프시 땅속으로 사라지는 현상이 나타났다.일단 내가 만든 애니메이션 블루프린트다.MM_Land->Locomachine의 트랜지션 조건은 인데플레이해보면 착지시 캐릭터가 사라진다.테스트 결과 ThirdPersonCharacter의 MM_Land의 문제인데 같은 시퀀스를 쓰는 Anim_Manny 는 문제가 없었다.분석결과 Anim_Manny는 Land State안에서 Apply Additive를 사용하는걸 알수 있었다.이렇게 하기 위해서는 BlendSpace와 Jump로직은 분리해야한다. LocoMotion State안 로직은 BS만 남겨두고밖에서 Cache해서 SavedPose를 연결..
게임플레이 프레임워크 게임 규칙, 플레이어 입력과 컨트롤, 카메라, 유저 인터페이스 등의 코어 시스템을 살펴봅니다. 언리얼 엔진의 게임플레이 프레임워크는 프로젝트의 빌딩 블록 역할을 하는 여러 클래스와 컴포넌트를 제공합니다. 레벨에 배치하거나 스폰할 수 있는 오브젝트의 기본 클래스는 액터 입니다. 액터에는 액터의 이동 방식과 렌더링 방식을 제어하는 데 사용할 수 있는 액터 컴포넌트 컬렉션이 포함될 수 있습니다. 액터는 플레이 도중 네트워크를 통해 프로퍼티 및 함수 호출의 리플리케이션을 지원합니다. 카메라는 플레이어가 월드를 보는 방식과 같은 플레이어의 시점을 나타냅니다. 플레이어 컨트롤러는 카메라 클래스를 지정하고 플레이어가 월드를 보는 위치와 방향을 계산하는 데 사용되는 카메라 액터를 인스턴스화합니다. 폰 클래스는 플레이어..
언리얼 게임 모드 클래스 게임의 일시 정지 기능을 추가하고 싶은 경우 모든 로직및 구현 내용이 하나의 클래스 안에 배치되어야 한다.멀티플레이어 게임에서는 네트워크와 관련된 게임플레이 로직이 한곳에 배치돼아 한다. 게임 모드 클래스는 바로 이런 역할을 한다.게임 모드는 게임 로직을 실행하고 플레이어에게 게임 관련 규칙을 적용하는 클래스다. 게임 플레이는 게임플레이 객체의 모든 관리자를 포함할수 있다. 게임모드는 싱글톤클래스이므로 모든 객체및 게임에 배치된 추상클래스에 접근할수 있다.게임에 입장할 수 있는 플레이어수 제한새로 연결된 플레이어의 생성위치및 플레이어 컨트롤러의  로직제어게임 점수 계산및 기록게임 승/퍠 상태 추적게임오버및 게임 재시작 시나리오 구현 게임 모드와 게임 스테이트 플레이중인 게임의 정보를 처리하는 클래스는 크..
Make a Multiplayer Game from scratch https://youtu.be/_pPCS12aVtg빈 프로젝트를 만들BasicMap을 하나 만들고 필요하면 Window>Env.Light Mixer를 열어서 변경해준다. 여기서는 넘어간다.map01이라고 저장한다.처음에 Thirdperson Template로 하지 않은 건 Lyra프로젝트의 캐릭터를 쓰고 싶어서 이다. 마켓플레이스에서 Lyra를 이용해 프로젝트를 만들고 컨텐츠 폴더밑의 다음폴더에서 SKM_Quinn위를 우클릭후 Migrate를 선택 후다음과 같이 불필요한 부분의 체크를 꺼준다.이후 저장팝업이 나오면 미그레이션하고 싶은 프로젝트의 Contents폴더를 선택한다.Animation폴더의 다음 3개 폴더를 선태하고 우클릭하 미그레이션한다.다음과 같이 불필요한 부분을 해제해주고 옮기고 싶은 프로젝..
1.2 Physics Animation Blending Hit Reaction 좌클릭하면 클릭부위가 힘을 받는다.좌클릭이벤트는 BPI_HitReaction에 정의되어 있고 HitLocation과 Bone Name을 전달한다. HitReactoin BPI는 Character의 EventHitReaction을 call하고 Bone이름을 전달한다.RootBone이 아니고 Hit된적이 없다면전달된 bone을 BoneName변수에 저장한다. 이후 타임라인이벤트를 실행하는데타임라인은 변화는 다음과 같다.타임라인이 끝나면 Weight를 0으로하고 Physics Simulate를 꺼준다 Hit변수도 꺼준다.시퀀스2는 메시에 카메라 방향으로 충격을 가한다.TimeLine에서 만들어진 weight는 EventTick에서 반영된다.실행해보면 충격이 약하다 약한 이유는 휘어질 본이 지정되기 때문이다. ..
1.1 Physics Animation Blending 플레이후 슬라이드바를 1로 놓으면 왼쪽은 왼쪽팔 가운데는 상체 오른쪽은 하체가 마비된것 처럼 보인다.블루프린트를 살펴봤는데 동일한 BP이다. 디테일을 보니 BoneName변수의 뼈이름이 달랐다.BP의 이벤트그래프는 간단하다. 슬라이더가 Null이 아니라면 슬라이더의 값을 Weight에 저장하고Physics를 시뮬레이션할 범위를 BoneName을 이용해 지정해주고 Slider의 가중치를 지정해주면 된다.
Physics Control Animation 실험을 위해서는 ThirdPersonCharacter가 필요하다.실험을 위해 PhysicsControl 폴더를 만들고ThirdpersonCharacter폴더에서 BP와Game모드를 카피해서 이름을 바꿔준다.새로만든 게임모드를 게임모드오버라이드에 지정해주고 디폴트폰을 MyTPSCharacter로 지정해주자BP_MyTPSCharacter를 열어주고 EventGraph에 EventBeginPlay에 Sequence를 삽입해주고 Then1에 Set All Bodies Below Simulate Physics를 넣어준다. InBoneNames핀을 끌어 Linteral을 검색후 pelvis를 입력해준다.컴포넌트 Mesh를 선택하고 Collision Enabled(Query and Physics)로 변경해준다.이동해..
멀티플레이의 기본 멀티플레이를 위해서는 게임간의 통신이 필요하다. 효율적인 통신을 위해 서버가 필요하다. 서버와 클라이언트간의 양방향 통신을 해야한다.플레이어가 게임중 무기를 발사하려고 할때 클라이언트 서버간의 상호작용을 검토해보자.총알을 쏜 행위는 내 컴퓨터 뿐이 아니라 같이 플레이하고 있는 다른 클라이언트에서도 보여줘야하고 이는 서버를 통해 이루어진다. 다음그림은 대략적인 개념이다. 실제 총알처리도 네트워크 처리되어야 한다. 서버 이해하기클라이언트는 게임에 필요한 모든 리소스를 가지고 있다.서버는 클라이언트가 가지고 있는 리소스의 메타데이터를 제어한다. 그렇게 함으로서 통신량을 줄일수 있다.공유 월드 인스턴스의 생성및 관리클라이언트의 참가및 퇴장 요청처리모든 클라이언트가 알아야하는 액터의 생성중요한 게임플레이 로직의 ..
Player Start Actor https://dev.epicgames.com/documentation/ko-kr/unreal-engine/player-start-actor-in-unreal-engine 언리얼 엔진의 플레이어 스타트 액터플레이어 스타트 액터를 사용하여 플레이어의 시작 위치를 구성하는 방법을 살펴봅니다.dev.epicgames.com PIE에서 플레이어 스타트 무시하기 언리얼 에디터에서 에디터에서 플레이(Play in Editor)를 사용하여 게임을 미리 볼 때, 플레이어 스타트 액터의 위치에 캐릭터를 스폰하지 않고 대신 레벨의 특정 위치로 먼저 이동한 다음 해당 위치에서 PIE 세션을 시작해야 할 때가 있습니다. 이 경우, 다음과 같은 두 가지 방법을 사용할 수 있습니다. '플레이 옵션(Play Options)' 메뉴..
조대현님의 언리얼 블로그 https://blog.naver.com/ekffjaos553 조대현님의 블로그 : 네이버 블로그당신의 모든 기록을 담는 공간blog.naver.com
Thirdperson Animation Blueprint Thirperson Character의 애니메이션 블루프린트의 ABP_Manny를 분석해보자우선 사용되는 변수는EventGraph를 보면 자주쓰년 Character및 CharacterMovement를 미리 저장해놓고 있다. 이후 EventBlueprintUpdateAnimation에서 Charater가 Valid할때만 노드를 진행하다.4가지를 진행하는데 첫번째 Speed와 GroundSpeed의 저장이다Pawn의 기본변수 Velocity를 이용 VectorLenghtXY를 구한다 Z값을 제외한 값으로 2차원적인 속도를 구한다.가속도벡터가 0이 아니고 GroundSpeed가 3보다 크다면 ShouldMove를 True로 만든다마지막으로 점프때 사용한 IsFalling변수의 설정이다.다음은 AnimGraph..
리타게팅 에러 루트모션 Translate mode 리타게팅후 인포즈가 아니라 달리는 현상이 나타났다.IK_FootIK_HandRoot  애니메이션 리타게팅 시, 기존 애니..