이번엔 캐릭터의 점프와 애니메이션을 제작해보겠다.점프 같은 경우 ACharacter 클래스에 Jump와 StopJumping이라는 함수로 전부 구현되어 있기 때문에 우리가 코드상에서 키 바인딩만 해주면 바로 사용이 가능하다. 점프 애니메이션이전 포스팅에서 만든 Idle/Jog의 GroundLocomotion을 기본 베이스로 이 상태를 유지하다가 공중에 뜨게 된다면 Jump 모션을 진행하고 바닥에 닿을 경우 Landing을 진행해보자.이렇게 LocoPose로 Save 할 것이다.Locomotion의 State Machine은 다음과 같이 구상한다.Idle/Jog는 GroundLocomotion을 Cahce한 값을 바로 건네주기만 하면 된다.상태를 전이하는 것도 간단하다.공중에 있는지 판단하기만 하면 된다...
분류 전체보기
강의를 통해 배운 내용을 바탕으로 나만의 게임을 만들어보자.게임의 기획은 마치 엘든링과 같은 소울류로 제작할 계획이다. 기본 공격과 스킬들로 적들을 처지하고 최종 보스를 처치하면 엔딩이 나오는 것으로 마무리 할 계획이다.밸런싱의 경우 그때마다 테스트 해보고 정하도록 하자.(기획자가 없기에...)에셋캐릭터 및 배경 같은 경우는 사실상 에셋을 따로 구해와야만 한다. 이 작업부터 진행하기엔 효율이 많이 떨어지고 모델링 부터 다시 배워야하기 때문이다. 에픽게임즈에서 제공하는 기본 에셋 중 맘에 드는것이 있어 이것을 활용하겠다.https://www.fab.com/ko/listings/7d76ddf0-d9ce-4d00-939e-d72793534d01https://www.fab.com/ko/listings/0fb3c..
행동 트리행동 트리는 인공지능 모델을 설계하는데 많이 사용한다. 우선 순위와 트리 구조를 사용해서 인공지능을 설계하는 기법을 의미한다. 게임에서는 몬스터나 NPC의 행동을 결정하는 AI를 제작하는데 사용한다. 행동트리는 기존에 있던 FSM 모델의 문제를 해결했다.이는 인공지능으로 활용하기에는 여러 상황에 대응하기가 어렵다는것이 일반적이다.그래서 이를 개편해서 사용한 것이 Behavior Tree이다.점이라 한다면.모듈화가 잘 되어있어서 확장이 자유로움 애초에 가지를 가지고서 놀아주는 구조다 보니까,, 좁게할 수도 있고 넓게 할 수도 있음.트리를 기반으로 계층화가 잘 되어있어서, 복잡한 인공지능 모델을 쉽게 설계 할 수 있다.직관적으로 트리를 이용하다보니까, 손쉽게 파악이 가능함.BT에서 제공하는거 적절하..
주요적인 목표데이터 기반의 캐릭터와 기믹 시스템의 제작을 진행한다.엑셀 기반의 데이터 테이블과, ini파일 설정에 대해서 다뤄볼 예정임.게임 데이터를 관리하는 싱글톤 객체를 등록한다엑셀 데이터 및 INI 파일을 활용하여 게임 데이터를 관리한다.액터의 초기화를 위한 지연 생성의 기능을 구현한다. 데이터 관리언리얼 엔진에서는 엑셀파일 csv 형태의 파일을 로드할 수 있게 지원한다.따라서 각종 아이템 정보나 스탯 정보 등을 csv 파일로 관리하고 이를 로드해서 구조체로 관리하는것이 편하다. 먼저 해당 헤더에서는 데이터 애셋과 유사하게, FTableRowBase를 상속받은 구조체를 선언하는 작업이 필요하다.(csv에 존재하는 데이터를 가져오게 하기 위함)액셀의 Name 이라는 컬럼이 들어가야 하는데, 이를 제외..
이번 섹션의 주된 목표는 다음과 같다.레벨에 무한히 스폰하는 기믹을 제작한다.이번 플레이 기믹 = 스폰과 애셋에 관해서 다뤄본다.무한 맵 생성을 위한 기믹 액터의 설계한다애셋 매니저를 활용한 애셋 관리 방법을 학습한다.액터의 스폰과 약참조 포인터의 사용법을 실습한다.스테이지스테이지의 경우 플레이어와 NPC가 1:1로 겨루는 장소이다.스테이지는 4개의 상태를 가지고 있으며 순서대로 진행된다.READY : 플레이어의 입장을 처리한다 ( 입장 대기 중 )FIGHT : 대전을 진행한다 (플레이어와 싸우는 NPC를 소환)REWARD : 대전 진행 후 보상을 받는 단계임 (플레이어가 이겼을 시에 아이템 상자 스폰)NEXT : 다음 스테이지로 이동을 처리한다. (플레이어가 다음으로 이동할 수 있도록 처리)이러한 순서..
아이템을 획득 할 수 있는 박스를 생성하고 어떤 종류의 박스인지에 따라 획득하는 아이템이 다르도록 만들어보자.캐릭터에 다양한 종류의 아이템을 제공하는 시스템을 만들어 본다.이번에 다루는 게임 프레임워크는 기믹의 트리거를 맡게 될 예정.트리거 박스를 활용하여 아이템 상자를 구현한다다양한 종류의 아이템에 대한 개별적인 습득 처리에 대한 구현소프트오브젝트 레퍼런스와 하드 오브젝트 레퍼런스의 차이를 이해한다.아이템 박스아이템이 있다하더라도 충돌을 감지 해야만 습득을 할 수 있기 때문에 아이템 박스를 만들고 트리거를 설정해줘야한다.ABItemBox라고 하는 액터를 생성하고각 요소로 트리거와 static mesh, ParticleSystem을 추가한다.루트 컴포넌트는 트리거로 설정한다.protected: UPROP..
요약공격판정 구현을 위한 물리 트레이스 채널 및 프로필 설정디버그 드로잉 기능을 활용한 충돌 디버깅데미지 프레임웍을 이용한 데미지 전달Delegate와 Lambda함수의 사용Unreal World가 제공하는 3가지 충돌 서비스LineTrace, Sweep, Overlap 3가지 방법으로 World 내 배치된 충동체와 충돌하는지 파악하고 충돌한 Actor 정보를 얻어올 수 있다.LineTrace는 지정한 방향으로 "선"을 투사해 이와 충돌되는 물체가 있는지 확인한다.Sweep은 선이 아닌 어떠한 "도형"을 지정한 방향으로 투사해 물체가 있는지 확인한다.Overlap은 투사는 아니지만 지정한 영역에 큰 범위의 도형을 설정해 해당 Volume 영역과 물체가 충돌하는지 검사한다.공격판정 구현을 위한 물리 트레이..
게임에서 주요 시스템이라고 할 수 있는 애니메이션을 만들어보자.Epic Games가 제공하는 Infinity Blade : Warriors 라는 에셋을 다운받아 사용할 것인데언리얼 마켓플레이스가 사라지고 Fab이 생기면서 해당 에셋이 사라졌다.그러나 아무 에셋이나 사용해도 무방하다.캐릭터 움직임기본 상태 Idle과 속도에 따라서 블렌딩 작업을해 애니메이션을 나타내보도록 하자.애니메이션은 애니메이션 블루프린트라고 하는 BP에서 관리를 한다.C++AnimInstance를 생성한 뒤 이를 상속받는 애니메이션 블루프린트를 만들어 애님 그래프로 구체적인 모션을 지정하자. BP를 만들때 스켈레탈 메시에 어떤걸 사용할지 선택해야한다.애니메이션 블루프린트 구조캐릭터 애니메이션 시스템의 생성법은?스켈레탈 메시 컴포넌트의..
게임에 있어서 가장 중요한 부분을 다뤄보고자 한다.캐릭터 컨트롤 요소캐릭터를 컨트롤하기 위한 용어 및 요소를 알아보자.1. 컨트롤러 : 입력자의 의지를 지정할 때 사용한다. 목표 지점, 방향, 위치를 지정하는 것, ControlRotation이라는 속성을 가지고 이를 주로 사용한다.2. 폰 : 폰의 트랜스폼을 지정하는 용도로 사용된다.3. 카메라 : 화면 구도를 설정하기 위해서 사용된다. 카메라만 단독 사용할 경우 1인칭의 경우에 사용된다.4. 스프링 암: 카메라의 지지대, 화면 구도를 설정하는데 3인칭에 사용된다. 셀카봉이라 생각하면 된다.5. 캐릭터 무브먼트 : 캐릭터의 이동과 회전을 조정하는 용도로 사용된다.우리가 회전하고 싶은 값은 컨트롤러에서 Desired Rotation이다. 그리고 그냥 Ro..
언리얼 게임 프레임워크기본적으로 게임을 만들기 위해서는 시스템이 어떻게 구성 되어있는지 알 필요가 있다.언리얼에서는 게임을 만들때 공통적으로 사용되는 시스템을 정리해서 하나의 프레임 워크로 제작해놓았다.이렇게 만들어진 프레임워크를 가져다가 세공하는 형식으로 게임을 제작한다.월드월드는 게임 컨텐츠를 담기 위해 제공되는 가상의 공간을 의미한다.특별한 오브젝트인데, 시간, 트랜스폼, 틱등 예약된 컴포넌트에 다양한 서비스를 제공한다.월드 세팀 이라는 환경설정을 통해 컨텐츠 제작을 할 수 있다. 월드 내부에서의 서비스르 바탕으로 동작하는 오브젝트들을 액터 라고 부른다.GameMode게임 규칙을 지정하고 게임을 판정하는 최고 관리자 액터이다. 무형으로 존재한다.언리얼 엔진에서는 하나의 게임에는 반드시 하나의 게임 ..