본문 바로가기

언리얼C++게임개발

(35)          글쓰기    
[이득우 언리얼 C++] 움직이는 액터의 설계 이번에는 렌더링 프레임 호출되는 액터의 Tick()함수를 이용해 액터의 움직임을 구현해본다. Tick()함수는 전 렌더링프레임과의 시간차를 DeltaTime에 담아 전달해준다. 구현시 사용하는 moveSpeed와 같은 변수들은 public:으로 사용하면 문제없지만 private:일 경우 컴파일 에러가 발생한다. 이를 피하기 위해 다음과 같이 Fountain.h에 선언해야한다. private: UPROPERTY(EditAnywhere, Category = Stat, Meta = (AllowPrivateAccess = true)) float RotateSpeed; Fountain.cpp Tick()에 AddActor~를 추가해 오브젝트를 돌게 해준다. 현재 회전값에 RotateSpeed*DeltaTime만큼..
[이득우 언리얼 C++] 로깅 환경의 설정 로깅 환경의 설정 출력 로그 윈도우 언리얼 엔진은 로그(Log) 환경을 위해 UE_LOG 라는 매크로를 제공하고 있다. 표준 카테고리를 사용하면 아무런 선언없이 사용할 수 있다. 그냥 표준을 쓰는걸 권장드린다. 괜히 커스텀 카테고리 만들라고 이런걸로 시간 없애지 말자. UE_LOG(카테고리, 로깅수준, 형식 문자열, 인자... ) Fountain.cpp BeginPlay()에 다음과 같이 로그를 넣으면 플레이시 콘솔에서 로그를 볼 수 있다. #include "Fountain.h" //DEFINE_LOG_CATEGORY(ArenaBattle); // Called when the game starts or when spawned void AFountain::BeginPlay() { Super::BeginPl..
[이득우C++게임개발] 객체 유형과값 유형 언리얼 오브젝트의 속성 값은 객체 유형과 값 유형으로 나뉜다. 값유형은 unint8, int32, float, FString, FName, FVector, FRotator, FTransform등이 있다 이들은 UPROPERTY 매크로를 설정해주면 미리 예약된 기본값이 지정된다. 초기화 하지 않아도 초기값이 지정된다는 것 같다. Fountain.h에 publc: 맨 마지막에 int32 ID를 추가해준다 UPROPERTY(VisibleAnywhere) int32 ID; 빌드해서 언리얼에디터의 디테일에서 확인해보면 비활성화 되어 있다 말그대로 VisableAnywhere 로 설정해서 그런데 어 그런데 액터는 디테일에서 값을 편집하지 않았던가. 사실 객체에서도 StaticMeshComponet를 다른 컴포넌트로..
[이득우C++게임개발] 액터의 설계 - 언리얼 콘텐츠의 구성요소 언리얼 레벨에디터 뷰포트에 보이는 작업공간은 현실 세계를 모방한 가상공간으로 월드라고 부른다. 월드는 공간, 시간, 물리, 렌더링으로 이루어지는더 더 자세한건 툴바의 세팅>월드세팅 메뉴를 통해 확인 가능하다. 컨텐츠를 구성하는 요소로는 액터,레벨, 컴포넌트등이 있다. 액터는 배우, 레벨은 무대, 컴포넌트는 배우와 레벨을 꾸며주는 다양한 기술 효과라고 이해하면 편할듯 하자. 액터의 설계 우리가 앞에서 Fountain이라는 C++클래스를 만들었지만 배치해보면 아무것도 보이지 않는데 아웃라이너에서 이름은 확인할 수 있다. 우리는 C++클래스의 이름만 지워주었지 아직 아무것도 설정한게 없어서 그렇다. 블루프린트하고 좀 다르다. 언리얼 C++프로젝트 구성은 4.15버전 부터 IWYU(Include What You..
[이득우C++게임개발] 예제 프로젝트의 준비 에픽게임즈 러처를 띄우고 언리얼엔진 마켓플레이스 에서 검색창에서 Infinity Grass 키워드로 Infinity Blade: Grass Lands 패키지를 찾는다. 작년에는 5.2 5.3을 지워하지 않아서 책을 덮었는데 이제 지원한다. 구매후 프로젝트에 추가 버튼을 클릭해 방금 생성한 ArenaBattle프로젝트를 클릭해 추가한다. 설치가 시작된다. 버전과 안 맞는다 이러면 문제인데 업그레이드 되어 잘된다. 설치가 끝나도 프로젝트에 추가가 보이는데 무시하고 언리얼에디터로 돌아간다. 컨텐트 드러워를 열면 InfinityBladeGrassLands폴더가 생겨있다. Maps폴더의 ElvenRuins 레벨을 더블클릭해 로딩한다. 로딩하는데 1분정도 걸리는데 기다린다. 로딩이 종료되면 에디터 위쪽 가운데 플레..
[이득우C++게임개발] 예제 프로젝트의 준비 에픽게임즈 러처를 띄우고 언리얼엔진 마켓플레이스 에서 검색창에서 Infinity Grass 키워드로 Infinity Blade: Grass Lands 패키지를 찾는다. 작년에는 5.2 5.3을 지워하지 않아서 책을 덮었는데 이제 지원한다. 구매후 프로젝트에 추가 버튼을 클릭해 방금 생성한 ArenaBattle프로젝트를 클릭해 추가한다. 설치가 시작된다. 버전과 안 맞는다 이러면 문제인데 업그레이드 되어 잘된다. 설치가 끝나도 프로젝트에 추가가 보이는데 무시하고 언리얼에디터로 돌아간다. 컨텐트 드러워를 열면 InfinityBladeGrassLands폴더가 생겨있다. Maps폴더의 ElvenRuins 레벨을 더블클릭해 로딩한다. 로딩하는데 1분정도 걸리는데 기다린다. 로딩이 종료되면 에디터 위쪽 가운데 플레..
[이득우C++게임개발] C++프로젝트로의 확장 프로젝트 만들때 템플릿을 ThirdPerson C++ 스타터컨텐트선택했지만 안하셨어도 추후 언리얼에디터에서 다 추가할 수 있다. 블러거는 처음에는 모르고 몇번이나 처음부터 다시 만들었었다. 어떤 프로젝트라도 C++클래스는 추가가능하다. Tools메뉴에서 New C++ Class를 선택 부모클래스를 Actor로 선택한다. 다음화면에서 ClassType은 Public선택후 이름은 Fountain으로 한다 Create를 클릭하면 언리얼이 라이브코딩이라고. 언리얼이 비주얼스튜디오를 직접 작동시킨다 Build fail이난다. 그리고 C++클래스는 다음 C++/프로젝트명폴더에 생기는 데 가보면 아직 만들어지지 않았다. 당황하지 말자. C++클래스를 만들면 무조건 언리얼에디터를 끄고 Visual Studio로 가서 ..
[이득우C++게임개발] 프로젝트 만들기 ArenaBattle 이득우 선생의 언리얼 C++게임개발의 정석은 Ver4.2때 저술된거라 공부할때 어려움이 많아 접었다가. 최근 언리얼을 어느정도 알게 되어 다시 도전해 본다. 현재 블러거의 언리얼 엔진 버전은 5.2이다. 기본 프로젝트의 생성 삼인칭 텔플릿을 선택하고 C++, Starter Content를 선택하고 ArenaBattle로 프로젝트명을 설정하고 만든다. 프로젝트명과 폴더명은 영어로 한다. 아직 한글은 불안하다. 로딩후 UE4 메뉴로 바꾸고 싶은면 메뉴 window에서 LoadLayout>UE4 Classic Layout으로 변경한다. 화면 왼쪽아래 컨텐트 드로워를 클릭하면 폴더목록이 보이는데 최상위 ALL이 있고 그다음은 Content인데 마우스를 올려보면 /Game이라는 가상경로로 시작한다. 실제폴더를 알..
언리얼 컴파일 빌드 에러 C++클래스를 만들자 마자 아무것도 안했는데 컴파일 에러가 난다. ㅠㅠ 언리얼 C++클래스를 배우면서 여기서 그만들수도 있다.ㅎㅎ 원인은 언리얼과 Visual Studio의 궁합문제. 처음 언리얼에디터에서 C++클래스를 만들면 라이브코딩으로는 문조건 에러가 난다. 문제는 C++클래스의 생성자이다. 앞으로도 코딩시 생성자를 건드리면 무조건 Unreal Editor를 끄고 Visual Studio에서 빌드를 하고 다시 Unreal Editor로 들어가야 한다. 그리고 처음 프로젝트 만들때는 Unreal에서 만들지만 다음부터는 비쥬얼스튜디어 솔루션파일을 열고 빌드 화살표를 눌러 언리얼을 열어야 visual Studio와 언리얼이 연결된다. 그리고 인텔리센스를 다시 깔으라는 에러가 매일 나오는데 Visual S..
언리얼 C++ 개발 준비하기 언리얼 블루프린트를 배우다 C++로 한번 배우고 싶어졌다. 블루프린트가 그닥 효율적이지 않은것 같다. 우선 Visual Studio 2022가 설치되어 있어야 한다. 새 Visual Studio 설치 옵션 Visual Studio 를 처음 설치하는 경우, 다음 옵션을 활성화해야 합니다. Visual Studio Workloads VS를 사용한 언리얼 엔진 개발 시 다음 Workloads 옵션을 설치해야 합니다. .NET desktop development (언리얼에서 자동으로 깔아주었습니다. 안깔렸으면 설치가 필요한듯) Desktop development with C++ Universal Windows Platform development Game development with C++ C++ 툴 C++ ..
언리얼 C++ 게임개발 언리얼 블루프린트를 배우다 C++로 한번 배우고 싶어졌다. 블루프린트가 그닥 효율적이지 않은것 같다. 우선 Visual Studio 2022가 설치되어 있어야 한다. 그닥 좋은 매뉴얼이 없다. 이득열의 언리얼 C++ 게임개발의 정석으로 공부해보려고 했는데 2018년 저서랑 현재 5.2와 잘 안맞는다. 베르의 유투브와 언리얼 매뉴얼에 의존하는 수 밖에 없을 듯하다. https://docs.unrealengine.com/5.2/ko/programming-with-cplusplus-in-unreal-engine/ C++로 프로그래밍하기 언리얼 엔진으로 개발하는 프로그래머를 위한 정보입니다. docs.unrealengine.com https://www.youtube.com/watch?v=DkJqLIpSvik