[ATG - Alternate Terrian Generation]
03. 설정 조절로 원하는 월드 만들기
본 강좌에 사용한 모드 :
ATG - 1.12.0
Biomes O' Plenty - 2.1.0.1889
ExtrabiomesXL - 3.16.4
Highlands - 2.2.3
Natura - 2.2.0.1
JourneyMap(지도모드)
마인크래프트 1.7.10 버전
※ 주의 : 본 글에 업로드 된 모든 이미지들은 압축된 JPG 이미지 입니다.
Image맵에 사용하셔도 같은 결과를 얻지 못할 수 있습니다.
2년 만에 마지막 강좌를 적게 되네요. ATG의 실험적이고 불안정한 기능인 ImageMap 기능입니다.
ImageMap 기능은 사진을 추가하면 이 사진의 각 픽셀의 RGB(빨강, 초록, 파랑)을 각각 높이, 온도, 습도에 매핑시켜 지형을 생성하는 기능입니다.
RGB는 각각 0부터 255의 값을 가지고, 마인크래프트의 맵 높이는 256칸입니다.
빨간색인 R은 높이를 나타내는 y의 값과 정확히 매칭됩니다.
반면에 초록과 파랑인 G, B는 중심값인 127에서 클수록 덥고 습해지며, 낮을수록 춥고 건조해집니다.
뭔가 복잡하죠? 무엇을 하는 기능인지 먼저 살펴보기 위해 한가지 샘플을 보여드리겠습니다.
그라데이션 떡칠된 사진입니다.
먼저 왼쪽을 봅시다. 왼쪽 아래를 보시면 검은색(RGB 0 0 0)에 가깝습니다. 즉 지형도 낮고, 춥고 습한 지역입니다.
왼쪽 위로 올라갈수록 점점 빨간색과 초록색이 섞여 연두색(RGB 128, 255, 0)이 됩니다. 갈수록 높아지면서, 더워진다는 것을 알 수 있습니다.
이제 오른쪽을 봅시다. 오른쪽 아래는 파란색(RGB 0 0 255) 입니다.
위로 올라갈수록 초록색이 더해져 하늘색(RGB ? 255 255)이 됩니다.
즉, 위 사진은 밑에서 위로 갈수록 높아지며, 따듯해집니다. 또 왼쪽에서 오른쪽으로 갈수록 습해지는 지형이 됩니다.
이제 결과물을 볼까요?
아래에서 위로 갈수록 높아지고 더워지며, 왼쪽에서 오른쪽으로 갈수록 습해진다.
그 결과로 왼쪽 아래에는 척박한 황무지, 왼쪽 위에는 오아시스가 있습니다.
오른쪽 아래는 춥고 습하기 떄문에 한대수림 기후가 있고, 오른쪽 위는 덥고 습하여 정글이 있습니다.
화면 한가운데는 적당히 온화하고 적당히 습하기 떄문에 평범한 숲이 자리잡고 있습니다.
대충 어떤 느낌인지 이해가 되시나요?
기존의 마인크래프트가 랜덤한 바이옴 배치 식으로 월드를 생성한다면, ATG는 자연스러운 산맥과 기후변화를 위해 3가지 랜덤한 3차원 맵을 만들고 월드를 생성하고,
이미지맵 기능은 랜덤생성 대신 지정한 이미지의 픽셀의 RGB 값을 가져와 맵을 생성하는 것이라고 추측합니다. (제가 이 모드를 만든건 아니라 ^^;)
사용방법은 3가지 순서로 나뉩니다.
1. 원하는맵 이미지를 만든다.
2. 컨피그를 세팅한다
3. 월드젠 설정을 ATG로 설정하고 맵을 만든다. PROFIT!
하지만.. 게임 지형 크리에이터가 아닌 이상, 이런 사진을 직접 만들기는 힘듭니다.
그래도 저는 구글에서 Heightmap(높이맵) 이라고 검색하여 굴러다니는(...) 사진을 구해왔습니다.
1. 이미지 생성
제가 구한 높이맵은 이겁니다.
하지만 문제가 있습니다. 해저 지형은 구현이 안되있습니다. 이걸 그대로 쓴다면 바다인 영역은 전부 검은색이기 때문에 R = 0 -> y = 0이 되어버려 해저지형은 없고 베드락 평지만 생긴다는 겁니다.
그래서 산맥 높이맵을 하나 더 구했습니다.
그 후 각각의 사진을 포토샵에서 레벨조정을 해줬습니다.
첫 번째 이미지 레벨은 64~255로, 산맥 이미지 레벨은 0~63으로 조정하였습니다.
그 후 두 개의 사진을 붙인 후 초록색과 파란색을 빼버렸습니다.
여기까지의 결과입니다.
섬 이미지는 R = 64~255 를 가지기 때문에 지상을 나타내고,
산맥 지형은 R = 0~63 을 가지기 때문에 해수면 밑 지형을 나타냅니다.
다만 섬 높이맵의 해안가 부분이 조금 밝아서 완만한 해변가 보다는 언덕같은 지형이 나오는 문제가 있습니다.
이 후 포토샵이나 다른 그림을 그리는 프로그램을 이용하여 레이어를 추가하고, 초록색과 파란색을 덧대줬습니다.
무작정 덧대기보다는 이 큰 섬은 사막섬으로 만들고, 여기는 북쪽에 있으니까 춥게 만들고, 여기는 아프리카처럼 생겼으니까 덥고 건조하게 만들어야지
이런 식으로 컨셉을 정해서 그렸습니다.
그 결과물 입니다. 참쉽죠?
준비가 되었다면 config\atg 밑에 maps 폴더를 생성한 후 안에 이미지 파일을 넣어줍니다.
-> config\atg\maps\image.png
2. 컨피그 설정
두 번째로 config 설정입니다.
imagemap {
# Height multiplier for the processed image map. Default: 1.0.
D:HeightMultiplier=1.0
// 이미지맵 높이의 배수입니다. 사진의 R 값에 이 값이 곱해지는 것 같습니다.
# Height offset for the processed image map. Ranges 0-1. Default: 0.0.
D:HeightOffset=0.0
// 사진의 R 값에 여기에 있는 값 * 255 가 더해지는 것 같습니다.
# Number of blocks to fade from the edge of the image to normal generation. Ignored if looping is enabled. Default: 160.
I:MapEdgeFade=160
// B:MapLooping 이 false 일 때 이미지 끝 영역과 ATG 기본 생성이 자연스럽게 연결되도록 겹치는 영역의 길이입니다.
// 자연스럽게 이어주지 않는다면 잘려진 케익같은 지형이 나오겠죠?
# Name of a png file in the maps config subfolder. Red, green and blue channels represent height, temperature and moisture maps respectively.
S:MapFile=
// 이미지의 이름을 적습니다 예로 파일명이 image.png 면 image.png
# Set to true to have the image map repeat instead of fading back to normal terrain.
B:MapLooping=false
// 이미지를 반복시켜가면서 월드를 계속 생성할지 정합니다. true라면 계속 이미지와 일치하는 맵만 나오게 될 것 같습니다.
# Number of blocks represented by each pixel of the map image.
D:MapScale=32
// 픽셀 1개당 블럭 수를 정합니다. 이미지가 엄청 큰 픽셀수(1000*1000 이상)를 가지고 있다면 1~2로 해도 괜찮습니다. 저는 5200 * 4300 이미지를 이용했기 때문에 1로 설정했습니다.
// 이하 동일
# Moisture multiplier for the processed image map. Default: 1.0.
D:MoistureMultiplier=1.0
# Moisture offset for the processed image map. Ranges 0-1. Default: 0.0.
D:MoistureOffset=0.0
# Temperature multiplier for the processed image map. Default: 1.0.
D:TemperatureMultiplier=1.0
# Temperature offset for the processed image map. Ranges 0-1. Default: 0.0.
D:TemperatureOffset=0.0
# EXPERIMENTAL AND INCOMPLETE - USE AT YOUR OWN RISK! Use a source image to generate a map. Other settings will take effect outside unless looping is enabled.
B:UseImageMap=false
// true로 바꾸셔야 작동합니다.
}
※ 주의할 점 : 이미지 맵을 사용중이라면 imagemap 설정 외 나머지 설정값들은 적용이 되지 않아야 할 것 같지만 왜인지 적용이 됩니다.
참고해주세요.
3. 생성한다. PROFIT!
결과물을 보여드리도록 하겠습니다.
연두색(RGB 100 255 0) ~ 노란색(RGB 150 255 0) 값을 가져
매우 덥고 건조한 사막 지형이 나왔습니다.
살짝 어두운 옥색(RGB 75 150 150) 으로 적당한 숲 지형이 나왔습니다.
눈부실 정도의 하늘색(RGB 100 200 225) 입니다. 정글에 살짝 못미치는 온도로 트롤픽하나 지형이 나왔습니다.
가운데 노란색 ( o )(RGB 190 225 10)모양이 눈에 띄는 지형입니다. 고열 건조로 사막이 나왔습니다.
윗쪽은 파란색(RGB 70 40 150)의 추운 기후로 설원지역이 나왔지만,
아래쪽은 아주 살짝 옥색(RGB 70 85 120)으로 숲 기후가 나오게 되었습니다.
사실상 빨간색밖에 없는 춥고 건조한 지형입니다. 나무를 찾아보기 힘들며 황무지도 나옵니다.
마찬가지로 춥고 건조한 지형이 나왔습니다.
마지막으로 적당히 습하고, 아슬아슬하게 한대 지형이 나오는 온습도 색이지만, 험준해보이는 R이 눈에 띄는 협곡 지형입니다.
제가 제일 마음에 드는 부분입니다.
추가 : I:MapEdgeFade 설정
이미지맵 영역 맵과 바깥 ATG생성 맵을 자연스럽게 연결해주는 기능인데 어째서인지 제대로 작동을 안합니다.
너무 아쉬운 부분이 아닐 수 없습니다... ㅠㅠ
굉장히 좋은 기능이긴 하지만, 이미지를 직접 만들기가 어려운 점, 컨피그가 이상하게 적용되는 점, 가장자리 영역 Fade가 제대로 안되는 점이 너무 아쉽네요.
하지만 월드머신 등 외부 프로그램으로 맵을 만들 능력이 있다면, 원하는 컨셉에 따라 맵을 만들 수 있다는 엄청난 잠재력이 있는 기능이라고 생각합니다. 기본 베이스는 정해져 있지만, 엄연히 월드젠이라 NPC마을이나, 모드에서 추가하는 광물 등 월드젠도 잘 작동합니다.
딱히 필요없을 것 같은 강좌였지만, 테스트 사진을 보고 굉장히 감명받으신 분을 보고 시험이 내일인데 잠시 틈내여 적어봤습니다.
그럼 모두 화려한 맵에서 야생하세요!
모드 원문이나 모드파일은 다음 링크에서 구할 수 있습니다.
마인크래프트 포럼 링크 :
https://www.minecraftforum.net/forums/mapping-and-modding-java-edition/minecraft-mods/1291067-atg-alternate-terrain-generation
커즈포지 링크:
https://minecraft.curseforge.com/projects/alternate-terrain-generation