Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- achievementtable.xml
- UnPack
- Package Tree
- achievementcategorytable.xml
- Mabinogi
- client
- Online Game
- dungeon_ruin.xml
- XML
- Folder Tree
Archives
- Today
- Total
Analyze by Kinesis
Mabinogi Client - db/achievementcategorytable.xml File Analyze. 본문
Game Client Analyzes/Mabinogi Online
Mabinogi Client - db/achievementcategorytable.xml File Analyze.
Kinesis 2010. 6. 4. 02:03Mabinogi Client - db/achievementcategorytable.xml File Analyze.
마비노기 클라이언트 - db/achievementcategorytable.xml 파일 분석.
이 글은 온라인 게임 마비노기 클라이언트를 분석한 자료 입니다.
これは Online Game - Mabinogi を分析したことです。
This is anlyzed the mabinogi client.
2004년 6월경 정식서비스를 시작한 Nexon 에서 서비스하고 Devcat 팀에서 개발한 온라인 게임 마비노기 는 현재까지 서비스가 이루어지고 있는 온라인 게임 중 하나이다.
이 카테고리 에서는 이 마비노기에 대한 분석 내용을 정리하도록 한다.
※ 일부 틀리는 곳이 존재할 수도 있습니다.
※ 자료 분석은 한국 클라이언트를 바탕으로 합니다.
※ 주의! 본 자료는 순수히 학구적인 클라이언트 분석의 목적으로 작성된 글로서 개인의 이익을 위해 이용함으로 인해 발생되는 사고에 관하여는 책임지지 않습니다.
! achievementcategorytable.xml File Source View
! achievementcategorytable.xml File Analyze
Location : data/db/
File : achievementcategorytable.xml
Type : xml
Function : 저널 분류 카테고리
achievementcategorytable.xml 파일은 확장자에서도 볼 수 있듯이 XML 문서 형식으로 저장된 파일이다. 형식은 위의 Source View 에서 본 것과 같은 형태를 취하고 있다.
Root 라는 Element 하위로 Categories 라는 Element(엘리먼트/원소) 가 존재하고 그 밑으로 Category 라는 Element 가 위치하는 구조를 가지고 있다.
중요하게 바라볼 부분은 Cagegory 라는 Element 부분인데, ID, Generation, Season, Subseason, Name 이라는 Attribute(어트리뷰트/속성) 를 보유한다.
ID는 Category 라는 Elements 를 식별하기 위해 필요한 키라고 바라볼 때, Generation 라는 Attribute는 추가된 제너레이션을 의미하는 것으로 추정해 볼 수 있다고 추론할때 Season은 제너레이션의 시즌을 의미한다고 바라볼 수 있고, Name 은 이 Cagegory 의 ID 에 따른 이름이라는 것을 예상 해 볼 수 있다.
_LT[xml.achievementcategorytable.1]
위는 Name 부분에 작성되어 있는 형태중 첫번재를 예로 든 것이다. 단연 이 achievementcategorytable.xml 파일만을 바라보는 것이 아니라 같은 db folder 내의 다른 xml 파일을 참고해 보면, Name 이라는 Attribute 마다 다음과 같은 형태를 띄고 있는 것을 확인할 수 있는데,
EX) _LT[xml.FileName.Number]
바로 이와같이 FileName 부분과 Number 부분이 달라지는 것을 바탕으로 어떠한 방향을 지명하는 것으로 예측할 수 있다.
이와 같은 과정을 거치면서 xml.FileName.Number 가 어떠한 곳을 지시하는 것이라는 것을 유추해 낸 것을 잠시 접고 보면 사실상 프로그래밍의 함수를 이미징 해 볼 때, xml.FileName.Number 라는 것은 함수에 대한 인자값과 닮은 형태를 띄고 있다는 것을 알 수 있다.
그렇다면 xml.FileName.Number 가 위치를 가르키는 인자의 역할을 한다면 실질적 기능을 담는 함수와 같은 역할(의미)은 _LT 가 가지고 있다 라고 바라볼 수 있다. 그렇다면 _LT 라는 글자가 의미하고 있는 것은 무엇인가? 정확하지는 않지만 개발시에 길어지는 글을 줄이기 위해 약어 또는 약자를 쓰는 부분을 고려해 볼때
_LT = _LocalText
를 줄인 말이 아닐까 라는 짐짓을 해볼 수 있다.
(물론 _LT 라는 것이 함수 자체는 아닐 것이나, 클라이언트가 xml 을 read 하면서 _LT[인자] 를 찾아 어떠한 기능을 수행하도록 되어 있다면 _LT 는 함수로 바라 볼 수도 있다 라는 의미를 가지고 이야기 한 것이다.)
이러한 예상을 바탕으로 Package File 의 트리구조를 다시 바라보면
위의 그림과 같은 위치에 실질적으로 local/xml 에 achievementcategorytable.korea.txt 가 존재하는 것을 확인할 수 있다.
여기서 멈추지 않고 예상한 것을 굳히기 위한 일환으로, 이러한 경로적 위치에서 local.xml.achievementcategorytable.korea.txt 에서 korea 라는 국가적 분류만을 제외하면 local.xml.achievementcategorytable.txt 가 남는데 text를 의미하는 txt의 위치를 local의 뒤에 위치시킨다면
_LocalText[xml.achievementcategorytable.Number]
와 같은 형태가 성립된다. 결국 _LT 란 Local 내에 들어 있는 Text 를 찾으라는 의미라고 결론지을 수 있고, xml 은 local 안의 하위 폴더를, 그 뒤의 achievementcategorytable 은 참고할 FileName , Number는 해당 파일 안에 들어 있는 번호의 텍스트를 참고하라 로 결론지을 수 있다.
중요한 것은 지금까지는 단순히 xml 파일만을 바탕으로 예상하고, 추론하고, 유추한 과정에서 크게 벗어나지 못한다. 이것을 보다 확실하게 하려면 _LT 가 지시하고 있는 File의 내용을 참고하고 변조와 확인을 통해 증명해볼 필요가 있다.
위는 data/local/xml/achievementcategorytable.korea.txt 의 내용이다. 앞에 유추했던 것을 바탕으로 _LT[xml.achievementcategorytable.1] 를 해석하면 마지막 1은 achievementcategorytable.korea.txt 파일 내의 1 이 지시하고 있는 『 일반 』 과 매치가 된다. 그렇다면 1을 제외한 『 일반 』이라는 글자를 바꾸면 게임내에서 변화가 이루어 질까?
결과는 성공적이었다. 변경전의 2번째 저널 탭이 "일반" 이었던 것에 반해 변경후는 2번째 저널 탭이 "테스트" 로 바뀐 것을 확인할 수 있었다.
이번에는 _LT[xml.achievementcategorytable.1] 에서의 xml 이 하위 xml 폴더를 의미하는 것인지를 확인하기 위해 다음과 같이 코드를 바꾼 뒤, achievementcategorytable.korea.txt 의 위치를 바꾸어 확인 실험을 해보았다.
! Conclusion.
결론적으로 db/achievementcategorytable.xml 에 대한 Analyze 는 다음과 같다.
achievementcategorytable.xml 는 저널 카테고리를 분류하기 위한 테이블 xml 파일이다.
Root / Categories / Category 라는 Element 의 구성으로 작성되어 있다.
Category 라는 Element 만이 유일하게 Attribute 를 보유한다.
마비노기 클라이언트 - db/achievementcategorytable.xml 파일 분석.
이 글은 온라인 게임 마비노기 클라이언트를 분석한 자료 입니다.
これは Online Game - Mabinogi を分析したことです。
This is anlyzed the mabinogi client.
2004년 6월경 정식서비스를 시작한 Nexon 에서 서비스하고 Devcat 팀에서 개발한 온라인 게임 마비노기 는 현재까지 서비스가 이루어지고 있는 온라인 게임 중 하나이다.
이 카테고리 에서는 이 마비노기에 대한 분석 내용을 정리하도록 한다.
※ 일부 틀리는 곳이 존재할 수도 있습니다.
※ 자료 분석은 한국 클라이언트를 바탕으로 합니다.
※ 주의! 본 자료는 순수히 학구적인 클라이언트 분석의 목적으로 작성된 글로서 개인의 이익을 위해 이용함으로 인해 발생되는 사고에 관하여는 책임지지 않습니다.
게시물 작성일 : 2010. 06. 04.
게시물 작성자 : by Kinesis (김해광)
참고 자료 - Null
게시물 수정내용 - null
! achievementcategorytable.xml File Source View
<?xml version="1.0" encoding="utf-16" standalone="yes"?> <!-- DO NOT EDIT THIS FILE! --> <Root> <Categories> <Category ID="1" Generation="11" Season="1" Subseason="0" Name="_LT[xml.achievementcategorytable.1]" /> <Category ID="2" Generation="11" Season="1" Subseason="0" Name="_LT[xml.achievementcategorytable.2]" /> <Category ID="3" Generation="11" Season="1" Subseason="0" Name="_LT[xml.achievementcategorytable.3]" /> <Category ID="4" Generation="11" Season="1" Subseason="0" Name="_LT[xml.achievementcategorytable.4]" /> <Category ID="5" Generation="11" Season="1" Subseason="0" Name="_LT[xml.achievementcategorytable.5]" /> <Category ID="6" Generation="11" Season="1" Subseason="0" Name="_LT[xml.achievementcategorytable.6]" /> <Category ID="7" Generation="11" Season="1" Subseason="0" Name="_LT[xml.achievementcategorytable.7]" /> </Categories> </Root>
achievementcategorytable.xml
Location : data/db/
File : achievementcategorytable.xml
Type : xml
Function : 저널 분류 카테고리
achievementcategorytable.xml 파일은 확장자에서도 볼 수 있듯이 XML 문서 형식으로 저장된 파일이다. 형식은 위의 Source View 에서 본 것과 같은 형태를 취하고 있다.
Root 라는 Element 하위로 Categories 라는 Element(엘리먼트/원소) 가 존재하고 그 밑으로 Category 라는 Element 가 위치하는 구조를 가지고 있다.
중요하게 바라볼 부분은 Cagegory 라는 Element 부분인데, ID, Generation, Season, Subseason, Name 이라는 Attribute(어트리뷰트/속성) 를 보유한다.
ID는 Category 라는 Elements 를 식별하기 위해 필요한 키라고 바라볼 때, Generation 라는 Attribute는 추가된 제너레이션을 의미하는 것으로 추정해 볼 수 있다고 추론할때 Season은 제너레이션의 시즌을 의미한다고 바라볼 수 있고, Name 은 이 Cagegory 의 ID 에 따른 이름이라는 것을 예상 해 볼 수 있다.
_LT[xml.achievementcategorytable.1]
위는 Name 부분에 작성되어 있는 형태중 첫번재를 예로 든 것이다. 단연 이 achievementcategorytable.xml 파일만을 바라보는 것이 아니라 같은 db folder 내의 다른 xml 파일을 참고해 보면, Name 이라는 Attribute 마다 다음과 같은 형태를 띄고 있는 것을 확인할 수 있는데,
EX) _LT[xml.FileName.Number]
바로 이와같이 FileName 부분과 Number 부분이 달라지는 것을 바탕으로 어떠한 방향을 지명하는 것으로 예측할 수 있다.
이와 같은 과정을 거치면서 xml.FileName.Number 가 어떠한 곳을 지시하는 것이라는 것을 유추해 낸 것을 잠시 접고 보면 사실상 프로그래밍의 함수를 이미징 해 볼 때, xml.FileName.Number 라는 것은 함수에 대한 인자값과 닮은 형태를 띄고 있다는 것을 알 수 있다.
그렇다면 xml.FileName.Number 가 위치를 가르키는 인자의 역할을 한다면 실질적 기능을 담는 함수와 같은 역할(의미)은 _LT 가 가지고 있다 라고 바라볼 수 있다. 그렇다면 _LT 라는 글자가 의미하고 있는 것은 무엇인가? 정확하지는 않지만 개발시에 길어지는 글을 줄이기 위해 약어 또는 약자를 쓰는 부분을 고려해 볼때
_LT = _LocalText
를 줄인 말이 아닐까 라는 짐짓을 해볼 수 있다.
(물론 _LT 라는 것이 함수 자체는 아닐 것이나, 클라이언트가 xml 을 read 하면서 _LT[인자] 를 찾아 어떠한 기능을 수행하도록 되어 있다면 _LT 는 함수로 바라 볼 수도 있다 라는 의미를 가지고 이야기 한 것이다.)
이러한 예상을 바탕으로 Package File 의 트리구조를 다시 바라보면
위의 그림과 같은 위치에 실질적으로 local/xml 에 achievementcategorytable.korea.txt 가 존재하는 것을 확인할 수 있다.
여기서 멈추지 않고 예상한 것을 굳히기 위한 일환으로, 이러한 경로적 위치에서 local.xml.achievementcategorytable.korea.txt 에서 korea 라는 국가적 분류만을 제외하면 local.xml.achievementcategorytable.txt 가 남는데 text를 의미하는 txt의 위치를 local의 뒤에 위치시킨다면
_LocalText[xml.achievementcategorytable.Number]
와 같은 형태가 성립된다. 결국 _LT 란 Local 내에 들어 있는 Text 를 찾으라는 의미라고 결론지을 수 있고, xml 은 local 안의 하위 폴더를, 그 뒤의 achievementcategorytable 은 참고할 FileName , Number는 해당 파일 안에 들어 있는 번호의 텍스트를 참고하라 로 결론지을 수 있다.
중요한 것은 지금까지는 단순히 xml 파일만을 바탕으로 예상하고, 추론하고, 유추한 과정에서 크게 벗어나지 못한다. 이것을 보다 확실하게 하려면 _LT 가 지시하고 있는 File의 내용을 참고하고 변조와 확인을 통해 증명해볼 필요가 있다.
1 일반 2 전투 3 탐험 4 커뮤니티 5 스킬 6 컨텐츠 7 특수
위는 data/local/xml/achievementcategorytable.korea.txt 의 내용이다. 앞에 유추했던 것을 바탕으로 _LT[xml.achievementcategorytable.1] 를 해석하면 마지막 1은 achievementcategorytable.korea.txt 파일 내의 1 이 지시하고 있는 『 일반 』 과 매치가 된다. 그렇다면 1을 제외한 『 일반 』이라는 글자를 바꾸면 게임내에서 변화가 이루어 질까?
1 테스트확인을 위해 위와 같이 변형을 해서 클라이언트를 실행하여 접속해 보았다.
after / Number 2 Tab Name is "테스트" / You look at big size? Cilck here! |
before / Number 2 Tab Name is "일반" / You look at big size? Cilck here! |
결과는 성공적이었다. 변경전의 2번째 저널 탭이 "일반" 이었던 것에 반해 변경후는 2번째 저널 탭이 "테스트" 로 바뀐 것을 확인할 수 있었다.
이번에는 _LT[xml.achievementcategorytable.1] 에서의 xml 이 하위 xml 폴더를 의미하는 것인지를 확인하기 위해 다음과 같이 코드를 바꾼 뒤, achievementcategorytable.korea.txt 의 위치를 바꾸어 확인 실험을 해보았다.
<Category ID="1" Generation="11" Season="1" Subseason="0" Name="_LT[code.achievementcategorytable.1]" />이번 역시 "테스트" 로 바뀌어져 있는 성공적인 결과를 확인할 수 있었다.
! Conclusion.
결론적으로 db/achievementcategorytable.xml 에 대한 Analyze 는 다음과 같다.
achievementcategorytable.xml 는 저널 카테고리를 분류하기 위한 테이블 xml 파일이다.
Root / Categories / Category 라는 Element 의 구성으로 작성되어 있다.
Category 라는 Element 만이 유일하게 Attribute 를 보유한다.
< Attribute 값 참조 >
ID = Category 의 식별자. Category 를 식별하기 위해 사용된다.
Generation = 추가된 제너레이션을 가리키는 것으로 예상된다.
Season = 해당 제너레이션의 몇번 째 시즌인지를 가리키는 것으로 예상된다.
Subseason = 해당 시즌의 하위 시즌을 가리키는 것으로 예상된다.
Name = 해당 카테고리의 이름을 가리킨다.
ID = Category 의 식별자. Category 를 식별하기 위해 사용된다.
Generation = 추가된 제너레이션을 가리키는 것으로 예상된다.
Season = 해당 제너레이션의 몇번 째 시즌인지를 가리키는 것으로 예상된다.
Subseason = 해당 시즌의 하위 시즌을 가리키는 것으로 예상된다.
Name = 해당 카테고리의 이름을 가리킨다.
< _LT[folder.filename.number] 의 해석 >
_LT = _LocalText 혹은 _LocalTxt 의 약자로 예상할 수 있으며, data/local 폴더 안의 txt 파일을 지시한다.
folder = data/local 폴더 안의 하위 폴더를 지시한다
filename = 지시된 폴더 안에서 읽어올 filename 을 지시한다.
filename 을 지시하면 filename.local.txt 의 형태의 파일을 가리키는 것이 된다.
number = 지시된 파일 안의 해당 번호 값을 지시한다.
_LT = _LocalText 혹은 _LocalTxt 의 약자로 예상할 수 있으며, data/local 폴더 안의 txt 파일을 지시한다.
folder = data/local 폴더 안의 하위 폴더를 지시한다
filename = 지시된 폴더 안에서 읽어올 filename 을 지시한다.
filename 을 지시하면 filename.local.txt 의 형태의 파일을 가리키는 것이 된다.
number = 지시된 파일 안의 해당 번호 값을 지시한다.
'Game Client Analyzes > Mabinogi Online' 카테고리의 다른 글
Mabinogi Client - db/dungeon_ruin.xml File Analyze. (0) | 2010.06.09 |
---|---|
Mabinogi Client - db/achievementtable.xml File Analyze. (2) | 2010.06.04 |
Mabinogi Client - UnPack Tree Structure Analyze. (4) | 2010.06.03 |
Mabinogi Client - Folder Tree Structure Analyze. (1) | 2010.06.03 |
Comments