본문 바로가기

GameStudy489

Ch 13. 직렬화 13.1 언리얼 엔진의 직렬화 13.1-1 직렬화란 - 오브젝트나 연결된 오브젝트의 묶음(오브젝트 그래프)을 바이트 스트림으로 변환하는 과정 복잡한 데이터를 일렬로 세우기 때문에 직렬화라고 부름. - 거꾸로 복구시키는 과정도 포함해서 의미함. 시리얼라이제이션: 오브젝트 그래프에서 바이트 스트림으로 디시리얼라이제이션: 바이트 스트림에서 오브젝트 그래프로 - 직렬화가 가지는 장점 현재 프로그램의 상태를 저장하고 필요할 때 복원할 수 있음.(게임의 저장) 현재 개체의 정보를 클립보드에 복사해서 다른 프로그램에 전송할 수 있음. 네트워크를 통해 현재 프로그램의 상태를 다른 컴퓨터에 복원할 수 있음.(멀티플레이) 데이터 압축, 암호화를 통해 데이터를 효율적이고 안전하게 보관할 수 있음. 13.1-2 직렬화 구현시.. 2023. 5. 13.
Ch 12. 언리얼 엔진의 메모리 관리 12.1 언리얼 엔진의 메모리 관리 시스템 12.1-1 C++ 언어 메모리 관리의 문제점 - C++은 매니지드 언어임. 메모리 주소에 직접 접근하는 포인터를 사용해 오브젝트 관리. 따라서 프로그래머가 직접 할당/해지 짝맞추기를 해야 함. 이를 ㅓ지키지 않으면 다양한 문제 발생 - 잘못된 포인터 사용 예시 메모리 누수 / 댕글링 포인터 / 와일드 포인터(주소값이 초기화 되지 않아 엉뚱한 주소를 가리킴) - 게임 규모가 커지고 복잡해질수록 프로그래머가 실수할 확률은 기하급수적. 모던 개체지향 언어들은 포인터를 버리고 가비지 컬렉션 시스템을 도입. 12.1-2 가비지 컬렉션 시스템 - 프로그램에서 더이상 사용하지 않는 오브젝트를 자동 감지 후 메모리 회수하는 시스템. 동적으로 생성된 모든 오브젝트 정보를 모아.. 2023. 5. 13.
Ch 11. 구조체와 Map 11.1 언리얼 구조체 특징과 선언 11.1-1 USTRUCT - 데이터 저장/전송에 특화된 가벼운 개체 - 대부분 GENERATED_BODY 매크로를 선언해줌. 리플렉션/직렬화와 같은 유용한 기능을 지원함. GENERATED_BODY를 선언한 구조체는 UScriptStruct 클래스로 구현됨. 이경우 제한적으로 리플렉션을 지원함. 속성 UPROPERTY만 선언할 수 있고, 함수 UFUNCTION은 선언할 수 없음. - 언리얼 엔진의 구조체 이름은 F로 시작함. - 대부분 스택 메모리에 저장됨. 힙 메모리 할당(포인터 연산) 없음. 저장/전송에 특화되기 때문. NewObject API를 사용할 수 없음. 11.1-2 언리얼 리플렉션 관련 계층 구조 11.1-3 언리얼 구조체 실습 // Student.h .. 2023. 5. 13.
Ch 10. Array and Set 10.1 언리얼 컨테이너 라이브러리 10.1-1 언리얼 컨테이너 라이브러리 - 언리얼 엔진이 자체 제작해 제공하는 자료구조 라이브러리 줄여서 UCL이라고도 함. - 언리얼 오브젝트를 안정적으로 지원하고 다수의 오브젝트 처리에 유용함. 실제 게임 제작에는 TArray/TSet/TMap이 유용하게 사용됨. 10.1-2 C++ STL Vs. UCL - STL은 범용적임. UCL은 언리얼 엔진에 특화되어 있음. STL은 호환성이 높음. UCL은 언리얼 오브젝트에 특화됨. STL은 많은 기능이 구현되어 있어서 컴파일 시간이 오래 걸림. UCL은 게임 제작에 최적화되어 있음. 10.1-3 TArray, TSet, TMap - TArray STL의 Vector와 유사함. 오브젝트를 순서대로 담아 관리하는 용도. - .. 2023. 5. 12.