Game DevTip22 1. 자료구조 전 기초 상식(?) 객체지향 프로그래밍 OOP클래스는 Define하기 위해 만드는 객체이다.엔진들은 모두 모듈화(상속이 되어있다.)프로그래밍 동작 순서하드 → 메모리(용량 큼) 속도 조금 느림 → 레지스터(용량 작음) 속도 빠름 → CPU선언파일(h), 구현파일(cpp)차이점헤더파일은 이름같은거 정의 할때 선언(public, protected, private으로 공개 범위 적용)구현파일은 헤더파일을 가지고 오거나 해당 변수를 이용하여 기능을 구현.변수(*메모리에 공간을 할당하는 것은 운영체제가 해줌.) 빌트인 타입, 유저인 타입(*클래스도 마찬가지임)즉, 메모리 공간하면, 구조를 생각 후 → 객체를 생각해줘야 한다.유저 디파인 타입 : 구조체 타입을 사용하여 만들어야 함(예시 : 캐릭터가 가질 수 있는 속성들을 보관.)변수.. 2024. 12. 7. 군대에서 코딩 공부하는 법, replit Online IDE *해당 글은 광고가 아닙니다. 또한 매우 주관적이며, 제가 사용했을 때 편했던 것을 위주로 글을 작성했습니다. 필자인 저는 현재 군 복무중에 있습니다.대략 1년전 2022년 12월 19일에 입대를 해서 현재11월 1일에는 상병 3호봉을 달고서 앞으로 전역까지 대략 7개월 남짓 남은 상태입니다. 나름대로 전산병(기술 행정병)으로 근무를 하면서 분대장까지 달고,아래 후임까지 달게 된 요즘, 이제 슬슬 사회로 돌아가기 전에기존에 했던 개발 실력들을 다시 키워야겠다는 생각이 들기 시작하니... 프로그래밍을 사지방에서 하려고 하는데군대에서는 컴파일이 가능한 컴퓨터가 따로 정해져있고 이를 어겨일반 인트라넷이나 사지방 인터넷망 PC에 컴파일러를 설치하는 행위는 엄연하게 징계사유입니다.(물론 사지방 같은 경우는 아예 .. 2024. 12. 5. 3. 언리얼 엔진 싱글케스트 델리게이트 기초 사실 나는 델리게이트에 대해서 잘 모른다.C#을 해본거도 아니고, 언리얼에서 함수 다룰때도 완전 초보식으로 다루기도 했고.... 그래서 이 김에 한번 언리얼 싱글케스트 델리게이트를 공부한 내용들을 정리해보려고 한다.(약간 틀릴 수도 있다.) 일단, 포인터는 런타임에 지정이 가능하다.그리고 가리키는 메모리 주소를 바꿀수 있다는 점도 유용하다. 표준타입 외에 함수에 대해서도 포인터를 생성이 가능하지만,여러가지 이유로 안전하지 않다고 한다. 그래서 이것 때문에 언리얼 엔진에서는 델리게이트를 쓴다고... 일단 델리게이트는 훨씬 안전한 함수 포인터라고 한다. 어떤 함수가 할당되는지 그 함수가 호출되는 순간까지 알지 못하는 상태에서미꾸라지마냥 유연하게 함수를 호출 할 수 있다고 한다. 이런 유연함이 델리게이트를 선.. 2024. 12. 5. 2. 언리얼 엔진의 메모리 관리에 대해서 *해당 글은 공부용으로, C++를 사용한 언리얼 엔진 4개발 2/e의 내용이 다수 포함 되었습니다. 이번에 언리얼 엔진의 메모리 관리에 대해서 한번 알아보겠다. 일단 기본적으로 언리얼은 C++을 사용중인다. 때문에 C에서 사용하던 malloc과 free보다는 new와 delete를 사용하는게 원칙이다.(사실 원칙이라기 보다는 권장이다.) new 연산자는 메모리 할당후 오브젝트가 생성된 직후에 생성자를 호출한다.하지만 malloc에서는 이것이 되지 않는다. (물론 다른 기능들 자체는 malloc과 거의 동일.) 그리고 무조건 new 연산자를 사용하여 동적할당을 했다면, free()가 아닌 delete로 동적할당을 해제해야한다. 아무튼 new는 사용할 연속적인 메모리 공간을 할당하고,생성자를 new연산자의 .. 2024. 12. 5. 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. 이전 1 2 3 다음