일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- STCF
- MAC
- ret2libc
- Double free
- 언리얼엔진
- DP
- Unity #Indie Game
- Race condition
- frequency-domain spectrum analysis
- 유스케이스
- RBAC
- Rr
- dtft
- 게임개발
- dirty cow
- 메카님
- AINCAA
- 운영체제
- 게임 개발
- 유니티
- TSet
- linear difference equation
- DSP
- pdlc
- sampling theory
- MLFQ
- CTF
- 배경 그림
- stride
- Security
- Today
- Total
다양한 기록
[UE Game Framework] #1 기초 본문
https://github.com/ideugu/UnrealProgrammingPart2/tree/1_1
언리얼 프레임워크 기능 목록
게임: 월드, 모드, 상태
기믹: 트리거, 스폰, 물리
플레이어: 입력, 카메라, HUD, 상태
폰: 이동, 모션, 액션, 위젯
데이터: 애셋, 테이블, 설정, 저장
인공지능: 길찾기, BT
월드(World)
- 게임 컨텐츠를 담기 위해 제공되는 가상의 공간
- 월드는 시간, 트랜스폼, 틱을 서비스로 지공
- 월드 세팅이라는 컨텐츠 제작을 위한 기본 환경 설정을 제공
- 월드의 기본 단위는 액터(Actor), 액터 클래스는 접두사 A 사용
월드의 역할
- 게임 컨텐츠를 담는 공간 (Transform)
- 게임 컨텐츠의 진행 (Tick)
- 게임 흐름을 위한 시간 (Time)
- 기본 환경 설정 (World Setting)
- 월드의 단위 구성 요소 (Actor)
게임 모드 (Game Mode)
- 게임 규칙을 지정, 게임을 판정하는 최고 관리자 액터, 형태 없음
- 하나의 게임 => 하나의 게임 모드
- 게임 모드에서 입장할 사용자의 규격 지정 가능
- 멀티플레이어 게임에서 판정을 처리
게임 모드의 역할
- 플레이어 입장 관리
- 게임의 최종 승패 관리
- 게임의 규칙 관리
- 게임 데이터 검증 (멀티)
기믹 (Gimmick)
- 게임 진행을 위한 이벤트를 발생시키는 사물 액터
- 주로 이벤트 발생을 위한 충돌 영역 설정 => 트리거(Trigger)
- 트리거를 통해 캐릭터와 상호 작용, 월드에 액터를 스폰해 컨텐츠 전개
기믹의 역할
- 월드 내 사물과 상호작용 수행
- 지정된 조건 만족 시 이벤트 발생
- 월드에 물체를 스폰
플레이어 (Player)
- 게임에 입장한 사용자 액터, 형태 없음
- 게임 모드의 로그인을 통해 사용자가 게임 월드에 입장 시 플레이어 생성
- 싱글 플레이 -> 0번 플레이어 설정
- 사용자와의 최종 커뮤니케이션
플레이어의 역할
- 게임에 입장한 사용자와의 1:1 대응
- 사용자의 현재 상태 및 데이터 관리
- 사용자 입력의 1차 처리
- 사용자 화면에 대응하는 카메라 관리
- 사용자 화면에 나타나는 HUD UI 관리
폰 (Pawn)
- 무형의 액터인 플레이어가 빙의하여(Possess) 조종하는 액터
- 길찾기 가능, 기믹 및 다른 폰과 상호작용
- 폰 중 인간형 폰 -> 캐릭터
폰의 역할
- 빙의(Possess)를 통해 플레이어와 연결
- 사용자 입력의 실제 처리
- 사용자 화면에 대응되는 카메라 설정
- 기믹과의 상호작용
- 현재 상태에 적합한 애니메이션 재생
각각 폴더 추가 및 코드 추가
그리고 .Build.cs 파일에 모듈 이름 추가
월드 세팅 들어가서
게임 모드 변경
원래 디폴크 폰 클래스랑 플래에어 컨트롤러 클래스는 디폴트인데 코드에서 변경해줌
// Fill out your copyright notice in the Description page of Project Settings.
#include "Game/ABGameMode.h"
//#include "Player/ABPlayerController.h"
AABGameMode::AABGameMode()
{
static ConstructorHelpers::FClassFinder<APawn> ThirdPersonClassRef(TEXT("/Game/ThirdPerson/Blueprints/BP_ThirdPersonCharacter.BP_ThirdPersonCharacter_C"));
if (ThirdPersonClassRef.Class != nullptr )
{
DefaultPawnClass = ThirdPersonClassRef.Class;
}
static ConstructorHelpers::FClassFinder<APlayerController> PlayerControllerClassRef(TEXT("/Script/ArenaBattle.ABPlayerController"));
if (PlayerControllerClassRef.Class != nullptr)
{
PlayerControllerClass = PlayerControllerClassRef.Class;
}
//PlayerControllerClass = AABPlayerController::StaticClass();
}
생성자에서 설정
ThirdPersonClassRef는
Third Person 이미 언리얼 엔진에서 만들어진 거 가져온 거라 레퍼런스 가져와야 함
/Game/ThirdPerson/Blueprints/BP_ThirdPersonCharacter.BP_ThirdPersonCharacter_C
이렇게 레퍼런스를 주는데, 일단 카피 레퍼런스 시 '~' 사이에 끼워져서 문자열이 주어짐
밖에 다 날리고, _C 를 붙여줌 (기본적으로 클래스로 만든게 아니기 때문)
PlayerControllerClass는 직접 추가한 C++ 코드를 집어넣으면 되니까
헤더 파일을 포함시킬 수도 있는데(주석 처리된 부분)
헤더파일은 가능한 적게 하는게 좋으니 레퍼런스 줘서 설정 (단, 애초에 클래스라 _C는 안붙임)
뷰포트에 바로 마우스가 가도록 하기
플레이어 컨트롤러의 헤더파일인데, BeginPlay()를 오버라이드 해야 함
// Fill out your copyright notice in the Description page of Project Settings.
#include "Player/ABPlayerController.h"
void AABPlayerController::BeginPlay()
{
Super::BeginPlay();
FInputModeGameOnly InputModeGameOnly;
SetInputMode(InputModeGameOnly);
}
플레이어 컨트롤러의 cpp 파일
이렇게 설정해두면 실행 시 바로 포커스가 게임으로 감
잘 움직이고, 바로 화면에 포커스가 감 (Shift + f1 시 마우스 포커싱 빠져나옴)
'언리얼 엔진 > Unreal Game Framework' 카테고리의 다른 글
[UE Game Framework] #6 Character Attack Hit Check (0) | 2025.01.05 |
---|---|
[UE Game Framework] #5 Character Combo Action (0) | 2025.01.04 |
[UE Game Framework] #4 Character Animation Setting (0) | 2025.01.04 |
[UE Game Framework] #3 Character Control Setting (0) | 2025.01.03 |
[UE Game Framework] #2 Character & Input System (0) | 2025.01.03 |