======================================== * 시간 : 10:40 ~ 12:25 * 참석자 : 전체 * 주제 : 현재 우선 순위가 높은 개발 이슈에 대한 정리 ======================================== * 기존 XML 스크립트의 문제점들 - 스테이지가 Stage.xml로 묶여 있었는데, 이게 마을과 던전의 구분이 없다. : 마을에서는 필요하지도 않은 정보에 대한 필드도 임의의 값으로 입력을 해줘야 하고, 던전 설정에 대한 내용들을 형식에 맞추기 위해 모두 포함해야 한다. -> 향후에는 스테이지의 데이터 스크립트를 각 스테이지의 종류 별로 구분해서 작성하기로 한다. 스테이지의 코드 번호(GTC General Type Code)는 공유하지만, 세부적인 필드 내용은 각 스테이지 분류에 맞게 맞춰져 있다. - 데이터 스크립트의 편집을 MS Excel -> txt로 변환하는 식으로 변경 중인데, 이를 txt 대신 XML로 변환하는 것은 어떨까? : 현재 구현하고 있는 txt 방식에서는 특정 필드를 파싱하는 부분을 건너뛰거나 하는 방식으로 작동하지 않기 때문이다. (단, 이 부분은 수정은 가능하다.) 데이터 스크립트 중에는 간혹 데이터 스크립트를 편집하는 사람의 편의를 위한 필드 항목이 몇 개 있는데, 이런 필드들은 실제 게임 애플리케이션 내부에서는 읽거나 저장할 필요가 없는 내용들이다. 그런 필드들이 큰 용량을 차지하거나 하지는 않지만, 경우에 따라 잘못 사용될 수도 있기 때문에(실제로 사용할 값을 넣는다거나) 가급적 제한할 수 있는 장치가 있는 편이 좋다. - > 변환기 툴에서 스크립트를 XML로 변환하는 기능을 제공할 예정 - XML와 txt간 속도 문제 : XML 스크립트가 30개 이상 넘어가기 시작하면 확실히 눈에 띄게 불러오는 속도가 느리다고 함. txt는 상대적으로 읽는 속도가 아주 빠름. 하지만, XML 문서는 .NET 라이브러리의 강력한 API 지원을 받을 수 있어서 구현 및 오류 검출이 상대적으로 편하다. -> 프로파일링이 필요할 것 같다. XML이 txt 파싱보다 느린 건 맞는데, 불편함을 느낄 정도로 느려질 것인가가 문제. * 보상 시스템을 설계할 때 고려해야 할 사항 - 현재는 보상할 재화의 종류와 수량에 따라 보물 레벨(Treasure Level)이 매겨져 있고, 이 보물 레벨을 기반으로 해서 보상을 주는 방식으로 설계했다. - 이 방식은 오픈 월드 방식의 게임에서는 잘 어울리지만, 세부적으로 구분된 스테이지를 단계적으로 참여하는 방식에서는 부족한 면이 있다. : 위 방식만으로는 보상 종류를 통해 각 스테이지 별로 참여해야 할 목표를 주기가 어렵다. 스테이지마다 등장하는 재화의 종류를 디자이너의 의도대로 제한할 수 있다면, 모든 스테이지에 대해 게임에 참여할 목표 의식을 부여할 수 있다. -> 기존에 보상 시스템에 대해 설계를 보완하려고 했던 내용을 더 구체화할 것이다. 보상할 때 보물 레벨 외에도 보물 레벨을 적용하는 타입을 별도로 두는 방식이다. 예를 들면, TL(Treasure Level) 10 ~ 20의 아이템 보상이 가능한 스테이지를 완료했을 때, 어떤 스테이지는 갑옷 종류만 등장할 수 있고, 다른 스테이지는 투구 종류만 등장할 수 있는 방식으로 조절하게 하는 식이다. 이러한 '적용 타입'은 수십 가지 이상 될 수 있고, 각 적용 타입마다 보상에 제한을 두는 방식이 다를 수 있다. * 스테이지 진입 부분에 대한 이슈들 - 1회성 스테이지 부여효과 : 각 부여효과의 종류마다 재화의 일종으로, 무료로 사용할 수 있는 횟수를 제공해줄 수 있어야 한다. 부여효과 시스템은 아직 구체적인 구현이 없기 때문에, 설계가 필요하다. - 보상 아이템을 보여주는 방식 : 스테이지에서 가능한 보상 아이템 중에서, 각 보상 재화의 종류 별로 골라서 보여준다. 아이템인 경우에는 각 장비 아이템 부위마다, 등장할 수 있는 가장 높은 등급의 아이템을 보여준다. * 스테이지를 완료했을 때의 보상과 관련한 이슈들 - 디자이너가 스테이지마다 보상의 종류와 등장 범위를 조정할 수 있는 기능이 필요하다. : 어떤 스테이지는 무기 종류가 꼭 등장하거나, 특정 스테이지에 가야만 - 스테이지를 첫 번째로 클리어했을 때 고정적으로 주는 보상을 다룰 수 있게 해야 한다. * 그 외 공유하는 명세 사항들 - 아이템 아이콘은 텍스처 아틀라스를 사용하지 않는다. : 아이템 아이콘은 갈수록 종류가 늘어날 수 있으며, 그 때마다 이를 모두 텍스처 아틀라스로 만들어 적용하는 건 메모리 용량의 부하 측면에서 바람직하지 못하다고 판단하고 있다. - GUI들은 가장 자주 쓰는 틀(Frame)에 대한 GUI들만 항상 메모리에 올리고 사용하며, 사용 여부가 유동적인 GUI들(각종 아이템이나 스킬, 재화 아이콘들)은 애플리케이션 수행 도중에, 사용이 확정된 시점에 저장장치에서 불러오는 방식을 사용한다. : 예를 들면, 인벤토리를 여는 경우, 인벤토리를 구성하는 틀이 되는 GUI는 빠르게 열리지만, 인벤토리 내부 아이템들은 천천히 하나씩 로딩되면서 보여지는 셈이다.