목록Categories (1096)
KoreanFoodie's Study
이득우님의 "이득우의 언리얼 C++ 게임 개발의 정석" 책을 따라가며 실습한 내용을 정리한 포스팅입니다. 실습에 필요한 자료들은 이 링크에서, 제가 작업한 예제 소스 완성본은 여기에서 찾아보실 수 있습니다. (저는 언리얼 4.27.2 버전 기준으로 작업하였습니다) 프로젝트의 정리와 모듈 추가 이전에 작업한 C++ 파일들은 전부 ArenaBattle 이라는 폴더 하나에 몰려 있었다. 모듈화 및 정리를 위해 폴더를 정리하자. 헤더파일은 Public 폴더에서, CPP 파일은 Private 폴더에서 보관하도록 만든다. 다음과 같이 구성한다. uproject 파일을 우클릭한 후 메뉴에서 Generate Visual Studio project files 을 클릭하면 솔루션 탐색기의 폴더 구조가 바뀐다. 마찬가지로 ..
언리얼 프로젝트 구조를 변경하고, 모듈을 추가하는 작업을 한 후, 비주얼 스튜디오에서 "솔루션 다시 빌드" 를 했는데 빌드를 실패했다. 그리고 이런 에러 메시지가 떴다! (22/6/17 추가 : 문제가 되는 dll, pdb 파일을 삭제하면 해결됨) 그리고 나온 크래시 리포터. LoginId:be4263854175519d068bceae3ec68e43 EpicAccountId:8d541bf740fd4c8aa2ddbf45e5614f37 Assertion failed: Object->HasAnyFlags( RF_BeginDestroyed ) && !Object->HasAnyFlags( RF_FinishDestroyed ) [File:D:/Build/++UE4/Sync/Engine/Source/Runtime/Co..
이득우님의 "이득우의 언리얼 C++ 게임 개발의 정석" 책을 따라가며 실습한 내용을 정리한 포스팅입니다. 실습에 필요한 자료들은 이 링크에서, 제가 작업한 예제 소스 완성본은 여기에서 찾아보실 수 있습니다. (저는 언리얼 4.27.2 버전 기준으로 작업하였습니다) AIController 와 내비게이션 시스템 NPC(Non Player Character) 에 인공지능을 추가해 플레이어를 쫓아가서 공격하도록 만들어 보자. 먼저 AIController 를 부모 클래스로 하는 ABAIController 클래스를 생성하는 것부터 시작해 보자. ABCharacter.cpp ... #include "ABAIController.h" ... AABCharacter::AABCharacter() { ... AIControl..
이득우님의 "이득우의 언리얼 C++ 게임 개발의 정석" 책을 따라가며 실습한 내용을 정리한 포스팅입니다. 실습에 필요한 자료들은 이 링크에서, 제가 작업한 예제 소스 완성본은 여기에서 찾아보실 수 있습니다. (저는 언리얼 4.27.2 버전 기준으로 작업하였습니다) 엑셀 데이터의 활용 엑셀에 저장돼 있는 캐릭터의 스탯 데이터 테이블을 언리얼 엔진에 불러들이는 기능을 구현해본다. 캐릭터 스탯 데이터는 게임의 기반을 이루는 변하지 않는 데이터이므로 보통 게임 앱이 초기화될 때 불러들인다. 언리얼엔진은 게임 앱을 관리하기 위한 용도로 게임 인스턴스라는 언리얼 오브젝트를 제공한다. 이 게임 인스턴스가 캐릭터의 스탯을 관리하도록 설계하면 게임 앱이 초기화될 때 캐릭터 스탯 데이터를 불러들이고, 게임 앱이 종료될 때..
모두의 코드를 참고하여 핵심 내용을 간추리고 있습니다. 자세한 내용은 모두의 코드의 씹어먹는 C++ 강좌를 참고해 주세요! 연관 컨테이너 (Associative Container) 연관 컨테이너는 Key - Value 구조를 가진 컨테이너를 의미한다. set 은 key 값만 가지고 만든 집합이고, map 은 key-value 페어를 이용한다. multiset 은 중복값을 허용하는 set, multimap 은 중복 키값을 허용하는 map 이다. set template void print_set(std::set& s) { // 셋의 모든 원소들을 출력하기 std::cout
모두의 코드를 참고하여 핵심 내용을 간추리고 있습니다. 자세한 내용은 모두의 코드의 씹어먹는 C++ 강좌를 참고해 주세요! C++ 표준 템플릿 라이브러리 (STL : Standard Template Library) STL 은 다음과 같은 세 개의 라이브러리들을 의미한다. Container : 임의 타입의 객체를 보관 Iterator : 컨테이너에 보관된 원소에 접근할 수 있는 지정자 Algorithm : 반복자들을 가지고 일련의 작업을 수행 Container 컨테이너에는 배열처럼 객체들을 순차적으로 보관하는 시퀀스 컨테이너(sequence container) 와 키를 바탕으로 대응되는 값을 찾아주는 연관 컨테이너(associative container) 가 있다. 먼저 시퀀스 컨테이너의 경우 vector..
모두의 코드를 참고하여 핵심 내용을 간추리고 있습니다. 자세한 내용은 모두의 코드의 씹어먹는 C++ 강좌를 참고해 주세요! TMP를 이용한 소수 판별 프로그램 컴파일러는 구조상 어떠한 식별자를 보았을때 '값'인지 '타입'인지 결정을 해야 한다. 다음의 예시를 보자. template int func() { T::t* p; } class A { const static int t; }; class B { using t = int; }; 위에서, 클래스 A 에 대해 func 함수를 특수화한다면, t 가 어떠한 int 값이 되어 T::t* p; 가 단순히 클래스 A 의 t 와 p 를 곱하는 식으로 해석이 된다. 반면, func 함수가 클래스 B 에 대해 특수화 된다면, T::t* p; 는 int 형 포인터 p 를..
미국 주식시장이 상당히 불안한 행보를 보이고 있습니다. 러시아-우크라이나 전쟁으로 인한 타격도 있겠지만, 소비자 물가지수 상승으로 인한 부담이 주식시장에도 그대로 드러나는 징조일지도 모르겠습니다. 금리 인상으로 인한 압박이 주가에 이미 반영되었다고 생각하지만, 인상으로 인한 타격이 이제서야 직접적으로 드러나고 있다고 말하는 사람도 있습니다. 여러모로, 요즘 시황은 재미가 없습니다. 재미가 없는 것을 넘어서서, 피눈물을 흘리는 사람도 많겠네요. 누군가는 땀을, 누군가는 눈물을, 혹은 모든 것을 걸었을지도 모릅니다. 어쩌면, 그렇기에 불안한 것이 당연한 것일지도 모릅니다. 하지만 제가 말씀드리는 2가지를 기억하신다면, 지루하고 불안한 횡보장을 반드시 벗어날 수 있으리라 다짐합니다. 첫째, 오직 神만이 '최저..
Pure Virtual Function 이 왜 거기서 나와? 언리얼을 공부하던 중, 플레이 중에 ESC 버튼을 누르면 라는 에러가 나오면서 종료가 되는 현상이 발생했다. 그것도 지속적으로! pure virtual 함수가 호출되었다니?? 나는 만든적도 없는데.. 하며 에러로그를 보니 내 실수가 아닌, 엔진 쪽 버그로 보였다. 자세히 읽어보면 이 부분이 문제라는 건데... Fatal error: [File:D:/Build/++UE4/Sync/Engine/Source/Runtime/Core/Private/Windows/WindowsPlatformMisc.cpp] [Line: 475] Pure virtual function being called 일단 구글링을 조금 해보다가, 임시 방편으로 해당 소스코드를 약간..
이득우님의 "이득우의 언리얼 C++ 게임 개발의 정석" 책을 따라가며 실습한 내용을 정리한 포스팅입니다. 실습에 필요한 자료들은 이 링크에서, 제가 작업한 예제 소스 완성본은 여기에서 찾아보실 수 있습니다. (저는 언리얼 4.27.2 버전 기준으로 작업하였습니다) 캐릭터 소켓 설정 무기는 메시에 착용해야 캐릭터 애니메이션에 따라 무기가 움직인다. 언리얼은 소켓이라는 시스템을 제공하는데, 우리가 사용하는 워리어 캐릭터의 스켈레탈 메시에는 이미 hand_rSocket 이라는 이름의 소켓이 생성돼 있다. 프리뷰 에셋을 추가해서, 소켓의 위치를 조정해보자. 무기 애셋은 InfinityBlade : Weapons 여기서는 소켓의 위치 값은 (-9.4, 3.0, 5.3), 회전 값은 (18.4, 23.2, 83.0..