내용 : 좋은 소프트웨어 구조란 얼마나 쉽게 변경할 수 있느냐이다

최적화, 디커플링, 추상화 같은 것들은 좋지만 오히려 계발 속도를 늦칠 수 있다. 필요한 부분에서만 하자. 좋은 코드의 게임을 재미있게 만드는 것보다 재미있는 게임의 코드를 좋게 만드는 것이 더 쉽다.

명령 :
함수 호출을 실체화 한 것 즉, 변수를 저장하거나 함수에 전달되도록 객체로 바꾸는것. 입력을 예시로 들면, 커맨드 공통 상위 클래스를 만든고 하위 클래스로 커맨드를 입력받게 하고 입력 핸들러 클래스에 버튼마다 커맨드 클래스 포인터를 저장. 이렇게 하면 직접 함수를 호출하지 않고 한겹 우회하는 계층이 생김. 이것의 장점은 만약 커맨드 클래스에서 플레이어블 캐릭터 객체를 인수로 받으면 나중에 플레이어든 게임 npc든 직접 조종이 가능하다.

다른 예는 실행취소이다. 추상화 계층에 플레이어 이동이 캡슐화되어있다. 따라서 이동하려는 유닛과 위치 값을 생성자에서 받아 명령과 명시적으로 바인딩할수있다. 그리고 순수 가상 함수 언두를 커맨드 클래스에서 정의하고 하위 클래스에서 그 전에 명령을 저장하면 이동취소 기능을 만들수있다.

장점, 클래스를 캡슐화 함으로서 다양한 객체에 사용할수 있는 재사용성이 높은 클래스를 만들수있다

경량 :
게임에서 숲을 만들고 싶을때 나무 인스턴스를 모두 하나씩 생성하는 것은 비효율적이다. 따라서 나무를 구성하는 부분중 메시와 텍스처 같은 고유 상태들은 따로 클래스로 만든다, 그 외는 외부 상태이다.

관찰자: