Unreal
Part1 14. 언리얼 오브젝트 관리 : 패키지, 애셋
Part1 14. 언리얼 오브젝트 관리 : 패키지, 애셋
Unreal
2024.03.16 11:59
언리얼 오브젝트 "패키지" = 다양한 오브젝트를 감싼 오브젝트 언리얼 오브젝트 패키지 저번 직렬화 를 통해서 '단일'언리얼 데이터를 저장했었다. 다양한 오브젝트를 저장하기 위해서, 그리고 다양한 데이터(복잡한 계층 구조)를 효과적으로 찾고 관리하기 위해 언리얼 오브젝트 패키지(UPackage)단위로 언리얼 오브젝트를 관리한다. (패키지는 이 외에도 최종 콘텐츠 프로그램, DLC와 같이 확장 콘텐츠에 사용되는 pkg파일등 다양하게 사용되는 단어이다.) 언리얼 오브젝트 패키지 & 애셋 언리얼오브젝트 패키지는 다수의 언리얼 오브젝트를 포함한다. = 모든 언리얼 오브젝트는 패키지에 소속되어 있다. 패키지 바로 하단에 위치한게 Asset 애셋 일반적으로 하나의 패키지에는 하나의 애셋만 저장하는 것을 원칙으로 한다..
Part1 13. 언리얼 오브젝트 관리 : 직렬화
Part1 13. 언리얼 오브젝트 관리 : 직렬화
Unreal
2024.03.14 11:35
직렬화 Serialization 오브젝트나 연결된 오브젝트의 묶음을 바이트 스트림으로 변경하는 과정. 복잡한 데이터를 일렬로 세워버린다.(복잡 → 간단) Object → Byte Stream : 직렬화 (Serialization), Byte Stream → Object : 역직렬화 (Deserialization) 즉, 직렬화로 복잡한 데이터를 간단하게 만들면, 데이터를 전송하거나 맞바꿀 때 1줄로 되어있는 간단한 바이트 스트림으로 변환하고 복구할 수 있다. 직렬화 장점 프로그램의 상태 저장, 복원 가능 (게임 세이브) 객체 정보를 클립보드에 복사해서 다른 프로그램으로 전송가능 네트워크를 통해 프로그램의 상태를 복원할 수 있음 (멀티게임에서 자주 사용) 직렬화된 데이터는 압축과 암호화를 통해서 데이터를 안..
Part1 12. 언리얼 엔진 메모리 관리
Part1 12. 언리얼 엔진 메모리 관리
Unreal
2024.03.13 16:35
UObject 선언 기본 원칙 언리얼 오브젝트 포인터 : UPROPERTY 선언 메모리 : 가지비컬렉터가 자동으로 관리하도록 위임 언리얼 엔진 자동 메모리 관리 C++ 메모리 관리 문제점 : 저수준으로 메모리 주소에 직접 접근하는 포인터 사용 포인터에 대한 new(할당), delete(해지)를 직접 해줘야함(안하면 이제..오류 투성이 됨) 근데 문제는 이걸 잘 못하면? 상당한 문제가 발생(프로그램 자체를 종료) 메모리 누수 : new하고 delete를 안해서 heap에 그대로 남아있음, 메모리 낭비 (도서관에 책빌리고 반납안함) 댕글링 포인터 (허상포인터) : 이미 delete된 주소를 가리키는 경우 (책반납했는데 책 찾고 있음) 와일드 포인터 : 포인터를 초기화되지 않아서 이상한 주소를 가리킴 C++에..
Part1 11. 언리얼 컨테이너 라이브러리 UCL : UStruct, TMap
Part1 11. 언리얼 컨테이너 라이브러리 UCL : UStruct, TMap
Unreal
2024.03.11 23:06
언리얼 구조체 UStruct : 관련 프로퍼티(변수)를 체계화, 조작할 수 있는 데이터 구조체 https://docs.unrealengine.com/5.3/ko/structs-in-unreal-engine/ 구조체 게임플레이 클래스용 구조체 생성 및 구현에 대한 레퍼런스입니다. docs.unrealengine.com 데이터 저장, 전송에 특화된 가벼운! 객체 하지만 UObject와는 전혀 다르다. 따라서, 프로젝트에서 복잡한 기능은 UObject로 만드는게 맞다. 대부분 GENERATED_BODY 매크로를 선언하게 되는데, 리플렉션, 직렬화 같은 유용 기능을 지원 GENERATED_BODY를 선언한 구조체는 UScriptStruct 클래스로 구현 (UStruct라고 안부르고, UScriptStruct) ..
Part1 10. 언리얼 컨테이너 라이브러리 UCL : TArray, TSet
Part1 10. 언리얼 컨테이너 라이브러리 UCL : TArray, TSet
Unreal
2024.03.11 18:42
언리얼 컨테이너 라이브러리 UCL 언리얼 엔진이 제공하는 자료구조 라이브러리(언리얼C++이니까~) 다양한 라이브러리가 있는데, 그중 TArray, TSet, TMap을 가장 유용하게 사용한다. (접두사 T는 Template의 T) C++ STL 언리얼 C++ UCL 1. 범용적 2. 호환성 3. 많은 기능이 있으서 컴파일이 오래 걸림 1. 언리얼 엔진에 특화 2. UObject를 안정적으로 지원 3. 가볍과 게임 제작에 최적화 TArray STL의 vector 처럼 가변 배열(동적배열) 자료구조 장점 데이터가 순차적으로 모여있어 메모리 효과적, 캐시 효율↑ (특히 컴퓨터 사양이 좋아져서 캐시 지역성으로 인한 성능 향상이 중요해졌다.) 임의 데이터 접근빠름(인덱스를 통해서, O(1)), 데이터 순회 가능 ..
삽질
리다이렉트시 access Token 소실 (OAuth2.0 카카오 로그인)
리다이렉트시 access Token 소실 (OAuth2.0 카카오 로그인)
삽질
2024.10.27 22:19
문제 상황이메일로그인(JWT) + 소셜로그인(OAuth2.0 카카오) 2가지 방법으로 로그인기능을 구현하고 있었다.이 과정에서 AccessToken(이하 AT), RefreshToken(이하 RT) 을 각각 세션스토리지와 쿠키에 저장하려고 했고, AT는 헤더를 통해 전달하기로 정했다. 이메일로그인은 헤더로 AT가 잘 넘어갔었기에, 카카오로그인도 같은 방식으로 하면 될줄알았다...(하지만 이것때문에 3-4일 개고생 할줄은 몰랐지)우리가 만들어둔 백엔드서버만 거치는게 아니라 카카오서버도 거쳐서 회원정보를 가져오고 로그인인증하는 과정이 추가되기 때문이다.서비스 로그인에서 서비스 로그인 세션으로 이동할 때,// OAuthLoginSuccessHandler.java// 액세스 토큰은 헤더에 추가 -> 리다이렉트시..
구글에 블로그 노출하기2 (색인 생성 요청 거부, 실시간 테스트 문제 감지)
구글에 블로그 노출하기2 (색인 생성 요청 거부, 실시간 테스트 문제 감지)
삽질
2024.06.26 09:46
문제 상황예전에 구글에 블로그를 노출하기 위해 구글 서치콘솔 관련해서 몇주간 try-catch를 했었다.https://ssin-estella.tistory.com/13 구글에 블로그 노출하기 (리디렉션 오류 수정, 색인 요청 해결)문제 언리얼 내용 관련 공유할 일이 있어서 구글에 검색하라고 알려줬는데, 검색이 안되는 현상을 발견했다. 기본적인 구글 서치 콘솔 설정, 이 과정에서 발생한 리디렉션 오류 수정, 게시물을ssin-estella.tistory.com 그 이후부터 블로그글을 꾸준히 색인요청 - 색인등록을 반복했었다. 근데 오늘은 갑자기 색인 생성 요청이 거부되었다. 해결 과정나 같은경우, noindex가 문제였는데, 이걸 건든적이 없어서 왜 문제가 생겼는지 모르겠다.중요한건, 저기 중요! 부분에 r..
이클립스 로고 깜박임, java was started but returned exit code=1
이클립스 로고 깜박임, java was started but returned exit code=1
삽질
2024.06.14 11:57
문제 상황이클립스 실습 중에 Lombok을 설치 후 확인하는 과정에서 Lombok 인식이 안되는걸 발견했다.그래서 이클립스를 껐다 켜야지! 하고 껐는데, 로고가 한번 깜박이고 꺼지고를 반복했다.해결방법일단 로고 깜박임을 해결하려고 했다.1. 본인 컴퓨터에 이클립스가 설치된 위치를 알아야한다.C:\Users\c\Desktop\URECA\eclipse그 후부터는  eclipse.ini 이 파일을 수정해서 해결할거다.물론 컴퓨터 재부팅, 관리자로 eclipse 실행종료 등등.. 기본적인건 미리 해보자.. 난 안됐다..   2. 로고 깜박임이 생기는 이유는 이클립스의 실행파일에 문제가 있기 때문이다.eclipse.ini파일에 들어가면, -vm 부분을 찾아야한다.-vm이 없으면(있을걸?) -vmargs 위에다 생..
! [rejected] master -> master (fetch first) git push 에러
! [rejected] master -> master (fetch first) git push 에러
삽질
2024.05.09 20:45
문제유니티 프로젝트 push 중 발생한 오류 과정오류 내용자체는 쉬웠다.깃허브 기준 원격과 로컬이 있는데, 원격에서 변경된 내용이 있어서 먼저 pull하고 push하라는 내용이었다. hint : Updates were rejected because the remote contains work that you do→ 힌트 : 원격에서 수행된 작업이 포함되어 있어서 업데이트가 거부한다.hint : not have locally. This is usually caused by another repository pushing→ 힌트 : (원격에서 수행된 작업이) 로컬에 없다. 이런건 대체로 다른 레포지토리 푸싱으로 발생한다.(너가 원격에서 뭐 바꿔서 그래)hint : to the same ref. You may..
문자 char 입력시 오류 : invalid conversion from ‘const char*’ to ‘char’ [-fpermissive]
문자 char 입력시 오류 : invalid conversion from ‘const char*’ to ‘char’ [-fpermissive]
삽질
2024.04.17 03:37
문제 SW Expert Academy에서 문제 풀다가 문자 char을 받는데 위와 같은 오류가 발생했다. 과정 error: invalid conversion from ‘const char*’ to ‘char’ [-fpermissive] #include #include #include #include using namespace std; class base { public: int lookup(char c); }; // class base int base::loo... stackoverflow.com 따옴표가 " " 이냐 ' '이냐 차이였다. 결론은 쌍따옴표가 아닌 그냥 ' ' 홑따옴표를 사용해야한다. 왜?? 홑따옴표 : 단일문자, char(string아님) , 1바이트 쌍따옴표 : 리터럴 값, 문자열(s..
image