설치와 한글화에 대한 질문이 자주 올라와서 그냥 강좌처럼 만들었습니다.(특히 제가 정보 제공한 트리니티코어 3.3.5a)
이것을 성공하면, 다른 버전도 비슷한 과정을 거치면 됩니다.
+++++
[설치]
0. 준비물.
0.1 서버:
_2019.03.28_TrinityCore 3.3.5a Server_by Bretti1993.rar
https://cafe.naver.com/ArticleRead.nhn?clubid=14511966&page=1&menuid=110&boardtype=L&articleid=16635&referrerAllArticles=false
0.2 클라:
3.3.5a 한글 와우. 용량이 아마 16기가 이상...
알아서 구하셔야 합니다. 때때로 인터넷에 돌아다닙니다. 정 구할 수 없다면, 영문 클라이언트를 구해도 됩니다. 영문 구하는 방법은 유명 프리 서버 사이트에 들어가서 다운로드하면 됩니다.
0.3 DB 관리 도구:
HeidiSQL, SQLyog Community, Navicat, MySQL Workbench Community 등 맘에 드는 것 하나.
HeidiSQ(이하 하이디)는 완전 프리웨어로, 기부를 받습니다. 특징은 굉장히 보기 편하고 직관적입니다. 한글화도 되어 있습니다.
SQLyog Community는 유료 버전이지만, 커뮤니티 버전을 따로 배포합니다. 뭐 제한 사항이 있지만, 쓸만합니다. 하이디보다는 좀 더 빠르게 쿼리를 처리하는 느낌입니다. 마치 mysql 콘솔을 그대로 옮겨놓은 듯한 느낌입니다.
Navicat은 유료 버전이고, 시험 버전을 사용해 볼 수 있습니다. 빠르고 다양한 기능이 있습니다.
MySQL Workbench Community는 MySQL의 자매품같은 건데, 아주 좋습니다. 물론 유료 버전도 있지요. 워크벤치는 5.6이상부터 완전 지원이고, 그 이하 5.x버전은 위험성이 있다고 합니다. 4.x버전 이하는 지원하지 않습니다. 이 문서에서 다루고 있는 서버는 MySQL 5.5.9를 사용합니다. 대개 와우 리팩은 5.5.9 또는 마리아DB를 동봉하더군요.
이 문서는 하이디를 기본으로 사용합니다.
0.4 문서 편집기:
notepad++ - 대용량 쿼리문도 잘 읽어들입니다.
0.5 압축 해제기:
반디집.
0.6 DotNetFX 4.5+, VcRedist 2015+ - 대개는 알게 모르게 다 설치되어 있습니다.
1. 서버.
1.1 다운로드한 파일을, 맘에 드는 곳에 압축을 풉니다. 아무데나...
용량이 4.33기가나 되는군요.
2019.03.28 - 3.3.5a Server (TrinityCore)\ - 사실 이것만 필요.
Example Realmlist for loaclhost\ - realmlist.wtf의 예제.클라이언트의 Data\koKR\realmlist.wtf 파일.
Tools\ - 하이디, 노트패드, C++ 업데이트 등. 해당 사이트에서 직접 다운받아 사용하는 것이 좋습니다. 지워도 됩니다.
TrinitySource_Code\ - 소스 코드. https://github.com/TrinityCore/TrinityCore 에 가면 원본이 있습니다. 지워도 됩니다.
나머지는 설명 문서들...
2019.03.28 - 3.3.5a Server (TrinityCore)\의 내부...
_Server\
Cameras\
Crashes\
dbc\
logs\
maps\
mmaps\
vmaps\
Zusatz_Backups\
Auth.log
authserver.conf - 인증 서버 설정 파일.
authserver.exe
DBErrors.log
libeay32.dll
libmysql.dll
Server.log
ssleay32.dll
Starter_WorldServer.bat - 실행기.
worldserver.conf - 월드 서버 설정 파일.
worldserver.exe
dbc\deDE\는 지워도 됩니다. 우리가 독일어를 모르니... locale 별로 dbc 파일을 따로 관리할 수 있습니다.
1.2 바이러스 검사. 실행 파일 등에 대해서 반드시 검사합니다. 웹에서 받은 건데, 전적으로 믿는다는 건 좀 그렇지요.
대상은 exe, dll 등.
데이타 파일은 건너뛰어도 됩니다. dbc\, maps\, mmaps\, vmaps\, _Server\mysql\data 등.
반드시 할 것은 authserver.exe, worldserver.exe, libeay32.dll, libmysql.dll, ssleay32.dll, 그리고 mysql\bin\ 폴더의 exe 파일들.
1.3 _Server\의 내부...
apache\
cgi-bin\
htdocs\
mysql\
perl\
php\
security\
tmp\
Apache.bat
apache_stop.bat
MySQL.bat
'Portable' MySQL servers.pdf
README regarding the Server.txt
이중에 필요한 건, mysql\, MySQL.bat 뿐, 나머지는 모두 공개하는 프리서버의 웹사이트를 구축할 때 필요한 겁니다. 사실 혼자나 친구 몇몇과 할거면, 지워도 됩니다. 친구 몇의 아이디는 DB 관리 도구 또는 worldserver의 콘솔에서 만들어주면 되니까요.
본인 컴퓨터에 따로 MySQL 서버가 설치되어 있으면 그것을 이용해도 됩니다.
https://github.com/TrinityCore/TrinityCore/releases
TDB 335.xxxxx의 DB 파일을 다운받아, MySQL 서버에 넣어주면 됩니다. 이 방식으로 하면, DB 파일 내의 모든 기본값이 UTF8이므로, 추가로 한글화 쿼리 파일만 넣어주면, 한글이 잘 보일 겁니다.
1.4 MySQL 서버 설정.
mysql_installservice.bat, mysql_uninstallservice.bat - 윈도우 서비스로 등록하는건데, 사용하지 않습니다.
resetroot.bat - 사용자 root와 pma의 비밀번호를 공란으로 만듭니다.
bin\my.cnf - 이거 설정파일인데, 일단 C-C, C-V해서 복사본을 하나 만들어둡니다. 백업이죠.
다음처럼 my.cnf 설정 파일에 utf8에 대한 항목을 추가합니다.
MySQL 서버를 utf8로 운용하기 위함으로, 아래처럼 해주면, MySQL 서버는 utf8로 입력받고 출력하게 됩니다. 한글화에 중요한 요점 중 하나입니다.
[client]
...
default-character-set=utf8
[mysqld]
...
character-set-server=utf8
collation-server=utf8_general_ci
init_connect=SET collation_connection=utf8_general_ci
init_connect=SET NAMES utf8
#log-bin=mysql-bin -> binlog에 대해 주석 처리, 아래까지. 이거 해두면 로그가 쌓이지 않습니다. 또는 일정 시간 지나면 삭제하게 할 수 있는데, 로그 파일 있다고 해서 일반 유저가 뭔가를 할 수 있을 것으로 생각되지는 않습니다. 그저 디스크 공간만 차지할 뿐이죠.
#binlog_format=mixed
[mysqldump]
...
default-character-set=utf8
[mysql]
...
default-character-set=utf8
1.5 MySQL 서버 실행.
실행 파일은 _Server\MySQL.bat
방화벽은 액세스 허용.
맨 뒤가 아래처럼 나오면 성공한 것입니다.
190716 19:41:38 [Note] mysql\bin\mysqld: ready for connections.
Version: '5.5.9' socket: '' port: 3306 MySQL Community Server (GPL)
연결 준비가 됐다. 버전은 5.5.9이고 3306 포트로 열렸다.
1.6 인증 서버 설정 파일.
authserver.conf에서 주의할 곳은...
LoginDatabaseInfo = "127.0.0.1;3306;root;ascent;trinity_auth"
자신의 MySQL 서버 상태에 맞게 수정하면 됩니다. 여기서는 리팩을 그대로 사용하는 것이니, 그대로 둡니다.
1.7 월드 서버 설정 파일.
worldserver.conf에서 주의할 곳은...
LoginDatabaseInfo = "127.0.0.1;3306;root;ascent;trinity_auth"
WorldDatabaseInfo = "127.0.0.1;3306;root;ascent;trinity_world"
CharacterDatabaseInfo = "127.0.0.1;3306;root;ascent;trinity_characters"
여기도 마찬가지 상황이므로 그대로 둡니다.
RealmZone = 6 -> 이게 9(독일)로 되어 있는데, 6이나 1로 수정합니다. 6은 한국어, 1은 개발용으로 아무 언어. 재밌는 건, Japan이 없다는 것... 일본에서는 와우가 인기가 없었다네요.
여러가지 배율같은 것도 조정하면 됩니다.
1.8 인증 서버와 월드 서버 실행, 방화벽은 다 액세스 허용. 혼자 할거면 안해도 됩니다.
authserver.exe 실행.
Started auth database connection pool.Loading IP Location Database...
Added realm "Decisions of Truth" at 127.0.0.1:8085.
이렇게 나오면 됩니다.
Decisions of Truth 라는 서버가 추가됐다고 합니다. 실제로 trinity_auth.realmlist에 가보면, Decisions of Truth가 있는 것을 볼 수 있습니다. 여기에 열을 추가함으로써 와우의 여러 Realm을 만들 수 있습니다.
worldserver.exe 실행.
TC>TrinityCore rev. b985b451ca2b 2019-03-28 11:35:56 +0100 (3.3.5 branch) (Win32, Release, Static) (worldserver-daemon) ready...
이렇게 나오면 됩니다.
Starter_WorldServer.bat 는 무시합니다.
1.9 유저 만들기.
worldserver.exe의 콘솔창에 커서가 깜박입니다.
새로 계정 만들기.
.account create ACCOUNTNAME PASSWORT
계정에 GM 권한 부여하기.
.account set gmlevel ACCOUNTNAME 3 -1
적당히 하나 만듭니다. account 앞의 .(점)도 같이 써야 합니다. GM 설정은 선택사항입니다.
예제...
그냥 엔터 한번 눌러줍니다.
TC>.account create user password
Accunt created: user
TC>
이 리팩에는, 이미 Administrator/Administrator 로 계정이 하나 생성되어 있습니다. GM 권한 레벨도 3.
2. 클라이언트.
2.1 설정.
[와우 3.3.5.a] 폴더로 갑니다.
중요한 파일은 단 1개 또는 2개.
Data\koKR\realmlist.wtf 에는 다음의 한 줄만 있으면 됩니다.
SET realmlist 127.0.0.1
WTF\Config.wtf 에 locale을 설정합니다. 이것도 한 줄만 적고 다 지워도 됩니다. 나중에 클라인트 설정을 하면, 알아서 덧붙여집니다.
SET locale "koKR"
2.2 실행.
인증 서버와 월드 서버를, 껐다가 새로 켜줍니다.
wow.exe
완성형 글자만 사용할 수 있습니다. - worldserver.conf 에서 RealmZone = 6 또는 1이 아닌 경우에 발생합니다.
퀘스트가 영어로 나오는군요.
3. 한글화.
3.0 하이디
이제 하이디와 같은 DB 관리 도구를 쓸 겁니다.
하이디는 프리웨어이고 직관적이어서 사용하기 편리합니다. 덩어리가 큰 쿼리 파일의 처리에 다소 속도가 느려보인다는 단점이 있습니다.
HeidiSQL 10 버전, 9에 비해 디자인이 이뻐졌네요.
3.1 하이디 세션.
좌하, [신규] 루트 폴더에 세션 생성.
적당히 이름을 적어줍니다. localhost:3306/root/ascent
네트워크 유형: MariaDB or MySQL(TCP/IP)
호스트명/IP: 127.0.0.1
사용자: root
암호: ascent
포트: 3306
나머지는 디폴트 값 그대로 사용.
[열기]
여기서 우리가 간섭할 것은, [trinity_world] DB.
트리니티 코어 DB의 특징은, 로케일 처리에 있어서 망고스 코어에 비해 조금 나아 보인다는 겁니다.
예를 들어, 퀘스트 관련 테이블로 살펴보면, 망고스 코어는 locales_quest 테이블을 두고, 그 안에 title_loc1, title_loc2, title_loc3... 이런 식으로 넣었습니다.
이에 반해 트리니티 코어는 quest_template_locale 테이블 안에 locale 컬럼을 두어, 확장성을 높였습니다. locale이 koKR이면, 그것만 불러오는 식이지요. 없으면 기본값을 가져오고...
이건 그냥 설명이고...
3.2 한글 쿼리 파일 넣기.
일단 파일 3개를 준비합니다.
제가 쿼리문을 정리한 것으로 최근의 TrinityCore에 특화된 겁니다. 물론 한글화에는 다른 분들이 수고하셨습니다.
첨부파일.
0-tc-quest_template_locale.sql
0-tc-quest_offer_reward_locale.sql
0-tc-quest_request_items_locale.sql
하이디 -> 파일 -> SQL 파일 실행 -> 파일 하니씩 불러와서 실행.
에러만 없으면 잘 된 겁니다.
F5나 눌러서 리프레쉬.
파일이 크면 속도가 느립니다.
그럴때는 mysql 콘솔로 가서 source를 이용하면 아주 빠릅니다.
bin\mysql.exe -u root -p --default-character-set=utf8
mysql>show databases;
mysql>use trinity_world;
mysql>source 1.sql
mysql>exit
이런 식으로... 그냥 잠깐 퀘리 파일을 mysql 설치 폴더에 복사하고, 이름 바꿔서 source 적용하는 것도 방법.
셋 다 넣었으면, 일단 퀘스트에 대한 것은 완료된 것입니다. 이제 확인하러 갑시다.
3.3 다시 서버 켜고, 와우 실행.
_Server\MySQL.bat
authserver.exe
worldserver.exe
wow.exe
MySQL 서버는 안 껐으니 넘어가고... 인증 서버와 월드 서버만 실행시킵니다.
3.4 뭉개진 한글.
앗...
원인을 파악해 봅니다. 모든 문제는 DB에 있는 겁니다.
하이디로 가서...
왼쪽 창에서 quest_template_locale 선택.
오른쪽 창의 [데이타] 탭을 열고, [필터] 부분에 locale='kokr' 이라고 입력, 오른쪽 [필터 적용] 클릭.
한글이 잘 입력되어 있습니다.
그러나 quest_request_items_locale와 quest_offer_reward_locale에 가보면, 한글이 온통 ?표 투성이입니다.
왜 그럴까요?
이유는 테이블의 문자 조합이 latin1_swedish_ci로 되어 있기 때문입니다. 특이하게 quest_template_locale는 utf8_general_ci로 되어 있습니다.
왼쪽 창에서 quest_request_items_locale 선택.
오른쪽 창에서 [테이블] 탭 선택, 다시 아래의 [옵션] 선택.
보면 기본 조합이 utf8이 아닐 겁니다.
이 의미는, 나는 utf8로 주는데, 받는 측에서 무조건 swedish로만 받으들이니, 그냥 모르는 문자가 되버린 겁니다.
저자가 신경써서 urf8을 적용해주면 좋으련만...
3.4.1 수정하기.
자, 이것을 수정합니다. 아예 trinity_world DB 전체의 문자 조합을 uft8로 맞출 겁니다.
참고로, 본인이 직접 깃허브에서 트리니티 코어 DB를 받아서 trinity_world DB를 만들면, 다 utf8이므로, 이런 짓을 할 필요가 없습니다.
DB 먼저...
trinity_world, 오른 클릭 -> 편집.
조합을 latin1_swedish_ci에서 utf8_general_ci로 변경 -> 확인.
테이블도 일일이 하나씩......
도구 -> 벌크 테이블 편집기 클릭
왼쪽 창에 세션 이름 나오는데... [>] 표시를 누릅니다.
trinity_world 옆의 네모 칸을 체크합니다. 그럼 trinity_world의 모든 테이블이 선택됩니다.
오른쪽 창으로 가서...
기본 조합 변경: utf8_general_ci
문자 집합 변환: UTF-8 Unicode (utf8)
나머지는 선택하지 마세요.
[업데이트] 클릭.
이러면 아래 실행창에 Alter 명령어로 마구 바꾸는 것을 볼 수 있습니다.
trinity_auth와 trinity_characters에도 동일하게 적용해도 되지만, 와우 클라이언트의 한글화와는 상관이 없기 때문에 넘어갑니다.
3.4.2 이제 다시 쿼리 파일을 넣으면 됩니다.
아까 집어넣은 데이터가 있는데, 그냥 다시 집어넣으면 어쩌나하는 생각이 들수도 있으나...
제가 쿼리 파일 만들때, replace문를 썼기에 별로 문제 없습니다.
다 집어넣고, 다시 테이블의 데이타를 보면 한글이 다 잘 보입니다.
3.5 또 서버와 와우 실행.
이제 한글이 잘 보입니다. 퀘스트 받을 때도, 보상 받을 때도 모두...
*****