[Gameplay] 애셋 매니저 (AssetManager)
·
Unrael/Basic
1. 애셋 매니저애셋 매니저는 싱글턴 객체이다.애셋 매니저는 생명 주기가 엔진 서브 시스템과 비슷하다.애셋 매니저는 애셋을 보관한다.애셋 매니저는 애셋을 글로벌로 관리한다. (어디서든 접근 가능하다)게임에 필요한 애셋들의 검색, 로드, 언로드 등을 제어한다. 2. 애셋 매니저는 언제 사용할까?큰 규모의 프로젝트에서 메모리 관리를 위해 로드할 애셋과 로드하지 않을 애셋을 구분할 때 사용한다.예를 들어 화이트 리스트 목록이라고 생각하면 편할 것 같다. (필요한 애셋들을 애셋 매니저에 등록해 사용한다.) 2. 애셋 매니저 구성 요소언리얼에서 애셋은 두 가지 타입으로 구분할 수 있다.Primary AssetSecondary Asset 2.1 Primary Asset기본적으로 주요 자산(PrimaryAsset)은..
[Game] 게임 재미 이론
·
Unrael/Basic
게임의 재미란 무엇이며 어떻게 만들어지는 걸까? 라프 코스터의 재미 이론 현실에서 불에 닿으면 뜨겁다는 것을 인간은 경험적으로 학습하게 된다.  게임에서 불에 닿으면 피가 까인다는 것을 무의식적으로 학습하게 된다. 라프 코스터의 재미 이론에 따르면 게임은 세상의 패턴을 상징화, 추상화해서 묘사하고플레이어가 게임의 규칙이나 패턴을 인식하는 과정 역시 현실과 동일한 방식(불은 뜨겁다)으로 처리된다고 설명한다.해당 이론에서 설명하는 재미란게임 속에서 새로운 패턴 또는 규칙을 인식하고 학습하며 이를 숙달해가는 과정에서 발생한다고 나와있다. 우리 뇌는 항상 새로운 자극과 정보를 갈망한다.이러한 자극이 적당한 수준으로 충족되었을 때 엔도르핀이 분비된다. 예를 들어,포켓몬 게임은 수집과 전투로 이루어져 있다.플레이어..
[UE/Basic] 게임 저장 및 로딩
·
Unrael/Basic
1. 개요오늘은 언리얼에서게임이 재시작 되었을 때 이전에 데이터들을 가져오는게임 저장 및 로딩에 대해 알아보고자 한다. 2. SaveGame 클래스게임 데이터를 저장하기 위해서는 2가지를 알아야 한다. '저장할 데이터'와 '담을 그릇' 게임을 로드하면 캐릭터는 이전에 위치했던 장소에 보여지게 된다.여기서 저장할 데이터는 "플레이어의 위치"와 "현재 맵"일 것이다.이 두가지 정보를 알면 특정 맵에 플레이어를 위치시켜줄 수 있다. 다음으로는언리얼에서 SaveGame 클래스를 제공해준다.SaveGame 클래스는 저장할 데이터를 담을 그릇이 된다.그리고 아래와 같이 저장할 데이터들을 변수로 만들어 줄 있다.#include "CoreMinimal.h"#include "GameFramework/SaveGame.h"..
[UE/Basic] 하드 레퍼런싱와 소프트 레퍼런싱
·
Unrael/Basic
1. 개요언리얼에서는 TSoftObjectPtr 클래스를 제공한다.TObjectPtr을 사용하는 것은 많이 보았으나 TSoftObjectPtr은 자주 못 봤던 것 같다.이번에 이를 어떻게 사용하면 좋을지를 한 번 살펴보고자 한다.  2. 하드 레퍼런싱.TObjectPtr은 하드 레퍼런스이다.UE5부터 포인터 타입이 도입되었으며 원시 포인터 대신 사용을 권장하고 있다. (링크) 하드 레퍼런스는 무엇일까?class _API AWeaponBase : public AItemBase{ ... UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Weapon") TObjectPtr SkeletalMeshComponent;}AWeaponBase 클래스가 T..
[UE/Basic] FHitResult
·
Unrael/Basic
1. 개요콜리전 충돌시 발생되는 FHitResult에 정리해 보았다. 2. 라인 트레이스 (LineTrace)OtherActor : 충돌한 대상 액터ImpactPoint : 충돌 지점ImpactPoint를 활용하여 피격시혈흔이 튀기는 표현 또는 충격 파티클을 표현할 수 있다. 3. 셰이프 트레이스  (ShapeTrace)OtherActor : 충돌한 대상 액터ImpactPoint : 충돌 지점Location : 충돌을 일으킨 모양의 월드 스페이스Impact Normal : 히트 표면의 노멀 벡터 참고트레이스 개요 | 언리얼 엔진 5.5 문서 | Epic Developer Community
[UE/Basic] 게임 콘텐츠 구조
·
Unrael/Basic
1. 개요오늘은 언리얼 게임을 구현하기 전게임이 어떻게 구성되어 있는지 살펴보았다. 2. 게임 콘텐츠 구조 2-1. 월드 (World)월드는 가상의 공간이다.월드의 기본 구성단위로 액터를 관리한다.액터의 생명주기와 관련된 콜백함수를 호출한다. (BeginPlay(), Tick() ...)게임 흐름을 위한 시간을 관리한다. (DeltaTime) 2-2. 게임 모드 (GameMode)게임의 규칙을 관리하는 최고 관리자 액터이다.멀티플레이 환경에서 심판 역할을 담당한다.플레이어 입장 관리게임의 최종 승패 관리게임의 규칙 관리게임 데이터 검증 2-3. 기믹 (Gimmick)플레이어에게 발생하는 이벤트 액터이다.플레이어와 상호작용을 감지하고 이벤트를 전개한다.포션 (상호작용시 체력회복)문 (상호작용시 열림)함정 ..
[UE/Basic] 데이터 테이블
·
Unrael/Basic
1. 개요오늘은 데이터 테이블의 장점을간단히 살펴보았다. 2. 데이터 테이블의 장점2.1 소스 코드 데이터데이터를 수정하려면 소스 코드를 열고 값을 수정해야한다.값을 수정하였으니 컴파일을 다시 해야한다.여러 클래스에서 해당 클래스를  include! include! 한 경우라면 컴파일 시간이 걸릴 수 있다. 2.2. 언리얼 에디터 데이터리플렉션 시스템에 의해 언리얼 에디터에서 데이터를 수정할 수 있다.데이터 수정 후 컴파일 시간을 절약할 수 있다. 2.3 데이터 테이블 데이터데이터 테이블은 언리얼 에디터에서 수정할 수 있어 컴파일 시간을 절약할 수 있다.그리고 외부 프로그램(엑셀)의 편리한 데이터 편집 기술을 적용할 수 있다.더 나아가서 데이터 테이블은 C++ 또는 블루프린트에서도 접근하여 수정할 수 있다.
[UE/Basic] 콜리전 (Collision)
·
Unrael/Basic
1. 개요오늘은 물체 충돌을 처리하는콜리전에 대해 살펴본다. 2. 충돌 판정캐릭터가 특정 물체와 부딪혔는지 판정하는 방법은월드가 제공하는 충돌 판정 서비스를 사용하여 감지할 수 있다. 월드는 크게 3가지의 충돌 판정 서비스를 제공한다.LineTraceSweepOverlap 2.1 LineTrace선을 투사하여 어떤 충돌체와 충돌하였는지 감지한다. 2.2 SweepLineTrace와 유사하며 선이 아닌 도형을 투사하여 어떤 충돌체와 충돌하였는지 감지한다. 2.3 Overlap투사가 아닌 도형을 배치하여 외부 충돌체와 충돌하였는지 감지한다. 3. 충돌 시 이벤트 발생플레이어가 움직이면서 월드의 다른 액터와 충돌한 시점에3가지 상황이 발생할 수 있다.무시 / 이벤트 없음(Ignore)겹침 이벤트 발생 (Ove..