|
2026-10-18 01:36
조회: 267
추천: 6
EnvPreset, Objects, RoomTiles에 대한 정리 (모드 제작자 참고용)안녕하세요.
길찾기 모드를 만들면서 알게된 디아 맵 구조에 대한 것들을 기록 차원에서 남겨놓으면 좋을 거 같아서 글 작성합니다. 관련 모드 만들 때 참고하시면 좋을 거 같습니다. 1. 디아2에는 Entity라는 것으로 json을 통해 맵에 장식을 추가할 수 있다. Entity를 할당할 수 있는 것은 아래 3가지가 있다. 1) hdenvpreset : 맵을 구성하는 타일을 정의한다. 2) hdobejcts : 타일에 배치되는 오브젝트를 정의한다. 참고로 포탈은 오브젝트이다. 3) hdroomtiles : 타일에 배치되는 다른 맵으로 이동하는 입출구를 정의한다. 2. 디아2의 맵은 네모난 타일을 이어 붙인 사각형으로 이루어져있다. 여기서 타일에 해당하는 것이 env의 preset이다. EnvPreset에 대한 정보는 globalexcellvlprest.txt에 정리되어 있다. 아마 Level + Preset이란 의미로 파일명이 정해진 거 같은데 preset이 아니라 prest인 것은 오타인 것으로 보인다. 저 파일에는 타일 하나의 가로, 세로 길이 정보가 있다. SizeX가 X축 좌표의 길이 SizeY가 Z축 좌표의 길이이다. 맵은 2D이므로, 높이에 해당하는 Y축에 대한 길이는 없다. 디아2의 맵은 2D로, X와 Z로 바닥 좌표를 정하며, Y로 높이를 정한다. 여기서 화면 상에 여러 Entity가 겹쳤을 때, Y가 높은 항목을 우선해서 보여준다, 3. 위에서 얘기한 EnvPreset, Objects, RoomTiles에 따라 좌표계가 다르다. EnvPreset, Objects ![]() 게임에서 처리하는 좌표계와 동일한 좌표계를 사용한다. x와 z를 같은 값을 증가시키면, 정확히 아래로 Entity가 이동한다. 이 값은 y를 같은 수치 이동시킬 때 비율이 약간 다르긴 한데, 큰 차이가 나지는 않는다. 그래서 표시 위치는 그대로 두지만, 표시 우선순위를 높이고 싶으면, y를 높인 만큼 x, z도 같은 수치 높이면 된다. RoomTiles ![]() 게임에서 처리하는 좌표계와 다른 좌표계를 사용한다. 심지어 x와 z의 적용 비율이 달라서 x와 z를 같은 값을 증가시키면 우측아래 45도 각도로 이동하는 게 아니라 EnvPreset 좌표계의 x축 방향으로 이동한다. 4. 세 방식 모두 플레이어가 표시의 주체가 되는 항목에 가까이 가야 표시된다. EnvPreset은 12시 방향의 끝이 0, 0, 0으로 시작하며, 타일의 중심 좌표(SizeX/2, 0, SizeY/2) 기준으로 거리를 계산한다. Objects, RoomTiles은 항목의 중심이 0, 0, 0으로 시작하며, 항목의 중심 좌표(0, 0, 0) 기준으로 거리를 계산한다. 5. EnvPreset이 보이기 시작하는 거리는 아래 계산식을 따른다. sight = 120 이 값은 비디오 옵션의 원거리 사물 표현 설정에 따라 달라지는데, 낮음이 120이다. 그런데 아주 높음으로 해도 약간만 늘어나고, 크게 차이가 나지는 않는다. 보이기 시작하는 X 거리 = sight + SizeX/2 보이기 시작하는 Z 거리 = sight + SizeZ/2 액트1 야외의 경우 SizeX = SizeZ = 80이라 타일의 중심이 40, 0, 40이고 보이기 시작하는 X 거리 = Z 거리 = 160 이다. 따라서 EnvPreset의 Entity는 -sight ~ Size + sight 범위에서 보이기 시작하며 이로 인해 해당 타일보다 Sight 만큼 먼 거리부터 보이게 된다. 참고로 안 보이기 시작하는 거리는 이보다 조금 더 길어서, 한 번 보이면, 좀 더 멀리 가야 안 보이게 된다. 액트1 야외의 경우 대략 200에서 안 보이게 된다. 6. Entity에 설정한 particle의 이미지의 최하단이 Entity 좌표가 되도록, 이미지가 위쪽으로 표시된다. 7. 디아2는 맵을 야외와 내부로 나눈다. 야외는 액트1 평야, 액트2 사막, 액트3 쿠라스트, 액트4 도시, 액트5 언덕 같은 곳이다. 내부는 액트1 감옥, 액트2 무덤, 액트3 동굴, 액트4 불길의 강, 액트5 성채 같은 곳이다. 예외로 액트3 정글은 야외이지만 내부 규칙을 따른다. 내부는 모든 곳이 타일로 이루어져 있어서, 맵의 형태는 타일의 형태가 정한다. 그렇기에 모든 곳에 Entity를 넣을 수 있다. 내부의 타일의 preset 이름은 보통 mapName + 길이 뚫린 방향 + 배리에이션으로 이루어진다. 병영의 경우 mapName이 "bar" "bare" -> 동쪽에 길이 있는 병영 타일 "barew" -> 동쪽과 서쪽에 길이 있는 병영 타일 "bareforge" -> 동쪽에 길이 있는 병영 타일인데, 찰시 망치가 있는 곳 대체로 배리에이션 이름이 next, warp, down이면 다음 맵으로 이동하는 RoomTile이 있는 타일이며 (참고로 층을 올라가는 던전이라도 down이 다음 맵이다) 대체로 prev, up이면 이전 맵으로 이동하는 RoomTile이 있는 타일이다. (참고로 층을 올라가는 던전이라도 up이 이전 맵이다) 대체로 way이면 웨이가 있는 타일이다. (따라서 모든 내부는 웨이가 있는 곳의 타일명이 정해져 있다) 그리고 theme이란 베리에이션이 상당히 많이 쓰이는데, 그냥 외형만 다르다 consol이란 베리에이션은 좋은 상자가 있는 타일이다. 액트3 정글은 추가 규칙이 있는데 mapName이 bog, pyg, riv, spid로 나뉜다. 기본적으로 길 타일은 riv로 이루어져 있다. 그리고 riv의 이름에는 추가 규칙이 있는데 다른 mapName과 연결된 방향을 별도로 표시한다. "rivse" -> 남쪽, 동쪽에 길이 있는 길 타일 "rivseon" -> 남쪽, 동쪽에 길이 있고, 북쪽에 다른 mapName과 연결된 길 타일 다른 mapName에 대해서는 아래가 있으며, 웨이/던전/상자/빈방 중 하나이다. spid : 거미 숲의 방 타일 bog : 거대 습지의 방 타일 pyg : 약탈자 밀림의 방 타일 "spidn" -> 거미 숲에서 북쪽으로 길이 있는 방 타일 "bogn" -> 거대 습지에서 북쪽으로 길이 있는 방 타일 참고로 베리에이션 의미로 방향 뒤에 숫자가 붙는데, 숫자에 따라 배치되는 항목이 정해져있다. "spidn" -> 거미 숲에서 북쪽으로 길이 있는 방 타일 + 거미 숲 웨이 "spidn2" -> 거미 숲에서 북쪽으로 길이 있는 방 타일 + 거미 동굴 "spidn3" -> 거미 숲에서 북쪽으로 길이 있는 방 타일 + 빈 방 "bogn" -> 거대 습지에서 북쪽으로 길이 있는 방 타일 + 거대 습지 웨이 "bogn2" -> 거대 습지에서 북쪽으로 길이 있는 방 타일 + 좋은 상자 "bogn3" -> 거대 습지에서 북쪽으로 길이 있는 방 타일 + 좋은 상자 "pygn" -> 약탈자 밀림에서 북쪽으로 길이 있는 방 타일 + 약탈자 밀림 웨이 "pygn2" -> 약탈자 밀림에서 북쪽으로 길이 있는 방 타일 + 약탈자 소굴 + 기드빈 "pygn3" -> 약탈자 밀림에서 북쪽으로 길이 있는 방 타일 + 빈 방 야외는 맵의 외곽만 타일로 이루어져 있어서, 맵의 형태는 타일의 형태가 아니라 연결이 정한다. 야외의 타일의 preset 이름은 보통 tileName + 숫자로 이루어진다. 액트1 야외의 경우 tileName이 "bord" "bord1" -> 1번 방향에 벽이 있는 타일 "bord2" -> 2번 방향에 벽이 있는 타일 ![]() 숫자의 방향은 위 그림을 따른다. 5번 방향은 타일의 왼쪽 아래에 └ 이 있는 것이고 11번 방향은 타일의 오른쪽 위에 └ 이 있는 것이다. 숫자 뒤에 o가 붙으면 다른 맵과 연결된 곳이다. (이전맵일지 다음맵일지는 모름) "bord1o" -> 1번 방향에 다른 맵이 있는 타일 "bord3o" -> 3번 방향에 다른 맵이 있는 타일 그렇기에 1번과 3번 타일이 항상 붙어 있고 2번과 4번 타일이 항상 붙어 있다. 예외적으로 매장지에서 다른 맵(차가운 평야)로 가는 타일은 "o"가 아니라 "oe"가 붙는다. "bord1oe" -> 1번 방향에 차가운 평야가 있는 매장지 타일 "bord3oe" -> 3번 방향에 차가운 평야가 있는 매장지 타일 간혹 "b"나 "c"가 붙기도 하는데, 이건 장식만 다르다. 야외라고 외곽에만 타일이 있는 건 아니고 내부에도 랜덤하게 타일이 생기기는 하다. 야외의 내부 타일의 preset 이름은 보통 tileName + 숫자 혹은 알파벳으로 이루어진다. 여기서 숫자/알파벳은 외형 베리에이션을 의미한다. "fallcmp" -> 몰락자들이 모여있는 캠프 "fallcmp2" -> 몰락자들이 모여있는 다른 외형 캠프 "fallcmpbish" -> 몰락자들이 모여있는 비시보시가 있는 캠프 그런데 신기하게 웨이가 있는 곳은 타일이 없다. 그래서 야외에서는 웨이가 있는 곳을 알 수 없다. 그냥 웨이 오브젝트에 장식을 추가해서 길찾기를 해야 한다. 이 외로 바닥의 돌 모양에 따라 타일을 구분하기도 하고 4rock : 장식용 돌이 4개 박힌 타일 6ock : 장식용 돌이 6개 박힌 타일 arrow : 장식용 돌이 화살표처럼 박힌 타일 circle : 장식용 돌이 원 형태로 박힌 타일 clover : 장식용 돌이 네잎클로버 형태로 박힌 타일 stone : 장식용 큰 돌이 있는 타일 xrock : 장식용 돌이 X 형태로 박힌 타일 강이 있는 곳도 타일로 구분된다. urivern : 위로 흐르는 강의 북쪽 uriver : 위로 흐르는 강의 중간 urivers : 위로 흐르는 강의 남쪽 동굴들(지하통로, 구렁, 구덩이)은 외형에 따라 아래 4개 중 하나가 선택된다. cavedr1, cavedr2 : 바닥에 있는 동굴 clfcave, clfcave2 : 벽에 있는 동굴 악의 소굴만 예외로 별도 타일을 가진다. denent, denent2 8. 디아2의 objects 이름에 따라 어떤 오브젝트인지는 엑셀로 정리했다. 첨부 파일을 참고해라. 주요 내용만 명시했고, 모든 것을 명시하진 못했다. 그런데 대부분은 횃불과 같은 장식이고, 베리에이션이 많은 것이라 중요하지 않으며 파일명 자체에 액트2 횃불이라고 적혀있지만, 실제로는 액트5에도 배치되기도 한다. 9. RoomTiles 이름은 액트 숫자 + 이동 전 맵 이름 + 이동 후 맵 이름 으로 매우 알기 쉽게 되어 있다. "act_1_cathedral_to_catacombs" -> 액트 1의 대성당에서 지하 묘지로 가는 입구 "act_1_catacombs_to_cathedral" -> 액트 1의 지하 묘지에서 대성당으로 가는 입구 "act_2_lair_down" -> 액트2의 구더기 굴에서 다음 층으로 가는 입구 "act_3_jungle_to_spider" -> 액트3의 정글에서 거미동굴/독거미동굴로 가는 입구 (같은 roomtile을 쓴다)
|
w2625886985365225.xlsx [23Kb]


