DirectX11 - Depth/Stencil
목표DirectX11의 Depth/Stencil Buffer를 이해하기 들어가며안녕하세요. 여러분. 오늘은 DirectX11의 Depth/Stencil에 대해 이야기 해보려고 합니다. 원래 렌더링 파이프라인의 과정에 따라 게시글을 작성하고 싶었는데요… 앞의 과정을 아직 정리하지 못해서 정리된 것부터 바로 올리려고 합니다. 저의 게시글 모토가 5분안에 다 읽을 수 있는 것이기 때문에 최대한 줄이는게 목표입니다. 그럼 바로 시작하겠습니다. Depth/Stencil이란 화면 상의 픽셀들이 올바른 순서로 그려지도록 도와주는 과정 먼저, Depth/Stencil은 Output-Merger 단계에서 처리하게 됩니다. 즉, 렌더링의 마지막 과정에서 적용하게 됩니다. 따라서: 다양한 효과 및 최적화 기법에 활용 렌더링 파이프 라인의 핵심 구성 요소 가 주된 내용입니다. Depth Buffer (깊이 버퍼) 이름에서도 알 수 있듯이 각 픽셀의 깊이...
[크래프톤 정글 - 게임테크랩] Week01를 마치며
회고라 부르며 일기라 읽는다.그동안 블로그에 글을 쓰는게 없었습니다. 마지막 게시글이 1월달이었는데요. 개인 작업물이 없기도 했고, 외주만 하고 있다 보니 그렇게 좋은 게시글을 쓸 자신이 없더라구요. 마침 크래프톤 정글에서 주관하는 언리얼 엔진 개발자 양성을 위한 프로그램이 열리는 것을 보고 지원하게 되었습니다. 그리고 합격하여 지금 막 1주차 과제가 끝났습니다. 이번 게시글을 짧은 2박 3일간의 게임잼 내용입니다. 새로운 도전먼저, 용인에 새롭게 크래프톤 정글 캠퍼스가 오픈하였습니다. 되게 크고 이쁘게 지어졌어요. 새 마음 새 뜻으로 교육을 시작하게 되었습니다. 따로 이런 합숙 프로그램이 처음이라 (군대 제외) 들뜬 기분으로 입소하였습니다. 훈련은 강하게입소 후 오후부터 일정이 시작되었는데 바로 팀을 짜고 과제를 시작하였습니다. 첫 과제는 면접 과제로 제출했던 직접 만든 물리엔진을 가지고 게임을 만드는 것이었습니다. 대충 이런거 재밌는 게임?팀원들간 짧은 회의를 통해 에어...
DirectX11 CreateDeviceAndSwapChain 실패 해결 방법
목표DirectX11의 CreateDeviceAndSwapChain 함수의 실패의 원인을 찾고 해결하기 들어가며안녕하세요. 여러분. 오늘은 DirectX11 튜토리얼 도중 만난 오류 해결 과정에 대해 이야기 해보려고 합니다. 튜토리얼을 따라가던 도중 Device 와 SwapChain이 초기화가 안되는 문제를 만나게 됩니다. 다음과 같은 오류를 발생하면서 말이죠. 위 내용을 해석하면 다음과 같습니다. “Windows 10용 D3D11 SDK Layers가 필요한 플래그가 지정되었지만, 시스템에 해당 SDK가 설치되어 있지 않습니다. 이러한 플래그를 제거하거나 Windows 10 SDK를 설치해야 합니다.” 그런데 저는 SDK가 설치되어 있었고, 따로 설정을 건드리지 않았어서 해당 오류를 좀 더 찾아보았습니다. 해결결과적으로 윈도우의 그래픽 도구를 활성화 시켜야 합니다. 다음은 윈도우10 & 윈도우11 에서 그래픽 도구를 활성화 하는 방법입니다. 설정 열기 시스템...
게임 UI 업데이트의 관한 이야기 - MVC 패턴
목표게임에서의 UI 갱신과 데이터 관리에 대한 방법을 알아보자. 들어가며안녕하세요. 여러분. 즐거운 개발하고 계시나요? 오늘은 UI에 대한 이야기를 해볼까 합니다. 여러분들은 UI를 어떻게 갱신하고 있으신가요? 데이터와 UI를 일대일 매칭으로? 하드코딩? 만약 위와 같은 방법을 사용하고 계신다면 한 번쯤 읽어볼 만할 내용이라고 생각됩니다. 유저의 반응일단 우리의 게임을 생각해 보겠습니다. 유저의 플레이 화면에는 지금 체력, 마나, 돈이 표시되고 있습니다. 처음 게임을 접속하고 보이는 데이터는 초깃값이겠죠? 그러면 이 데이터를 갱신하는 시점은 언제일까요? 만약 매 프레임마다 갱신하면 그만큼 성능에 문제가 생길 거예예요. 이때 사용할 것이 바로 유저의 반응, 즉 액션(Action)입니다. 액션액션은 유저의 캐릭터가 사냥을 나서고 대미지를 입으면 체력이 닳겠죠? 또 스킬을 사용하면 마나가 닳을 것입니다. 혹은 몬스터가 드롭한 돈을 습득하면 돈이 오를 거예요. 그러면 여기서 액션은...
두 벡터를 이용한 진행 방향 알아보기 with Unreal
구현 목표벡터의 내적과 외적을 이용해서 캐릭터의 진행 방향 알아보기 구현 과정1. 캐릭터의 방향 먼저, 캐릭터의 방향입니다. 캐릭터의 방향은 2D 공간에서는 상하좌우(4방향), 3D 공간에서는 상하좌우 4방향 + 대각 4방향으로 총 8방향입니다. 이러한 방향의 각도는 -180도 ~ 180도 사이의 값으로 모두 표현이 가능하답니다. 2. 두 벡터 정하기 위 이미지의 파란선은 캐릭터의 ForwardVector, 빨간선은 VelocityVector 입니다. 이미지에서는 진행 방향에 따른 애니메이션이 재생하고 있지만 저희는 앞으로 가는 애니메이션만 있다고 가정해보죠. 여기서 중요하게 봐야하는 것은 VelocityVector입니다. 캐릭터가 어느 쪽으로 힘(속도)를 내고 있는지 알려주고 있어요. 설정 값에 따라 달라지겠지만 지금은 기본 속도인 600으로 움직이네요. 그러면 이러한 의문이 들 수 있습니다. 진행방향은 VelocityVector만 구하면 되는거 아닌가요? 맞습니다....
나만의 언리얼 에디터 만들기 5 - 불 좀 꺼줄래
구현 주제이번 게시글은 단순한 귀찮음에서 시작되었습니다. 포인트 라이트 효과를 확인하기 위해 잠시 다이렉셔널 라이트를 꺼야 했습니다. 처음 몇 번은 그럭저럭 아무 생각 없이 했지만 이게 반복되면서 은근히 신경 쓰였습니다. 또한 아웃 라이너에 쌓이는 다른 오브젝트들 때문에 항상 찾으러 다니기도 귀찮았습니다. 그래서 이러한 반복을 줄이고 방의 불을 켜고 끄는 것처럼 다이렉셔널 라이트를 스위치 하나로 컨트롤하기로 했습니다. 신께서도 불 좀 꺼달라네요. 구현 과정1. 툴바 버튼먼저 이 프로젝트는 언리얼에서 기본 제공하고 있는 템플릿을 바탕으로 제작되었습니다. (진짜 편하고 좋아요:b) 제공하는 템플릿은 총 세 가지 부분으로 나눌 수 있습니다. 모듈 스타일 커맨드 하나씩 설명드릴게요. 먼저 스타일 부분부터 변경해 보겠습니다. 언리얼에서 기본으로 제공 중인 에디터 툴바 버튼 템플릿 2. 스타일스타일 부분에서는 SlateStyleSet을...
나만의 언리얼 에디터 만들기 4 - 노드 꾸미기
구현 주제언리얼 엔진에서 빼놓을 수 없는 부분이 블루프린트 작업입니다. 많든 적든 결국 사용하게 되는 기능이죠. 저는 블루프린트 노드들을 볼 때마다 너무 못생겼다고 생각했습니다. (저만 그런가요?) 그래서 이 못생긴 노드들을 꾸며보기로 했습니다. 언리얼 5으로 넘어오면서 같이 좀 꾸며주지… 구현 과정1. ISlateStyle 를 찾아라!먼저 블루프린트 노드가 어떻게 구성되어 있는지 살펴볼 필요가 있었습니다. 전체 파일 검색에서 BlueprintNode 를 검색하고 가장 연관되어 보이는 걸 찾았다. 제가 찾은 파일은 노드 Spawner 헤더 파일입니다. 이름부터 노드를 생성해 준다고 하는데 안 볼 수 없겠죠? 파일을 열어보시면 헤더 파일 선언이 끝나고 전방 선언된 클래스가 보입니다. 12class UEdGraph;class UEdGraphNode; 노드들은 그래프 형태이기 때문에 이름만 보더라도 해당 클래스를 사용했다는 걸 알 수 있습니다. 그러면 저 클래스에서 찾아보도록...
나만의 언리얼 에디터 만들기 3 - 멋있게 응답하기
구현 목표이전 편들에서 아쉬운 점이 하나 있었습니다. 바로 결과를 출력하는 방식이 아쉬웠는데요. 에디터 화면에 메시지를 띄우거나 로그 콘솔에 남기는 방식을 사용했습니다. 이는 멋있지 않아요. 그렇죠? 그래서 좀 더 알림 창 같은 알림창을 만들어보도록 하겠습니다. 구현 과정1) 정의들어가며오늘은 최종적으로 2가지 형태의 알림 창을 만들 예정입니다. 두 내용다 어렵지 않아서 쉽게 구현할 수 있을거에요. FMessageDialog FMessageDialog 공식문서 이 클래스는 대화상자를 실행하는 클래스입니다. 대화상자는 사진과 같이 기본 형의 대화상자가 있고 사용자의 입력을 받을 수 있는 입력형 대화상자가 있습니다. 파라미터를 통해 원하는 모습을 자유롭게 구현할 수 있기때문에 각자 원하는 형태로 출력해보도록 해요. Notification Notifications 공식문서FSlateNotificationManager 공식문서 언리얼에서 제공하는 여러 형태의...
나만의 언리얼 에디터 만들기 2 - ChatGPT에게 물어보기
구현 목표 나만의 언리얼 에디터 만들기 1 - Plugin 생성 에서 만든 기능들을 좀 더 확장하는 시간을 가져보겠습니다. 개인적으로 OPEN AI의 GPT를 사용하고 싶은 생각이 들었는데요. AI는 현시점에서 가장 뜨거운 주제인 만큼 그와 관련된 개발 역시 에픽 게임즈 내부에서도 `스마트NPC` 라는 이름으로 발표한 적도 있었습니다. 이러한 점을 볼 때 앞으로 관련 기능이 많이 추가되겠지만 그전에 먼저 `ChatGPT`를 이용해 간단한 대화 정도 주고 받는 AI 어시스턴트를 만들어 보자고요. 구현 과정1) 정의들어가며 일단 OPEN AI의 API를 사용할 것이기 때문에 OPEN AI 계정이 필요합니다. 만약 없다면 하나 만들어주세요. OPEN AI에서 제공하는 공식 문서를 살펴보면 2가지의 언어와 1가지의 툴을 사용한 방법을 제공하고 있습니다. curl python node.js 이 중 우리가 오늘 사용할 것은 curl 입니다. 간단하게 설명하자면 네트워크 통신을...
나만의 언리얼 에디터 만들기 1 - Plugin 생성
구현 목표언리얼 에디터를 사용하다보면 ‘이러한 기능이 있으면 좋을 것 같다’ 혹은 ‘반복적인 작업을 좀 더 쉽게 하고 싶다’는 생각이 들었습니다. 그래서 언리얼 에디터를 확장해보는 것을 목표로 삼았습니다. 엔진 버전은 5.3입니다. 구현 과정1) 정의들어가며 아시다시피 언리얼 엔진은 여러 개의 모듈로 구성된 집합체입니다. 이 중에서 우리는 에디터 모듈을 사용할 거에요. 모듈과 에디터 확장에 대한 부분을 조금 설명해야 하지만 아래 링크로 대체하겠습니다. 저보다 이득우 교수님이 설명을 훨씬 더 잘해놓으셔서…👍 📌 언리얼 에디터 확장에 대한 이득우 교수님의 IGC 강의 내용입니다.[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들 사전 준비 플러그인을 하나 만들거에요. Blank로 선택하시고, 이름을 정해주세요. (저는 RealXtension으로...