Camera OpenGL 자체는 카메라 개념에 익숙하지 않다. 장면의 모든 객체를 반대 방향으로 이동 => 움직이는 것처럼 시뮬레이션 이번 장에서는 키보드 및 마우스 입력, 그리고 사용자 정의 카메라 클래스를 다룬다. Camera/View space 뷰행렬은 카메...
[게임 프로그래밍 패턴] Optimization Patterns: Spatial Partition
Spatial Partition 객체를 효과적으로 찾기 위해 객체 위치에 따라 구성되는 자료구조에 저장한다. Motivation 현실감을 제공하는 요소 중 하나: 위치(location) 공간(space) 개념: 객체는 공간 어딘가의 위치에 존재하게 된다. 위치(location) 개념: 여러 형태로...
[게임 프로그래밍 패턴] Optimization Patterns: Object Pool
Object Pool 객체를 매번 할당, 해제하지 않고 고정 크기 풀에 들어 있는 객체를 재사용함으로써 메모리 사용 성능을 개선한다. Motivation 파티클 시스템 파티클을 굉장히 빠르게 만들 수 있어야함. 생성, 제거하는 과정에서 메모리 단편화(memory fragmentation)가 생겨서...
[게임 프로그래밍 패턴] Optimization Patterns: Dirty Flag
Dirty Flag 불필요한 작업을 피하기 위해 실제로 필요할 때까지 그 일을 미룬다 Motivation 많은 게임에서 월드에 들어 있는 모든 객체를 장면 그래프(scene graph)라는 큰 자료구조에 저장한다. 렌더링 코드에서는 장면 그래프를 이용하여, 화면에 그려야 할 것을 결정 ...
[게임 프로그래밍 패턴] Optimization Patterns: Data Locality
최적화 패턴 하드웨어 성능을 끌어내기 위해 게임 속도를 높이는 데 사용되는 중간 수준(mid-level)의 패턴들 데이터 지역성 패턴: 컴퓨터 메모리 계층과 이를 활용하는 법 더티 플래그 패턴: 불필요한 계산 오브젝트 풀 패턴: 불필요한 객체 할당 피하는법 공간 분할 패턴: 게임 월드 공간 내에서 객체들을 빠...
[게임 프로그래밍 패턴] Decoupling Patterns: Service Locator
Service Locator 서비스를 구현하는 구체적인 클래스에 사용자를 커플링하지 않고, 어디에서나 서비스에 접근할 수 있게한다. 동기 거의 모든 코드에서 사용되는 것들. 메모리 할당, 로그, 난수 생성 일종의 서비스 싱글턴 등의 사용 => 강한 커플링 ...
[게임 프로그래밍 패턴] Decoupling Patterns: Event Queue
Event Queue 메시자나 이벤트를 보내는 시점과 처리하는 시점을 디커플링한다. 동기 메시지 큐, 이벤트 루프, 메시지 펌프 등등.. GUI 이벤트 루프 UI 프로그래밍 버튼 클릭, 메뉴 선택, 키보드 입력 등등.. 상호작용 => 운영체제는 이...
[게임 프로그래밍 패턴] Decoupling Patterns: Component
Decoupling Patterns 어려운것: 요구사항 변경을 대비해 코드 고치기 쉽게 만드는 일 디커플링이 많은 도움을 줌. 컴포넌트 패턴: 한 개체에 들어 있는 코드들을 기능별로 서로 디커플링 이벤트 큐 패턴: 서로 통신을 주고받는 두 객체를 코드뿐만 아니라 시간 측면에서도 디커플링한다. ...
[게임 프로그래밍 패턴] Behavioral Patterns: Type Object
Type Object 단일 클래스를 각 인스턴스가 다른 타입 객체형으로 표현할 수 있게 만든다. 이를 통해 새로운 ‘classes’을 유연하게 생성할 수 있음. 동기 다양한 몬스터 구현 체력 + 공격 + 그래픽 + 사운드 등 속성 attack string 속성 ...
[게임 프로그래밍 패턴] Behavioral Patterns: Subclass Sandbox
Subclass Sandbox 상위 클래스가 제공하는 기능들을 통해서 하위 클래스에서 행동을 정의 동기 다양한 능력을 선택하는 게임 SuperPower라는 상위클래스 => 상속받는 클래스 하위클래스가 많아질 가능성이 높음. 바이트 코드 패턴 or 타입 객체 패턴을 사용하면 더 나음(데이터 기반) 하위 클래스인 초능력...