일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 장치 초기화
- gitscm
- light
- 네트워크
- 큐브 매핑
- 디퍼드 렌더링
- gitlab
- FrameResource
- Deferred Rendering
- 게임 클래스
- 직교 투영
- 노멀 맵핑
- direct3d
- 조명 처리
- 네트워크 게임 프로그래밍
- DirectX
- InputManager
- C++
- effective C++
- Direct3D12
- 절두체 컬링
- TCP/IP
- Dynamic Indexing
- DirectX12
- Render Target
- Frustum Culling
- 입방체 매핑
- 게임 디자인 패턴
- 게임 프로그래밍
- 동적 색인화
- Today
- Total
목록분류 전체보기 (44)
코승호딩의 메모장
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/vUUir/btswJCztiNN/azX8Mc8OK6UNdt0SK9mPE1/img.png)
01 응용 프로그램 프로토콜과 데이터 전송 TCP 서버-클라이언트의 기본 구조는 정해져 있으며 기본 구조와 핵심 함수를 기반으로 다른 기능을 추가하여 재사용할 수 있다. 즉 뼈대가 되는 코드를 그대로 복사하여 유용한 여러 기능을 만들 수 있다. 응용 프로그램의 고유 기능을 결정하는 부분은 데이터 처리 부분이다. 데이터를 어떤 형식으로 주고 받을지, 어떻게 처리할지는 네트워크 애플리케이션 개발자가 해야 할 가장 중요한 작업이다. 응용 프로그램 프로토콜 : 응용 프로그램 수준에서 주고받는 데이터 형식과 의미, 처리 방식을 정의한 프로토콜 다음과 같이 자신과 상대방의 화면에 동시에 그림을 그리는 기능을 제공하는 네트워크 그림판 프로그램이 있다고 하자. 해당 프로그램이 주고받아야 할 정보는 직선의 시작과 끝점,..
관찰자 패턴은 자바나 언리얼의 핵심 라이브러리에 들어가 있을 정도로 널리 사용되고 잘 알려진 패턴이다. 관찰자 패턴을 이해하기 위해 하나의 예시를 보자. 기획팀에서 게임에 업적 달성 시스템을 추가해달라고 한다. 특정 몬스터 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/cvly20/btsvNrTHOfY/5YskX5qDHJb26tZzaJW0p1/img.png)
01 TCP 서버-클라이언트 구조 왼쪽 그림은 서버와 클라이언트의 동작하는 모습이다. 클라이언트는 사용자가 입력한 주소를 해석하여 접속 대기 중인 서버에 접속한다. 다음 HTTP를 이용하여 요청 메시지를 보내고 서버는 받은 메시지를 분석 후 HTTP를 이용하여 응답 메시지를 보내준다. 클라이언트는 웹 서버에서 받은 데이터를 처리하여 화면에 표시한다. TCP는 연결 설정을 필요로 하는 연결형 프로토콜이기 때문에 클라이언트와 서버가 연결이 되어야 한다. 그렇다면 핵심 동작을 자세히 살펴보자 서버는 먼저 실행하여 클라이언트가 접속하길 기다린다(listen). 클라이언트는 서버에 접속(connect)하여 데이터를 보낸다(send). 서버는 클라이언트 접속을 수용하고(accept), 클라이언트가 보낸 데이터를 받..
![](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나 콘솔 프로그램에 적용해보려고 합니다. 위 책에서는 '어떻게 코딩할 것인가'보다는 '어떻게 구조를 잡을 것인가'를 다룬다. 그렇다면 무엇이 좋은 구조인지 나쁜 구조인지 어떻게 판별할 수 있을까? 좋은 소프트웨어 구조는 무언가를 고쳐야 할 때 코드를 거의 건드리지 않고 적당한 함수 몇 개만 호출하면 원하는 작업을 할 수 있어야 한다고 생각한다. 따라서 얼마나 쉽게 변경할 수 있는냐가 코드..