Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Today
Total
관리 메뉴

Analyze by Kinesis

Mabinogi Client - db/dungeon_ruin.xml File Analyze. 본문

Game Client Analyzes/Mabinogi Online

Mabinogi Client - db/dungeon_ruin.xml File Analyze.

Kinesis 2010. 6. 9. 12:19
Mabinogi Client - db/dungeon_ruin.xml File Analyze.
마비노기 클라이언트 - db/dungeon_ruin.xml 파일 분석.



이 글은 온라인 게임 마비노기 클라이언트를 분석한 자료 입니다.
これは Online Game - Mabinogi を分析したことです。
This is anlyzed the mabinogi client.

2004년 6월경 정식서비스를 시작한 Nexon 에서 서비스하고 Devcat 팀에서 개발한 온라인 게임 마비노기 는 현재까지 서비스가 이루어지고 있는 온라인 게임 중 하나이다.

이 카테고리 에서는 이 마비노기에 대한 분석 내용을 정리하도록 한다.

※ 일부 틀리는 곳이 존재할 수도 있습니다.
※ 자료 분석은 한국 클라이언트를 바탕으로 합니다.
※ 에디터 기능상 소문자 Elements 들이 일부 대문자로 변형될 수 있으나, 이 부분은 다소 양해부탁드립니다.

※ 주의! 본 자료는 순수히 학구적인 클라이언트 분석의 목적으로 작성된 글로서 개인의 이익을 위해 이용함으로 인해 발생되는 사고에 관하여는 책임지지 않습니다.



게시물 작성일 : 2010. 06. 09.
게시물 작성자 : by Kinesis (김해광)

참고 자료 - achievementcategorytable.xml 관련 게시물 [ _LT[Folder.FileName.Number] 명령 정리 ]
게시물 수정내용 - null



! dungeon_ruin.xml File Source View.


  
  
    
    
    
      
        
          
          
            
중략
중략


! dungeon_ruin.xml File Analyze.
Location : data/db/
File: dungeon_ruin.xml
Type : xml
Function : 이리아 대륙 던전구조 및 생성

dungeon_ruin.xml 은 XML 형식으로 작성된 파일이다. dungeondb.xml 및 dungeondb2.xml 과 더불어 그림자세계를 제외한 일반적 던전 생성과 구조에 관련된 파일이다.

다소 복잡해 보이는 형태를 취하고 있는데, 각각의 Elements 의 역할과 Attribute 가 의미하는 바를 확인하면 크게 문제될 부분은 없다.

다행스러운 점은 Attribute 에 관한 부분은 dungeondb.xml 이나 dungeondb2.xml 에서 일부 저술하고 있다는 점인데, private blockboss, name, localname, baseseed, dungeonstyle, exit, lobby, lobbydownstairid, lobbysafetyzonename, savestatueid, laststatueid, normaldoorid, bossentrydoorid, bossexitdoorid, safetymusic, bossmusic 와 같은 Attribute 는 이미 해당 역할부분에 대한 설명을 참고해 볼 수 있다.

일단 해당 Attribute 에 대한 분석을 들어가기 전에 기본적인 Element 형태를 분석해볼 필요가 있다.

Elements 구성은 Root Element 의 역할을 하는 DUNGEONS Elements 밑으로 던전을 하나로 묶는 DUNGEON_GROP Elements 그 하위로 하나의 던전을 의미하는 DUNGEON Elements, 다시 하위에 각 층의 구조를 생성을 묶는 FLOORDESCS Elements, 각 층의 구조를 생성하는 PLOORDESC Elements, 해당 층 안에서의 각 방의 퍼즐을 묶는 PUZZLEDESC Elements, 각 세부 퍼즐을 담는 SECTION Elements, 세부 퍼즐을 구현하는 PUZZLE Elements 들로 구성이 된다. 그 외에 층을 묶는 FLOORS Elements 와 층을 의미하는 FLOOR Elements 로 구성이 이루어진다.


  
    
      
        
          
          
            

위에서 Attribute를 제거하고 Element만을 정리한 것이 알아보기 힘들 경우를 대비해, 좀더 알아보기 쉽게 계층을 나타낸 구조로 보자면 바로 왼쪽의 이미지와 같다.

사실상 단순히 묶기만 하는 DUNGEONS, FLOORDESCS, FLOORS, PUZZLEDESC 등의 Elements 를 제거하면 주요해서 확인할 Elements 는 Attribute 를 보유하고 있는 

DUNGEON_GROP,
DUNGEON,
FLOORDESC,
SECTION,
PUZZLE,
FLOOR


정도로 간추릴 수 있다.

그럼 첫번째로 DUNGEON_GROP Element를 보면 name 이라는 1개의 Attribute 를 보유하고 있는 것을 알 수 있는데, 예제 Source View 에서 보이는것을 바탕으로 바라보면 DUNGEON_GROP 안에 들어있는 모든 하위 Elements 를 "karuforest_group" 라는 name 으로 묶는다고 간단하게 해석해 볼 수 있다.

그럼 두번째로 DUNGEON Element 가 있는데, 가장 많은 Attribute 를 포함하고 있는 Element 이다. 우선 dungeondb.xml 과 dungeondb2.xml 에서 저술되어 있는 Attribute 해석을 참고해보자.
	private			생성자만 쓸 수 있는 던전이냐 아니냐를 true false로 기록
	blockboss		이 값이 true 이면 보스방 문을 열었을떄 자동으로 보스방 안으로 워프한다

	name			던전이름. 이름은 'Enter Dungeon' 이벤트 호출시 어떤 던전을 생성할지 기록을 하는데, 그 이름과 서로 매칭된다.
	localname		지역이름. 로컬라이즈된다.
	baseseed		던전 생성시 기본 던전 생성 시드값이다
	dungeonstyle	던전 블록을 사용할 때 어떤 형태를 이용할지 결정하는 값이다. 이 값을 참고하여 DungeonBlockInfo.data 에서 해당되는 블록을 찾아서 배치한다.
	exit				나갈 때 어디로 이동해야 하는지에 대한 정보
	lobby				던전을 생성할 때 던전 로비를 만들기 위해서 사용할 정보 
	lobbydownstairid	던전쪽 로비에서 던전으로 내려가는 투명문의 Class ID
	lobbysafetyzonename	던전쪽 로비의 안전 지대 마킹용으로 사용될 EventEntity 이름
	savestatueid		'마지막 여신상 부활'용으로 사용되는 여신상의 Class ID
	laststatueid		던전의 보스 보상방에서 던전을 나갈 때 사용되는 여신상의 Class ID
	normaldoorid		열쇠 구멍이 있는 던전문의 Class ID
	bossentrydoorid		보스방에서 입구로 사용되는 던전문의 Class ID
	bossexitdoorid		보스방에서 출구로 사용되는 던전문의 Class ID
	safetymusic		던전 생성시 안전지대에 사용할 음악 파일 이름이다.
	bossmusic		보스방에서 사용할 음악 파일 이름이다.

빠지지 않는 _LT[folder.filename.number] 형식을 사용하는 것은 단 1회 localname 에서만 localname="_LT[xml.dungeon_ruin.2]" 와 같이 확인 할 수 있다.
해당 _LT 가 지시하고 있는 부분을 확인해보면 다음과 같다.


Text View
1	test_dungeon
2	카루숲 유적
3	항아리 거미의 다리 유적
4	항아리 거미의 어금니 유적
5	항아리 거미의 집게발 유적
6	항아리 거미의 항아리 유적
7	항아리 거미의 독주머니 유적
8	빛나는 항아리 거미의 유적
9	스톤 하운드의 귀 유적
10	스톤 하운드의 발목장식 유적
...
...
생략
number 가 가르키는 2번을 참고하면 localname 은 "카루숲 유적" 으로 매치되는 것으로 분석할 수 있다. 그 외의 Attribute 부분은 앞서 설명에서 참고해 볼 수 있고, 그닥 건드릴 필요가 없다는 점에서 생략하도록 한다.

가장 단순하고 분석하기 쉬운 Attribute 는 FLOORDESC 의 fog 라는 Attribute 인데 바로 미니맵을 감출지 보여줄지에 대한 여부를 체크하는 부분인데, fog 라는 단어가 의미하는 "안개" 라는 것에서 예상할 수 있듯이 true 를 의미하는 1을 false 인 0 으로 바꾸어주면 미니맵은 가려지지 않고 모두 보여지게 만들 수 있다.
Comments