프로그래밍은 여럿 해봤지만 따로 게임 프로그래밍을 교육받은적이 없거나 게임을 개발해 본 경험이 없이 처음부터 게임 개발을 하게 되면 게임은 굴러가지만 유지 보수도 어렵고 비효율적으로 주먹구구식 코딩을 하게된다.


선배프로그래머의 코드를 보며 정말 괜찮은 아이디어라고 생각되는 코드들을 따라하며 적용해보고 조사해본 결과 이 아이디어들은 이미 오래전부터 프로그래머들이 게임프로그래밍 혹은 일반적인 프로그래밍에서 자주 사용하는 패턴으로 정형화 시켜놓은 것들이였다.


결론을 말하면 디자인 패턴을 숙지하는건 아주 중요하다.

눈앞에있는 목적을 위해 훌륭하지 않은 나의 머리로만 생각하여 짜낸 아이디어는 분명 한계가 있었다.

그런데 몇 십년동안 많은 프로그래머들이 더 나은 프로그래밍을 위해 다듬어지고 최적화가 된 패턴을 남겨주었는데 그건 안쓰면 손해인 것이다. 

그 중요성이 디자인 패턴을 숙지하지 않은 상태로 프로그래밍을 하고 고생을 하니 좀 더 뼈저리게 느끼는 것 같다.


간단히 자주 사용하는 패턴을 소개하고 앞으로 더 유용한 패턴을 숙지하게 된다면 기록하기로하자.



1. 싱글턴 (Singleton)

하나의 클래스에 하나의 객체만 존재하게 하는 패턴이다.

말 그대로 하나의 클래스에 하나의 객체만 존재할 때 사용하는 패턴으로 싱글턴의 존재의의는 언제 어디서나 쉬운 접근을 허용한다는 점이다. 

이 클래스의 변수 또는 함수를 불러와야할 때 매번 객체를 매개변수로 하여 가지고 다니거나 할 필요없이 "MyClass.Instance.var"와 같은 방법으로 접근이 가능하여 많은 고민을 덜 수 있었다.

단점으론 이 전역변수, 정적변수와 같은 특성으로 인해 객체지향을 반하는 결과를 불러올 수 있는것이다.

유지보수가 힘들어 질 수 있다.

객체지향적인 프로그래밍을 숙지하고 싱글턴으로 설계 할 때 이점이 확실할 때 사용하는것이 좋을 것 같다.


2. 유한 상태 기계 (Finite State Machine)

이름에서 패턴의 특성이 잘 설명되어있다고 생각한다. 

기계(클래스)에 유한한 상태를 설정하여 특정 상태에선 특정한 행동을 하도록 설계하는 방법이다. 

이 기계는 다른 상태로 전이할 수 있다.

더욱 나은 AI를 위해서 행동트리(Behavior Tree)를 사용 하는것이 나을 수도 있으니 유한 상태 기계에 한계가 있다면 행동트리를 알아보자.


3. 관찰자 (Observer)

대상과 관찰자가있는 환경에서 대상은 관찰자들에게 메시지를 보내게된다. 하지만 대상은 이 메시지로 관찰자들이 무얼 하는지 관심도 없고 알 필요도 없다. 관찰자는 대상에게서 받은 메시지로 독립적으로 행동하게 된다.

+ Recent posts