일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 네트워크 기초
- 원카페#무인카페#카페추천#카페맛집
- 폭설 #미친 날씨
- Harvard
- topdownmove
- 툰쉐이딩
- 언리얼
- Console
- c++ 베이직
- C++
- leetcode
- 언리얼 엔진5 #언리얼 클라이언트 프로그래밍
- CS50
- Toon Shading
- 브론즈
- 언리얼엔진5 #언리얼 클라이언트 프로그래밍
- Module
- 코드리뷰
- 오늘밤 세계에서 이 사랑이 사라진다 해도 #독후감 #오열
- A* Algorithm
- 백준
- CS
- UE_5
- Unreal
- 메테리얼
- STL
- Gas
- 순환 리스트
- 헤더 경로
- build.cs
- Today
- Total
목록UE_5 (35)
WN_인생기록
언리얼 C++에서 무작정 클래스를 추가하다보면, 폴더를 따로 분류해서 적용하고 싶고, 이때문에 헤더 경로를 잘 못찾게 되는 경우가 있다. 게임 경로 내에 있는 폴더들을 찾기 쉽게 하려면 Builds.cs에서 PublicIncludePaths.AddRange(new string[] {"모듈이름"}); 을 추가해주면 중간에 폴더 경로가 있어도 헤더를 잘 찾게 된다.

GameMode 에서 C++ 내에서 직접적인 reference 참조를 통해서 #include 하지 않고도 클래스 정보를 가져올 수 있다. static ConstructorHelpers::FClassFinder ThirdPersonClassRef(TEXT("/Game/ThirdPerson/Blueprints/BP_ThirdPersonCharacter.BP_ThirdPersonCharacter_C")); if (ThirdPersonClassRef.Class) { DefaultPawnClass = ThirdPersonClassRef.Class; } static ConstructorHelpers::FClassFinder PlayerControllerClassRef(TEXT("/Script/PluginTes..
직렬화 : 오브젝트나 연결된 오브젝트의 묶음을 바이트 스트림으로 변환하는 과정- 복잡한 데이터를 일렬로 세우기 때문에 직렬화 라고 함 시리얼라이제이션(직렬화) : 오브젝트 그래프에서 바이트 스트림으로디시리얼라이제이션 : 바이트 스트림에서 오브젝트 그래프로 복구 왜 직렬화가 중요한가프로그램의 상태를 저장하고 필요할 때 복원할 수 있다 (세이브)객체 정보를 클립보드에 복사해서 다른 프로그램에 전송가능네트워크를 통해 다른 컴퓨터에 복원 ( 멀티플레이)데이터 압축, 암호화를 통해서 데이터를 효율적으로 보관 가능 구현할때 고려할 점 1. 데이터 레이아웃 : 오브젝트가 소유한 데이터를 변환할 것인가? (어떻게 직렬화 될 것인가?)2. 이식성 : 다른 시스템에 전송해도 그대로 사용 가능한가?3. 버전관리 : 새로운..
가비지 컬렉션 시스템- 마크 스윕 방식 루트 오브젝트를 참조하는 객체를 마크하고, 주기적으로 마크를 찾음. 저장소에는 마크된 객체와 마크가 안된 객체들이 존재함 가비지 컬렉터가 마크되지 않는 객체들의 메모리를 회수 이러한 시스템으로 가비지 컬렉션이 작동함. (GCCycle) 기본값 60초. 퍼포먼스를 위해서 병렬처리, 클러스터링과 같은 기능을 탑재. 언리얼에서 C++ 단점 커버를 위한 시스템 C++ 메모리 누수 -> 언리얼 가비지 컬렉션 시스템 댕글러 포인터 -> IsValid()를 써서 확인 가능 와일드 포인터 -> UPROPERTY 쓰면 자동으로 nullptr로 초기화 됨.
키, 밸류로 구성되어 있음. TSet의 구조로 구현되어 있음. 해시 테이블 형태라서 빠른 검색이 됨. TPair 로 구성되어 있음. 중복을 허용하지 않지만 TMultiMap은 중복을 허용함. 반복문을 통해서 값을 가져올때는 iterator로 가져오기 때문에 .key , .value 등으로 값을 가져올수 있다. 데이터를 찾을려면 Find 키워드를 사용해서 찾아주면 가장효율적이다. 끝부분의 빈 공간을 줄이고 싶으면 Shrink 기능을 통해서 줄일 수도 있다. STL의 Map 과는 다름. STL Map은 이진 트리로 구성되어있음. 해시 테이블에서 키, 밸류 값이 필요한 데이터형이 필요하다면 TMap을 쓰면 된다.

2D 세팅할때, 빛때문에 문제가 많은데 언리얼이 빛에 민감하기 때문.특히나 Auto Exposoure로 엄청나게 밝게 보일때가 있음 이때 해결방안. Project Setting 에서anti aliasing → FXAAMotionBlur → 끄기AutoExposure → Manual로 바꾸고AutoExposure→ 10~12 사이로 바꿔주면 노출값을 조절할 수 있다.

기본적으로 언리얼엣허 제공하는 TopDown은 click to Move가 StandAlone에서는 가능하지만, 멀티(Server,Client) 로 했을때는 이동이 안된다. 그런데 꾹 누르고 있으면 이동이 가능하다. 이유는 꾹 누를때는 ControllerPawn 의 AddMovementInput을 사용하기 때문이고 (이는 레플리케이션을 지원함) 마우스 클릭을 놓았을때 지정된 목적지로 이동하는 코드에서 SimpleMoveToLocation을 하는데 이 기능은 레플리케이션을 지원하지 않아서 발생하는 문제이다. 그래서 새로이 구현할때는 AddMovementInput을 사용하는 것이 좋다. 그리고 이 기능은 PathFinding까지 구현이 되어있는 상태이지만, 이걸 안쓰고 AddMovementInput을 ..
GameplayAbility에서 Ability는 특정 스킬이나 캐릭터가 할 수 있는 행동을 의미한다. 이 Ability들은 Instance 되는 방식을 3가지로 분류한다. 이를 Instancing Policy라고 하며 Ability가 어떻게 생성되고 관리될지 정하는 것이다. Non Instanced인스턴스화 되지 않는것을 의미하며 RPG를 예를 들었을때, 단순한 스킬,능력으로 상태를 추적할 필요가 없는 Ability일때 설정함 InstancedPerActor각 액터에 대해 한번 인스턴스화 되며, 각 캐릭터 혹은 액터가 인스턴스를 가지게 된다. 플레이어마다 다른 쿨다운 타이머를 가진 Ability일때 주로 설정한다. InstancedPerExcution어빌리티가 실행될때마다 인스턴스화 된다. 같은 ..