Unreal engine14 3_3_언리얼 메모리 관리 시스템(가비지 컬렉션) 강의 내용 언리얼 엔진의 메모리 관리 방식을 파악하고, 언리얼 오브젝트의 메모리를 관리하는 예제 실습 강의 목표 언리얼 엔진의 메모리 관리 시스템의 이해 안정적으로 언리얼 오브젝트 포인터를 관리하는 방법의 학습 언리얼 엔진의 자동 메모리 관리 C++ 언어 메모리 관리의 문제점 : 직접 관리해야 하기 때문에 메모리 누수, Dangling, Wild등 문제 발생 가능성 있음. 이런 실수 방지 위해 가비지 컬렉션 시스템 도입 가비지 컬렉션 시스템 : 동적 생성된 오브젝트 정보 모아둔 저장소를 사용해 메모리 추적하고 참조되지 않는 건 메모리 회수 언리얼 엔진의 가비지 컬렉션 시스템 : 마크-스윕 방식, 주기 설정 가능, 병렬처리, 클러스터링 같은 기능 탑제 가비지 컬렉션을 위한 객체 저장소 : GUObjectA.. Unreal engine/Unreal C++ 2023. 10. 12. 3_2_UStruct(언리얼 구조체)와 Map 강의 내용 언리얼 구조체의 특징을 이해하고, 다양한 컨테이너 라이브러리에서 구조체를 활용하기 강의 목표 언리얼 구조체의 선언과 특징 이해 언리얼 대표 컨테이너 라이브러리 TMap의 내부 구조 이해 세 컨테이너 라이브러리의 장단점을 파악하고, 알맞게 활용하는 방법의 학습 언리얼 구조체의 구조와 활용 공식 문서 https://docs.unrealengine.com/5.2/ko/using-structs-in-unreal-cpp/ 구조체 사용하기 간단한 가이드로 구조체 사용을 시작합니다. docs.unrealengine.com 언리얼 구조체 UStruct - 데이터 저장/전송에 특화된 가벼운 객체 - GENERATED_BODY 매크로 선언 - 리플렉션, 직렬화 같은 유용한 기능 지원 - GENERATED_BOD.. Unreal engine/Unreal C++ 2023. 10. 5. 3_1_언리얼 컨테이너 TArray와 TSet 강의 내용 언리얼에서 제공하는 대표 컨텐이너 라이브러리의 동작 원리와 활용 방법을 예제를 통해 살펴보기 강의 목표 언리얼 대표 컨테이너 라이브러리 TArray, TSet의 내부 구조 이해 각 컨테이너 라이브러리의 장단점을 파악하고, 알맞게 활용하는 방법의 학습 언리얼 컨테이너 라이브러리 언리얼이 자체 제공하는 라이브러리 UCL이라고도 함 TArray, TMap, TSet 추천 T는 Template Library를 의미 C++STL과 언리얼 컨테이너 라이브러리의 차이점 언리얼에 특화, 가볍과 게임 제작에 최적화 UCL 주요 라이브러리 vector 거의 비슷 TArray set 좀 다름 TSet map 좀 다름 TMap TArray의 구조와 활용 TArray 개요 vector와 유사 데이터 많아지면 검색, .. Unreal engine/Unreal C++ 2023. 9. 29. 2_3_언리얼 C++ 델리게이트로 구현하는 느슨한 결합 강의 내용 언리얼 델리게이트를 사용해 클래스 간의 느슨한 결합을 구현하기 강의 목표 느슨한 결합의 장점과 이를 편리하게 구현하도록 도와주는 델리게이트의 이해 발행 구독 디자인 패턴의 이해 언리얼 델리게이트를 활용한 느슨한 결합의 설계와 구현의 학습 느슨한 결합(Loose Coupling)이란? 강한 결합 class Card { public: Card(int InId) : Id(InId) {} ind Id = 0; } class Person { public: Person(Card InCard) : IdCard(InCard) {} protected: Card IdCard; }; 앞선 예제에서 Person 클래스는 멤버 변수로 Card 클래스를 사용하고 있다. 이렇게 되면 Person은 Card에 대해 의존한.. Unreal engine/Unreal C++ 2023. 9. 28. 2_2_언리얼 C++ 모던객체지향 설계_컴포지션 강의내용 언리얼 C++만의 컴포지션 기법을 사용해 복잡한 언리얼 오브젝트를 효과적으로 생성하기 강의 목표 언리얼 C++의 컴포지션 기법을 사용해 오브젝트의 포함 관계를 설계하는 방법의 학습 언리얼 C++이 제공하는 확장 열거형 타입의 선언과 활용 방법의 학습 언리얼 오브젝트의 컴포지션 Has-A 즉 다른 클래스 객체를 변수로 들고 있는 설계 방법 현대 설계 기법 SOLID Single Responsibility - 단일 책임 원칙 Open-Closed - 개방 폐쇄 원칙 Liskov substitution - 리스코프 치환(자식 객체를 부모로 변경해도 작동에 문제 없을 정도로 상속 단순히) Interface Segregation - 단순한 인터페이스로 분리 Dependency Injection - 추상적.. Unreal engine/Unreal C++ 2023. 9. 25. 2_1_언리얼 C++ 모던객체지향 설계_인터페이스 강의 내용 언리얼 C++ 인터페이스의 선언과 활용 강의 목표 언리얼 C++ 인터페이스 클래스를 사용해 보다 안정적으로 클래스를 설계하는 기법의 학습 정리 언리얼 C++ 인터페이스 1. 클래스가 반드시 구현해야 하는 기능을 지정하는데 사용한다. 2. C++ 기본적으로 다중상속을 지원하지만 언리얼 C++의 인터페이스를 사용해 가급적 축소된 다중상속의 형태로 구현하는 것이 유지보수에 도움이 된다. 3. 언리얼 C++ 인터페이스는 두 개의 클래스를 생성한다. 4. 언리얼 C++ 인터페이스는 추상 타입으로 강제되지 않고, 내부에 기본 함수를 구현할 수 있다. 언리얼 C++ 인터페이스를 사용하면, 클래스가 수행해야 할 의무를 명시적으로 지정할 수 있어 좋은 객체 설계를 만드는데 도움을 줄 수 있다. 프로젝트 생성 .. Unreal engine/Unreal C++ 2023. 9. 22. 1_6_언리얼 오브젝트의 이해_언리얼 오브젝트 리플렉션 시스템2 언리얼 오브젝트 리플렉션 시스템의 활용 강의 목표 언리얼 오브젝트 리플렉션 시스템을 사용해 언리얼 오브젝트를 다루는 방법의 학습 정리 1. 리플렉션 시스템을 사용해 언리얼 오브젝트의 특정 속성과 함수를 이름으로 검색할 수 있다. 2. 리플렉션 시스템을 사용해 접근 지시자와 무관하게 값을 설정할 수 있다. 3. 리플렉션 시스템을 사용해 언리얼 오브젝트의 함수를 호출할 수 있다. 언리얼 엔진의 기본 프레임웍은 리플렉션을 활용해 구축되어 있으므로 언리얼 엔진을 이해하기 위해서는 리플렉션 시스템을 이해하는 것이 필요함. Person 클래스와 이를 상속받은 Student, Teacher 클래스를 만든다. 일단 Person.h 에 UCLASS() class OBJECTREFLECTION_API UPerson : p.. Unreal engine/Unreal C++ 2023. 9. 18. 1_5_언리얼 오브젝트의 이해_언리얼 오브젝트 리플렉션 시스템1 강의 목표 언리얼 오브젝트의 특징과 리플렉션 시스템의 설명 언리얼 오브젝트의 처리 방식의 이해 언리얼 오브젝트의 리플렉션 시스템 공식문서 https://www.unrealengine.com/ko/blog/unreal-property-system-reflection 언리얼 프로퍼티 시스템 (리플렉션) 리플렉션(Reflection)은 프로그램이 실행시간에 자기 자신을 조사하는 기능입니다. 이는 엄청나게 유용한 데다 언리얼 엔진 테크놀로지의 근간을 이루는 것으로, 에디터의 디테일 패널, 시리얼라 www.unrealengine.com UPROPERTY, UFUNCTION, UCLASS 등 매크로 써야 언리얼에서 메모리 관리를 해준다. CDO는 GetDefaultObject함수로 얻을 수있다. 한글이 안깨지게 하.. Unreal engine/Unreal C++ 2023. 9. 18. 1_4_언리얼 오브젝트의 이해_언리얼 오브젝트 기초 언리얼 오브젝트의 소개와 선언 방법 강의 목표 언리얼 프로그래밍이 가지는 특수성과 언리얼 오브젝트의 필요성의 이해 언리얼 오브젝트의 선언과 엔진 내부 컴파일 과정의 학습 C++는 안정성보다 성능 중시 하이레벨 OOP 언어는 안정성 중시 언리얼 C++은 성능 중시하면서 안정성도 챙긴거 SOLID 언리얼 오브젝트 공식문서 https://docs.unrealengine.com/5.1/ko/objects-in-unreal-engine/ 오브젝트 기본 게임플레이 요소인 Actor 와 Object 에 대한 설명입니다. docs.unrealengine.com 지정된 매크로 사용해 빌드를 수행하면 추가 코드가 자동으로 만들어지는 구조 UnrealHeaderTool을 실행→ 헤더 선언된 거 매크로를 보고 MyObject.. Unreal engine/Unreal C++ 2023. 9. 18. 1_3_언리얼 오브젝트의 이해_언리얼C++ 기본타입과 문자열 강의 목표 언리얼 환경에서 알아두어야 할 기본 타입과 고려할 점 캐릭터 인코딩 시스템에 대한 이해 언리얼 C++이 제공하는 다양한 문자열 처리 방법과 내부 구성의 이해 정리 언리얼 C++ 기본 타입과 문자열 처리 언리얼이 C++ 타입 int를 사용하지 않는 이유 다양한 캐릭터 인코딩 시스템의 이해 언리얼의 문장 처리의 이해 FString의 구조와 사용 방법 FName의 구조와 사용 방법 1. 언리얼이 C++ 타입 int를 사용하지 않는 이유 -> int의 크기가 플래폼에 따라 32bit나 64bit로 해석될 수 있는데 캐시 크기가 데이터 크기에 맞게 정렬이 되어야 하는데 애매모호한 크기의 타입을 사용하면 문제를 일으킬 수 있다. 2. 다양한 캐릭터 인코딩 시스템 이해 -> 언리얼은 왜 문자열을 따로 지정.. Unreal engine/Unreal C++ 2023. 9. 15. 1_2_언리얼 오브젝트의 이해_언리얼 C++ 코딩규칙 정리 1. public에서 private으로 이어지는 클래스 체계(Organization)을 준수 2. 명명 규칙 a. 파스칼 케이싱을 사용한다. b. 소문자를 가급적 사용하지 않고 공백 및 언더스코어가 없음 c. 모든 클래스와 구조체에는 고유한 접두사가 있음 3. 코드의 명확성 a. 파라미터에 가급적 In과 Out접두사를 사용해 명시 b. const 지시자(directive)의 적극적인 활용 c. 레퍼런스를 통한 복사 방지 d. auto 키워드는 가급적 자제 4. Find In Files의 활용 5. 헤더 파일 및 #include 구문은 의존성을 최소화시켜 주의 깊게 다룰 것 언리얼5 홈페이지를 방문해 코딩 표준을 읽어보자. 목표1. 언리얼 C++ 코딩 표준 이해 목표2. 언리얼 C++ 코딩 표준에서 .. Unreal engine/Unreal C++ 2023. 9. 14. 1_1_언리얼 오브젝트의 이해_헬로 언리얼 헬로 언리얼 출력하기까지의 여정 언리얼 엔진 설치와 프로그래밍 환경 구축(Debugging symbol 추가 옵션으로, visual studio는 C++사용한 게임 개발 추가 옵션으로) 언리얼 에디터에서의 클래스 추가 컴파일 하는 방법에서의 규칙 언리얼 C++의 클래스 상속 및 오버라이딩 구현 언리얼 엔진의 문자열 처리의 이해(TEXT매크로) 게임인스턴스 클래스의 적용과 카테고리를 활용한 로그 확인 1. 언리얼 설치 및 기본 설치와 프로그래밍 환경 구축 디버깅을 위한 편집기 기호(debugging symbol )도 설치해줍니다. 엔진 소스 코드 디버깅에 필요한 심볼 기호들이 저장이 되어있기 때문에 엔진 레벨에서 언리얼 엔진이 어떻게 동작하는지 알고 싶으면 이걸 체크해야 합니다. 비쥬얼 스튜디오를 설치하고.. Unreal engine/Unreal C++ 2023. 9. 14. 이전 1 2 다음