본문 바로가기

Game DevTip22

UEG : Unreal Engine Generate Tools for macOS - 맥 전용 언리얼 프로젝트 솔루션 생성 툴 언리얼 엔진은 윈도우에서 쓸때... 보통은 이렇게 "Generate Visual Studio project files"가 프로젝트 파일을 우클릭을 하면 나옵니다... 근데 맥은 없더라구요...그래서 가끔 소스코드가 에러난 채로 부서져 있는데 .sln파일이나, xcworkspace 파일이 없다면..(그때 부터 소름 돋기 시작합니다.) 맥 얘네는 오류 로그를 볼새도 없이 로그 창이 닫히면서에러나서 빌드에 실패했다는 메세지 달랑 하나만 보여주고서는 뭐하나 건지기가 힘듭니다. (오죽하면 빌드할때 영상 찍어서 짧은 시간동안오류메세지 보인거 캡쳐해서 그걸로 파일 일일히 뒤져가면서 코드 수정하고... 다시 빌드하고...) 그래서 손쉽게 접근 가능한 Generate 기능이 없는...(있긴 한데 터미널 가서 손수 경로.. 2024. 12. 10.
4. 언리얼 엔진 팀플 시 소스 컨트롤 관리법 : Git & SVN(1) 1. 언리얼 소스컨트롤 언리얼 팀 프로젝트를 하다보면 듣게 되는게 있습니다. 바로 퍼포스, SVN, Git같은 이런 버전관리 툴을 주로 말하고는 하는데, 언리얼 같은 경우는 퍼포스만 쓰거나 소규모의 경우 git과 svn을 혼합해서 사용하는 경우가 많습니다.일단 제가 개발에 참여하고 있는 프로젝트 같은 경우에는 후자(SVN + Git)을 주로 사용중입니다.  그렇다면 어떤 파일을 git에 넣고 어떤 파일을 SVN에 넣느냐에 대해서 말씀을 드리기 전에일단 유니티 같은 경우는 대부분의 개발자 분들께서는Git에다가 거의 모든 에셋, 소스들을 전부 박아두시곤 하십니다만, 언리얼의 경우에는 에셋  하나의 용량이 생각보다 큰 에셋들이 많기 때문에 보통 Content 폴더의 파일의 경우는 Github 유료버전을 사용하.. 2024. 12. 9.
7. STL : 더블링크드 리스트(Double Linked List)를 구현해보자. 더블 링크드 리스트 이중 연결 리스트는 하나의 노드에서 두 개의 링크를 갖게 되는데선행 노드와 후속 노드에 주소를 각각의 링크에 연결시켜 양뱡향 겁색이 가능하게끔 하는 리스트이다.단순 연결 리스트에서 삽입과 삭제를 위해서는 선행노드의 주소가 반드시 필요했던 것과 달리이중 연결 리스트는 양방향 검색이 가능하기 때문에 삽입,삭제를 더 용이하게 진행할 수 있다.실제로 이중 연결과 원형 연결을 같이 구현하여 이중 원형 리스트를 가장 많이 사용한다고 한다.node의 시작 pointer리스트에 저장된 데이터의 개수Prev라는 포인터가 들어갔기에 일반적인 링크드 리스트보다 앞뒤를 순서를 더 고려해서 처리를 해줘야 함.대략적인 구조#include struct Node { int data; Node* prev.. 2024. 12. 7.
6. STL : 링크드 리스트(Linked List)를 직접 구현해 보자. List(STL)목록 & 도표마냥 여러 데이터를 관리할 수 있는 추상자료형이다.데이터가 연속으로 이어져있는 시퀀스이다.배열을 이용하는 방법 & 포인터를 이용하는 방법 있음.스택 큐는 리스트의 특수한 형태이다. (즉, 스택 & 큐도 리스트로 구현 가능.)LIST ADT속성 : 연속으로 저장된 n개의 데이터(객체) 집합.기능빈 리스트 만들기리스트 없애기데이터를 리스트에 추가하기.리스트에서 데이터 삭제리스트에서 데이터 검색리스트에 저장된 데이터 개수 확인리스트가 비어있는지 검사리스트가 꽉 찼는지 검사.class IntList{private: int m_data[50]; int m_count; public: IntList(); ~IntList(); void insert(int pos, int it.. 2024. 12. 7.
5. STL : 재귀함수에 대해서 재귀함수재귀는 대표적인 ‘분할 정복’ 알고리즘 이다.K번쨰 블록이 반드시 쓰러진다는 사실을 증명하시오수학적 귀납법(Mathematical Induction) - 한 조건으로 확정된 상황을 바탕으로 진행.첫번째 블록은 반드시 쓰러진다.첫번쨰 블록이 쓰러지면 두번째 블록도 반드시 쓰러진다.(k-1)번째 블록이 쓰러지면 k번째 블록도 반드시 쓰러진다.재귀적 알고리즘(Recursive Algorithm) - 메모리 스택을 씀.수학적 귀납법의 순서를 역순으로 증명.분할 정복 :큰 문제를 작은 문제로 환원 / 작은 문제 역시 큰문제와 유사.아주 작은 문제는 반드시 해결됨( = base case)반드시 베이스 케이스에 도달해야 함.팩토리얼, 문자열 뒤집기, 카운트 다운, 피보나치수열, 하노이 탑, 이진 탐색, 게임 .. 2024. 12. 7.
4. STL : Call by value, Ref, Address & 배열과 포인터에 관련해서. 배열과 포인터포인터 : 메모리에 저장된 다른 값의 메모리 주소를 저장하는 변수배열 : 이름은 주소(사실은 주소임)포인터 변수 선언 : Type *var_name;(int *ptr; → 인티저 값을 가르키는 포인터 변수.)포인터 사용 : 다른 변수의 주소를 참조하여 사용가능. 동적 메모리 할당가능. → 함수도 주소이므로 사용가능.- 주소할당.int a = 100;int p = &a; - 동적메모리 할당.int *p = null;p = new int ; // 동적 메모리 할당. *p = 500; //p가 가르키는 해당 공간에 500이라는 값을 저장해라.delete p; // 메모리 해제(안하면 누수 ^^7)Call by value & Call by address & Call by Refvalue : 인수가 .. 2024. 12. 7.
3. STL : 클래스 상속에 관하여. 1. 클래스 상속(객체지향 방법론)객체와 메세지클래스 : 붕어빵 틀객체 : 붕어빵 실물 (메시지를 보내거나 받는 대리인(클래스에 의해서 만들어진 실물))메세지(함수) → 윈도우 프로그래밍에서는 주로 이벤트이다.즉, 객체가 처리해야할 일을 전달하는 것.(그냥 함수임)정보은닉 : 실제 처리되는 과정과 내용이 숨겨져 있다.정리)클래스 : 프로그래머가 정의한 자료형객체 : 클래스 타입으로 선언하여 메모리에 할당 된 것.인터페이스 파일(헤더)객체를 추상화한 파일외부 사용자를 위한 파일클래스, 메시지(가상함수)가 정의된 파일 - 참고로 변수는 없음.외부사용자는 세부구현 내용을 몰라도 이 파일만 읽고 불러서 사용 가능.구현 파일(소스 파일)인터페이스 파일에 정의된 메시지(함수)를 구현한 파일내부 구현자가 작성한 파일.. 2024. 12. 7.
2. STL : 추상화에 관해서. 1. 추상화세부적인 것들을 다 빼고서 일반화를 시키는 것(부품을 뺴고 큰것들만 남기기)장점 : 재사용이 쉬워짐.언리얼에서 AActor → Chracter클래스로 상속 받는 거처럼 생각하면 됨.객체 단위로 프로그램을 짜게 만드는 요인.1-1 추상자료형기능의 세부구현 내용은 나타내지 않음.기능이 어떤 형태인지만 나타냄.세부구현 내용은 몰라도 사용가능.단, 개발자는 세부 구현 내용은 알고 있어야 함.C++에서는 header 파일에 클래스나 함수등을 선언해서 추상 자료형을 나타냄.실제 세부기능은 cpp파일에서 구현됨.1-2 추상자료형과 C++사용과 구현을 분리.추상 자료형은 헤더세부기능은 cpp사용자에게는 구현방법이 숨겨져 있어서 보이지 않음.추상 자료형 선언 = 클래스 or 구조체 선언추상 자료형 작업 = 객.. 2024. 12. 7.