UE5 60

작업 - 0303

시작해야 할 곳 에디터 플레이 시퀀스 다이어그램 함수 뭐가 더 많긴 한데 일단 이런식으로 정리했다. 디버깅 찍어가면서 굵직한 함수들 시퀀스 다이어 그램에 추가해주기. c++ 프로젝트 경험이 많지 않아서 많이 헤맸지만 숙련된 팀원이 c++ 함수 추적하기 도와주셨다. 또 주변에서 뭘 공부하면 좋을지 중복된 것들을 추려서 짬짬히 읽으면서 코드를 짰었다. 나중에 농사시스템 속도 좀 빼면 TSubclassOf CDO Reflection 이 세개는 빨리 정리하자 처음에는 bp어떻게 c++로 업데이트하나 막막했는데 주변에서 도움도 받고 계속 검색하면서 하니까 대충 이렇지 않을까 하는 감이 조금 생겼다. 이 덕분에 코드에 속도가 좀 붙었다. 항상 내가 이거 왜 하고 있는가? 왜 배워야 하는가? 생각하기

UE5 2024.03.04

가비지 컬렉션

가비지 컬렉션이란? 가비지 컬렉션은 메모리 관리 기법 중 하나로 프로그래밍을 하다 보면 동적으로 할당해준 메모리에 대한 지속된 관리가 필요합니다. 컴퓨터는 일정한 메모리 용량을 가지고 있고, 정해진 메모리를 초과하게 되면 동작하는 프로그램이 정상적으로 작동하지 않을 수 있습니다. 때문에 가비지 컬렉터를 통해서 프로그램이 동적으로 할당했던 메모리 영역 중에서 더 이상 쓰이지 않고 필요 없는 영역을 해제하는 것을 말합니다. C++에서는 수동 메모리 관리를 가정하고 설계하였으나, 언리얼에서는 가비지 컬렉션을 통해서 프로그래머가 관리해야 할 메모리 영역이 줄어듭니다. 가비지 컬렉션의 장단점 장점의 첫 번째로는 유효하지 않은 포인터의 접근을 막을 수 있습니다. 유효하지 않은 포인터의 접근을 막지 않으면 만약 이 ..

UE5 2024.01.26

레이캐스트와 트레이스

레이캐스트와 트레이스는 같은 작업을 뜻한다. 게임에서 플레이어 캐릭터가 무언가를 바라보고 있는지 확인하여 그런 경우 게임을 어떤 상태로 변경하고자 (예를 들어 플레이어가 무언가를 바라보면 강조시키고자)하는 경우가 있다. 또는 적이 플레이어 캐릭터를 볼 수 있는지 확인하여 그런 경우 어떤 식으로든 발사 또는 교전을 시작시켰으면 하는 경우가 있다. 이러한 두 가지 모두 레이캐스트 또는 트레이스를 통해 보이지 않는 광선을 "발사"하여 두 점 사이에 걸리는 지오메트리가 있는지 확인하고, 걸리는 지오메트리가 있으면 어떤 작업을 할 수 있도록 반환한다. 트레이스 실행 시 사용할 수 있는 옵션은 여러가지가 있다. 트레이스를 실행하여 오브젝트와 콜리전 검사를 한 뒤 히트한 오브젝트를 반환하거나, Trace Channe..

UE5 2024.01.11

멀티플레이어의 기본 -데디케이트 서버와 리슨 서버

멀티플레이어의 이해 게임을 하면서 '멀티플레이어'라는 용어를 많이 들어봤을 것이다. 이 용어가 개발자에게는 어떤 의미냐 하면, 실제로 멀티플레이어를 구현하기 위해서는 서버와 서버에 연결된 클라이언트 사이의 네트워크를 통해 전송되는 일련의 명령을 의미한다. 이를 통해 구현해내면, 개발자는 플레이어에게 다른 플레이어들과 세계를 공유하는 경험을 제공할 수 있다. 서버와 클라이언트 사이의 이러한 양방향 통신의 한 예로는 플레이어가 게임 중에 무기를 발사하려고 시도하는 시점을 들 수 있다. 플레이어가 마우스 왼쩍 버튼을 누르고 있으면, 클라이언트가 서버에 무기 발사를 원한다는 의사를 전달한다. 서버는 다음 항목을 확인해 플레이어가 무기를 발사할 수 있는지 확인한다. 플레이어가 살아 있는가? 플레이어가 무기를 장착..

UE5 2024.01.01

Survival - UE5 - Multiplayer의 작동

이 서바이벌 게임의 multiplayer로 복제되는 방식으로 설계되었다. 우선, 멀티플레이어에 대해 가장 먼저 알아야 할 것이 있다. 언리얼 엔진 내에서 멀티플레이어 게임을 프로그래밍하거나 만들 때, 따라야할 몇 가지 규칙이 있다. 만약 그 규칙을 따르지 않으면, Player1이 동작하는 모든 것이 Player2의 화면에서는 복제되지 않아 그저 멀대같이 서있는 하나의 캐릭터로만 보일 뿐이다. 이러한 문제는 멀티플레이어 게임을 제작할 때 종종 겪는 시행착오이다. UE 내에서는 멀티플레이어 작업을 수행할 때 준수해야하는 특정 규칙들이 있고, 이러한 규칙들을 잘 이해하면 원하는 종류의 멀티플레이어 게임을 거의 만들 수 있다. 실제로 언리얼 편집기 내에서는, 언리얼이 가지고 있는 두 가지 다른 유형의 멀티플레이..

UE5 2023.12.31

Delegate 사용방법

델리게이트란? C++ 오브젝트 상의 멤버 함수를 가리키고 실행시키는 데이터 유형이다. 델리게이트로 C++ 오브젝트 상의 멤버 함수 호출을 일반적이고 유형적으로 안전한 방식으로 할 수 있다. 델리게이트를 사용하여 임의의 오브젝트의 멤버 함수에 동적으로 바인딩시킬 수 있으며, 그런 다음 그 오브젝트에서 함수를 호출할 수 있다. 호출하는 곳에서 오브젝트의 유형을 몰라도 무관하다. 델리게이트 오브젝트는 복사시에도 안전성이 보장된다. 델리게이트는 값으로의 전달이 가능하나, heap 영역에서 메모리를 할당하기 때문에 보통 추천할 만 하지는 않다. 가급적이면 델리게이트는 항상 참조로 전달하는 것이 좋다. 델리게이트는 싱글 - 캐스트 (형변환)와 멀티-캐스트 모두 지원되며, 디스크에 안전하게 Serialize 시킬 수..

UE5 2023.12.05