< '언리얼엔진5/블루프린트 Paper2D 로 게임 만들기' 카테고리의 글 목록

언리얼엔진5/블루프린트 Paper2D 로 게임 만들기 14

[Paper2D로 게임만들기 복습] 2. 구조체, 열거형 변수, 게임 모드, 캐릭터 이동

에셋 파일들과 블루프린트 틀은 이전에 들었던 Rookiss 님의 '언리얼엔진으로 2D게임 만들기' 를 기반으로 했다. 구조체 강의를 들을 때는 기초적인 지식부터 쌓은 뒤 이후에 구조체를 적용하였는데, 리팩토링을 여러 번 할 필요 없이 미리 구조체를 만들어 놓았다. 구조체의 구성은 다음과 같다. . 이 CreatureData의 기본값은 일단 위와 같이 설정해 놓았고, 어짜피 데이터 테이블에서 데이터를 꺼내서 덮어씌워서 사용할 것이므로 크게 상관 없을 것이다. 다음으로 데이터 테이블을 만들어서 Knight 의 정보도 넣어 주었다. 이렇게 만든 데이터 테이블의 정보를 토대로 Creature 블루프린트에서 이 생물(기사/ 스켈레톤) 의 체력을 설정해 줄 수 있게 했다. 열거형 변수 위의 두 가지 상태를 만들어서..

[Paper2D로 게임만들기 복습] 1. 진행 계획

진행 계획 언리얼엔진 강의를 들으면서 Paper2D로 간단한 2D게임을 만드는 것까지 진행 해 보았는데, 대략 보름 정도의 휴식을 하였으니 다시 공부를 시작 할 예정이다. 당연히 강의만 들어서는 툴을 익히기는 힘들다고 판단된다. 따라서 에셋은 강의에서 제공받은 에셋을 그대로 사용하되, 블루프린트는 자력으로 만들어 보기로 한다. 아래의 절차를 따를 예정이다. 하루마다 만들 주제를 선정한다. ex) 캐릭터 이동, 데미지 계산 함수, 몬스터 배치 강의의 도움을 받지 않고 자력으로 만들어 본다. 일정 시간이 지나도 해결하지 못할 경우 강의를 다시 보거나 이전에 만들어 놓았던 완성품에서 해당하는 부분을 찾아본다. 혹은 내가 적어놓은 블로그 글을 확인해본다. 확인한 것을 토대로 다시 블루프린트를 만든다. 백준 공부..

[Paper2D로 게임 만들기 필기] 9. 게임 인스턴스, 컴포넌트, UI, 유지보수

게임 인스턴스 이제껏 만들어서 사용하던 BP_gamemode 라는 gamemode는 레벨에 종속적이다. 따라서 레벨이 바뀌면(ex. 맵 이동) 정보가 휘발될 수 있음. 따라서 전역적인 변수는 관리가 힘들다. 그 다음으로 많이 사용한 get actor of class 는 정석적인 관리법은 아니다.(임의로 액터에 접근하여 데이터 관리) 따라서 게임 시작부터 끝까지 유지 되어야 하는 정보가 있다면 '게임 인스턴스' 를 사용한다. 게임 인스턴스는 게임의 시작과 끝까지 유지되는 클래스라고 생각하면 된다. 컴포넌트 컴포넌트의 종류는 두 가지인데, Actor Component와 Scene 컴포넌트 이다. 액터 컴포넌트(Actor Component) - 어느 액터에나 붙을 수 있는 컴포넌트 / 액터에 대한기능만 가지고..

[Paper2D로 게임 만들기 필기] 7-8. 타일 관련 작업, 몬스터 스폰 / AI 개선

7일차부터는 지금까지 짠 로직을 타일 기준으로 수정하는 작업을 했다. 함수 Pure 옵션 쉽게 말해서 함수의 옵션 중 Pure : 상태를 변경하지 않는 함수. 반환값만 돌려주거나 한다. ex) 플레이어의 위치는? -> (4, 5) Impure : 자유롭게 상태를 변경하는 함수. Get 함수 같은 경우는 디버깅의 간편성을 위해 Pure 로 설정해주는 것이 좋아 보인다. ( 코드에 변형을 가하냐 하지 않느냐를 다른 팀원도 간편하게 볼 수 있음) 위의 작업을 통해 타일을 한 칸씩 이동할 수 있다. 위의 함수는 목적지에 도착했는지 확인하는 함수인데, 벡터의 길이가 10 이하면 도착했다고 판별한다. 여기서 10은 임의로 정한 벡터 길이이다.(추후 수정 예정) Stop Move 가 아니면, 다음 목적지를 계산해서 ..

[Paper2D로 게임 만들기 필기] 6. Orthographic, 타일맵

Orthographic Projection 언리얼엔진은 3D 기반 엔진이기 때문에, 우리가 만들고 있는 액터들은 3D 객체를 2D처럼 보이게 해서 사용을 하고 있는 것이다. 따라서 아래와 같은 문제가 발생할 수 있다. 실행 화면 카메라에 원근이 적용되어 스켈레톤의 모습이 커지고, 심지어는 플레이어와 y축으로 겹치는 것도 볼 수 있다. 이때 필요한 것이 Orthographic 옵션이다. Orthographic Projection 은 직교 투영을 뜻하는데, 쉽게 말해 정사영이다. 이렇게 하면 3D임에도 2D와 같이 게임 화면이 표현된다. 물론 나중의 충돌 처리를 위해서는 플레이어와 몬스터 객체들을 같은 Y축 상에 배치해야 한다. BP_Knights 에서 Camera 를 선택한 뒤 Projection Mode..

[Paper2D로 게임 만들기 필기] 4-5. DataTable, 피격 판정, Widget Blueprint, FSM, Controller

지금까지 클래스에 들어있는 변수들을 변수 내에 멤버 변수로 선언해서 사용을 했었는데, 데이터 테이블을 사용하면 더 효율적으로 관리할 수 있다. 먼저 구조체를 만들어서 테이블에 원소를 넣기 쉽게 만든다. Structure 이렇게 만들어준 구조체를 데이터 테이블에서 사용할 예정이다. DataTable 이미지 파일, 객체에 대한 정보, 서버에서 받아오는 정보들 등 담아둘 정보가 많은 경우에는 멤버 변수로 모두 관리하기가 매우 힘들다. 따라서 이렇게 구조체를 만들고 데이터 테이블에 넣어 두면 정보를 조회하기도 편하고, 관리하기도 편하다. getDataTableRow를 통해 정보를 가져온다. 마찬가지로 이전의 애니메이션에서 하나하나 가져왔던 데이터들을 데이터 테이블의 Row를 불러와서 Select문에 집어넣을 수..

[Paper2D로 게임 만들기 필기] 1-2. Unreal VS Unity, Spirte & Texture, 키 매핑, 매크로

언리얼 엔진의 계층구조 유니티에서는 큐브를 만들 때 아예 빈 깡통에서 채워 나간다. 반면에 언리얼 엔진은 이미 큐브를 생성하면 여러 기능을 가지고 있다. ex) cube 를 만들면 Actor 클래스를 상속받아져 있다. 언리얼엔진은 따라서 상속구조를 잘 이해 해야한다. Unity : 컴포넌트가 핵심 Unreal : 상속 구조가 0순위 Sprite : 게임 등지에서 사용되는 움직이는 2차원 비트맵 개체를 가리키는 용어. 마치 도깨비불이 둥둥 떠다니듯 배경화면과 독립적으로 움직일 수 있었기 때문에 sprite를 어원으로 삼은 것 같다 (출처 : 나무위키) Texture : 물체에 옷을 입힌다. Flipbook 프레임 속도 및 여러 이미지로 움직이는 스프라이트를 만들 수 있다. Actor -> Pawn -> C..

[언리얼엔진 5 필기] 7. Rotator, 슬라임 경주 만들기, Event Dispatcher

X, Y, Z 축으로 회전할 때 세개의 값으로만 관리하면 축이 겹쳐서 어느 순간 관리가 불가능한 상황이 됌(Gimbal Lock)따라서 Rotator 객체를 사용한다.Rotator x,y,z,w 네 개의 값을 가짐 . 왜 네 개의 값을 가지는가? w는 무엇인가? 에 대한 설명은https://luv-n-interest.tistory.com/805 쿼터니언(사원수), Quaternions//21.12.17 업데이트 회전에 관해서 오일러와 쿼터니언이 있다. 우리가 상식으로 알고 있는 것은 오일러이고 오일러를 보완하기 나온 것이 쿼터니언이다. 알아보자 이해하기 위해선 복소수를 알고luv-n-interest.tistory.com이 분의 글을 참조했다. 유치원생의 관점에서 요약하자면 사원수를 이용해 벡터를 4차원 ..

[언리얼엔진 5 필기] 6. 은닉성 , 구조체, 벡터,

은닉성 public : 누구에게나 공개 protected : 상속 받아서 만들어진 클래스들은 사용 가능 private : 내부적으로만 접근 가능 (동일한 클래스 안) 굳이 구분하자면 은닉성 : 데이터를 숨기는 것 캡슐화 : 은닉화된 데이터와 로직을 묶는 개념 위험한 것을 외부에 노출시키지 않는다 구조체 딱히 설명할게... 없다. 로컬 좌표, 월드 좌표 로컬 좌표 : 오브젝트의 중앙이 원점이 되어 좌표계 구성 월드 좌표 : 월드를 기준으로 하는 절대 좌표계 위 같은 상황에 Gun 객체의 좌표는 플레이어를 기준으로 설정되게 된다. 벡터 물체 이동에 고정값을 넣으면 컴퓨터의 성능에 따라 Event Tick 이 달라져서 고정값을 넣으면 절대!!! 안된다. Delta Seconds : 경과 시간을 이용해서 곱해서..

[언리얼엔진5 필기] 5. 블루프린트 클래스, 상속, 형변환

블루프린트 클래스 - 하나의 설계도이다. (붕어빵 틀 같은 느낌) - 관련된 이벤트도 클래스에서 직접 관리 멤버 변수는 메모리를 차지하지만 멤버 함수는 heap 영역에 한번만 만들어지고 같은 객체들이 함수를 공유하기 때문에 실질적으로 메모리에 큰 영향이 없다. 따라서 멤버 변수에 대한 관리만 신경써주면 된다. 인자 값을 참조로 받는 경우에는 isValid 체크 를 까먹지 않아야 한다. 상속성 - C++ 과 이하동일. 형변환 형변환을 했을 시 상위 클래스로 형변환 하면 멤버변수는 사용할 수가 없다.(Knight -> Player) BP player 하위에 mage, knight 가 있을 때 함수가 Knight 객체만을 인자로 받게 해 놓았으면 데이터를 관리할 수 없기 때문에 형변환을 통해 상위 클래스인 P..