2006-03-22

MMP Database Mini-Cookbook 요약

Unique Identifiers for Painless Game World Transfer

  • 계정을 다른 서버(월드)로 이전할 경우에 대비, 캐릭터에 유니크한 (정수) 아이디를 할당할 때, 월드 개수만큼 아이디를 증가시킨다. 이를 통해서 월드-유니크한 아이디를 할당할 수 있으며, 아이템 같은 종속 데이터의 이전도 용이하다.
  • 월드의 최대 개수는 고정(255)이다. 따라서, 늘어나서는 곤란!

Managing Localization Data

  • NPC 스크립트, 다이얼로그 등의 텍스트 등을 DB 에 저장해두면 편하다.
  • 이때, localization 을 고려해서 저장할 것. 수정은 자체 툴을 만들어라..
  • DarkEden 에서도 이와 비슷하게 구현했다고 한다. (본인은 월드 추가전에 나와서.. 소문만 들었다.)

Character Inventory Management and Shared Banking

  • 인벤토리-은행-퀘스트 간 아이템 이동, '''특히 캐릭터간 아이템 이동'''을 용이하게 하기 위해서 PlayerID - CharacterID - InventoryType - ItemID 방식으로 테이블을 설계할 것.
  • DarkEden 에서도 바닥-마우스-인벤토리-창고 등의 인벤토리 타입을 사용했었다.

Mapping Class Inheritance to Database Tables

  • 다양한 아이템을 DB에 저장할 때, 클래스 속성(per-class)과 인스턴스 속성(per-instance)으로 테이블을 분리한다.
  • 모든 아이템마다 필요한 공통 데이터를 공통 Item 테이블에 정의하고, 하위 아이템을 위한 데이터는 하위 아이템 테이블에 정의한다.
  • ex: (ItemClass-ItemInstance)-(WeaponClass-WeaponInstance)
  • DarkEden에서도 이와 비슷하게, 각 아이템 종류별 Info 테이블과 Object 테이블을 두고, 관리를 했었다. 단점이라면, 테이블이 많아지면서 관리가 귀찮아지는 점과, Save-Load 프로시저가 길어진다는 점이 있겠다.

Shared Game Configuration Parameters

  • 월드별 서버 환경 설정을 데이터베이스에 유지하면, 굳이 config 파일을 고치지 않아도 되므로 편하다. (서버가 많아지면 서버별 환경 설정 하는 것도 꽤 힘든 일이 되니까...)

comments powered by Disqus