본문 바로가기

쓰기

필터들 중에서 가장 빈번하게 사용되면서도 완벽하게 사용되지 않는 필터인 DenyWord에 대해서 설명해보겠습니다.

아쉽게도 일반 사용자에게는 별로 도움이 되지 않을거라고 생각하니 BackSpace를 꾸욱!

1. DenyWord의 용도는?


기본적으로 게임 내에서 AT코드를 뽑아 낼 수 있는 위치를 도표로 보자면
deny2.png
대략 상식적인 선(....)에서는 이렇게 3가지 정도로 나눌 수 있습니다.

각각을 분석해 보자면

1번. 대사 출력 지점 코드

화면에 대사가 뿌려지기 직전에 텍스트가 흐르는 지점을 잡을 수 있습니다.
이쪽은 찾기도 상당히 쉽고, 아랄 디버거가 찾는 지점도 대부분 이쪽 코드입니다.
다만, 한글자씩 출력되는 경우 또는 폰트 캐싱의 경우에는 제대로 문장을 뽑아 낼 수 없고,
전체 문장이 아니라 한줄씩 쪼개져서 들어오는 경우가 꽤 많으므로, 번역률이 조금 낮은편입니다.

다만 이부분에서 덤으로 '시스템 문자'(세이브,로드)등과 같은 경우를 번역할 수 있는 경우도 있습니다.

2번. 대사 코드

이부분에는 대사 뿐만 아니라 문자 출력에 부가적인 기능 (딜레이, 강조) 등등이 함께 포함된 지점입니다.
거의 모든 경우에 대사가 쪼개지지 않고 온전히 한 덩어리로 오는 경우가 많아서 제대로 번역될 경우
최고의 번역률을 보여주지만, 특수 코드들이 섞여 있기 때문에 번역하기엔 껄끄러운 경우가 종종 생깁니다.

3번. 스크립트 원본

게임의 진행에 대해 적인 스크립트 파일이 흐르는 지점 자체를 잡는 지점입니다.
이부분에는 대사뿐만 아니라 게임을 진행하는데 쓰이는 모든 코드들이 모두 뒤섞여 있습니다.
게임에 사용되는 거의 모든 글자들이 다 번역되지만,
게임의 안정성은 당연히 장담할수 없습니다 -_-;;

4번. 엔진 문자열 복사 함수

실제 1,2,3번을 처리하기 위해서는 게임 엔진 내에서 메모리 복사를 수행하게 되는데,
이건 그 복사하는 지점을 잡는 경우입니다.
이 경우에는 대사 뿐만 아니라 2번 3번에서 볼 수 있었던 잡다한 옵션 함수들과
직접적으로 게임 내부 데이터가 모두 흐르기 때문에
안정성이 '가장' 낮습니다.
그러나 꼭 이 지점을 잡아야 하는 경우가 생깁니다.[...]

이중에서 1번의 경우에는 크게 문제가 없겠지만
2번 3번 4번의 경우에는 함수인가 단순히 문자열인가를 구분해서 선택적으로 번역할 필요가 생깁니다.

이것을 패턴으로 구분해서 번역/미번역 처리를 해주는 필터가 바로 DenyWord입니다.

2. DenyWord 작동 방식


DenyWord는 다음과 같은 이미지로 간략히 설명할 수 있습니다.
deny.png
전달되는 텍스트에서 패턴을 검사한 다음에 함수임이 판단되면 '무조건 원문을 되돌려보냅니다'
이 경우 DenyWord 앞에 어느정도 처리된 내용이 있다고 할지라도 (특수 문자가 제거되었던가 하는)
Hook플러그인에서 들어온 가장 초기의 원문 자료로 되돌려 보내며, 또한 다음 필터, 플러그인으로 데이터를
차단해서 쓸모없는 번역 작업을 막습니다.

물론 함수가 아닌것으로 판명되었다면 아무 작업도 하지 않습니다.

3. DenyWord 검사 패턴


DenyWord에서는 크게 4가지 방식으로 해당 텍스트의 함수 여부를 검사합니다.

(1) 문자열에서 반각 문자의 비율

일본에서는 알파벳, 숫자도 전각(2Byte)로 표현하는 경우가 일반적이기 때문에
반각(1Byte) 문자가 들어오는 경우, 대사가 아니라 시스템 문자, 함수일 가능성이 있습니다.
따라서 문자열에서 반각 문자의 수가 얼마나 되는지를 우선적으로 검사합니다.

아무 옵션이 주어져 있지 않은 경우 문자열이 모두 1Byte 문자로 구성되어있을 경우 반환합니다.
물론 이 경우는 번역해도 결과물은 같지만, 실제 번역기를 거쳐오는 동안에 시간 소모를 줄이고
DumpText를 통해 대사를 보는 경우에 대사부분만을 볼 수 있는 장점이 있어서 자주 사용됩니다.

그 외에 실제 일본어가 어느정도 섞여있는 경우에도 옵션 설정을 통해서 걸러낼 수 있습니다.

(2) 문자열의 길이

실제 번역되는 문장 뿐만 아니라 출력 등과 같은 용도로 한글자씩 쓰레기 문자가 들어오는 경우가 있습니다.
이 경우를 걸러내기 위해 문자열 길이를 체크할 수 있습니다.
이 옵션이 필요한 경우는 많지 않고, 쓰이더라도 대부분 2 또는 3 정도의 값을 주게됩니다.

(3) Deny - Allow

전체 텍스트에 Deny에 지정해놓은 문자열이 발견되었을 경우 함수로 판단하고
원문을 반환하는 경우입니다.

Deny에
 [DENY]
Data1=.dat
Data2=:
이렇게 지정되어 있을때,
オプニング.dat
가 지나가게 되면 함수로 판단하고 원문을 반환합니다.

그러나 이렇게 Deny만을 지정했을때는 Deny패턴에 걸려서
번역되어야 할 문장이 번역되지 않는 경우가 발생 할 수 있습니다
 [DENY]
Data1=ASD
Data2=/
Data3=[LV:
Data4=[---]
로 설정된 경우에

レベルが[42/44]に成りました!
란 문장이 지나간다고 할때, 이 문장은 분명 번역되어야 할건데
기호에 걸려서 번역이 되지 않게 됩니다.
이때

 [ALLOW]
Data1=レベル
를 추가해 주게 되면,

Deny 패턴에 걸리게 되더라도 그 문장 내에 レベル란 단어가 보이게 되면
정상적인 대사로 처리되어 번역되게 됩니다.


(4) Exact

텍스트가 Exact와 지정된 문자열과 정확히 일치할 경우 함수로 판단하고 원문을 반환합니다.
게임 함수 처리를 Deny - Allow로 할 수 없고 Exact로 해야하는 경우에
DenyWord 작업은 미칠듯한 노가다로 정평이 나있습니다.[=_=]
Exact가 다음과 같이 지정되어 있을 경우,
 [EXACT]
Data1=ロコ
Data2=共有データ
Data3=SaveData
Data4=最初
最初 란 내용이 지나가면 원문이 반환됩니다.

주의하셔야 할 점은, 最初가 들어있는 문장은 그대로 번역 처리 되므로,
이경우엔 Deny를 사용해야 한다는 점입니다.


4. DenyWord.ini 파일 작성법


DenyWord에서 Deny,Allow,Exact를 설정하기 위해서는
직접 DenyWord.ini를 작성해 주셔야합니다.

DenyWord.ini를 작성하기 위해서는 다음처럼 해주시면 됩니다.

우선 DenyWord.ini파일은 게임폴더ATData 폴더에 두어야 하고
파일의 인코딩은 Shift-JIS으로 해야하니 실수하지 않도록 주의해 주세요.
(Shift-JIS 파일을 편집하기 위해서는 EmEditor http://www.aralgood.com/zbxe/46838 를 추천드립니다)

그리고 내용에 [Deny] [Allow] [Exact]중에 하나를 입력 하고 난 다음에
그것에 해당하는 문자열을
Data번호=텍스트 순으로 1부터 차례대로 이어서 써줍니다.
같은 종류를 입력할 때 빈줄이 있을경우 정상적으로 인식되지 않으니 붙여서 써주세요!

ini 파일 특성상 ;로 주석을 달 수 있습니다....만 쓰일일은 별로 없겠죠 :)

파일의 구조는 적절한 DenyWord.ini 파일 ( http://www.aralgood.com/zbxe/359139 전국란스)를 첨부하니
확인해보시면 되겠습니다.

*. 참고

DenyWord는 함수와 대사가 따로따로 들어오는 경우에 사용할 수 있는 필터입니다.
한 줄에 함수와 대사가 같이 들어오는 경우에는 FixLine이나 CmdFilter를 같이 사용해야합니다.

DenyWord '디나이 워드'라고 읽습니다.

다른 필터 강의는 태그:필터강의 에서 확인할 수 있습니다.

일단 다 쓰긴 했습니다만, 뭔가 아쉬운 점이 많네요.
설명이 부족한 부분이나 잘못 서술한 부분이 있으면 댓글로 달아주시면 감사하겠습니다.

월희

2009.03.18
18:14:08
선리플 후감상  님 굳....  쨩  사랑해여 ~♡

Doctor

2009.03.18
18:21:21
수고하셨습니다.
농땡이의 댓가를 치는군요[도주]

Hide_D

2009.03.18
18:22:29
농땡이고 뭐고

애초에 이거 제가 여기까지 해야할 필요는 눈꼽만큼도 없습니다만 -_-

프군

2009.03.18
18:31:29
수고하셨습니다~ 몇번 더 읽으면서 연습해봐야 확실히 익겠네여

astral

2009.03.18
22:39:22
멋지네요. +_+ 이글만 읽으면 DENYWORD 사용법에 대해 완벽히 이해가는 듯한 느낌이네여!!
추가적으로 아랄이 어떤방식으로 대사를 한글화하는지, AT코드를 뽑아내는 지점에 대해서도 알기 쉽게 써주셨고...

감사합니다~

북극

2009.03.18
23:17:22
수고하셨습니다 +_+ 천천히 봐야겠네요

가장 도움이 되는 것중 하나임 디나이 !! +_ +

아그런데 .. DENY 와 FIXLINE 의 DENY(맞나 ? ) 같은건가요 ?

Hide_D

2009.03.19
01:16:40
아뇨 삭제가 아니라
그냥 '번역하지 않고 반환'이 목적입니다.

Exact와 Deny의 비교는 맞습니다. 정확 : 적은거 포함입니다.

북극

2009.03.19
00:13:06
허억 ... 없었군요 ㅈㅅ ~

있는줄 알았어요  + + + 좋은 강좌 감사합니다 +_+ ~

아그런데 EXACT 랑 DENY 에서 둘다 함수 반환이라고 했는데 ..

EXACT 와 DENY 결국 둘다 삭제인가요 ..?

정확하게 입력해야하는것 (EXACT)와 적은것을 포함하는건 다 삭제하는(DENY)것의 차이인가요 ?

Hide_D

2009.03.18
23:51:20
 FixLine에 Deny가 있던가요 -_-??

루루슈 란펠지

2009.03.19
02:10:10
수고스~0_0/

순수앜

2009.03.19
05:40:58
수고하셨어요~~~~~~~~~

평군

2009.03.25
22:56:23
그림의 위력!!
List of Articles
번호 제목 글쓴이 조회 수sort 추천 수 날짜 최근 수정일
공지 아랄트랜스로 게임하기 앞서 기본 셋팅 확인하기! [4] file TwoComet 40503   2012-08-30 2014-02-26 20:12
공지 아랄트랜스 - 초보자 가이드 [94] file Hide_D 319363   2008-07-16 2015-02-27 18:02
공지 모든 플러그인, 필터 안내 ('09.03.13) [20] Hide_D 191389   2008-10-31 2009-03-13 23:48
공지 아랄트랜스 0.2 - 초보자 가이드 [109] file 아랄 505863   2008-07-16 2013-12-31 09:32
137 진연희무쌍 실행 오류 해결법 [2] 야마네코 23034   2008-12-29 2009-01-03 21:34
어플로 설치후 알파롬 패치후 어플로 실행했는데 화면이 하얗게 되면서 바로 팅기시는분. 다이렉트문제다 하는 분들도 계신데 다른 해결법이 하나 나왔네요. 저도 이렇게 해서 실행 성공했구요. 귀차니즘 미연시 연방 '찍찍냐엉'님의 올려주신 글에 나온 내용...  
136 코드파인드를 위한 기초 지식. [13] G2m 22909   2010-02-01 2013-04-13 16:47
코드파인드를 위한 기초지식 Vol. 1 기계어 컴퓨터가 이해할 수 있는 유일한 언어. 사람이 짠 프로그램 소스는 일종의 번역기에 의하여 기계어로 번역되어지고 컴퓨터는 이것을 실행하게 된다. 프로그램 일반적으로는 함수의 집합체라고 한다. 여기서 말하는 ...  
135 비스타 AralContext 먹이기 .. [2] 북극 22711   2009-03-01 2009-03-19 14:45
... 의외로 이거 모르시는분들이 좀 되더군여 귀찮지만 할일도 별로 없으니 한번 써봅니다 걍 글로만 적을께여 dll 파일은 system32 에 처넣어 주세염 그리고 인스톨에 관리자의 권한을 먹여주시면 되염 관리자의 권한이 없다거나 안먹힌다는분들 사랑스런 CMD...  
134 아랄2 후킹후 무응답/작동중지로 강제종료/튕김 현상 해결 정리. [3] file uwle 22671   2011-03-16 2014-03-22 23:11
 
133 KONJ 사용법 (한윈에서 실행안되는 게임 실행 프로그램) [11] file MILD 22480   2008-07-16 2009-10-23 16:14
 
132 AT Code를 선택하거나 ezTransXp 선택시 튕길 때 [2] file 처음처럼만 22065   2008-12-12 2010-04-29 16:40
 
131 win7 사용자는 필독 AT코드 적용시 에러 해결방법 [1] 아비누스 22055   2011-05-16 2011-05-16 11:50
아주 짧지만 강력한 팁일수도 있고 아닐수도 있지만 분명 이문제로 사용하지 못하시는분이 있을겁니다. 일단 게임을 실행 시키고 아랄트랜스로 후킹을 합니다. 그리고 AT코드를 입력시키고 확인은 아직 누르지 마시고 한글을 일본 문자셋으로 변환, 타이틀 및 ...  
130 FrigateBird님의 AT코드 동영상 강좌! #01 [17] Hide_D 21079   2009-12-02 2020-12-09 21:02
FrigateBird님이 동영상에 손수 자막까지 붙여주신 AT코드 동영상 강좌입니다. 이번 강좌에 사용된 게임은 ミリオムといっしょ 입니다. 앞으로 좀더 많은 게임들의 강좌가 있길 기대해봅니다.  
129 공주사냥 던전 마이스터 (히메가리) 설치 방법 키리아스 21038   2010-01-16 2010-01-16 16:01
CD 이미지를 툴을 이용해서 디스크에 집어넣고, Setup을 어플로케일로 실행하는건 아시겠지요. 계정이 영문이 아니면 안된다고 합니다. 저는 설치에 별다른 문제는 없었어요. 문제는 패치인데. 패치와 확장팩이 자동 설치이기 때문에, 그냥 실행하면 1152 오류...  
128 유니코드 변경법 [5] file MILD 20457   2008-08-01 2009-12-05 23:06
 
127 한국 IP 차단된 일본 사이트 접속하는 방법 [8] 키리아스 19694   2010-08-13 2012-05-18 11:24
http://www.aliveproxy.com/high-anonymity-proxy-list/ 위 사이트에 접속하면 IP:Port Host name 라고 적힌 밑에 255.255.255.255 : 80AA 이런 식으로 주소와 포트가 적혀있습니다. 익스플로러 도구 모음에서 도구 -> 인터넷 옵션 -> 연결 -> LAN 설정에서 프...  
126 코드파인드를 위한 기초 지식(2) [29] file G2m 18799   2010-02-01 2011-11-08 00:55
 
125 아랄 트랜스 번역률이 떨어져요. file 처음처럼만 18545   2008-12-14 2011-06-06 23:31
 
124 프리즘 아크 ARAL로 안되시던분 로렌츠 17830   2009-02-10 2009-02-10 01:54
음 일단은 저는 이 방법이 됬습니다만 다른분들은 어쩔지는 모르겠습니다. 그렇지만 하고나서 되니깐 한번 여기 끄적거려봅니다 일단 제 문제였던 visual runtime c++ error program:c:program filepajamasp_arkp_ark.exe abnormal program termination 이렇게...  
123 花と蛇 설치 대머리소년친구 17778   2009-02-16 2009-02-16 18:49
좀 오래되기는 했지만 그래도 모르시는분을위해서 -ㅅ-;; 꽃과뱀 설치시 C에다 설치를하건 다른 드라이브에 설치를 하건 1.4로 설치하던 2로 설치하던 마지막에 에러가떠서 설치못한분들은 "국가 및 언어 옵션" << 두번 클릭해주시고 첫 번째탭 "국가별 옵션" ...  
122 FrigateBird님의 AT코드 동영상 강좌! #02 [8] Hide_D 17443   2009-12-03 2012-08-15 15:53
FrigateBird님이 동영상에 손수 자막까지 붙여주신 AT코드 동영상 강좌! 그 두번째 시간입니다. 이번 강좌에 사용된 게임은 マジカライド에서는 메모리 지점에서부터 실제 후킹 지점까지 계산을 하는 과정을 집중적으로 다루고 있습니다. AT코드 찾기에 도전...  
121 아랄트랜스 강제종료에 대하여 [3] 지나가는 이 16477   2008-08-25 2009-03-23 18:33
아랄트랜스를 사용중 처음 시작 할 때부터 강제종료가 되는데 아랄트랜스를 안 쓸때 프로그램이 정상적으로 돌아간다면 이방법을 시 행 해도 좋을 것 같다. 일단 원인이 되는 프로그램은 fph.exe 라는 프로그램으로 정부기관 일부 보안 프로그램으로 설치된 프...  
120 이지 트랜스 경로를 찾을 때 [1] file 처음처럼만 16214   2008-12-12 2009-04-16 00:51
 
119 대악사(大惡司;DaiAkuji) 부하 팁 [5] file 4znPrid3 15064   2009-07-14 2009-08-12 11:37
 
118 클립보드로 복사된 내용을 ClipHooker EX! 로 깨짐 없이 보는법 [6] file Hide_D君 14672   2008-06-19 2008-12-23 17:32