개요아이템의 등장 확률이나 회복물약의 수치 등을 하드코딩 하게 된다면 나중에 기획이 변경되었을 때 일일히 수정해줘야하고 변경될때마다 빌드를 해줘야한다.따라서 실제 게임개발에서는 CSV형식으로 데이터를 따로 관리하는 경우가 많은데 언리얼에서 데이터테이블을 만드는 방법을 알아보자.FTableRow먼저 가지고 올 데이터의 정보들을 구조체 형식으로 만들어줘야한다.new C++ class로 아무것도 상속하지 않도록 None을 선택하고 생성해준다.이후 다음과 같은 정보를 가진 CSV의 행을 받아오기 위해서 구조체를 만들어준다.여기서 수정한 부분은리플렉션 시스템에 등록USTRUCT(BlueprintType) 으로 선언.generated.h includeGENERATED_BODY()FTableRowBase를 상속데이..
개요C++에서 Enhanced Input System을 사용해서 Character의 action까지 바인딩하는 것을 정리했다.초기세팅에디터상에서 미리 연결할 Input Action과 Action Mapping Context를 생성한다.해당 IMC는 w,a,s,d는 IA_Move, space bar IA_Jump, shift IA_Sprint로 Mapping 되어있다. PlayerControllerPlayerController의 주요 역할은 다음과 같다.입력 처리카메라 제어UI 상호작용possess, unpossess따라서 IMC를 사용자와 연결하는 것도 PlayerController에서 처리하는 것이 좋다.블루 프린트 상에서 IMC와 IA를 할당할 수 있게 UPROPERTY로 리플렉션 시스템에 등록해주..
개요이번 주 분량의 강의를 들으면서 내용 정리를 하려고 하니 중복되는 내용도 많고 모두 정리하는 것은 비효율적이라고 생각했다. 그래서 강의 중 기억할만 한 것들은 미리 질문형식으로 써놓고 나중에 답을 적으면서 복습하는 형식으로 공부했다.Private, Public의 차이?언리얼 에디터 상에서 새로운 C++ 클래스를 생성할 때 Public으로 생성하는지 Private으로 생성하는지에 대한 차이가 무엇인지 물어보는 질문이다.Public으로 생성하면 헤더는 public, 소스파일은 private에 저장되고 다른 소스파일에서 해당 헤더를 include할 수 있다.Private으로 생성하면 헤더와 소스파일 모두 private에 저장되고 다른 소스파일에서 include할 수 없다.CoreMinimal.h에 있는 것..
개요언리얼에서 블루프린트 연동을 위한 리플렉션 시스템에서 'UFUNCTION' 매크로의 기능에 대해서 정리해보았다.UFUNCTION메소드에 붙는 리플렉션 매크로입니다.인자값을 통해 용도에 맞게 활용할 수 있다.만약 인자값이 없다면 언리얼 리플렉션 시스템에 메소드를 등록만 하고 실제 블루프린트에서 활용은 불가능하다.지정자들 중 가장 많이 사용되는 BlueprintCallable, BlueprintPure, BlueprintImplementableEvent를 알아보자.BlueprintCallableUFUNCTION에 해당 지정자를 사용하면 블루프린트의 이벤트 그래프에서 호출 가능한 함수로 만들어준다.호출 가능한 함수는 실행 핀이 존재하는 노드로 만들어 주는 것이라고 이해하면 된다. 다음과 같이 함수를 선언하..
개요이번에 1주일 동안 텍스트기반(?)이지만 애니메이션까지 나오는 게임을 개발하였다.시연 영상을 보면 골드 획득 버그가 있는데 무시해주자...Github 링크https://github.com/wkdgns135/Darkest-Textion 해당 프로젝트에서 내가 구현한 부분은전체적인 소비 아이템, 장착 아이템 구현Scene별로 인벤토리 창 띄우기인벤토리에서 커서의 아이템 소비, 장착 칸에 장착전체 상점 Scene 상점 Scene 구매, 판매KPT 회고해당 프로젝트를 끝내고 팀원들과 KPT 회고를 하였다. 프로젝트 완료 후 하는 건 처음이라 해당 블로그를 참고하여 팀장님이 회고를 진행해주셨다.https://www.designsori.com/zero/1157702 디자인소리 - 프로덕트 매니저의 애자일 회고..
개요이번에 팀원들과 사이드 프로젝트로 플레이어와 적의 피격을 구현하기 위해 데미지를 받는 Actor의 TakeDamage를 호출하여 구현하였는데 뭔가 임시로 한 느낌이라 실제로 언리얼에서는 어떤 구조로 Damage를 주고 받는 것을 권장하는지 살펴봤다.TakeDamage 호출데미지를 받는 로직을 추가하기 위해 언리얼에서는 TakeDamage 함수를 오버라이드하길 권장하고 있다. TakeDamge는 AAactor에 선언되어있다. FDamageEvent는 데미지에 관한 어떤 정보를 넘겨야되나보다 정도의 감만 왔다. FDamageEvent에 대해서는 이따가 설명,,,TakeDamage 시그니처float TakeDamage(float DamageAmount, FDamageEvent const& DamageEve..