DirectX
던파 모작 완성
던파 완성 https://youtu.be/ECLa2Q2OpWU 약 2달 전에 계획했던 던파 모작을 완성했다. 도중에 블로그 쓰는 게 귀찮아서 한동안 쓰지 않았다. 앞으로 다시 블로그 관리 할 예정 꾸준히 쓸게요.... 스스로 구현하면서 맘에 들었던 점 1. 경직&역경직 시스템 타격감을 살려준 1등 공신 전투 시스템 구조 짜기 전에 이 부분 설계할 것을 염두에 둬서 다행 2. 슈퍼아머 쉐이더로 한 게 아니라 텍스처를 복사해서 스케일을 조절해서 한 것. 설계자체는 간단했지만 몬스터, 캐릭터마다 적절한 스케일 값이 달라서 그 값을 직접 조절해줘야 한다. 만약 다음번에 다시 슈퍼아머를 만든다면 쉐이더로 해봐야지 3. 몬스터랑 캐릭터의 부모 클래스 이거 상속받으면 자동으로 처리되는 것이 많아서 편했다. 처리되는 ..
7/21 아바타 시스템 구상
현재 엔진 구조에서 불편한 점 1. ChangeAnimtion을 할 때 문자열을 파라미터로 사용하는 것이 매우 귀찮음 지금 엔진 HairRenderer->ChangeAnimation("Idle_Avatar1"); CoatRenderer->ChangeAnimation("Idle_Avatar0"); 이렇게 문자열 구분을 해줘야 함. 하고 싶은 거 사용자는 문자열을 않고 Enum class로 아바타, 모션을 변경 관리하고 싶어 ex) DnFAvator.ChangeMotion(PlayerMotion::Attack_1) DnfAvator.ChangeAvator(AvatarType::Dog,Part::Hair) 물론 아바타 인터페이스 클래스 내부에서는 String으로 매게 변수 전달하는 것이 더 좋을 것 같다. 2..

7/19 개발 현황
완료된 것 엘븐가드 빌마르크 달빛 주점 & 세리아방 맵 - 특이사항 맵 파일은 레이어에 따라서 분리해서 저장한다. 저장 방식은 Far, Near, Tile, SubObject Far : 배경 맵 파일. 빌마르크, 주점에 존재하는 파일이고 카메라의 움직임에 영향을 덜 받게 되게 구현해야 한다. Near : 캐릭터보다 무조건 앞에 렌더링 되게 만들어야 한다. 엘븐가드에 존재. Tile : 캐릭터가 이동할 수 있는 타일과, 기타 고정된 오브젝트들. 모든 맵에는 Tile이 필수적이다. SubObject : 애니메이션이 들어가 있는 오브젝트 (라이너스의 용광로)나 Y소트가 적용되야하는 오브젝트들. 앞으로 해야 할 것 레벨 생성 후 각 레벨의 맵 띄우기 캐릭터의 Skin과 Hair 렌더링 (시험 삼아) DNFCam..

DirectX::Blend
1. RenderingPipeLine - Blend Blending 과정은 렌더링 파이프라인에서 Output Merger 단계에서 진행된다. 우리 엔진의 RenderingPipeLine 클래스에서 어떤 Blend 방식을 사용할지 세팅할 수 있다. GameEngineRenderingPipeLine 인스턴스를 생성할 때 별도의 Setting을 하지 않으면 AlphaBlend 모드로 자동 세팅하게 만들었다. GameEngineRenderingPipeLine::GameEngineRenderingPipeLine() : InputLayOut(nullptr) , VertexBuffer(nullptr) , VertexShader(nullptr) , IndexBuffer(nullptr) , Rasterizer(nullp..
DirectX::FrameAnimation
1. Animation 1.1 Animation의 원리 Animation의 인스턴스가 생성된다. Animation의 인스턴스들을 Renderer가 들고있다. Renderer가 들고있는 Animation 인스턴스들 중에 Current Animation을 멤버변수로 가진다. Current Animation의 Update문을 Renderer의 Update문에서 호출한다. Animation의 Update()에서 TimeIter이 초과될 때 마다 Frame이 ++된다. 또한 TimeIter이 초과될 때 Texture가 변경된다
DirectX:: Atlas Texture 처리
1. Hlsl #include "TransformHeader.fx" struct Input { float4 Pos : POSITION; float4 Tex : TEXCOORD; }; struct Output { float4 Pos : SV_POSITION; float4 PosLocal : POSITION; float4 Tex : TEXCOORD; }; cbuffer AtlasData : register(b1) { float2 TextureFramePos; float2 TextureFrameSize; }; Output TextureAtlas_VS(Input _Input) { Output NewOutPut = (Output)0; NewOutPut.Pos = mul(_Input.Pos, WorldViewPro..

DirectX::GameEngineTexture & GameEngineSampler
1. GameEngineTexture DirectX Texture 관련 리소스를 관리하고 Texture 관련 인터페이스를 제공하는 클래스. 1-0. 멤버 변수 class GameEngineTexture : public GameEngineRes { private: //텍스처 리소스 ID3D11Texture2D* Texture2D; //리소스 뷰들 //텍스처에 접근하기 위한 렌더타겟 뷰 ID3D11RenderTargetView* RenderTargetView; //셰이더 리소스에 접근하기 위한 리소스 뷰 ID3D11ShaderResourceView* ShaderResourceView; //DirectTex의 변수들 DirectX::TexMetadata Metadata; DirectX::ScratchImage..

C++ Functional
사용 목적 1. 콜백 방식을 사용하기 위해 사용한다. 이는 함수 포인터를 사용하는 목적과 동일하다. 2. 내가 로직을 많이 만들었지만 사용자가 무슨 일을 할지 모를 때 콜백 방식을 사용하는 것이 유리하다. 솔직히 써본적이 많이 없어서 쓰면서 사용할 때를 많이 접해봐야겠다.... 사용 예 플레이어라는 클래스에서 사용할 스킬을 지정하는 함수와 지정된 스킬을 사용하는 함수를 functional을 이용해서 구현해 보자. #include #include enum class SkillType { Kick, Punch, GlobalKick }; void GlobalKick(); class Player { public: Player(); ~Player(); void ReadySkill(SkillType _Skill);..