EUD란 무엇인가

[1] EUD?
EUD란 Extended Unit Death를 뜻하는데, 쉽게 설명하면 Death 트리거에서 기존의 유닛 번호 이상으로 넣었을 때의 결과가 설정과 달리 나타나던 것을 이용하는 것이다.
여기서 먼저 트리거가 어디서 정보를 이끌어 오고, 수정하는 지를 알면 EUD를 보다 쉽게 이해할 수 있다.
starcraft.exe는 실행될 때, install.exe/stardat.mpq/broodat.mpq/patch_rt.mpq/battle.snp/standard.snp 등의 파일을 불러오는데 여기서 파일의 정보와 현재 상태가 메모리에 저장된다. 바로 이 메모리를 감지하고 바꾸는 기술을 쓸 수 있는 일종의 '구멍'이 EUD인 셈이다. 트리거 역시 메모리에 기록된 정보를 불러들여 수정하는 것이고, 맵핵 역시 마찬가지이다. 블리자드의 패치에 의해 메모리의 주소가 바뀌면 못 쓰게 되기도 하지만 대개 순서는 같고 시작하는 위치만 달라지는 것이 보통이다.
그런데 EUD가 악성핵이라고 불릴 수 없는 이유는 그것이 건드릴 수 있는 영역에는 한계가 있기 때문이다. 현재, 트리거의 Death 조건부와 Set Death 실행부에서만 이것을 사용할 수 있는데 Death수치가 기록되는 영역 사이의 값들만 건드릴 수 있고, 그 밖으로 나가 있는 것에 대해서는 Death와 Set Death의 최대치를 넘어가기 때문에 건드릴 수 없다. 이것들에 대해서는 맵핵 등으로만 건드릴 수 있다.
[2] Unit ID? Local ID? Locale ID?
우리나라 맵제작 사이트의 경우, Unit ID라는 것을 '코드유닛'이라고 이상하게 부르는데 왜 그렇게 부르는지 알 수 없다. 어느 누가 처음으로 Unit ID를 코드유닛이라고 불렀는지는 몰라도 외국에서 퍼온 자료가 아니라는 것을 우기기 위해서 일부러 그렇게 바꿔 부른 게 아닐까 싶다. 그 결과, 코드유닛은 알아도 Unit ID는 모르는 괴현상이 생겼다... ㅋㅋ
Unit ID라는 것은 0번의 마린부터 시작해서 227번의 자원 조각까지, 쉽게 말하자면 유닛의 고유 번호를 뜻하는데 여기서 228번 이상으로 올린 것을 유닛이나 트리거에 사용하면 의외의 결과가 나온다. 그런데 Unit ID라는 것은 227번까지만 고정되고 그 위로는 버전이 바뀔 때마다 순서나 결과가 계속 바뀔 수 있는 것이라 연구할 가치가 없어 외국에서는 연구하지 않는데, 연구 방법이 쉬워서 그런지 우리나라에서는 멍청하게 계속 파고 있다....
Local ID는 맵에 배치된 유닛의 번호를 뜻하는데, 배치할 수 있는 유닛은 1700개이므로 0번부터 1699번까지 있다. 예를 들어, 플레이어 13~15정도의 스캐럽이나 인터셉터를 맵의 맨 처음에 배치해서 유닛의 공격/이동 속도를 올리려고 하겠다면 Local ID 0번으로 배치되어야 한다. 이것은 scenario.chk의 UNIT 기준으로 볼 때는 최상단에 배치된 유닛을 뜻한다. 즉, 배치된 유닛의 위치가 아니라, 몇번째에 배치되었는가가 중요하다. 맵에디터에서 왼쪽 위에 배치하라는 것은 기술력도 없는 헛소문...
Locale ID는 파일의 언어 정보를 뜻하는 것으로, 기준이 되는 0은 English를 뜻한다.
(1031독일어, 1033영어, 1035스페인어, 1037프랑스어, 1040이탈리아어, 1042한글, 1046포르투갈어)
EUD와는 상관이 없지만 Local ID를 Locale ID라고 잘못 부르는 사람들이 있어서 남김..
첫댓글 요즘 eud는 맵의 좌표계산, 마우스 인식에도 쓰인다죠? eud는 텍스트인지도 된다는데, 치트방지로 만약 show me the money 로 방지- 그후 지못미 ㅂㅂ
이해가안돼는데..그래도 잘읽었어요
하악하악 뎡트리거
ㄷㄷ
붙여넣기셈?ㅋㅋ