목록2022/02 (8)
KoreanFoodie's Study

이득우님의 "이득우의 언리얼 C++ 게임 개발의 정석" 책을 따라가며 실습한 내용을 정리한 포스팅입니다. 실습에 필요한 자료들은 이 링크에서, 제가 작업한 예제 소스 완성본은 여기에서 찾아보실 수 있습니다. (저는 언리얼 4.27.2 버전 기준으로 작업하였습니다) 캐릭터 모델 Pawn 대신 Character 액터를 만들어 조작해보자. Character 액터는 Pawn 액터를 상속받는데, Pawn 과 다른 점은 CharacterMovement 컴포넌트를 사용해 움직임을 관리한다는 것이다(Actor>>Pawn>>Character). 이 컴포넌트가 FloatingMovement 에 비해 가지는 장점은 다음과 같다. 점프와 같은 중력을 반영한 움직임을 제공 다양한 움직임 설정 가능(기어가기, 날아가기, 수영하기..

이득우님의 "이득우의 언리얼 C++ 게임 개발의 정석" 책을 따라가며 실습한 내용을 정리한 포스팅입니다. 실습에 필요한 자료들은 이 링크에서, 제가 작업한 예제 소스 완성본은 여기에서 찾아보실 수 있습니다. (저는 언리얼 4.27.2 버전 기준으로 작업하였습니다) 폰의 구성 요소 폰은 플레이어가 조작할 수 있는 액터이다. 인간형 폰을 제작할 때는 다음과 같은 요소를 고려해야 한다. 시각적 요소 : 인간형 폰이 되려면 애니메이션 기능이 필요하다. 애니메이션을 재생하도록 리깅(Rigging) 데이터를 추가한 메시를 스켈레탈 메시라고 한다(스켈레탈 메시 컴포넌트가 관리). 충돌 요소 : 인간형의 경우 캡슐 컴포넌트를 사용한다. 움직임 요소 : 폰 무브먼트 컴포넌트(FloatingPawnMovement 또는 C..

이득우님의 "이득우의 언리얼 C++ 게임 개발의 정석" 책을 따라가며 실습한 내용을 정리한 포스팅입니다. 실습에 필요한 자료들은 이 링크에서, 제가 작업한 예제 소스 완성본은 여기에서 찾아보실 수 있습니다. (저는 언리얼 4.27.2 버전 기준으로 작업하였습니다) 게임플레이 프레임워크 게임의 규칙을 관리하는 게임 모드와 플레이어가 조종하는 액터인 폰에 대해 알아보자. 프로젝트 세팅의 Selected GameMode 를 보면, Default Pawn Class 항목에서 게임에 입장한 플레이어에게 주어질 조종할 수 있는 액터, 폰의 타입을 지정할 수 있다. 언리얼 에디터에서 각각 GameMode, Pawn 을 상속받은 ABGameMode, ABPawn 을 생성하자. 그 후, 월드 세팅에서 GameMode O..
평소에는 사진을 거의 찍지 않는 사람들도, 여행을 가면 언제 그랬냐는듯 찰칵찰칵 사진을 잘도 찍어댄다. 남는 건 사진뿐이라는 건, 널리 알려진 명언임에 틀림없다. 그렇다면 사진보다 더 나은 건 없을까. 중학교 2, 3학년 시절, 내 담임은 국어 선생님이셨다. 그래서인지 몰라도, 선생님께서는 여행을 가서 글을 쓴 기억을 종종 이야기해 주셨다. 하루는 허드슨 강이었다. 담임 선생님은 이렇게 말씀하셨다. 허드슨 강에서 찍은 사진은 흐릿한 기억을 완전히 되살려주지 못했지만, 강가 벤치에 앉아 썼던 글을 읽으니 그 당시 본인이 어떤 감정이었고 어떤 상황에 놓였었는지 생생히 기억난다고. 모든 사람들이 입을 모아 말한다. 남는 건 사진뿐이라고. 사진이 남는 거라면, 글은 어떠할까. 현재의 감정을 글로 남긴다면 그건 ..

이득우님의 "이득우의 언리얼 C++ 게임 개발의 정석" 책을 따라가며 실습한 내용을 정리한 포스팅입니다. 실습에 필요한 자료들은 이 링크에서, 제가 작업한 예제 소스 완성본은 여기에서 찾아보실 수 있습니다. (저는 언리얼 4.27.2 버전 기준으로 작업하였습니다) 로깅 환경 설정 언리얼은 로깅 환경을 위해 UE_LOG 라는 매크로를 제공한다. UE_LOG(카테고리, 로깅 수준, 형식 문자열, 인자.. ) 로깅 수준은 크게 메시지(Log), 경고(Warning), 에러(Error) 이렇게 세 가지로 나뉜다. 언리얼 형식 문자열은 FString 을 이용해서 처리하는데, 다음과 같은 형식을 띤다. FString::Printf(TEXT("Actor Name : %s, ID : %d, Location X : %...
뚜벅뚜벅. 나는 걷는 것을 좋아한다. 하지만 먼 거리를 가야 할때면 어쩔 수 없이 무언가에 내 몸을 맡겨, 내 튼튼한 두 다리에게 짧은 휴가를 허락해야 한다. 스무 살의 나는 차에 관심이 많던 다른 아이들과 다르게, 삐까번쩍한 외제차에 눈을 돌리지 않았다. 만약에 그때의 내가 포르쉐나 람보르기니를 갖고 싶다는 꿈을 품었다면, 돈을 악착같이 벌기 위해 더 노력했을지도? 하지만 그때의 나는 허무주의를 숭상하며 공수래 공수거를 실천하는 나그네 같은 삶을 동경했었다. 나그네, 듣기에는 참 좋은데 나그네는 배고프고 누덕누덕한 옷을 입고 다닌다는 사실을 객관적으로 인지하지 못했었다(홍콩 야시장에서 떨이로 산 진짜 헝겊조각을 학교에 입고 다니기도 했다. 돌이켜보면 참 부끄러운 추억인데, 옆에서 말려줄 사람이 없었다)..

이득우님의 "이득우의 언리얼 C++ 게임 개발의 정석" 책을 따라가며 실습한 내용을 정리한 포스팅입니다. 실습에 필요한 자료들은 이 링크에서, 제가 작업한 예제 소스 완성본은 여기에서 찾아보실 수 있습니다. (저는 언리얼 4.27.2 버전 기준으로 작업하였습니다) 월드의 개념 월드는 다음과 같은 기초 요소를 제공한다. 공간(Space) : 가상세계를 구성하는 3차원의 영역 (Transform) 이라는 구조체 제공. 단위는 cm 시간(Time) : 가상 공간에서 흐르는 시간 물리(Physics) : 월드 공간에 배치된 물체에 작용하는 물리적인 환경(중력 등). 물체가 월드로부터 물리적인 영향을 받으려면 콜리전(Collision) 정보가 있어야 한다. 렌더링(Rendering) : 엔진이 제공하는 시각적인 ..
언젠가부터, 프로포즈를 할때 다이아 반지를 건내는 것은 뭇 여성들의 로망으로 자리잡았다. 다이아몬드는 언제부터 영원한 사랑의 상징이 되었나. 때는 1947년. 남아공에서 시작한 주얼리 회사인 드비어스는 "A diamond is forever"이라는 광고 카피를 전 세계적으로 히트시키는 것에 성공했다. 광고계에서 전설로 남은 이 카피는, 다이아몬드가 영원한 사랑의 상징으로 자리잡는 일에 혁혁한 공헌을 했다. 물론 그 이전에도 다이아몬드는 고급진 사치품이긴 했지만. 대체 다이아몬드가 비싼 이유가 뭘까. 아, 물론 경제학에서 배우는 수요와 공급을 이야기하고 싶은 건 아니다. 그건 너무나 당연한 이야기이니까. 다만 그 수요가 어디서 창출되는지 궁금했을 뿐이다. 왜 다이아몬드는 비싸져야만 했을까. 경제학적인 관점..