버전 히스토리: history.txt
이 문서의 최신 버전은 https://kitserver.mapote.com에서 찾아볼 수 있습니다. 킷서버 버전 5부터 8까지의 문서도 찾아볼 수 있습니다.
킷서버 2010은 PES 2010 / PES 2010 DEMO에 사용되는 다양한 모듈을 관리하는 애드-온 프로그램입니다. PES의 몰입도를 향상시키는 이 논리 구성 DLL 파일들은 "모듈"로 불리며 킷서버는 이런 모듈들을 게임에 로드에하고 관리합니다. 킷서버의 시초는 PES 3 때 유니폼을 관리하기 위한 프로그램인 말 그대로의 킷서버 (kit: 유니폼; server: 관리자)였지만 지난 몇 년간 개발을 통해 다양한 기능이 추가되고 게임성을 높여주는 프로그램으로 발전하게 되었습니다.
다음은 기능에 대한 간략한 소개입니다.
킷서버를 처음 설치하는 사용자는 반드시 섹션 2의 "설치와 제거"를 읽으시기 바랍니다.
AFS2FS 9.1.0 | afs2fs.dll | 파일과 폴더 구성을 사용해 AFS (.img) 게임 콘텐츠를 관리하는 모듈입니다: *.img 파일을 수정할 필요 없이 간단하게 각종 패치를 설치하거나 제거할 수 있습니다. |
---|---|---|
Kserv 9.1.1 | kserv.dll | 유니폼을 관리하고 각 팀에 할당하는 모듈입니다. |
LOD Mixer 9.1.1 | lodmixer.dll | 해상도, 화면비, LOD 설정을 관리하는 모듈입니다. |
Camera module 9.1.0 | camera.dll | 카메라 각도를 조절하는 모듈입니다. 개개인의 설정에 따라 게임 몰입도를 높여줍니다. |
Time module 9.1.0 | time.dll | 시합 시간을 조절하는 모듈입니다. 설정 범위는 1에서 255 사이입니다. |
Speeder module 9.0.6 | speeder.dll | 게임 속도를 조절하는 모듈입니다. |
보안 문제 때문에 XP와 비스타, 그리고 윈도우 7은 사용자 계정에 대해 관리와 제한을 가하고 있으며, 파일의 접근에 대해 엄격한 통제를 가하고 있습니다. 특히 '일반 사용자 계정'의 경우 이러한 제한이 매우 큽니다. 따라서 저는 직접 설치하는 예전 버전의 킷서버와는 달리 새로운 설치 방법을 사용하기로 했습니다. 이제 기존의 압축 파일 대신 설치 프로그램을 통해 간편하게 킷서버를 설치 할 수 있습니다.
설치 프로그램에 디폴트 설치 경로가 따로 지정되어 있지만 (대개 사용자 계정 폴더입니다.), 윈도우 계정명이 한글인 사용자는 다른 폴더에 설치하는 것을 권장합니다. 중요한 것은 반드시 '관리자 권한'이 필요하지 않는, 즉 사용자 계정이 모든 권한을 가지고 있는 폴더에 설치해야 한다는 것입니다. 관리자 권한이 필요한 폴더에 설치하면 게임 실행 시 관리자 권한이 필요합니다.
이제 킷서버를 설치한 폴더로 가봅시다. 다음은 Kitserver2010 폴더의 구성입니다:
이제 PES가 설치된 폴더에서 pes2010.exe와 settings.exe 두 실행 파일을 Kitserver2010 폴더에 복사합니다. (윈도우 설정에 따라서 .exe라는 확장명 없이 단순히 pes2010과 settings이라고 보일 수 있습니다. 윈도우의 디폴트 설정은 알려진 형식의 파일 확장명을 숨기기 때문입니다). 따라서 복사 후 다음과 같아야 합니다:
이제 거의 다 되었습니다! 몇 스텝만 더 진행하면 여러분은 킷서버가 적용된 게임을 즐길 수 있습니다.
이제 kitserver 폴더를 열고 manager.exe를 실행하세요.
manager.exe의 예전 이름은 setup.exe였습니다. 하지만 윈도우가 setup.exe가 관리자 수준의 엑세스를 요구한다고 여기는 경우가 있기 때문에 이에 따르는 사용 제한을 없에기 위해 manager.exe로 바꾸게 되었습니다. 또한 "setup"이라는 이름 또한 오해의 소지가 있기 때문에 킷서버의 모듈을 게임 실행 파일에 로드하는 것을 관리한다는 뜻의 manager라는 이름을 사용하기로 했습니다.
이제 게임 실행 파일을 선택합니다. (대다수의 경우 이미 선택되어 있습니다.) 또한 스펙 체크 우회를 위해 setting.exe도 선택할 수 있습니다. (setting.exe의 스펙 체크를 우회하지 않길 바란다면 선택하지 않아도 됩니다. [역자 주: setting.exe의 스펙 체크 우회는 PES에서 지원하지 않는 그래픽 카드에 대한 제한을 풀어버림으로써 모든 그래픽 옵션을 선택할 수 있게 합니다.]) 실행 파일을 선택하고 "Attach" 버튼을 클릭하세요. 이제 패치 파일들은 게임이 실행될 때 메모리에 로드된 모듈을 통해 게임에 적용됩니다. 다음은 적용 결과입니다.
킷서버를 제거하려면 manager.exe를 실행하시고 "Detach"를 클릭하세요. 그러면 킷서버의 모듈들이 게임 실행 파일에서 제거되어 패치의 적용이 중지됩니다. (패치가 적용되지 않은 상태에서 게임이 정상적으로 실행되는지의 여부를 점검하고 싶을 때에도 이 "Detach" 옵션을 사용할 수 있습니다. 그리고 점검이 끝나면 Attach를 클릭해서 다시 킷서버를 적용하면 됩니다.) 만약 pes2010.exe나 settings.exe 둘 중에 한 개만 제거하고 싶다면 setup.exe에서 보류하고 싶은 exe 파일의 드롭다운 리스트에 있는 no action을 선택하시고 제거하면 그 파일에 대한 설치는 남아있게 됩니다.
이제 설치가 거의 끝났지만 게임을 실행하기 전에 다음 스텝을 체크하세요:
킷서버 폴더에는 반드시 config.txt라는 파일이 있어야 합니다. 만약 킷서버를 업데이트하는 상황이면 config.txt 파일이 이미 있을 것입니다. 만약 없다면 (새로 설치하는 경우) 설정 도구 (config.exe)를 실행하고, "Save"를 클릭하면 새로운 config.txt 파일이 생성됩니다.
자, 이제 게임을 즐길 시간입니다.
주의: 게임을 실행할 때에는 반드시 Kitserver2010 폴더의 게임 실행 파일 (pes2010.exe)을 실행해야 합니다.
물론 위 방법이 아닌 예전과 같이 킷서버를 게임 폴더에 설치할 수 있습니다. 다만 관리자 계정을 사용하거나 게임을 실행할 때마다 관리자 권한으로 실행해야 킷서버가 적용되는 경우가 발생할 수 있습니다. 솔직히 저는 예전 방법 대신 새로운 설치법을 추천합니다. 왜냐하면 나는 몇시간 동안 킷서버를 삭제하고 재설치하고 뒤적거리면서 킷서버는 정상 설치되었는데 게임에 왜 적용이 안되는지 이유를 찾아내려고 애쓰는 사용자들을 수차례 보아왔기 때문입니다. 그러나 새로운 설치 방법은 관리자 권한에 대해 걱정할 필요가 없습니다.
킷서버 제거는 간단합니다. Kitserver2010 폴더를 지우면 끝입니다.
킷서버는 시스템 폴더를 수정하기 않기 때문에 단순 삭제만으로 제거할 수 있습니다.
물론, PES를 삭제할 상황이 아닌 경우 킷서버를 삭제하는 것이 아닌 "Detach" 버튼으로 킷서버를 게임에서 잠시 "분리"하는 것을 권장합니다. 왜냐하면 전 게임이 갑자기 충돌이 일어나 꺼지면 꼭 킷서버 문제라고 하면서 지우는 사람들을 보아왔었거든요. 하지만 그러한 문제가 꼭 킷서버 문제가 아닐 수 있으니 위 방법으로 점검을 해보는 것을 추천합니다.
코나미는 때때로 패치를 내놓습니다. 이미 1.01와 1.02 패치가 나왔고 앞으로도 있을 예정입니다. 패치를 설치하면 게임 실행 파일 (pes2010.exe)은 새로운 버전의 실행 파일로 교체되고 Kitserver2010 폴더의 게임 실행 파일은 구버전으로 남게 됩니다.
따라서 킷서버를 다시 적용하기 위해선 킷서버가 새로운 패치를 지원한다는 가정하에 새버전의 게임 실행 파일을 Kitserver2010 폴더에 복사하고 manager.exe를 실행해서 설치를 해야 합니다.
킷서버의 manager.exe 파일은 GUI를 통하지 않고도 사용할 수 있습니다. 보통 이를 코맨드 라인 모드라고 합니다. 이 방법은 대형 패치를 제작하는 사람에게 유용한 방법인데요. 킷서버를 포함한 패치의 인스톨러에 스크립트로 다음 명령어를 추가함으로써 자동으로 킷서버를 게임 실행 파일에 설치할 수 있습니다.
manager --install --gfile={game-exe} --sfile={settings-exe}
manager --remove --gfile={game-exe} --sfile={settings-exe}
예시:
manager --install --gfile=..\pes2010.exe --sfile=..\settings.exe
킷서버는 config.txt라는 파일을 주 설정 파일로 사용합니다. 많은 옵션이 이 파일에 지정되어 있습니다. 예를 들어 어떤 모듈을 읽어오고 또 어떤 모듈은 어떤 설정을 쓸 것이냐 등등. 그런데 kitserver 폴더를 보면 config-sample.txt 파일만 보일 겁니다. 왜 config.txt가 아니라 config-sample.txt일까요? 그 이유는 많은 사용자가 킷서버를 업데이트할 때에 무작정 이전 버전의 config.txt를 덮어씌우기 때문입니다. config.txt를 그대로 덮어씌워 버리면 이전 설정이 지워지기 때문에 이런 장치를 해놓은 것입니다. 업데이트를 하는 경우가 아니라면 config-sample.txt를 config.txt로 이름을 바꾸든지 설정 도구 (config.exe)를 실행하고 "Save"를 클릭하면 새로운 config.txt를 생성됩니다. 반면에 업데이트하는 경우에는 이전 버전의 config.txt와 config-sample.txt를 비교해서 필요한 부분만 복사해서 기존의 config.txt에 붙여 넣으면 됩니다.
주의: 만약 config.txt가 킷서버 폴더에 없다면 킷서버는 작동하지 않습니다. 킷서버는 log 파일을 통해 config.txt를 찾을 수 없다는 기록을 남깁니다. 따라서 만약 킷서버가 정상적으로 설치되었는데도 작동하지 않으면 킷서버 폴더 안에 있는 pes2010.log를 통해 무엇이 문제인지 알아볼 수 있습니다.
킷서버의 주 설정 파일인 config.txt는 킷서버 폴더 안에 있습니다. config.txt가 없으면 섹션 2.1을 읽어보기 바랍니다. 다음은 config.txt에 있을 법한 설정 예시입니다:
[afs2fs] debug = 1 img.dir = "c:\mypesfiles\root1" [camera] angle = 30 [kload] dll = zlib1.dll dll = libpng13.dll dll = afsio.dll dll = kserv.dll dll = afs2fs.dll dll = lodmixer.dll dll = camera.dll dll = time.dll dll = speeder.dll gdb.dir = "."
config.txt에는 각 모듈을 위한 설정 섹션이 있습니다. 이 섹션은 [module-name]으로 시작하고 보통 하나 이상의 옵션이 따라옵니다. 보통, 몇몇 특정 모듈 (DLL)을 작동하거나 중지해야 하는 경우를 제외한다면, 이 config.txt 파일을 수정할 필요는 없습니다.
특정 모듈의 작동을 중지하려면 [kload] 항목 아래에 있는 해당 라인 앞부분에 '#'을 입력하거나, 해당 라인을 삭제하면 됩니다.
DLL의 순서는 중요합니다.PES는 실행 시 리스트의 순서대로 모듈을 읽어오는데, 보통 zlib1.dll, libpng13.dll, afsio.dll는 반드시 kserv.dll보다 먼저 읽어와야 하고; afs2fs.dll는 kserv.dll 전에 읽어와야 합니다. 몇몇 드문 경우를 제외하고는 이 DLL들을 재배열할 필요는 없습니다.
config.exe의 전신이었던 lodcfg.exe와 같이 이 심플한 GUI 프로그램은 사용자들로 하여금 config.txt의 내용을 간편하게 수정하게 도와주는 도구입니다. (물론 lodcfg.exe는 LOD 믹서만 다루는 도구였지만 현재는 다른 설정도 다루게 되어 이름을 config.exe로 바꾸었습니다.) 이 도구는 config.txt의 설정을 그대로 GUI로 옮긴 것으로써, config.exe 설정과 config.txt에서 수동으로 수정하는 것은 같은 효과를 가집니다. 그러나, 모듈 (DLL)의 추가나 수정 등은 config.exe에서 할 수 없으며 반드시 config.txt에서 수동으로 수정해야 합니다. 하지만 해상도 변경이나 카메라 각도 조절 같은 간단한 설정들은 config.exe에서 하는 것이 더 간편합니다.
각종 패치 파일인 bin 파일을 AFS (*.img)파일에 일일이 임포트하는건 골치가 아픈 일입니다. 이 모듈은 bin 파일을 그렇게 임포트하지 않고도 외부 경로에서 폴더 채로 인식하게 해줍니다.
몇 년 동안 사람들은 패치를 간단하게 하는 방법을 찾아왔습니다. 그리고 끝내는 Str@teG라는 사람이 bin파일을 폴더 형식으로 img파일 외부에 보관하는 방법을 제의했고, 저는 그 아이디어로 afs2fs.dll이라는 모듈을 개발했습니다. 개인적인 경험에 의하면 사람들은 AFS 리빌드를 해야 한다는 이유로 용량이 큰 패치를 꺼립니다. 리빌드 과정이 어려워서 꺼리는 게 아니라, 그 과정이 시간과 하드 용량을 낭비한다는 이유 때문입니다. 하지만 이제는 'afs2fs.dll' 모듈을 통해서 이 과정은 단지 bin 파일을 정확한 폴더에 집어넣기만 하면 되는 심플한 절차로 간소화되었습니다. 그리고 img 파일 크기 문제로 고민할 이유 또한 사라졌습니다. bin 파일을 언제든지 추가하거나 삭제할 수 있기 때문입니다.
또 이 모듈의 장점은 원본 파일을 건드리지 않고 어떤 패치를 실험해보고 싶을 때에도 두드러집니다. 새 패치 파일을 AFS (*.img) 루트 안의 각 img 폴더에 집어넣고 config.txt를 수정해서 AFS 경로를 config.txt에 추가하면 그만입니다. 패치 삭제도 간단합니다. 패치에 해당하는 AFS (*.img) 루트 경로를 config.txt에 지우고 폴더를 지우면 됩니다. 여러 종류의 패치를 관리하는 것이 더는 악몽이 아니게 된셈이죠. :) (AFS 루트에 관한 정보는 다음 섹션을 참고하세요.)
먼저 패치 파일을 보관할 위치를 선택해야 합니다. 예를 들어, c:\mypesfiles\root1 이 위치에 패치 파일을 넣고 적용해보기로 합시다. 이 폴더가 이제 소위 말하는 AFS 루트입니다. 그 폴더 아래에 img라는 이름의 폴더를 만드세요. ("img" 이 폴더 이름은 매우 중요합니다. 왜냐하면 PES는 이 폴더 이름을 참조해서 패치 파일을 읽어오기 때문입니다.) 그리고 img 폴더 안에 필요한 새 폴더를 만듭니다 - dt00.img, dt01.img, dt0b.img 등등. 이 폴더들이 바로 bin 파일을 보관하게 될 폴더들입니다.
각 폴더는 반드시 해당 AFS 파일 이름과 매칭이 되어야 하기 때문에 폴더 명을 정확하게 써야 합니다. 예를 들어 dt00.img 폴더를 그냥 dt00으로 쓰면 패치가 적용되지 않습니다.
다음 사진은 제 img 폴더를 캡쳐한 것입니다:
bin 파일의 파일명은 마음대로 지정해도 되지만, 반드시 지켜야 하는 룰이 하나 있습니다: 파일명엔 반드시 bin 번호가 들어 있어야 하며, 번호 앞엔 반드시 밑줄 문자 ('_')가 하나 있어야 합니다. 그리고, 파일명의 최대 글자 수는 63개입니다.
다음은 옳은 파일명의 예시입니다:
unknown_317.bin
goalnet_41.bin
ball_9.bin
unknow_9 (.bin 확장자는 생략 가능.)
music_11.adx (*.adx 확장자는 BGM과 사운드 파일에 쓰임.)
다음은 틀린 파일명의 예시입니다:
unnamed10.bin - bin 번호 앞에 밑줄 문자가 없으므로 PES가 읽지 못함.
face.bin - bin 번호가 없음.
기본적으로, AFS2FS 모듈은 어떠한 "특별 지정된" 기본 경로도 검색하지 않습니다. 대신 사용자는 반드시 AFS 루트를 분명하게 지정해야 합니다: config.txt의 [afs2fs] 섹션에서 사용자는 afs 루트의 경로를 지정할 수 있습니다. 이 경로는 하드 내의 어떤 위치라도 됩니다. 따라서 한 개 이상의 afs 루트를 만드는 것도 가능합니다. 같은 bin 번호를 가진 패치를 따로 실험해보고 싶을 때 매우 유용하죠. (해당 afs 루트만 삭제함으로써 간편하게 패치를 지울 수도 있고요.)
다음은 config.txt에 3개의 afs 루트를 설정한 예시입니다:
[afs2fs] img.dir = "c:\mypesfiles\root1" img.dir = "patch-RPL" img.dir = "afs-root3"
afs 루트의 순서는 매우 중요합니다. 왜냐하면 이는 같은 bin 번호를 가진 파일 사이에 일어날 수 있는 충돌을 해결하는 키노트이기 때문입니다. 예를 들어 두 번째 afs 루트 (patch-RPL)에 dt0b.img/ball_9.bin이 있고, 세 번째 afs 루트 (afs-root3)에 dt0b.img/superball_9.bin 있다고 가정해 봅시다. 비록 두 bin 파일의 이름은 서로 다르지만, 두 파일의 bin 번호가 같으므로 '충돌'이 일어나게 됩니다. 이때 킷서버에서는 "the lower root in the list wins."라는 룰을 적용해서 충돌을 해결합니다. 이 말의 뜻은 [afs2fs] 섹션에서 제일 아래에 있는 루트의 파일, 즉 dt0b.img/superball_9.bin 파일이 사용된다는 뜻입니다. [역자 주: 마지막에 읽어온 파일이 게임이 적용되는 이유는 킷서버의 알고리듬 때문입니다. 킷서버는 파일을 읽어올 때 두 파일의 bin 번호가 같으면 먼저 들어온 bin 파일을 밀어버리고 그 자리에 뒤에 읽어온 파일을 집어넣는 알고리듬을 사용하는 듯합니다.]
주의 사항: afs 루트는 "img" 폴더를 담은 폴더를 지칭하는 것이지 "img" 폴더 자체를 가리키는 것이 아님을 주의하세요. 다시 말해서 전체 경로가 c:\mypesfiles\root1\img"라면, config.txt에는 img.dir = "c:\mypesfiles\root1"라고 적어야 합니다.
게임에서 사용되는 음악을 AFS2FS를 사용해서 바꿀 때 afs 루트에 songs.txt 파일을 생성하고, 이를 사용해서 제목과 음악가를 변경할 수 있습니다.
다음은 songs.txt 파일 예시입니다:
# Song names map # 형식: <bin ID>, "<제목>", "<음악가>"# 제목, 음악가 항목엔 큰따옴표 (")가 필요합니다. 11, "Вне зоны доступа", "Город 312" 12, "I'm mad about you", "Sting"
중요: 여타 map 파일처럼, 킷서버에서 사용되는 텍스트 파일의 인코딩은 반드시 Utf-8이나 Unicode이어야 합니다. 위 예시처럼 비 라틴 어 문자 ('Вне зоны доступа')를 사용할 때 문자가 깨지지 않게 하기 위함입니다. (Latin-1 문자만 사용하는 경우 ANSI 인코딩도 가능합니다.)
볼 파일도 비슷합니다. 볼 파일을 afs 루트에 해당 폴더에 넣어주고 balls.txt 파일을 생성해서 afs 루트 안에 넣어주면 됩니다.
# Ball names map # 형식: <볼 번호>, "<이름>" # 제목, 음악가 항목엔 큰따옴표 (")가 필요합니다. # (볼 번호는 1에서 16까지입니다.) 8, "Nike-ball Blue" 9, "Мячик плохонький"
모든 afs 루트에 songs.txt와 balls.txt를 생성하는 것은 비효율적입니다. 각 afs 루트에 볼 이름과 음악 제목이 다른 음악 리스트와 볼 리스트를 생성할 수는 있겠지만, 이 파일들의 bin 번호는 같을 수 있으므로, 중복으로 말미암은 충돌 우려에 대해 킷서버는 섹션 4.3과 같은 방법을 적용해서 이 충돌을 해결하게 됩니다. 예를 들어 한 afs 루트에 11번 곡이 있고 다른 afs 루트에도 11번에 해당하는 곡이 있다면 config.txt의 리스트에 아래쪽에 있는 afs 루트의 곡이 읽혀집니다.
다음은 songs.txt와 balls.txt의 정확한 위치를 보여주는 사진입니다. 이 예시에서 afs 루트는 "root1"입니다:
kserv 모듈은 GDB ("Game content DataBase", 게임 컨텐츠 데이타베이스)의 유니폼을 게임중에 사용할 수 있게 해주는 모듈입니다. 이 모듈의 주된 기능은 dt0c.img의 유니폼 수 제한에 상관 없이 유니폼을 추가하고 관리할 수 있다는 점과, 모든 팀에 유니폼을 지정할 수 있다는 점입니다. 현재로써는 각 팀에 최대 2세트의 유니폼만 지정할 수 있지만, 향후 릴리즈에서는 여러 세트의 유니폼을 지정할 수 있도록 할 예정입니다.
Kserv 모듈은 PES 3를 위해 만든 최초의 킷서버 모듈입니다. 또한 Kitserver 이름의 유래이기도 합니다. 그 후 새로운 기능의 모듈들이 추가되면서 명칭 혼동을 피하기 위해 저는 전체 프로그램의 이름을 Kitserver로 지정하고, 유니폼을 지정하는 모듈의 이름을 kserv로 새롭게 지정했습니다.
GDB 안에는 유니폼을 저장하는 uni라는 폴더를 포함하고 있고, uni 폴더 안에는 map.txt이라는 매우 중요한 파일이 있습니다. 이 파일은 킷서버의 유니폼들을 각 팀에 지정하는데 쓰입니다. 각 팀은 0에서 340까지의 고유의 ID가 부여되어 있습니다. 따라서 각 팀에 유니폼을 지정하려면 map.txt 파일에 팀 ID와 폴더의 짝을 명시해야 합니다. 다음은 예시입니다:
# 이 파일은 각 폴더를 팀 ID에 따라 맵핑합니다. # 포멧: <팀 ID>,"<폴더 이름>" # Example: 23,"Russia" 23,"National/Russia" 10, "National/Germany" 7, "National/England"
GDB 기존의 폴더 구성은 여러 종류의 구성 방법 중 한 종류일 뿐임을 알고 계시기 바랍니다. GDB의 디폴트 폴더 구성은 "EPL"폴더에 모든 프리미어 리그 팀을 포함시키고, "National"에 모든 국가 대표 팀을 포함시키고, 다른 팀들도 리그에 따라 폴더로 나누는 방식입니다. 만약 이러한 구성이 복잡하다고 생각되면, map.txt 파일을 수정하고 사용자가 원하는 폴더 구성을 사용하면 됩니다. 유니폼 폴더 구성의 유연성은 map.txt 파일의 큰 장점 중 하나입니다.
이제 각 팀 폴더의 설정법을 살펴 봅시다. 위 예시의 map.txt를 예로 들겠습니다. ID가 23인 팀의 유니폼을 찾으려면 GDB\uni\National\Russia 폴더로 들어가야 합니다. 이 폴더에 23번 팀에 지정된 유니폼을 저장해 봅시다. 먼저 다음과 같이 폴더들을 만들어 줍시다: 선수의 홈 유니폼 폴더는 pa로, 어웨이 유니폼은 pb로 이름 지어줍니다. 기타 유니폼 폴더는 "p"로 시작하는 임의의 이름을 지정해 주면 됩니다. 저는 모든 기타 유니폼 폴더의 이름을 px- 접두사로 시작하는 것을 추천합니다. 예를 들어, px-redwhite 같이 말입니다. 골키퍼의 홈 유니폼 폴더는 ga로, 어웨이 유니폼은 gb으로 지어주면 됩니다. 골키퍼의 기타 유니폼 폴더 이름은 "g"로 시작하는 임의의 이름으로 지어주면 됩니다.
이제 유니폼 폴더 안을 살펴 봅시다. pa 폴더를 예시로 삼았습니다: 각 파일에 대한 설명은 다음 표를 참조하세요.
파일명 | 의미 | 포맷 형식 |
---|---|---|
kit.png | 유니폼 텍스쳐 | 1024x512 8-bit 팔레트 PNG 형식의 이미지 |
font.png | 폰트 텍스쳐: 유니폼 뒷면에 쓰이는 폰트 텍스쳐 | 256x64 8-bit나 4-bit 팔레트 PNG 형식의 이미지 |
numbers.png | 번호 텍스쳐: 유니폼 상의의 정면, 뒷면, 그리고 하의에 쓰이는 번호의 텍스쳐 | 512x256 8-bit나 4-bit 팔레트 PNG 형식의 이미지 |
config.txt | 유니폼 속성 파일 (다음 섹션에 설명) | .txt 문서 파일 (UTF-8 인코딩) |
유니폼 제작자는 참고하세요:
BMP 형식의 이미지는 더이상 지원하지 않습니다. PNG 형식으로 교체하세요.
config.txt는 속성 설정 파일입니다. 예전과 같이, 이 파일은 일반 텍스트 파일입니다. 사용자는 메모장이나 워드패드 등 문서 편집기 따위로 이 파일을 보거나 수정할 수 있습니다. 각 유니폼 폴더에는 이런 config.txt 파일이 하나씩 있어야 합니다. 다음은 pa 폴더의 config.txt 파일 예시입니다:
# GDB 관리 프로그램이 자동 생성한 속성 설정 파일입니다. collar = 0 front.number.show = 1 front.number.size = 8 front.number.x = 26 front.number.y = 18 main.color = A70623 model = 45 name.shape = type3 name.show = 1 name.size = 28 name.y = 24 number.size = 22 number.y = 11 shorts.color = A70623 shorts.number.location = left shorts.number.size = 14 shorts.number.x = 14 shorts.number.y = 6 sleeve.patch = 1 sleeve.patch.pos.long = 1 sleeve.patch.pos.short = 1
다음은 속성의 요약 표입니다:
속성 이름 | 의미 | 형식 | 예시 |
---|---|---|---|
collar | 칼라 타입 (모델마다 다른 칼라 값을 가집니다.) | 1/2/3/4 | collar = 1 |
description | 유니폼에 대한 설명입니다. 이 설명은 유니폼 선택 화면에 표시됩니다. 비슷하게 보이는 유니폼이 여러개 있을 때 어느 유니폼이 현재 선택되어 있는 것인지 구별하기에 용이합니다. | 큰따옴표로 닫힌 임의의 텍스트 | description = "Home red" |
front.number.show | 유니폼 상의 앞번호 표시 여부를 설정합니다: 1-보이기, 0-숨기기. (이 옵션은 국가 대표팀 유니폼에만 적용됩니다.) | 0|1 | front.number.show = 1 |
front.number.size | 앞번호의 폰트 크기 | 10 진수, 범위: 1-30. | front.number.size = 8 |
front.number.x | 앞번호의 수평 위치. | 10 진수, 범위: 0(왼쪽)-30(오른쪽) | front.number.x = 26 |
front.number.y | 앞번호의 수직 위치 | 10 진수,범위: 0(아래)-30(위) | front.number.y = 18 |
main.color / radar.color | 이 항목은 유니폼 상의의 주 색상을 지정합니다. 레이더 맵의 선수 색도 이 색으로 지정됩니다. 디폴트로 선택되는 유니폼도 이 색의 영향을 받습니다. (예전 버전과의 호환성을 위해 "radar.color"라는 이름도 지원합니다.) | 16 진수 형식으로 작성된 RRGGBB 색상 코드 (적색, 녹색, 청색) | main.color = A70623 radar.color = A70623 |
model | 상의의 3D 모델에 대한 식별자 | 10 진수 정수 | model = 45 |
name.show | 유니폼 상의에 선수 이름 표시 여부를 선택합니다: 1-보이기, 0-숨기기. | 0|1 | name.show = 1 |
name.shape | 선수 이름의 휘어짐 정도를 설정합니다. 이는 게임의 유니폼 편집 모드와 같은 효과를 가집니다. type1 - 직선, type2 - 조금 휘어짐, type3 - 다소 휘어짐, type4 - 매우 휘어짐. | type1|type2|type3|type4 | name.shape = type1 |
name.size | 선수 이름의 크기. | 10 진수, 범위: 1-35 | name.size = 28 |
name.y | 선수 이름의 수평 위치. | 10 진수, 범위: 0(아래)-30(위) | name.y = 24 |
number.size | 등번호의 크기 | 10 진수,범위: 0-35 | number.size = 22 |
number.y | 등번호의 수직 위치 | 10 진수, 범위: 0(아래)-30(위) | number.y = 11 |
shorts.color | 이 항목은 선수/골키퍼 하의의 색상을 지정합니다. 이 속성은 게임에서 선수 속바지의 색상이 정확한지 검사하여 하의 색상과 속바지 색상이 일치하도록 설정합니다. | 16 진수 형식으로 작성된 RRGGBB 색상 코드 (적색, 녹색, 청색) | shorts.color = A70623 |
shorts.number.location | 유니폼 하의에 있는 선수 번호의 위치. ("off"로 설정하면 번호를 표시하지 않습니다.) | left|right|off | shorts.number.location = left |
shorts.number.size | 유니폼 하의에 있는 선수 번호의 크기 | 10 진수, 범위: 1-35 | shorts.number.size = 14 |
shorts.number.x | 유니폼 하의에 있는 선수 번호의 수평 위치. | 10 진수, 범위: 0(왼쪽)-30(오른쪽) | shorts.number.x = 14 |
shorts.number.y | 유니폼 하의에 있는 선수 번호의 수직 위치 | 10 진수, 범위: 0(아래)-30(위) | shorts.number.y = 6 |
sleeve.patch | 소매 패치의 인덱스. 소매 패치는 dt0c.img/unknown_5879.bin에 저장되어 있습니다. 첫 번째 (0)은 대개 공백으로 놓습니다 | 10 진수, 범위: 0-19 | sleeve.patch = 0 |
sleeve.patch.pos.long | 긴 소매 패치의 위치. | 10 진수, 범위: 0-7 | sleeve.patch.pos.long = 1 |
sleeve.patch.pos.short | 짧은 소매 패치의 위치. | 10 진수, 범위: 0-7 | sleeve.patch.pos.short = 1 |
기본적으로, "description" 속성은 '사용하기' 상태로 되어 있습니다. 하지만 원한다면 '사용하지 않음'으로 바꿀수 있습니다. 주 설정 파일을 열고 [kserv] 섹션에 다음 문구를 추가하세요:
[kserv] use.description = 0
LOD 믹서는 PES 2010 그래픽 엔진을 튜닝하는데 쓰이는 모듈입니다.
아래에서 소개할 기능들은 모두 킷서버의 주 설정 파일 (kitserver\config.txt)에서 수동으로 설정할 수 있지만, 킷서버의 설정 도구로도 설정할 수 있습니다. (config.exe).
대다수 LCD 모니터의 화면비는 통용비율인 4:3이나 16:9가 아닌 것이 많습니다. 보통, 16:10 정도의 화면비가 많이 쓰이고 심지어는 화면비가 16:9.6인 모니터도 있습니다. [역자 주: 제 모니터의 화면비는 85:48입니다. -_-;] 이러한 모니터에서 PES를 실행하면 그래픽이 깨집니다: 선수들이 좌우나 위아래로 늘어지고, 공이 타원형으로 뭉개지게 되죠. PES 2010에서 코나미는 또다시 LB 옵션을 사용해서 화면비가 맞지 않는 모니터에 대한 해결책을 내놓았습니다. 그러나 LB 옵션을 사용하면 고정 해상도인 게임 화면이 모니터 비율에 고정 종횡비 스케일링을 하므로 좌우나 위아래로 검은 테두리가 생깁니다. 그러나 킷서버의 화면비 교정 기능 (aspect-ratio correction feature)을 사용하면 풀 해상도의 게임을 즐길 수 있습니다.
LOD 믹서를 사용해서 화면비를 사용자가 원하는 대로 지정할 수 있습니다. LOD 믹서가 게임 실행 시 자동으로 화면비와 해상도를 조정하게 하거나, 아니면 사용자가 직접 설정하는 것 중 하나를 골라서 하면 됩니다. 자동 모드는 꽤나 정확하게 비율을 계산하지만, 어떤 때에는 사용자가 수동으로 설정해야 할 때가 있습니다. 예를 들어, 그래픽 카드가 안 좋은 관계로 와이드 모니터에서 800x600 해상도로 해야만 할 때 자동 모드는 화면비를 4:3으로 지정하기 때문에 게임 화면이 좌우로 늘어집니다. 이때, 화면비를 16:10 (와이드)으로 수동 설정하면 컴퓨터는 이 해상도를 와이드로 인식하게 되어 정상적인 화면비로 게임을 즐길 수 있습니다.
창 모드일 때 사용자는 임의의 해상도를 지정할 수 있습니다. 심지어 1234x487 같은 해상도에서도 게임은 정상 작동합니다. 그러나 이런 해상도는 성능상의 문제를 유발할 수 있으니 조심해야 합니다. 또한 풀 스크린에서의 임의 해상도 설정도 가능하지만, 사용자의 그래픽 카드가 그 해상도를 풀 스크린에서 지원해야만 작동합니다. 만약 사용자가 실수로 지원하지 않는 풀 스크린 해상도에서 게임을 실행하게 되면 게임은 창 모드로 실행됩니다.
이 기능은 여럿이서 리그나 컵 대회를 하고 싶을 때 유용합니다. 원래 PES 2010은 리그나 컵 대회에서 플레이어가 양 팀을 다 컨트롤 못하게 했는데, 컨트롤러 체크를 막아버리면 이 제한은 없어져서 사용자가 P1 vs. COM이나 P2 vs. COM인 상황에서 COM팀을 마음대로 조종할 수 있게 합니다. 사용자 둘이서 같은 팀을 골라서 해도 되고, 양 팀을 골라서 대전을 즐길 수 있습니다. 물론 리그나 컵 대회에서 "관객 (Spectator)" 모드로 시합을 구경할 수도 있습니다.
컨트롤러 체크의 부수적 기능으로서 트레이닝 모드에서 수비진이나 골키퍼만 골라서 훈련할 수 있다는 것을 꼽을 수 있겠습니다. [역자 주: 트레이닝 모드에서 양 팀을 선택해서 대전을 하려고 할때 에러가 나고 게임이 꺼진다는 보고가 있습니다.] 패널티 킥 선방 연습에 큰 도움이 되겠죠.
LOD (Level-Of-Detail) 알고리듬은 오브젝트와 관찰자 간 거리의 변화에 따라 오브젝트의 디테일을 변화시켜 이미지 퀄리티를 높이고 렌더링 속도를 증가시켜주는 그래픽 처리 기술입니다. 기본 원리는 이렇습니다: 오브젝트가 화면에 가까울 때에는 매우 디테일한 이미지를 보여주고, 오브젝트가 화면에서 멀어지면 점차 디테일이 떨어지는 이미지로 원본 이미지를 교체해가는 방식입니다. 이러한 방식을 쓰는 이유는 적은 폴리곤 수 (low-poly)의 오브젝트를 렌더링하는 것이 더욱 빠르고, 작은 이미지이므로 원본과의 차이를 줄여주며, 계단현상이 더욱 줄어들기 때문입니다. 적어도 이론적으로는 이러한 방식으로 구현하는 것이 맞습니다.
그러나 불행하게도 PES 시리즈는 항상 로우 폴리 모델로 변환하는 거리가 터무니없이 가까운 LOD 설정을 고수해 왔습니다. 예를 들자면, PES 4 - PES 6에서 대머리가 아닌데 대머리로 변해버린 선수들이 보이거나 주름 하나 없이 빳빳하게 펴져 버린 유니폼 등과, PES 2008 - PES 2010에서는 선수들의 얼굴이 카메라에서 멀어지기만 하면 죄다 똑같아져 버리는 현상을 들 수 있겠습니다.
이러한 이유로, 높은 사양의 컴퓨터를 가진 사용자는 LOD를 조절해서라도 좀 더 나은 이미지 품질을 얻기를 희망하겠지요. (애니메이션 품질도 영향을 받는 것 같습니다.) 이런 경우에는 LOD 슬라이더를 오른쪽으로 옮기면 됩니다.
물론 정반대의 상황으로 사용자의 컴퓨터가 60프레임도 뽑아내지 못해 게임에 지장이 있는 낮은 사양의 컴퓨터라면, LOD 슬라이더를 좌측으로 옮겨서 로우 폴리 모델로 변환하는 거리를 늘려볼 수 있습니다. 이 경우에는 프레임이 증가하겠지만, 그 대신에 이미지 품질이 떨어집니다. 고로, 프레임을 높이려면 LOD 슬라이더를 왼쪽으로 옮기면 됩니다.
lodmixer 모듈은 config.exe에 나와있는 옵션외에 6종류의 LOD 옵션을 더 지원합니다. 하지만 이 옵션들은 설정 도구 (Configuration tool)인 config.exe에는 나와있지 않습니다. 이 LOD 설정들은 "active player"와 관련이 있는데, "active player"는 프리킥과 코너킥 시에 사용자가 컨트롤하는 활성화된 선수를 가리킵니다. 유니폼 선택 화면이나 편집 모드에서도 "Active player" 옵션은 효과를 발휘합니다.
사실상, 설정 도구에 이 LOD 옵션의 슬라이더를 추가하지 않은 이유는 본인의 귀차니즘 때문입니다. :) 그리고 이 옵션들을 설정 도구에 어느 부분에 넣어야 할지 고민도 되었구요. (설정 도구가 너무 늘어지지 말입니다.) 비록 설정 도구에는 없지만, config.txt의 [lodmixer] 섹션에서 수동으로 이 설정들을 바꿀 수 있습니다. 사용자가 이 6개 설정을 전부 사용하지는 않겠지만 lod.active.player.fk.s1 이것 하나는 꽤나 편리한 설정입니다. 그래서 저는 이 설정을 config-sample.txt에 추가하고 값을 0.010로 지정해놓았습니다. 이 값은 프리킥을 찰 때 선수를 최대한으로 디테일하게 나타내는 값입니다.
다음은 "active player" LOD의 기본값 목록입니다. 자유롭게 실험해보시기 바랍니다.
lod.active.player.ck.s1 = 0.010 lod.active.player.ck.s2 = 0.010 lod.active.player.ck.s3 = 0.010 lod.active.player.fk.s1 = 100.0 lod.active.player.fk.s2 = 0.010 lod.active.player.fk.s3 = 0.010
결론부터 말하자면 각 사용자에게 적합한 LOD 설정을 찾아내기 위해서는 여러 차례의 시도를 거쳐야 합니다. (만약 이것이 쉬웠다면 이 '최적의 LOD 설정 찾아내기'라는 섹션을 쓸 필요도 없었을 것입니다.) 참고로 LOD 설정에 도움이 될 몇 가지 LOD 설정에 대한 오해를 미리 짚고 넘어가 보기로 하겠습니다.
오해 #1: 슬라이더를 전부 오른쪽으로 옮기면 가장 좋은 이미지 품질을 얻을 수 있다?
아닙니다. 물론 사용자는 어느 시점에서나 가장 디테일한 모델을 볼 수 있겠지만, 그것이 꼭 가장 좋은 이미지 품질을 뜻하는 것은 아닙니다. 먼 거리에서 지나치게 디테일한 모델은 에일리어싱 (aliasing: 계단 현상, 깨진 패턴)현상으로 인해 오히려 덜 디테일한 모델보다 시각적 품질이 떨어집니다.
오해 #2: 내 그래픽 카드는 아주 좋으므로 LOD 설정을 아무렇게나 해도 좋을 것이다?
이것 역시 틀린 말입니다. 요즘 게임들은 매우 복잡하고 무거워서 실행 시 대부분의 컴퓨터 자원을 점유합니다. 게임 중 GPU와 CPU는 렌더링과 물리 엔진, 그리고 인공지능과 논리 연산을 위해 풀 로드 상태에 들어갑니다. 또한 PES를 매끄럽게 플레이하기 위해 보장되어야 하는 최소한의 프레임 수치는 60프레임입니다. 즉 컴퓨터가 스크린 상의 모든 활성 오브젝트들을 1/60초 마다 한 번씩 렌더링하면서 다른 작업을 수행할 수 있는 여유 자원까지 남겨야 한다는 뜻이죠. (물리학 관점에서 말하자면, 프레임 수치와 같은 속도로 렌더링해야만 이미지 품질이 영향을 받지 않습니다.) 따라서 많은 오브젝트들로 인해 증가하는 렌더링 시간을 줄이기 위해서 LOD가 최적화 기술로 쓰입니다. 고로 LOD 설정의 슬라이더를 전부 우측으로 옮긴다는 것은 LOD 알고리듬을 쓰지 않고 GPU가 타버리든지 말든지 모든 오브젝트를 풀 디테일로 렌더링하라고 지시하는 것과 같습니다. 그다지 즐거운 예시는 아니지만 이해하기에는 쉬운 예시죠.
이제 다시 본론으로 돌아와서, 슬라이더로 원하는 효과를 얻고 프레임 수치 또한 유지하는 몇 가지 방법을 증상을 통해 알아봅시다:
위 예시는 몇몇 상황에 대한 가정입니다. 따라서 사용자가 게임 중에 겪는 비슷한 증상도 역시 LOD 설정을 통해 해결할 수 있습니다. 그러나 무작정 최고 품질로 설정하면 안됩니다. 풀 디테일 모델로 설정하면 이미지 품질이 떨어질 뿐만 아니라 시스템에 과부하가 걸려서 자가 보호를 위해 셧다운되거나 프레임 범핑이 일어납니다. 대다수의 상황에는 한두 개의 슬라이더만 조절하면 사용자가 원하는 효과를 얻을 수 있습니다.
코나미 제품 매니저에게 들은 바로는 PES 개발 4년 차부터 카메라 각도를 조절하는 옵션을 제거했다고 합니다. (이 기능은 PES 3에서 PES 6까지 있었고 PES 2008에서부터 사라졌지요.) 하지만 카메라 각도 조절에 관한 알고리듬은 여전히 게임 실행 파일에 남아있어서, 카메라 모듈을 통해서 이를 조절할 수 있습니다. 표준치는 0 - 9사이지만, 더 큰 수치도 설정할 수 있습니다. 저는 이 수치를 30으로 해놓고 게임을 즐깁니다.
0에서 2^32-1 사이의 값을 조절할 수 있으며, 20, 40, 100 같은 각도는 새로운 게임 경험과 즐거움을 가져다줍니다. :)
킷서버 설정 도구 (config.exe)를 사용하거나 아니면 수동으로 config.txt를 다음과 같이 편집할 수 있습니다:
[camera] angle = 30
이 자그마한 모듈을 사용하면 시합 시간을 표준 시합 시간인 90분으로 설정할 수도 있고, 1에서 255 사이의 어떤 수치로도 설정 가능합니다. 90분을 넘어서면 시간 흐름이 정상 시합 시간보다 느려지게 되며 [역자 주: 게임 시간의 1초가 현실에서의 1초보다 느려진다는 뜻입니다], 반대로 1분으로 설정하면 매우 극단적인 경험을 할 수 있습니다. 볼을 뺏어 오기도 전에 시합이 종료될 수도 있기 때문에, 1분 안에 완벽하게 슛 기회를 만들어서 득점에 성공해야 합니다.
시합 시간을 설정하려면 match.time에서 다음과 같이 설정합니다:
[time] match.time = 90
시합 페이스를 모든 게이머가 만족하도록 설정하는 것은 쉽지 않습니다. 아니, 현실의 축구 시합을 정확하게 시뮬레이트 하는 것이 쉽지 않은 일이라고 해야 할 겁니다. 게임 속도는 수많은 요소가 작용하고 특히 하드웨어의 뒷받침에 따라 달라집니다. 개인적으로는 코나미가 잘 만들었다고 생각하지만 많은 사람들이 게임이 너무 빠르다고 불평하더군요. [역자 주: 한국 사람들은 대부분 느리다고 불평하지요. 왠지 '빨리빨리'의 국민성이 반영되는 부분 같습니다. -_-;]
게임 속도를 느리게 하는 기술은 이미 여럿 존재합니다. 그 기술들 중 완벽한 것은 없지만 어느 정도 효과는 가지고 있습니다. 킷서버의 게임 속도 모듈은 기본적으로 게임 시간의 속도를 낮춰서 게임을 느려지게 하는 기술을 사용하고 있습니다. 이 방법은 이상적인 해결책이 아니지만, 적절하게만 사용한다면 게임을 조금 더 현실적으로, 조금 더 편하게, 조금 더 매끄럽게 즐길 수 있습니다. 이 방법이 만능이라고 생각하지는 마세요. 이 방법은 사용자에게 도움이 되지만, 사용자의 모든 요구를 충족시키지는 못합니다. :) (한 부작용을 예로 들자면, 시합 시간을 10분으로 맞춰놓고 게임 속도를 0.9로 맞춰놓으면 실제 시합 시간은 대략 11.1분이 됩니다.)
속도를 느리게 할 수 있다면 물론 속도를 높일 수도 있겠죠. 설정 도구의 'Game Speed' 슬라이더로 간편하게 게임 속도를 조절하세요. 기본값인 1.0은 정상 속도이며, 1.0보다 작으면 게임 속도가 느려지고, 1.0보다 크면 게임 속도가 빨라집니다. 0.7이하로는 설정하지 마세요. BGM과 해설이 제대로 들리지 않습니다. 또한 2.5이상으로도 설정하지 마세요. 2.5를 넘어서면 이미 그건 게임이 아니라 막장입니다.
config.txt에서 수동으로 게임 속도를 설정할 수 있습니다. 다음을 참조하세요:
[speeder] count.factor = 0.95
프로그래밍: juce와 Robbie
특별 감사 명단: England와 Energia - 1.1과 1.2 EXE 지원, PATe.Arminia - 유니폼 속성 지원, Stelios와 ninuzzu - 본인이 kserv 모듈을 제작할 때 큰 도움이 된 킷 리링크 툴 지원, Ariel - 킷서버 로고 제작.
베타 테스터: Evo-Web과 PesWe.com 포럼의 멤버와 게스트들.
afs2fs 모듈의 아이디어 제공자: Str@teG
Evo-Web forums과 PesWe.com forums의 유저들이 제공한 수많은 아이디어들
PesWe.com 관리자와 PesWe.com forums의 멤버들에게 특별한 감사의 말을 전합니다.
킷서버는 BSD 라이센스를 준수합니다: license.txt