Part1 10. 언리얼 컨테이너 라이브러리 UCL : TArray, TSet
하고싶은거/Unreal2024. 3. 11. 18:42Part1 10. 언리얼 컨테이너 라이브러리 UCL : TArray, TSet

언리얼 컨테이너 라이브러리 UCL 언리얼 엔진이 제공하는 자료구조 라이브러리(언리얼C++이니까~) 다양한 라이브러리가 있는데, 그중 TArray, TSet, TMap을 가장 유용하게 사용한다. (접두사 T는 Template의 T) C++ STL 언리얼 C++ UCL 1. 범용적 2. 호환성 3. 많은 기능이 있으서 컴파일이 오래 걸림 1. 언리얼 엔진에 특화 2. UObject를 안정적으로 지원 3. 가볍과 게임 제작에 최적화 TArray STL의 vector 처럼 가변 배열(동적배열) 자료구조 장점 데이터가 순차적으로 모여있어 메모리 효과적, 캐시 효율↑ (특히 컴퓨터 사양이 좋아져서 캐시 지역성으로 인한 성능 향상이 중요해졌다.) 임의 데이터 접근빠름(인덱스를 통해서, O(1)), 데이터 순회 가능 ..

선형 구조 : 스택, 큐
하고싶은거/자료구조&알고리즘 공부2024. 3. 10. 21:26선형 구조 : 스택, 큐

선형 구조 : 자료를 순차적으로 나열한 형태 배열 연결 리스트 스택/큐 비선형 구조 : 하나의 자료 뒤에 다수의 자료가 올 수 있는 형태 트리 그래프 스택 Stack 메모리에 LIFO(Last-In-First-Out)으로 데이터를 저장하는 구조 : 메모리에 가장 나중에 들어간 데이터가 먼저 출력되는형식 되돌리기 기능같은 곳에 사용하면 좋겠다.(ctrl+z) 따라서 벡터(동적배열)이나 연결리스트 둘중 어느 것으로도 구현할 수 있다. 필요한 기능이 1. 메모리에 데이터 입력하기, 2. 마지막으로 입력된 데이터(맨 뒤에 있는 데이터) 출력하기 2가지 이기 때문. 이건 벡터를 이용해서 stack을 구현한건데, stack의 타입을 list로만 바꿨음에도 잘 동작한다. → 내부적인 구조는 벡터에서 리스트로 바뀌지만..

Part1 09. 언리얼 C++ 설계 : 델리게이트
하고싶은거/Unreal2024. 3. 10. 12:13Part1 09. 언리얼 C++ 설계 : 델리게이트

약한 결합 방식 : 델리게이트 결합은 종류가 2가지 있다. 강한 결합 클래스들이 서로 의존성을 가짐 = SOLID중 DIP 원칙에서 벗어남 약한 결합 실존 클래스끼리가 아닌 추상적 설계에 의존 = DIP원칙 Person → [출입] ← 카드로 엮인다고 생각 (여기서 출입이 추상적 설계에 해당) 우린 여기서 출입을 인터페이스로 구현할 수도 있다. 다만, 카드의 쓰임이 출입 말고도 인증, 결제등등 더 많은 기능이 추가될때마다 인퍼페이스를 만들기엔 귀찮다.(클래스 선언을 죄다 해줘야하니까) 그래서 등장한게 델리게이트 : 함수형 객체 (기능을 변수로 지정하고, 변수가 함수처럼 실행되는 구조) 언리얼 델리게이트 Delegate (델리게이트)로 C++ 오브젝트 상의 멤버 함수 호출을 일반적이고 유형적으로 안전한 방..

Part1 08. 언리얼 C++ 설계 : 컴포지션
하고싶은거/Unreal2024. 3. 10. 00:31Part1 08. 언리얼 C++ 설계 : 컴포지션

컴포지션 Composition 객체 지향(OOP) 설계는 상속과 컴포지션이 있다. 상속 : 부모-자식 관계, 종속의 개념, Is-A관계 컴포지션 : 어느 객체가 다른 객체를 소유, Has-A관계 컴포지션은 복합적인 기능을 가진 클래스를 효과적으로 설계하는데 유용하다. OOP 4가지 특징 추상화 : 어떤 객체의 공통적, 본질적 특징을 추출하여 정의 abstract class, interface 상속 : 기존에 구현한 클래스를 재활용해서 구현하는 것. (코드의 재사용) 다형성 : 어떤 객체의 속성, 기능이 변화가능 메서드 override, overload 캡슐화 : 클래스 내의 property, method를 하나의 캡슐로 묶어서 외부 접근을 최소화하는 것 public, static, private, pro..

Part1 07. 언리얼 C++ 설계 : 인터페이스
하고싶은거/Unreal2024. 3. 9. 10:16Part1 07. 언리얼 C++ 설계 : 인터페이스

언리얼 C++ 인터페이스 인터페이스 interface 특정 기능, 행동을 구현하는 추상적인 형식. 다형성(같은 이름의 메서드가 다른 동작가능, 오버라이딩), 의존성 분리(약한 결속) 언리얼 엔진에서 인터페이스 예시 : 월드에 배치되는 Actor 오브젝트가 있다. 그리고 Actor중에는 움직이는 오브젝트 Pawn이 있다. Pawn은 길찾기 시스템을 포함해야할 때, 길찾기 시스템은 INavAgentInterface에 구현해서 Pawn이 사용한다. 언리얼 인터페이스 특징 인터페이스 생성시 UInterface : 클래스 타입정보 제공, 런타임에서 인터페이스 구현 여부를 파악하는데 사용 IInterface : 실질적인 설계 및 구현 기존 C++ 인터페이스는 순수가상함수로만 정의하지만, 언리얼은 구현이 가능하다. ..

선형 자료구조 기초
하고싶은거/자료구조&알고리즘 공부2024. 3. 8. 23:58선형 자료구조 기초

선형 구조 : 자료를 순차적으로 나열한 형태 배열 연결 리스트 스택/큐 비선형 구조 : 하나의 자료 뒤에 다수의 자료가 올 수 있는 형태 트리 그래프 1. 배열 (STL Array) 메모리 크기 고정(절대 변경 불가), 연속된 주소 장점 : 연속된 메모리 단점 : 메모리 추가/축소 불가 2. 동적 배열(vector) 메모리 크기의 여유분을 두고(1.5배~2배) 설정, 연속된 주소 만약 여유분이 다 차면, 다같이 연속된 메모리위치로 이사 (여유분의 이유 : 이사횟수를 최소화하기 위해) 장점 : 유동적인 삽입(메모리 여유분 추가 예약으로 이사 최소) 단점 : 중간 삽입 / 삭제 할 경우 나머지가 옆으로 이동해야함 동적 배열 구현 벡터 사용시 헤더 추가 push_back : 현재 저장된 데이터 크기(size)..

Part1 05.06. 언리얼 리플렉션 시스템 (프로퍼티 시스템)
하고싶은거/Unreal2024. 3. 8. 16:48Part1 05.06. 언리얼 리플렉션 시스템 (프로퍼티 시스템)

언리얼 엔진의 근간 : 리플렉션 시스템 언리얼 오브젝트 특징 : 리플렉션 언리얼은 크게 2가지 오브젝트로 나뉜다고 했다. C++ 오브젝트, 언리얼 오브젝트 그 중, 언리얼 오브젝트는 기존 C++에는 없는 모던 객체 지향 시스템의 특징인 생산성을 추가한 기능이다. 그게 바로 리플렉션 (Reflection) 리플렉션 (Reflection) 리플렉션은 프로퍼티 시스템 이라고도 불리며, 프로그램이 실행시간에 자기 자신을 조사하는 기능. ('자기자신' = 에디터, 가비지 콜렉션, 클래스, 구조체, 함수, 멤버 변수, 열거형 등) 리플렉션 설정 방법 (설정방법 이라기 보단 리플렉션 기능을 수행, 리플렉션을 보장한다고 알려준다는게 더 이해하기 쉬울 것 같다.) 리플렉션은 Unreal Header Tool (UDT) ..

error C2001: newline in constant
하고싶은거/삽질2024. 3. 8. 12:14error C2001: newline in constant

문제 ;가 부족한게 없는데 상수에 줄바꿈이 있다고 오류가 났다. 과정 한글을 사용해서 그런거었다. 그래서 인코딩을 UTF-8로 고쳤다. 느낀점 한글을 사용하면 인코딩을 바꿔줘야 한다는 걸 알고 있었음에도 오류가 왜 발생하는지 파악하지 못했다는게 아쉽다. 해당 오류를 다시 본다면 한번에 눈치채고 싶다.

구글에 블로그 노출하기 (리디렉션 오류 수정, 색인 요청 해결)
하고싶은거/삽질2024. 3. 4. 23:36구글에 블로그 노출하기 (리디렉션 오류 수정, 색인 요청 해결)

문제 언리얼 내용 관련 공유할 일이 있어서 구글에 검색하라고 알려줬는데, 검색이 안되는 현상을 발견했다. 기본적인 구글 서치 콘솔 설정, 이 과정에서 발생한 리디렉션 오류 수정, 게시물을 구글에서 검색할 수 있도록 색인 요청하는 과정까지 다뤘습니다. (마지막 정리 참고) 과정 구글 설정 구글이 네이버보다 티스토리 노출률이 훨씬 높기 때문에 먼저 진행하게 되었다. 1. 구글 콘솔 검사 (Google seach Console) https://search.google.com/search-console Google Search Console Search Console 도구와 보고서를 사용하면 사이트의 검색 트래픽 및 실적을 측정하고, 문제를 해결하며, Google 검색결과에서 사이트가 돋보이게 할 수 있습니다...

Part1 04. 언리얼 오브젝트
하고싶은거/Unreal2024. 3. 3. 23:06Part1 04. 언리얼 오브젝트

언리얼 C++의 핵심, 언리얼 오브젝트 언리얼 C++ 생긴 이유 C++가 생기고, 모던 객체지향 언어 (모던 OOP언어, C++이후 나온 언어들 JAVA, C#)이 생겼는데 C++의 성능적 장점과 모던OOP언어의 생산적 장점 2가지를 잡기 위해서 언리얼에서는 기존 C++ 언어를 좀 더 확장하는 방안으로 객체 지향 설계를 실현했다. 언리얼엔진 객체시스템 UnrealEngine 이 시스템 자체에는 2가지 오브젝트(객체 시스템)가 존재한다. 일반 C++언어에서 사용하는 C++ 오브젝트, 언리얼에서 고안한 생산성이 높아진 언리얼 오브젝트. 1. C++ 오브젝트 기존 C++언어의 일반적인 객체 시스템 성능적 장점이 존재하지만, 생산적인 측면에서 취약, 메모리를 건들이면 프로젝트 전체가 난감해질 수 있다. 사용 용..

image