일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Frustum Culling
- Direct3D12
- 노멀 맵핑
- 직교 투영
- FrameResource
- direct3d
- C++
- 절두체 컬링
- 입방체 매핑
- 네트워크
- gitscm
- 장치 초기화
- DirectX12
- TCP/IP
- DirectX
- 동적 색인화
- 조명 처리
- 큐브 매핑
- Render Target
- 게임 디자인 패턴
- light
- 게임 프로그래밍
- Deferred Rendering
- gitlab
- Dynamic Indexing
- 네트워크 게임 프로그래밍
- InputManager
- 디퍼드 렌더링
- effective C++
- 게임 클래스
- Today
- Total
목록디자인 패턴 (4)
코승호딩의 메모장
관찰자 패턴은 자바나 언리얼의 핵심 라이브러리에 들어가 있을 정도로 널리 사용되고 잘 알려진 패턴이다. 관찰자 패턴을 이해하기 위해 하나의 예시를 보자. 기획팀에서 게임에 업적 달성 시스템을 추가해달라고 한다. 특정 몬스터 100마리 죽이기, 다리에서 떨어지기와 같은 기준을 달성하면 배지를 얻을 수 있다고 하자. 업적 종류가 다양하다 보니 깔끔하게 코드를 짜기가 어려울 것이다. 또한 물리 엔진 가운데에 업적 관련 함수를 넣는 것도 맘에 들지 않는다. 이렇게 여러 게임 플레이 요소에서 업적을 발생시키게 된다면 커플링 없이 어떻게 코드를 짤 수 있을까? 이때 쓰는 것이 바로 관찰자 패턴이다. 관찰자 패턴은 어떤 코드에서 무언가 일이 발생했을 때, 누가 받든 상관 없이 알림을 보낸다. 예시로 물체가 바닥으로 ..
경량 패턴은 공유를 통해 많은 소립 객체들을 효과적으로 지원한다. 나무들로 화면을 가득 채운 숲에서는 GPU에 전달해야 하는 몇백만 개의 폴리곤이 필요할 것이다. 또한 나무에 필요한 데이터는 크기도 크고 숫자도 많다. 이러한 나무들은 대부분 비슷하기 때문에 모든 나무가 다 같이 사용하는 데이터를 뽑아 새로운 클래스에 모을 수 있을 것이다. class TreeModel { private: Mesh mesh; Texture bark; texture leaves; } class Tree { private: TreeModel* model; Vec3 Position; float height; float thickness; Color barkTint; Color leafTint; } 게임 내 같은 메시와 텍스쳐를 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/czedV4/btsvMIgUC3Q/7wt1ahfBiPn3br94gqt6T1/img.png)
명령 패턴이란 메서드 호출을 실체화한 것이다. 즉, 함수 호출을 객체로 감쌌다는 의미이다. 명령 패턴을 사용할 수 있는 대표적인 예시는 게임 속에서 입력키를 변경하는 것이다. void InputHandler::handleInput() { if (isPressed(BUTTON_X)) jump(); else if (isPressed(BUTTON_Y)) fireGun(); else if (isPressed(BUTTON_A)) swapWeapon(); else if (isPressed(BUTTON_B)) loadGun(); } 입력을 받아서 게임 속 행동으로 전환하는 것은 가장 간단하게 다음과 같이 구현할 수 있을 것이다. 그러나 많은 게임들은 키를 사용자가 바꿀 수 있게 해준다. 따라서 jump나 fireGu..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/xnpJu/btsvDiXsZRK/opcYF0JgxVrR5IdF1gjOGK/img.jpg)
게임 프로그래밍 패턴 : 네이버 도서 네이버 도서 상세정보를 제공합니다. search.shopping.naver.com 이번 포스팅(게임 프로그래밍 패턴)에서는 위 책을 기반으로 게임에 필요한 프로그래밍 디자인 패턴에 대해 기술하려고 합니다. 교수님 및 지인들이 추천한 좋은 책이기에 공부하고 실제로 간단한 Direct3D나 콘솔 프로그램에 적용해보려고 합니다. 위 책에서는 '어떻게 코딩할 것인가'보다는 '어떻게 구조를 잡을 것인가'를 다룬다. 그렇다면 무엇이 좋은 구조인지 나쁜 구조인지 어떻게 판별할 수 있을까? 좋은 소프트웨어 구조는 무언가를 고쳐야 할 때 코드를 거의 건드리지 않고 적당한 함수 몇 개만 호출하면 원하는 작업을 할 수 있어야 한다고 생각한다. 따라서 얼마나 쉽게 변경할 수 있는냐가 코드..