분류 전체보기 143

[Win32 API TBI 모작] 4. Manager(3) - 맵 생성

이번 포스트에서는 게임 컨텐츠 관련 매니저에 대해 알아보자게임 컨텐츠 관련 매니저는 다음과 같다.아이템, 엔티티, 플레이어, 맵, 씬전체 소스코드 : https://github.com/vfly1189/TBI맵 매니저 ( MapMgr )이 매니저는 로그라이크 게임의 핵심 기능인 던전 맵 자동 생성 시스템을 C++과 Direct2D를 활용하여 구현한 것이다. Isaac-like 게임에서 볼 수 있는 방식으로, 매번 플레이할 때마다 다른 레이아웃의 던전을 생성한다.시스템 아키텍쳐핵심 클래스 구조class MapMgr (싱글톤 패턴)├── 맵 데이터 관리│ ├── vector> gridMap // 전체 맵 그리드│ ├── vector> m_vecCellMaps // 각 셀의 상세 맵│ ..

[Win32 API TBI 모작] 3. Manager(2)

이번 포스트에서는 그래픽 관련 매니저를 알아보자.Direct2D 매니저 ( Direct2DMgr )#pragma oncestruct ScrollArea { D2D1_RECT_F viewRect; // 화면에 표시되는 영역 D2D1_RECT_F contentRect; // 전체 콘텐츠 영역 D2D1_POINT_2F scrollPos; // 현재 스크롤 위치};class Direct2DMgr{ SINGLE(Direct2DMgr)private: ID2D1Factory* pD2DFactory; IWICImagingFactory* pWICFactory; IDWriteFactory* g_pDWriteFactory; ID2D1HwndRenderTarget* pRenderTarget; ID2D1BitmapR..

[Win32 API TBI 모작] 2. Manager(1)

매니저 이번에 제작한 TBI에서는 여러 매니저 클래스들이 존재한다.크게 분류를 시스템 매니저, 그래픽 관련 매니저, 게임 콘텐츠 관련 매니저로 나누면 다음과 같다. 시스템 매니저파일 경로, 시간, 카메라, 키 입력, 사운드 관리자, 충돌, 이벤트, UI, 파일그래픽 관련 매니저Direct2D, 카메라게임 콘텐츠 관련 매니저아이템, 엔티티, 플레이어, 맵, 씬모든 매니저들은 싱글톤(SingleTon) 패턴으로 구현 되어 있다. 참고https://tobrother.tistory.com/118 [Win32 API] 3. 디자인 패턴 ( 싱글톤 , Singleton )1. 싱글톤 이란 ?싱글톤(Singleton) 패턴은 클래스의 인스턴스가 단 하나만 생성되도록 보장하고, 해당 인스턴스를 전역적으로 접근할 수 있..

[Win32 API TBI 모작] 1. CCore & 개요

시작이번에는 저번 Brotato 모작에 이어서 TBI ( The Binding of Isaac ) 게임을 만들어 보았다.저번 프로젝트의 기본적인 틀은 유지하고, TBI 게임에 맞게 싱글톤으로 구현된 매니저들을 수정하거나 추가해서 작업하였다.개발 기간은 4월2일 ~ 5월 20일까지 약 2달이지만, 중간에 놀았던 기간이 있어서 실질적으로 약 1달동안 혼자서 개발한 내용이다.최대한 원작과 같은 플레이 방식을 구현하려고 노력하였다.세세한 부분들은 최대한 플레이에 지장이 없는 수준으로만 설정하여 개발하였다(충돌체의 크기, 캐릭터의 데미지 속도, 애니메이션의 효과 등등..) CCore 클래스 구조CCore 클래스는 다음과 같은 주요 기능을 가지고 있다:초기화 (init): 윈도우 핸들과 해상도 정보를 받아 게임 엔..

[Win32 API Brotato 모작] 11. Scene_Start

이번에는 전투가 직접적으로 일어나는 장면 Scene_Start에 대해 알아보겠다.Scene_Start#pragma once#include "CScene.h"class CPanelUI;class CScene_Start : public CScene{private: ID2D1Bitmap* g_pBitmap; // 전역 또는 멤버 변수로 선언 Vec2 m_vForcePos; float m_fForceRadius; float m_fCurRadius; float m_fForce; bool m_bUseForce; CPanelUI* m_pPausePanel; vector m_vecPauseObj; CPanelUI* m_pFailPanel; ..

[Win32 API Brotato 모작] 10. Scene_Run_End

이번에는 게임 플레이가 종료 된 후에 나오는 결과 화면에 대해 알아보자. 사실 이 Scene 진짜 별거 없다. 이때까지 나왔던 객체들의 위치만 조정해서 보여주는 방식이 전부다.  이 씬에서는 player의 능력치와 보유한 무기와 아이템을 보여주는 기능과 다음과 같은 기능을 제공한다.재시작을 누를 시 웨이브 다시 시작새로운 달리기를 누를 시 캐릭터 선택화면 부터 다시 시작메인 메뉴로 돌아가기결과화면은 플레이어의 체력이 0에 도달하면 달리기 패배 문구와 함께 해당 화면이 나오게 된다.CScene_Run_End#pragma once#include "CScene.h"#include "Direct2DMgr.h"class CPanelUI;class CScene_Run_End : public CScene{pri..

[Win32 API Brotato 모작] 8. Scene_Select_Weapon

이번에는 무기 선택화면에 대해 설명하겠다. 무기 선택화면도 캐릭터 선택과 유사한 방식으로 구현하였다.CScene_Select_Weapon#pragma once#include "CScene.h"#include "CharacterInfoMgr.h"class CBtnUI;class Direct2DMgr;class CScene_Select_Weapon : public CScene{private: tCharacterInfo* m_stSelectedInfo;public: virtual void update(); virtual void render(ID2D1HwndRenderTarget* _pRender);public: void SetSelectedCharacterInfo(tCharacte..

[Win32 API Brotato 모작] 7. Scene_Select_Character

이번에는 캐릭터를 선택하는 장면에 대해 알아보자.CScene_Select_Character#pragma once#include "CScene.h"#include "CharacterInfoMgr.h"class CBtnUI;class CScene_Select_Character : public CScene{private: vector m_vCharaters;public: virtual void update(); virtual void render(ID2D1HwndRenderTarget* _pRender);private: void CharacterMapping(CBtnUI* _btn, int i, int j, wstring& tag);public: virtual void Ente..