게임 개발에 사용되는 디자인패턴(1/2)
디자인패턴이란
-
디자인패턴이란 프로그램 개발에서 빈번히 발생하는 과제를 해결하기 위한 방법으로, 과거 개발과정에서 사용되었던 설계방법들을 축적한것 즉, 프로그래밍 노하우이다.
-
많은 경우에 프로그래밍에 디자인패턴을 적용하면 코드의 유지보수, 가독성, 확장성등 다방면에서 효율이 올라간다.
-
게임 프로그래밍에서도 마찬가지.. 싱글톤, 옵저버, 전략패턴등을 적절하게 활용한다면 더 나은 게임을 만들 수 있을 것이다.
싱글톤[Singleton]패턴
-
싱글톤패턴은 프로그램이 시작될 때 클래스가 최초 한번만 메모리를 할당하고, 그 메모리의 인스턴스를 만들어 사용하는 패턴이다.
-
즉, 게임에서는 한명의 디렉터를 둬서 그 디렉터가 게임에서 일어나는 모든것을 수행하는것이다.
-
앞서 뱀서라이크 게임 개발의 GameManager나 AudioManager가 싱글톤패턴을 활용한 예다.
-
GameManager 인스턴스를 메모리에 정적(전역변수처럼)으로 할당하여 다른곳에서 언제든 호출하여 사용할 수 있도록 했다.
-
싱글톤패턴의 장점은 크게 메모리낭비를 줄이고, 쉽게접근할 수 있다는점이다.
전략[Strategy]패턴
-
전략패턴은 그 세부 구현은 다를지라도 동일한 기능을 수행하는 알고리즘들에게 공통적인 인터페이스를 제공하여, 알아서 선택해서 처리하도록 만들어주는 패턴이다.
-
예를들면 총, 칼, 활 등 여러무기가 있는 게임에서 공격을한다고 생각해보자.
- 공격의 세부 구현은 다를 수 있겠지만, Shoot이라는 공통된 기능을 한다면 무기에따라 선택만 해주면 될뿐이다.
옵저버[Observer]패턴
-
게임 개발에서 버그없이 새로운 특징을 추가하기 위해서 각 클래스는 소통할 수 있어야하지만 서로를 잘 몰라야 하는것이 중요하다.
-
옵저버패턴은 어떤 객체의 상태가 변할 때 그 객체에 의존성을 가진 다른 객체들이 변화된 상태에 따라 자동으로 업데이트 되도록 만들어주는 패턴이다.
-
게임에서는 업적시스템을 예로볼 수 있다. 업적은 게임 플레이의 여러곳에서 발생할 수 있는데, 업적 시스템이 대기하고 있다가 어떤곳에서 특정 과제를 완료했을 때 알람을 띄우도록 하는것에서 옵저버 패턴을 사용할 수 있다.
-
즉, 누군가 특정 이벤트를 발생시켰으니 알아서 처리해라 라고 볼 수 있다.
댓글남기기