분류 전체보기 115

[UE4] 스마트 포인터 (Smart Pointer)

언리얼 스마트 포인터 라이브러리는 메모리 할당과 추적의 부담을 해소해주도록 설계된 C++11 스마트 포인터들의 커스텀 구현입니다. 이 구현에는 업계 표준인 Shared Pointers(공유포인터), Weak Pointers(약 포인터), Unique Pointers(유니크 포인터)가 포함되어 있습니다. 또한 null이 불가능한 Non-Nullable Shared Pointer와 같은 역할을 하는 Shared References 도 추가되었습니다. 단, 언리얼 오브젝트는 게임 코드에 더 최적화된 별도의 메모리 추적 시스템을 사용하기 때문에 이러한 클래스들은 "UObject"시스템에는 사용할 수 없습니다. SmartPointer Type 스마트 포인터들은 갖고 있거나 참조하는 오브젝트의 생명 주기에 영향을 ..

UE4 2023.02.24
[UE4] Projectile Movement Component

What is ProjectileMovementComponent? ProjectileMovementComponent를 앞으로 PMC라고 칭하겠습니다. PMC는 tick이 돌아가는 동안에 다른 컴포넌트의 위치를 업데이트해주는 컴포넌트입니다. 충격이 가해진 이후 바운스되는 부분이나 특정 타겟을 향해 유도미사일처럼 이동하는 기능 등을 지원합니다. 보통 움직이는 컴포넌트는 PMC를 소유하고 있는 액터의 루트 컴포넌트이지만, 다른 컴포넌트를 선택할 수도 있습니다. (SetUpdatedComponent()를 사용하세요.) 만약 업데이트되는 컴포넌트가 물리를 시뮬레이팅중이라면(Simulating Physics), 오직 Initial launch parameters(발사 초기화 인자들) 만이 발사체(projectile..

UE4 2023.02.14
[UE4] 게임플레이 프레임워크

플레이중인 게임의 정보를 처리하는 클래스는 크게 GameMode와 GameState 둘로 나뉘어진다. GameMode 게임 프레임워크의 바탕은 GameMode이다. GameMode에서는 게임의 규칙을 설정한다. 플레이어 스폰 처리도 담당한다. 보통 플레이 도중 자주 바뀌는 데이터는 없어야 하며, 서버에만 존재하므로 클라이언트에서 알아야 하는 휘발성 데이터는 절대 넣어선 안된다. 가장 제약이 없다는 게임일지라도 토대가 되는 규칙들이 존재하며, 이러한 규칙들이 게임모드를 이룬다. 가장 기본적인 수준에서 간단하게 예를들어 보자면 다음과같다. - 존재하는 플레이어와 관람자의 수, 허용된 플레이어와 관람자의 최대 인원. - 플레이어가 게임에 들어오는 방식, 스폰 위치 선택 규칙과 기타 스폰/리스폰 동작 포함 가능..

UE4 2023.01.18
[졸작] 기능 구현 리스트

# 졸업작품 'Strangers'는 꼭 필요한 경우를 제외하고 되도록 C++로 구현하였습니다. #깃허브 링크 : https://github.com/Kimsol21/UE_Strangers GitHub - Kimsol21/UE_Strangers Contribute to Kimsol21/UE_Strangers development by creating an account on GitHub. github.com #유튜브 링크 : https://youtu.be/NrvFqwTMVmA 0. 플레이어의 입력과 기능 바인딩 WASD(이동), 마우스 휠(카메라 Zoom), 스페이스바(점프), 마우스 클릭(공격, 콤보공격)을 입력설정에서 추가해주고, PlayerController에서 이를 바인딩 ..

[졸작] 기능구현리포트_4회차

기존에 작성한 코드들은 책의 내용을 따라한 코드가 많다. 그렇다 보니 구조적으로 마음에 들지 않는 부분도 있고, 책이 만들고자 하는게임과 내 게임은 방향성이 다르기 때문에 더 늦기 전에 기존의 코드 구조를 대규모 수정하기로 했다. 1. 입력 로직 PlayerController로 옮기기. 기존에 Character코드에서 입력설정과 그에 맞는 함수들을 바인딩해주었는데, 이는 만약 플레이어가 Character가 아닌 다른 Pawn에 빙의하고자 했을 때 해당 Pawn에도 일일히 바인딩 해주어야 하기 때문에 확장성이 떨어진다고 생각하여, MyPlayerController로 Player의 입력처리 로직을 모두 옮겼다. 2. Charater클래스를 상속받아 Player와 Enemy클래스로 나누기. 기존의 Charac..

[UE4] 캐릭터 무브먼트 컴포넌트

CharacterMovementComponent는 매번 언급할 때 이름이 너무 길기 때문에 CMC로 칭한다. CMC를 사용하는 캐릭터는 자동으로 클라이언트-서버 네트워킹이 탑재된다. 난 서버딸린 게임을 만들 생각은 아직 없기 때문에 구체적인 리플리케이션 방식에 대해선 언리얼 Document 원문을 참고하자. 아무튼 서버 네트워킹이 자동으로 탑재되어있다니 매우 편리한 컴포넌트임에는 틀림없다. What is CharacterMovement Component? CMC는 Character 소유자와 관련된 움직임 로직을 다루는 컴포넌트이다. CMC는 걷기, 떨어지기, 수영, 날기, 커스텀 등 다양한 움직임 모드를 지원한다. 움직임은 주로 최근 속도와 가속도의 영향을 받는다. 가속도는 지금까지 누적된 input벡터..

UE4 2022.11.24
[221123] 피보나치 수

https://school.programmers.co.kr/learn/courses/30/lessons/12945 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 자료형 오버플로에 현명히 대처하는게 관건이었다! #include #include using namespace std; int solution(int n) { //n은 2,3,4... long long answer = 0; long long temp = 0; int count = 2; long long fiv1 = 0; long long fiv2 = 1; while (count

카테고리 없음 2022.11.23
[221122] 숫자의 표현

https://school.programmers.co.kr/learn/courses/30/lessons/12924 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr #include #include using namespace std; int solution(int n) { int answer = 0; int sumTotal = 0; for (int startNum = 1; startNum < n / 2+1; startNum++) { int plus = 0; while (sumTotal < n) { sumTotal += startNum + plus; plus+..

[UE4] 위젯 UI 제작하기

위젯 UI 생성하기 캐릭터의 HP 값을 시각적으로 볼 수 있도록 UI 위젯을 제작하고 캐릭터위에 부착해보자. 먼저 위젯 블루프린트를 선택해 UI 에셋을 하나 생성해준다. 생성한 에셋에 들어간 후 다음과 같이 Canvas Panel을 제거하고 일반>Progress Bar을 드래그해 생성해준다. 그 후 감싸기 메뉴로 Vertical Box를 골라주면 세로로 UI 컨트롤들을 정렬해주는 Vertical Box가 ProgressBar컨트롤을 감싸게 된다. 그리고 팔레트의 프리미티브 그룹에서 Spacer컨트롤을 VerticalBox안에 있는 ProgressBar 위와 아래에 사진과 같이 추가한다. 이제 Vertical Box는 세 개의 컨트롤을 가지는데, 레이아웃을 잡기 위해 Vertical Box의 전체 영역 내..

UE4 2022.11.14