>머드에서 몬스터의 생성때문에 고민중입니다.
>
>예전에는 다음의 순서를 따랐습니다.
>* (시작시) DB에서 몬스터 설정, 배치 정보 로딩 ... - 설정  배열에 넣음.
>* 생성이 필요한 턴에 적절한 위치에 생성... - 설정을 복사해서 룸의 몬스터 리스트에 집어넣음.
>
>근데 OOP로 새로 구성하는 과정에서 고민이 생겼습니다.
>* (시작시) DB에서 몬스터 정보, 배치 정보 로딩 ...  - ????
>* 생성이 필요한 턴에 적절한 위치에 생성.. -  몬스터 개체 생성.
>
>우선 두가지 방법이 떠올랐습니다.
>로딩시에 모든 몬스터의 설정을 하나의 개체에 담아두었다가
>각 몬스터의 생성시에 이를 본떠서 새 개체를 만드는 것과
>몬스터별로 설정 개체를 따로 두어서 이를 복사해서 새 개체를 만드는 것 이죠.
>
>어느 것이 더 효율적(?)인지 혹은 다른 방식으로 생각해야되는 지 알려주시길 부탁드려요.
>
>그리고 이런 것도 생각해보았어요.
>몬스터를 전부 개체로 미리 생성한다음에 생성이 필요한 턴에..
>그 개체의 상태를 '살아있음'으로 바꾸어주었다가 전투로 죽을 경우
>개체를 파기하지 않고 '죽음' 으로만 바꾸어주는 거죠.
>괜찮은지 어떨런지 모르겠습니다.

타입과 인스턴스에 대해 생각을 다시 정리해보시기 바랍니다.

예를 들어서 게임 내에 고블린이 10 마리, 오크가 5 마리, 트롤이 3 마리 나온다면 게임안에는 타입 개체가 3 개 있고, 인스턴스 개체는 총 18 개 있는 것입니다.

각각의 오브젝트들은 고유한 속성값들을 갖고 있는데, 그 속성값은 크게 두가지로 나뉩니다. 하나는 변하는 것, 다른 하나는 변하지 않는 것이죠.

대표적으로 오브젝트의 HP 나 위치정보등은 모든 인스턴스들이 제각각 다른 값을 갖고 있는 변하는 정보들입니다. 그에 비해 게임에 따라 다르지만 공격력이나 최대HP 등은 타입별로 정해진 값들을 갖고 있게 됩니다.

변하는 값들은 모든 인스턴스들이 각각 멤버변수로 갖고 있어야 하지만, 변하지 않는 값들은 인스턴스가 갖고 있을 필요가 없고, 대신 타입 오브젝트들이 갖고 있으면 됩니다. 각 인스턴스들은 타입에 대한 참조를 갖고 있다가, 변하지 않는 값을 읽어야 할 경우 타입에 대한 참조를 이용하면 됩니다.

imcgames 의 김학규입니다