본문 바로가기

Game DevTip26

1. 언리얼 엔진 핫 리로딩에 관하여 언리얼 엔진에는 핫 리로딩이라는 기능이 있다. 주로 언리얼 엔진 C++ 프로젝트를 생성했을 때 IDE, 즉 비주얼 스튜디오,또는 Rider와 언리얼 엔진 4,5가 동시에 열린 모습을 봤을 것인데, 이번에는 스크립트를 수정하며코드를 컴파일 해서 변화를 한번 살펴보려고 한다.  나 같은 경우에는 언리얼 엔진 5.4.3 버전을 사용하고 있고, 깃허브 소스코드를 통해 Fork를 하여 개인 레포지토리에서 클론하여 설치하고 사용중이다.깃허브 소스코드 설치 방법은 추후 다시 다루겠다. 일단 클래스를 생성을 먼저 해야하므로 언리얼 엔진 에디터에서 C++ 클래스를 생성해준다.  나는 현재 개발중인 프로젝트에서 따로 컴포넌트를 통해 분리할 플레이어 이동 기능을 구현하기 위해서,ActorComponent 클래스를 사용하여 .. 2024. 12. 5.
6. C++ string 타입에 대해서 1. String 타입string은 문자열의 모음이라고 할수 있다.#include using std::string;가변길이 문자열이며, 해당 string타입을 사용하려면이렇게 string 헤더를 사용하여야 한다.(참고로 string은 std::string에 정의 되어 있다.)string s1; // string의 기본 초기화. s1은 빈문자열이다.string s2 = s1; //s2는 s1의 복사본이다.string s3 = "hiya"; //s3는 문자열의 복사본이다.string s4(10,'c'); //s4는 cccccccccc(c가 10개)라는 뜻.위에 코드 마다 주석에 달린 내용으로 사용법을 대략 알수 있겠지만,보다시피 초기화를 하는 방법이 두 가지이다.1-1. string의 직접초기화.. 2024. 12. 5.
5. C++ auto & decltype에 대해서. 1. auto 타입 지정자auto는 컴파일러에서 초기값으로 타입을 추론하고 타입을 결정짓는 타입이다.즉, 쉽게 이야기 하자면 해당 객체의 타입을 컴파일러가 알아서 결정해줌.-> 때문에 무조건 auto 같은 경우에는 선언 시에 초기값이 있어야 한다.auto item = val1 + val2; //item은 val1 + val2을 이용해 타입을 추론해 초기화.만약 item 변수를 함수가 호출해서 사용할 때 호출값이 double형(소수점)이면, auto는 double로,int형(정수)라면 int형으로 초기화 시킨다.다만 여기에는 약간의 제약이 있는데...auto i = 0, *p = &i; //i는 int, p는 int에 대한 포인터로 추론될 예정이다.auto s2 = 0, pi = 3.14; //err.. 2024. 12. 5.
4. C++ Typedef(타입 별칭)에 대해서 1. 타입 별칭이란?다른 타입과 동의어인 이름 -> 복잡한 정의를 더 간단하게 바꿔줌.자료형을 다른 이름으로 재정의 한다고 생각하면 된다.* 전통적인 typedef 별칭 선언typedef double wages; // wages는 double과 동일어.typedef wages base, *p // base는 double, p는 double*이다. 위에 코드 예시를 보면 첫번쨰 줄에서는 동의어를 선언,아래는 위에 만든 동의어를 이용해서 다시한번 동의어를 만들며포인터를 만드는 방식으로 응용을 한 것이다. 즉, typedef로 동의어를 선언할 때 typedef가 맨 앞에,그 뒤에 타입(int, double, char등등..) 마지막으로 동의어 이름을 지정하면 된다. 어떻게 보면 typedef 키워드는 선언.. 2024. 12. 5.
3. C++ constexpr에 대해서 1. constexpr과 상수표현식constexpr란?어떤식이 상수식 이라고 명시해주는 키워드 이다.컴파일중 값을 평가하는 기능을 가지고 있다.기본적으로 해당 변수가 상수인지 아닌지에 대해서 검사한다.상수 예시)const int max_files = 20; // max_files는 상수표현식이다.const int limit = max_files + 1; // limit는 상수표현식이다.int staff_size = 27; // 상수표현식이 아님.const int sz = get_size(); // 상수표현식이 아님.기본적으로 다들 알다시피, const 키워드가 앞에 들어간 객체들이 상수라고 알겠지만,여기서 말하는 상수는 숫자(1,2,3,4...등) 또는 숫자가 초기값으로 들어있는 변수를 뜻.. 2024. 12. 5.
2. C++ const에 대하여 계속해서 저번 포스트에 이어서 이번에는 const에 대해서 다뤄보겠다.나름대로 포인터와 참조자 쪽에서 중요한 요점들이 약간씩 있기 때문에그 부분들은 약간씩 강조해 보겠다.1. const에 대한 참조자참조자를 const 타입 객체에 결합이 가능하다.즉, const 변수에 대한 참조자라는 뜻.const int ci = 1024; //올바른 사용.const int &r1 = ci; //올바른 사용.r1 = 42; //error : r1이 const이므로 수정불가.int &r2 = ci; //error : const 변수를 참조시 참조자도 const여야 함.위에를 보듯, 무조건 const 참조자는 어떤 const의 대한 참조자이다.즉, const 변수를 참조하기 위해서는 무조건 그 변수를 참조하는 .. 2024. 12. 5.
1. C++ 변수사용 Tip에 대해서. 기존에 C++ primer 관련해서 변수 관련해서는 따로 정리하지 않겠다고 이야기 했지만,결국에는 정리하게 되었다.꽤나 나 자신이 모르거나 헷갈려하던 내용이 많던 이유가 그 중 하나이다.1. extern 변수extern 변수는 기본적으로 선언만 하고 초기값을 넣지 않은 변수이다.extern double j; //j를 선언하지만 초기화를 하지 않음.int i = 10; //i를 선언하고서 상수(숫자)로 초기화.때문에 이는 .cpp파일이 아닌, .hpp파일에서 사용하면더 유용하게 사용이 가능하다.참고로 extern으로 정의한 변수에 초기값을 지정할 수 있다.extern double pi = 3.1416 //pi를 선언하면서 정의.이렇게 할 경우엔 extern를 컴파일러가 무시한다.(결국에 위쪽의 in.. 2024. 12. 5.
macOS 15.1에서 언리얼 엔진 구버전 돌리는 법(4.XX~5.4까지 모두 포함) *공지 : 앞으로 해당 블로그는 게임 개발 관련 팁 블로그가 될 예정입니다 :)​대충 저는 언리얼 엔진을 쓰고 있지만 이상하게 윈도우는 잘 안쓰게되더라구요(자꾸 개발말고 게임을 하게 되어서 그런지도 모르겠습니다.)​아무튼 저는 지금 에픽게임즈에서 언리얼 엔진이 공식적으로는 아직 지원을 하지 않고 있는macOS 15.1(세콰이어)를 사용중이고요, 여기서 언리얼 엔진 5.4와 5.0을 돌리고 있습니다. ​근데 보통은 맥같은 경우 정말 개발할때 그지같은 점이 하나 있다면,맥이 메이저 업데이트를 하면서 버전이 14->15로 이렇게 바뀔 때마다 Xcode도 같이 버전업이 되면서 더이상 이전에 사용했던 Xcode는 공식적으로는 업데이트된맥에서 사용을 하지 못하고 따로 업데이트를 해줘야 합니다. ​(네, 공식적으론 .. 2024. 11. 22.