게임 기획 제련소
article thumbnail
[UE5] Get / Set
🧠프로그래밍/UE5 2024. 11. 12. 00:10

이전 글에서 데이터의 공간을 만들고 할당하는 것까지 해보았다. 하지만 실제로 의미가 있으려면 뭔가를 넣거나 꺼내 써야 한다.그래서 Get과 Set을 배워보도록 하자. [Set] 변수에 어떤 값을 할당하는 것.[Get] 변수에 할당한 값을 읽어내는 것. int로 영역을 먼저 할당을 받았다. 우클릭을 눌러서 Set Hp를 검색해서 노드를 추가하고 Get HP를 눌러 노드를 추가해 주었다.이 두 개가 가장 핵심적인 역할을 할 것이다. 아까 HP라는 변수를 만들었는데왜 두 개를 더 만들어요?  HP라는 일종의 박스를 만든 건 맞지만 새로운 변수로 만든 게 아니라 하나의 기능을 만들어 준 것이다.이 개념은 함수의 개념과 같다고 보면 된다. 쉽게 기계라고 생각하면 된다. 마우스를 가져다가 대면 함수의 기능을 알 수..

article thumbnail
[UE5] 변수타입
🧠프로그래밍/UE5 2024. 11. 11. 22:05

오늘은 본격적으로 데이터를 다루는 방법에 대해서 다뤄 볼 시간이다.컴퓨터로 어떠한 게임이나 프로그램을 만들 때 핵심이 되는 두 가지는 첫 번째는 '데이터' 두 번째는 '로직'이다.그렇다면 데이터와 로직은 어떠한 차이가 있을까? [데이터] 컴퓨터가 처리할 수 있는 문자, 숫자, 소리, 그림 따위의 형태로 된 자료. 게임으로 예를 들면 플레이어가 있고, 아이템이 있고, 캐릭터의 스탯과 레벨이 있는... 그런것이다. 그래서 이런 데이터들을 컴퓨터가 인식할 수 있게끔 들고있게 만들어야하는데 컴퓨터가 들고만 있다고 그것이 움직일까? 아니다! 정지화면에 가깝다.게임세상을 묘사하는데 까지는 성공했지만 진행시키지는 못할것이다. 그래서 메모리에 있는 데이터들을 가공시켜서 게임을 진행 해야한다.  [로직] 어떤 프로그램을..

article thumbnail
[UE5] 블루프린트 기초
🧠프로그래밍/UE5 2024. 11. 10. 01:00

블루프린트를 활용하기 위해서 [Open Level Blueprint]를 눌러 열어 준다. 그러면 새로 만든 레벨 블루프린가 하나 생성되는것을 볼 수 있다. 레벨 블루프린트?? 그게 뭘까 싶었다. 하지만 엄청 대단한 개념은 아니고 새로운 레벨이라는 개념을 이용해 새로운 맵을 만들었다.언리얼 엔진에서는 맵이라는것 자체를 레벨이라는 이름으로 부른다고 한다.(유니티 엔진에서의 씬과 동일)그래서 언리얼 엔진에서는 이것을 레벨이라고 부르는 개념이고 각 레벨 마다 레벨 블루프린트가 하나 생성이 되는것이다.따라서, 레벨 블루프린트를 하나만 만든다고 해서 모든 레벨이 적용이 되는것은 아니고 1레벨 1블프 라고 보면 된다. 마우스 우클릭을 통해 추가해보도록 하자. 마우스 우클릭을 눌러 [Print Text]를 검색하여 노..

article thumbnail
[UE5] 언리얼 엔진 기초
🧠프로그래밍/UE5 2024. 11. 8. 17:01

언리얼 엔진 첫 시작 시 굉장히 많은 기능이 있는것을 확인할 수 있다.나는 언리얼 엔진4 화면으로 변경하여 시작했다. [Place Actors] 일종의 대기실 이라고 보면된다. 언리얼 엔진에서 자체적으로 만들어준 기본 기능들을 사용할 수 있는데, 그런 기본 액터들을 임대해주는 곳이다.[Content Browser] 소스코드를 작성하거나 사운드 파일을 받아주거나 아트리소스를 받아주거나 했을 때 그런 모든 준비물들을 다 컨텐츠 브라우저에서 관리하게 해줄것이다. 그래서 Cube를 드래그 드롭한다면 인게임 세상에 Cube가 배치 된다. [Outliner] 인게임에 배치한 모든 물품들을 아웃 라이너라는 패널에서 보여주고 있다.[Details] 배치한 액터들에 대한 정보를 정밀하게 알려준다.

article thumbnail
Virtual 소멸자
🧠프로그래밍/C++ 2023. 5. 10. 14:55

소멸자의 특수성에 대해서 알아보자 소멸자(destructor)는 객체가 소멸될 때 호출되는 함수이다. 객체가 생성될 때는 생성자가 호출되고, 객체가 소멸될 때는 소멸자가 호출된다. #include class A { public: A() { } ~A() { } }; class B : public A { public: B() { } ~B() { } }; int main() { A* NewA = new B(); // 업캐스팅 때문에 가능 delete NewA; } 위 코드의 생성자 소멸자의 호출순서는 다음과 같다. 생성자 : A의 생성자 호출 -> B의 생성자 호출 소멸자 : A의 소멸자만 호출 delete NewA를 해보면 원래 역순으로 B의 소멸자가 먼저 호출이 되어야 하는것이 아닌가??? 했지만 B의 소..

article thumbnail
BitOperator
🧠프로그래밍/C++ 2023. 3. 2. 00:49

이전 글에서 비트에 대해서 이해를 했으니 이제 비트 연산자를 공부해 볼 차례이다. 기본적으로 비트단위연산자는 비트를 비교해서 또 다른 숫자를 나타내는 것이다(기본목적). NOT 먼저 순서대로, NOT 연산자부터 보자 NOT 연산자는 비트 반전이므로, 0이 1로 1이 0으로 반전되는 것을 의미한다. int Left = 1; int Right = 3; int Result = 0; // 0b00000000000000000000000000000001; // 0b11111111111111111111111111111110; // Not 비트 반전. Left = ~Left; // -2 AND 두개의 비트는 비교해서 둘 다 1인 비트만 1인 결과를 리턴한다. // Left 0b00000000000000000000000..

article thumbnail
C++의 Bit
🧠프로그래밍/C++ 2023. 3. 1. 23:19

먼저 C++의 연산자 중에 비트연산자라는 것이 있다. 그럼 비트가 뭘까? 데이터를 나타내는 최소 단위 라고 한다. 모든 데이터는 0과 1의 조합으로 구성되는데, 이 0 또는 1이 하나의 비트가 된다 이때 1이나 0을 비트(bit) 라고 한다. 그리고 비트가 8 개가 모이면 바이트(byte)가 된다. 즉, 1byte = 8 bit 그럼 비트연산은 뭘까? 비트연산은 한 개 혹은 두 개의 이진수에 대해 비트 단위로 적용되는 연산이다. int a = 0; // int는 4바이트 4바이트는 32비트 int b = 0; // 이진표현법 a = 0b00000000000000000000000000000001; // 1 b = 0b00000000000000000000000000000010; // 2 4바이트 정수형을 가..

article thumbnail
개체? 객체?
🧠프로그래밍/C++ 2023. 3. 1. 02:50

개체? 객체? 객체지향 프로그래밍? 개체지향 프로그래밍? 무엇이 맞는 말일까. object는 물건, 물체임을 알 수 있다. 그렇다면, 원래 번역을 물체지향 프로그래밍으로 해야 하는 것이 아닐까? 그건 또 너무 이상하다🤨 개체 개체의 사전적 정의는 검색하여 알 수 있듯이, 하나의 독립된 존재를 의미하는 단어이다. 객체 그렇다면 객체는 어떨까? 객체는 사전의 검색 결과를 알 수 있듯이 의사나 어떤 행동의 대상을 의미하는 단어이다. object의 또 다른 영어 의미로는 '목적'이라는 의미가 있는데, subject는 '주어'를 의미하여 이때 object는 '목적어'의 의미를 갖는다. 따라서, 번역을 해보면 어떤 것의 목적이 되는 것이라는 해석으로 '객체' 단어가 더 적절하다. 그래서 객체야? 개체야??🤔 하지만..

article thumbnail
레퍼런스
🧠프로그래밍/C++ 2022. 10. 28. 11:43

레퍼런스 다른 변수를 참조하여 컨트롤하기 위한 변수이다. 대부분의 언어에서 참조라는 의미는 특정 메모리영역의 위치를 가리킨다. int& Ref = Number; 위처럼 레퍼런스 변수를 선언할 수 있다. int Number1 = 200; int& Ref = Number; Ref = Number1; 또한 참조하는 대상을 지정했으므로 Number1의 값인 200을 Ref가 참조하는 Number에 대입해 주는 역할을 한다. 포인터처럼 역참조할 필요는 없으며, Ref 자체가 Number를 대신하는 대리자가 되는것이다. 간단하게 예제를 살펴보면, int Number = 100; int Number1 = 200; int& Ref = Number; Ref = Number1; std::cout

article thumbnail
포인터 이해하기
🧠프로그래밍/C++ 2022. 10. 27. 17:30

우리는 변수를 선언하면 공간을 할당하고 그 메모리에는 주소가 부여되어(16진수로 표현) 있다. 즉, 내부적으로 해당 공간의 주소를 알고 있는 것이 되는 것. C++ 뿐만 아니라, 타 언어 또한 모두 주소의 원리로 이루어지고 있다. 포인터 포인터 타입의 변수는 변수의 시작 메모리 주소를 저장하는 역할을 한다. 기능은 단순히 메모리 주소 저장 역할만 한다고 보면 되고, 변수 그 자체라고 생각하면 안된다. 또한, 모든 변수 타입(사용자 정의 변수 타입 포함)들은 포인터 타입을 가질 수 있다. int의 포인터 변수이면 int 타입 변수의 메모리 주소를 저장하고 float의 포인터 변수이면 float 타입 변수의 메모리 주소를 저장하는 방식이다. 하지만 반. 드. 시 타입을 맞춰서 사용해야 한다. 포인터의 크기 ..