일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- TCP/IP
- 큐브 매핑
- 동적 색인화
- 디퍼드 렌더링
- 노멀 맵핑
- effective C++
- 게임 프로그래밍
- Dynamic Indexing
- 게임 클래스
- 네트워크
- light
- InputManager
- gitscm
- 절두체 컬링
- 게임 디자인 패턴
- Deferred Rendering
- direct3d
- C++
- gitlab
- Frustum Culling
- 직교 투영
- DirectX12
- 입방체 매핑
- 조명 처리
- Direct3D12
- DirectX
- 네트워크 게임 프로그래밍
- Render Target
- 장치 초기화
- FrameResource
- Today
- Total
코승호딩의 메모장
[게임 프로그래밍 패턴] 본문
게임 프로그래밍 패턴 : 네이버 도서
네이버 도서 상세정보를 제공합니다.
search.shopping.naver.com
이번 포스팅(게임 프로그래밍 패턴)에서는 위 책을 기반으로 게임에 필요한 프로그래밍 디자인 패턴에 대해 기술하려고 합니다. 교수님 및 지인들이 추천한 좋은 책이기에 공부하고 실제로 간단한 Direct3D나 콘솔 프로그램에 적용해보려고 합니다.
위 책에서는 '어떻게 코딩할 것인가'보다는 '어떻게 구조를 잡을 것인가'를 다룬다. 그렇다면 무엇이 좋은 구조인지 나쁜 구조인지 어떻게 판별할 수 있을까? 좋은 소프트웨어 구조는 무언가를 고쳐야 할 때 코드를 거의 건드리지 않고 적당한 함수 몇 개만 호출하면 원하는 작업을 할 수 있어야 한다고 생각한다. 따라서 얼마나 쉽게 변경할 수 있는냐가 코드 설계를 평가하는 척도이다.
코드를 고치기 위해서는 기존 코드를 이해해야 한다. 즉, 고치려는 코드와 관련된 부분이 머릿속에 있어야 하는 것이다. 이 부분이 프로그래밍에서 가장 오래 걸리는 부분이지만 머릿속에 코드에 대한 큰 그림을 그리고 나면 금방 해결책을 찾을 수 있다.
프로그램을 구성하는 요소에서 관계가 있는 부분 중 한 곳을 고칠 때 다른 곳도 고쳐야 하는 경우 커플링이 있다고 한다. 이와 반대로 디커플링은 한 쪽의 코드 없이도 다른 코드를 고치거나 이해할 수 있는 경우이다. 즉, 디커플링이 잘 되어 있는 설계에서는 한쪽 코드만 머리에 집어넣으면 된다. 디커플링은 분명 소프트웨어 구조의 핵심 목표일 것이다.
단, 디커플링과 코드 확장성을 위해 인터페이스, 추상화, 추상 클래스, 수많은 가상 메서드, 온갖 확장 포인터가 붙게 된다면 구조가 막 나가게 될 것이다. 이처럼 좋은 구조는 유지하기 위해서도 엄청난 노력을 해야 하고 이렇게 유연하게 프로그램을 만들기 위해서는 성능상 비용이 발생한다. 반대로 최적화를 하면 유연성은 떨어지게 된다. 즉, 모든 코드를 무조건적으로 유연성있게, 디커플링으로 짜야 하는 것은 아니다.
'디자인 패턴 > 게임 프로그래밍 패턴' 카테고리의 다른 글
[관찰자 패턴] (0) | 2023.09.27 |
---|---|
[경량 패턴] (0) | 2023.09.26 |
[명령 패턴] (0) | 2023.09.25 |