Unreal Engine - GameMode, Pawn, Character
·
Unreal Engine
1. GameModeGameMode란게임의 전반적인 규칙과 흐름을 총괄 관리하는 컨트롤 타워 역할하는 클래스어떤 캐릭터를 스폰하는지,어떤 PlayerController를 사용할지,점수계산 방식 등의 주요 게임 플레이 로직을 담당한다.크게, GameMode와 GameModeBase 클래스가 있다.GameModeBase는 단순화되어있으며, 간단한 게임에서 사용하고 멀티플레이어 로직이 없다.GameMode 클래스는 좀 더 복잡하고 무겁지만, 더 많은 기능이 있으며, 멀티플레이어 로직이 존재한다.GameMode의 주요 기능플레이어 Pawn/Character 스폰PlayerController 지정게임 규칙 관리점수 계산, 타이머, 라운드 제어승/패 결정게임 오버 화면이나 다음 레벨로 전환하는 등의 후속 처리Gam..
Unreal Engine - 클래스와 변수의 리플렉션 (매크로 지정자 위주)
·
Unreal Engine
이전에 관련 이론을 정리한 글https://gbleem.tistory.com/35 Unreal Property System (Reflection)참고자료https://unrealcommunity.wiki/unreal-property-system-(reflection)-36d1e6 Unreal Property System (Reflection) | Unreal Engine Community WikiBrief description of the Unreal Property System.unrealcommunity.wikihttps://dev.epicgames.com/documentatigbleem.tistory.com1. 리플렉션 이란리플렉션이란!C++ 클래스의 변수 및 함수 정보를 엔진 내부의 메타데이터의 ..
TIL day 26
·
TIL
1. 코딩 테스트오전에 코딩 테스트 문제로 프로그래머스 level2 k진수에서 소수 개수 구하기 문제를 풀었습니다.https://school.programmers.co.kr/learn/courses/30/lessons/92335 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr뭘로 풀지?문제를 보고 크게 세가지 작업을 하면 문제를 풀 수 있을 것이라는 생각이 들었습니다.먼저, 해당 숫자를 k진수로 바꾸기while문을 통해서 n을 k로 나눈 나머지를 넣어주면 됩니다. (temp에 넣어주었습니다.)생각할 점은 while문 탈출 조건이 n > k 이므로, while문을 탈출한 직후의 값도 저장해 주어야 합니다...
TIL day 25
·
TIL
TIL day 24는 개인 일정으로 쉬어서 없습니다.^^1. 코딩 테스트오늘 오전에는 프로그래머스의 level2 오픈채팅방 문제를 풀었습니다.https://school.programmers.co.kr/learn/courses/30/lessons/42888 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr뭘로 풀지?처음에 문제를 보고, string 처리를 잘 한 다음 unordered_map을 써서 갯수를 세면 될 것 같다는 생각을 했습니다.Split 함수그러나 C++에는 split함수가 없기에, split을 할 수 있는 함수를 만들어서 해당 기능을 구현해서 문제를 해결했습니다.특정 값이 문자가 나오기 전까..
Unreal Engine - Actor의 생성과 응용
·
Unreal Engine
1.  Actor 클래스 생성 및 삭제1-1. Actor와 Object 비교UObject언리얼 엔진에서 모든 클래스의 최상위 부모 클래스월드에 배치할 수 없고, 데이터나 로직만 담당할 수 있다.ex) 플레이어의 능력치, AI정보, 게임 설정 값 등ActorUObject를 상속한 클래스로 월드에 spawn 할 수 있다.공간 정보(위치, 회전, 크기)를 가지고 있고, 여러 컴포넌트를 추가로 붙일 수 있다.실제 게임에서 볼 수 있고, 상호작용할 수 있는 캐릭터, 몬스터, 아이템, 파티클 효과 등을 AActor를 기반으로 제작한다.1-2. C++로 Actor 클래스 만들기클래스를 만들 때 클래스 타입을 설정(public& private) 이때 public으로 생성한다면,헤더 파일은 public폴더에 .cpp파일..
Unreal Engine - 개발 환경 세팅 및 빌드 프로세스
·
Unreal Engine
1. 개발 환경 세팅1-1. 코드 편집기 세팅편집 -> 에디터 개인설정 -> 일반 -> 소스코드 -> 소스 코드 에디터 설정1-2. 프로젝트 내의 주요 파일.sln 파일 (솔루션 파일)C++ 소스코드와 빌드 설정이 연결된 파일.uproject 파일언리얼 에디터가 프로젝트 설정(content, map, plugin)을 불러올 때 사용하는 파일.vsconfig 파일visual studio 프로젝트에서 사용되는 특정 설정과 구성 요소 설치 요구 사항 정의1-3. 프로젝트 내의 주요 폴더.vs디버깅, 솔루션 설정 관련 파일BinariesC++ 코드를 빌드하면 생성되는 실행 파일이 저장 (.exe, .dll)Config게임플레이, 렌더링, 입력 등의 설정을 담은 .ini 파일이 존재Content 언리얼 에디터의 ..
TIL day 23
·
TIL
1. TIL day 22TIL day 22는 과제 코드 복습하고, 정리하면서 아래의 정리한 글로 대체하였습니다.https://gbleem.tistory.com/41 텍스트 RPG 게임 만들기 (C++)싱글턴 객체 / 전방 선언 / cin관련 함수 / 포인터 / const 에 관한 이야기 C++를 이용하여 텍스트 기반 RPG 게임을 만드는 과정에 있어서 생긴 이슈들을 중점으로 글을 정리해 볼 것이다.1. 싱글턴 객gbleem.tistory.com 2. C++ 어렵다.오늘은 어제 마무리 짓지 못한 과제 복습 글( https://gbleem.tistory.com/41 )을 마무리 지었습니다.가장 큰 이슈는 메모리 누수를 막는 것이었습니다.문제가 발생한 것 같은 코드를 확인하고, 공부를 수행하였습니다.추가적으로..
unique_ptr 써보기
·
C++
메모리 누수를 막는 코드를 짜면서, 여러가지 방식을 테스트 하다가 지금까지 써보지 않은 방식인 스마트 포인터를 사용해 보면서 정리해 보았다.관련 코드는 아래 깃허브의 TEXT_RPG 폴더를 체크해 보면 된다.https://github.com/GbLeem/Cpp_Issues 1. unique_ptr 간단한 문법unique_ptr은 헤더에 정의되어있으며, 단 하나의 소유권만 가지게 하는 smart pointer이다.unique_ptr name; 위와 같은 모습으로 선언할 수 있다.주의할 것은 대입과 복사는 불가능하고, 이동 연산은 가능하다.unique_ptr uPtr1;unique_ptr uPtr2(uPtr1); //복사 불가능uPtr2 = uPtr2; //대입 불가능unique_ptr uPtr3(move..
텍스트 RPG 게임 만들기 (C++)
·
C++
싱글턴 객체 / 전방 선언 / cin관련 함수 / 포인터 / const 에 관한 이야기 C++를 이용하여 텍스트 기반 RPG 게임을 만드는 과정에 있어서 생긴 이슈들을 중점으로 글을 정리해 볼 것이다.1. 싱글턴 객체 생성싱글턴 객체의 생성은 어디에서 해야 할까?싱글턴 객체로 구현한 클래스를 정의한 cpp 파일에서 하면 된다.//Character.hprivate: static Character* instance; //Character.cpp...Character* Character::instance = nullptr;Character* Character::GetInstance(string name){ if (instance == nullptr) { instance = new C..
TIL day 21
·
TIL
어제는(1/14) 면접을 보느라 TIL day 20이 없습니다.1. 코딩 테스트오늘 오전에는 오랜만에 코딩테스트 문제를 다시 풀었습니다.level 2에 피로도 문제를 풀었습니다. https://school.programmers.co.kr/learn/courses/30/lessons/87946 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr뭘로 풀지?처음에 이 문제를 보고 그리디 문제처럼 보였습니다. 그런데 예제로 주어진 값들을 보면 어떤 방법으로도 그리디에 해당하지 않았습니다.필요 피로도나, 소모 피로도 둘 중 무엇을 우선시 하더라도 최적의 결과가 나오지 않아서 다른 방법을 생각해 모았습니다.이 문제의 ..