플래닛폴: Alpha Centauri의 행성 Chiron을 실제 지도처럼 그리기
(somethingaboutmaps.wordpress.com)- 1999년 게임 Sid Meier’s Alpha Centauri의 행성 Chiron을 실제 지도 제작 방식으로 재구성해, 128×64 타일 기반 게임 지도를 고해상도 포스터 지도로 확장함
- 핵심 작업은 게임 속 8,192개 타일의 고도값을 직접 기록하고, 강수량·암석도·xenofungus 데이터를 스크린샷과 QGIS 샘플링으로 추출하는 것이었음
- Chiron이 구형 행성으로 묘사되고 게임 지도가 좌우로 이어진다는 점을 바탕으로, 원본 지도에 cylindrical equal area projection과 Trystan Edwards 변형을 부여함
- 낮은 해상도의 격자 데이터는 무작위 점 분산, TIN 보간, Delaunay 삼각분할, 노이즈, 수동 보정, 극지 DEM 재작성으로 더 유기적인 지형 모델이 됨
- 최종 지도는 QGIS, Python, Photoshop, Illustrator, Eduard를 함께 사용한 결과물이며, 허구 세계의 지도도 쓸 만한 기존 데이터가 있을 때 실제 지도 제작 기법으로 확장 가능함
Alpha Centauri의 Chiron을 지도화한 프로젝트
- 결과물은 Sid Meier’s Alpha Centauri의 배경 행성 Chiron을 다룬 포스터 지도임
- Chiron은 게임의 배경이자 핵심 요소 중 하나이며, 공식 내장 지도는 게임 디자이너 Chris Pine이 제작함
- 글의 중심은 게임 소개보다, 게임 속 데이터를 실제 지도 제작 절차로 바꾸는 제작 과정에 있음
- 이 프로젝트는 기존 지도 제작 역량을 허구 세계에 적용한 사례이지만, 처음부터 세계를 창작한 판타지 지도와는 성격이 다름
실제 지도와 허구 지도 사이의 차이
- 실제 세계 지도 제작은 주어진 지리 데이터를 조작하고 스타일링하는 작업에 가까움
- 판타지나 SF 지도를 처음부터 만들려면 데이터 자체를 새로 만들어야 하므로 다른 역량이 필요함
- 제작자는 자신을 데이터 생성자보다 데이터 조작자에 가깝게 봄
- Chiron 지도를 만들 수 있었던 결정적 이유는 게임 안에 활용 가능한 기존 데이터가 있었기 때문임
게임 데이터 수집
- Alpha Centauri의 공식 지도는 128×64 다이아몬드형 픽셀로 구성됨
- 각 픽셀에는 고도, 강수량, 암석도 같은 속성이 들어 있음
-
고도값 전사
- 게임이 각 타일의 정확한 고도값을 표시한다는 점을 이용함
- 총 8,192개 타일의 고도값을 직접 기록하고, 전사 오류를 줄이기 위해 다시 확인함
- 이 작업은 2022년에 시작해 2025년에 마무리됨
-
강수량과 암석도
- 강수량 데이터는 원본 게임에는 없는 모드의 주제도를 활용함
- 강수량은 rainy, moist, arid의 3단계로 나뉨
- 전체 지도를 스크린샷으로 캡처한 뒤 Photoshop에서 색상을 분리하고, QGIS에서 격자별 벡터 포인트로 래스터 값을 샘플링함
- 지도 요소가 강수량 정보를 가리는 부분은 수동으로 보정함
- 암석도도 같은 절차로 추출했지만 최종 지도에는 사용하지 않음
-
xenofungus
- xenofungus는 Chiron의 토착 생명체이며, 게임 지도에서는 분홍색 또는 붉은색 지표로 나타남
- 이 데이터는 존재 여부만 있는 이진 데이터임
- 별도 주제도가 없어 일반 게임 지도에서 분홍·붉은 계열 픽셀을 샘플링한 뒤 보정함
투영법 설정
- 게임 세계는 좌우로 무한히 이동할 수 있고 위아래 끝에서는 멈추는 원통형 지도처럼 동작함
- Chiron은 게임의 여러 매체와 타이틀 화면에서 둥근 행성으로 나타나므로, 2D 지도는 구체 행성의 표현으로 간주함
- 게임에서 기지를 세우면 위치와 무관하게 같은 수의 픽셀 영역을 통제하므로, 각 픽셀이 같은 면적을 나타낸다고 가정함
- 이 조건에 맞춰 게임 지도에 cylindrical equal area projection을 부여함
- 표준 위선을 37.4°로 설정하면 게임 지도와 같은 종횡비가 나오며, 이는 Trystan Edwards projection에 해당함
- 이 투영 설정은 이후 QGIS에서 생성한 데이터셋의 좌표 처리 기준으로 사용됨
저해상도 고도 격자를 DEM으로 확장
- 원본 고도 데이터는 128×64 격자라서 포스터 지도에 쓰기에는 해상도가 매우 낮음
- 목표는 게임 내 알려진 사실을 유지하면서 더 상세한 디지털 고도 모델을 만드는 것이었음
-
무작위 점과 TIN 보간
- 각 타일 위에 무작위 점을 흩뿌리되, 점들이 너무 몰리지 않도록 최소 거리를 둠
- 각 격자 타일마다 대략 1~3개의 점이 생기고, 점이 없는 타일에는 중심점을 추가함
- 각 점은 자신이 놓인 타일의 고도값을 받음
- 이후 TIN 보간으로 초기 고도 모델을 생성해 원래 격자만 사용한 보간보다 격자 느낌을 줄임
-
Delaunay 삼각분할과 노이즈
- 더 세밀한 지형을 위해 Delaunay 삼각분할을 반복 사용함
- 무작위 점들 사이의 삼각형 중심에 새 점을 추가하고, 새 점의 고도는 주변 세 점의 평균으로 정함
- 각 점의 고도에 작은 무작위 노이즈를 더해 요철을 만들며, 반복할수록 노이즈 폭을 줄임
수동 보정과 Garland Crater
- 보간 결과가 공식 Chiron 지도와 어긋나는 곳은 수동으로 보정함
- 공식 지도에서 섬인 곳이 보간 결과에서는 본토와 이어지거나, 너무 작게 나온 섬이 최종 지도에서 보이지 않는 문제가 있었음
- 이런 지역에는 추가 고도점을 넣어 형태를 조정함
- Garland Crater는 원본 격자 고도값만 보면 사각형에 가깝지만, 게임의 시각적 표현은 원형 의도를 보임
- 이 지역은 rubbersheeting으로 원래 고도점을 이동시켜 더 원형에 가까운 분화구로 보정함
스무딩과 극지 DEM
- 보간 뒤에는 여러 스무딩 절차를 섞어 적용함
- focal statistics의 mean과 median 사용
- QGIS의 Karika plugin을 통한 line integral convolution 사용
- 약간의 Perlin noise 추가
- 스무딩된 레이어와 원본 레이어를 다시 섞고 재스무딩함
- 정확한 공식보다 결과가 적절해 보일 때까지 조정하는 방식에 가까웠음
- 원본 원통 투영에서는 극지방이 크게 늘어나므로, 북극과 남극은 별도 투영으로 다시 고도 보간을 수행함
- 극지에는 게임 데이터가 없는 큰 영역이 있어 중앙부에 거의 무작위 노이즈를 뿌림
- 북극과 남극 DEM은 향후 해당 지역 지도에 쓸 수 있도록 따로 만들고, 메인 DEM에도 다시 블렌딩함
- 이후에도 누락된 호수나 작은 섬이 발견되어 일부는 DEM 수정으로, 일부는 지도 제작 단계의 수동 드로잉으로 보정함
Orthoapsidal 투영과 커스텀 스크립트
- 메인 지도에는 orthoapsidal, 또는 Raisz Armadillo projection을 사용함
- 이 투영은 독자가 곡면을 보고 있다는 느낌을 직접적으로 주기 때문에 선택됨
- QGIS에는 이 투영이 없어, Wikipedia의 변환 공식을 바탕으로 Python 스크립트를 직접 작성함
- PyQGIS 사용에는 아직 익숙하지 않아 ChatGPT의 도움도 받음
- Chiron의 대륙 배치에 맞게 투영을 수정함
- 기본 수직 기울기 20°를 -10°로 바꿈
- 좌우 곡률을 줄임
- 먼저 수평 방향으로 지도를 줄이고 투영한 뒤, 다시 수평으로 늘려 가장자리 압축 왜곡을 줄임
- 스크립트는 벡터만 처리했기 때문에 DEM 같은 래스터는 각 픽셀을 폴리곤으로 바꿔 투영하고 다시 래스터화함
- 이 방식은 이상적이지 않고 처리 시간이 길었지만 실제 작업에는 동작함
Photoshop 중심의 지도 레이어 제작
- 최종 지도는 대부분 Photoshop에서 레이어를 쌓아 구성함
- 해저 지형은 0 이하 고도값을 가진 DEM 부분을 흑백 래스터로 만들고, gradient map으로 파란색 계열로 재색상화함
- 육지는 재투영한 고도 모델에서 수중 값을 잘라내고, Eduard를 통해 스위스식 손그림 음영 기복을 시뮬레이션함
- 해안선에는 내부 glow를 넣어 육지와 물을 분리하고, 해안 근처의 산지가 서서히 사라지는 효과를 줌
- 게임 고도값이 울퉁불퉁해 산이 해안 바로 옆에 갑자기 나타나는 경우가 많았고, 해안부를 조금 덜 험하게 보이도록 처리함
- 육지 기복은 hue/saturation 레이어로 갈색 계열을 입히고, 작은 색상 노이즈를 추가해 더 유기적으로 보이게 함
강수량 기반 식생 표현
- 게임의 공식 지도처럼 강수량 데이터를 식생 표현에 사용함
- 기복 레이어를 복사해 초록색으로 색칠하고, 색상 노이즈와 명암 조정 레이어를 더함
- 초록 기복 레이어와 갈색 기복 레이어를 섞는 마스크는 강수량 데이터에서 나옴
- QGIS에서 재투영한 강수량 포인트에 thin plate spline interpolation을 적용해 마스크 기반을 만듦
- Photoshop에서는 dissolve blending mode와 블러·샤프닝 필터로 점状의 부드러운 노이즈 텍스처를 만듦
- 이 마스크는 비가 많은 곳에서 건조한 곳으로 넘어갈 때 식생이 투명해지는 대신, 식물 수가 줄어드는 것처럼 보이게 함
- 인쇄물에서는 확대경 없이는 잘 안 보일 수 있지만, 화면에서는 더 자연스러운 식생 경계를 기대할 수 있음
Xenofungus와 강
- xenofungus는 육지와 바다에 모두 나타남
- 육지의 xenofungus는 식생과 거의 같은 방식으로 처리함
- 포인트 데이터를 보간함
- 부드럽게 만들고 노이즈화함
- 붉은색 기복 레이어의 마스크로 사용함
- 바다의 xenofungus는 같은 점状 마스크를 사용하되, 물 영역에만 잘리도록 별도 보라색 레이어로 넣음
- 바다 fungus 레이어는 linear burn 블렌딩 모드로 하부 물색과 섞임
- 게임 지도에 있는 강은 격자에 갇혀 매우 사각형이므로 QGIS에서 수동으로 다시 그림
- Illustrator에서 강의 발원부에 약한 taper를 주고, Photoshop에서 색상과 bevel을 넣어 땅을 파고 흐르는 느낌을 줌
- DEM 기반 수문 분석도 시도했지만, 지형이 너무 울퉁불퉁해 내륙유역과 짧은 강이 많이 생겼고 직접 그리는 편이 쉬웠음
색감, 페인팅 효과, 곡면 강조
- 전체 지도에는 채도 증가를 적용하고, 곡률을 시각화하기 위해 graticule을 추가함
- 채도 증가는 처음에는 Photoshop 레이어 이동 중 우연히 생겼지만, 결과가 마음에 들어 유지함
- 평소보다 더 강한 색상 체계가 되었고, 개인 프로젝트에서의 실험으로 받아들임
- 지도를 단일 레이어로 평탄화해 축소한 뒤 Photoshop의 dry brush 필터를 적용해 반쯤 칠한 듯한 질감을 만듦
- 필터 결과가 너무 흐려 원본 지도와 50:50으로 섞고, 디테일과 회화적 부드러움의 균형을 맞춤
- 마지막으로 가장자리에 내부 그림자를 넣어 빛이 줄어드는 느낌을 만들고, 평면이 아니라 곡면이라는 인상을 강조함
라벨링과 글꼴 선택
- 초기 라벨링은 Photoshop보다 글자 도구가 나은 Adobe Illustrator에서 수행함
- 완성된 라벨은 Photoshop으로 다시 가져와 지도와 섞음
- 각 라벨 아래의 지도를 흐리게 해 텍스트 가장자리가 배경보다 선명하게 보이도록 함
- 밝은 글자를 밝은 배경에, 어두운 글자를 어두운 배경에 올릴 수 있도록 glow와 smart halos 기법을 사용함
- 모든 라벨은 Sarah Bell이 설계한 BellTopo Sans로 설정함
- serif는 지도의 강한 색감에 비해 너무 섬세해 보이고 SF 지도와 어울리지 않는다고 판단함
- 게임 자체의 글꼴인 Eurostile은 부드러운 팔레트와 스타일의 지도에는 너무 딱딱해 보였음
- BellTopo Sans는 산세리프의 강도와 손그림 느낌의 인문적 요소를 함께 갖고 있어 적합하다고 봄
모호한 지명과 포스터 구성
- 게임의 지형지물은 항상 명확히 라벨링되어 있지 않고, 흰색 텍스트가 단일 격자 타일 위에 놓인 형태임
- 많은 경우 지형의 경계를 직접 해석해야 했음
- Planetneck은 가장 어려운 사례였음
- 손가락 모양의 물길을 가리키는지, 그 위를 가로지르는 땅을 가리키는지 모호했음
- 게임 지도에는 육지와 물 모두 통행 가능한 얇은 갈색 선 지역도 있어 해석이 더 어려웠음
- 최종적으로 길고 좁은 만의 입구를 뜻하는 것으로 결정함
- 이 결정은 공식 지도에 다른 해협 이름들이 존재한다는 점과 맞음
- 공식 지도에는 이름이 32개뿐이며, 이 규모의 지도치고는 매우 적음
- 새 이름을 만들기는 불편했기 때문에 기존 이름만 사용함
- 최종 포스터에는 메인 지도 외에 같은 데이터셋과 기법으로 만든 작은 지도도 포함함
- 고도 데이터를 더 분명히 보여주는 지도
- 왜곡이 적은 극지 지도 2개
- 배경과 지도에는 게임 인터페이스에 대한 오마주로 희미한 scanline을 추가함
- 제목과 프레임의 파란색도 게임 인터페이스를 떠올리게 하는 요소임
작업의 한계와 다음 가능성
- 전체 과정은 게임 데이터의 지루한 샘플링, GIS 변환, 커스텀 투영 조정, Photoshop 레이어 구축이 결합된 매우 노동집약적 작업이었음
- 실제 진행은 설명처럼 효율적인 순서가 아니었고, 여러 달의 시행착오와 막다른 길이 있었음
- 현재 데이터셋이 있으므로 향후 Chiron의 작은 영역을 확대해 더 큰 축척의 지도를 만들 가능성이 있음
- 그 경우 알려진 고도값을 유지하면서 더 현실적인 지형을 생성하는 방법을 탐색할 수 있음
- 암석도 데이터는 최종 디자인 이후에야 활용 가능성을 떠올렸고, 이 축척에서는 큰 차이를 만들지 않았지만 확대 지도에서는 영향을 줄 수 있음
- 원본 DEM에는 아직 누락된 호수와 섬 같은 정리가 더 필요함
- 더 현실적인 고도 모델을 만드는 방법을 알게 되면 기존 DEM을 더 나은 것으로 대체할 가능성이 있음
- 이 프로젝트는 기존 데이터가 있었기 때문에 가능했고, 허구 세계라도 데이터 조작 능력을 실제 지도 제작 방식으로 적용할 수 있음을 보여줌
댓글과 토론
Hacker News 의견들
-
Daniel Huffman의 이야기는 꽤 설득력 있고 영감을 줌: https://somethingaboutmaps.wordpress.com/about/
긴 버전은 더 좋음: https://somethingaboutmaps.wordpress.com/2011/03/02/on-salva...- 일 관련 우울감에 대한 묘사가 정말 와닿음
그가 찾은 불꽃을 나도 찾고 싶지만, 내 열정은 이미 몇 년 전에 다 갈려 나간 것 같아 두려움
- 일 관련 우울감에 대한 묘사가 정말 와닿음
-
이 게임은 나에게 아주 중요했음: 특정 인간 사례에서 떼어낸 이념과 종교적 믿음을 추상적으로 처음 인식했던 기억임
여러 세력과 그들이 믿는 바가 정말 좋았고, 외계인이 존재한다면 어떤 종류의 믿음을 가질지 늘 상상하게 만들었음- 훌륭한 게임이었음
정치 체계가 정말 좋았고, 4개 분야에 각각 4개 선택지만 있는데도 선택지가 자동으로 서로 엮이지 않는 점이 멋졌음
원한다면 자유시장 경찰국가도 가능함. 어린 시절에 이 게임을 하면 자기 정치 성향이 실제로 무엇을 뜻하는지 조금 더 생각하게 될 수도 있다고 봄. 물론 책을 읽어도 됐겠지만 그건 불가능하니까. SF 게임에 딱 맞는 느낌도 줬는데, 작가들은 이상한 정치 조합을 가지고 노는 걸 좋아하기 때문임 - 그런 이유로 SF와 판타지를 좋아함. 물론 열에 아홉은 인간 문화의 변형이거나 초반에는 한 차원으로 축소되곤 함. 엘프는 엘리트주의 인종차별주의자, Klingon은 화난 종족 같은 식임
하지만 오래 이어지는 시리즈는 시간이 지나며 뉘앙스를 더하고, 고정관념이 자기들의 “본성”과 싸우게 만들기도 함 - Civilization: Beyond Earth가 그렇게 실망스러웠던 건 아쉬움
흥미로운 지도자, 세력, 이념 대신 “우주 아프리카”와 “우주 호주”를 받았음
Firaxis가 진짜 Centauri 리메이크를 만들지 못하게 하는 법적 문제가 있는지 궁금함
- 훌륭한 게임이었음
-
Sid Meier's Alpha Centauri, 정말 대단한 게임이었음
SMAC을 통해 미래 사회가 인류의 생존과 진보를 보장하기 위해 어떻게 조직될 수 있는지에 대한 아이디어를 얻었고, speculative technology가 문명을 어떻게 바꿀 수 있는지도 봤음
게임을 하면서 덜 외롭다고 느꼈는데, 외로움이 시대를 초월한 보편적 인간 조건임을 보여줬기 때문임. 별들 사이에서 자리를 찾는 인류의 비전에서 희망을 봤고, 나보다 훨씬 큰 생각들과 씨름하게 됐으며, 게임 속 선택으로 내 공감 능력이 측정되는 느낌을 받았음
역사도 게임처럼 도덕적 나침반 없이 그저 앞으로 나아간다는 점을 깨달았음 -
Sid Meier's Alpha Centauri에서 왜 “planetfall”이라는 말을 쓰는지 궁금한 사람들을 위해: 게임에서 반복해서 나오는 용어였고, 역사의 시작을 뜻했음
시작 프롬프트는 이랬음:$NAME3, a new era of struggle and opportunity awaits you. The UN Starship Unity has arrived in the Alpha Centauri system after a forty year voyage. All contact with Earth has been lost. After Captain Garland's assassination by an unknown assailant, the crew mutinied and split into factions. In the ensuing conflict, some seized control of the Unity's colony pods. You now shape the destiny of your $ faction, which has just made PLANETFALL!
-
“그래서 지도를 훑으며 모든 타일의 고도 값을 적었다. 총 8,192개였다.”
8천 번을 수작업으로 하는 것보다 더 자동화된 방법이 분명 있었을 텐데?- 이 댓글을 읽는 많은 사람들은 지도 데이터를 추출해서 .CSV로 바꾸는 스크립트를 아주 빨리 작성할 수 있었을 거라고 봄
그래도 별로 중요하지 않은 일로 잠깐 시간을 채우고 싶을 때 조금씩 해나갈 수 있는, 생각 없이 오래 반복하는 프로젝트에는 나름의 가치가 있음 - 나도 같은 생각을 했음. 이 게임을 당시에 좋아했던 nerd가 엄청 많고, 나도 그중 하나라서 이런 데이터 포인트를 프로그래밍으로 추출하는 데 기꺼이 도전했을 것 같음
- 이 댓글을 읽는 많은 사람들은 지도 데이터를 추출해서 .CSV로 바꾸는 스크립트를 아주 빨리 작성할 수 있었을 거라고 봄
-
Sid Meier's Alpha Centauri 설명을 읽다 보니 애니메이션 시리즈 Scavengers Reign이 매우 비슷한 설정이라는 걸 깨달음. 인간 개척자들이 지성이 있는 것처럼 보이는 행성에 불시착한다는 점에서 그렇음
이 기회에 이 작품을 보라고 권하고 싶음. SF 팬이라면, Greg Egan이나 Vernor Vinge를 떠올리는 사람이라면 좋아할 것임. SF 팬이 아니어도 한 번 시도해볼 만함. 그 정도로 좋음 -
이 게임의 사운드 디자인은 정말 좋았음. 탁월한 게임
- 이상한 “이벤트” 소리, 인터페이스의 작은 삐빅거림, 무기의 “퓨퓨” 소리, 훌륭한 성우 연기를 좋아함
1999년에 소매판으로 산 뒤로 항상 어떤 컴퓨터에든 이 게임을 설치해뒀음. 예술 작품임. 지난 25년 넘게 그래픽이 아무리 발전했어도 다른 Civ 게임은 나에게 이만큼 다가오지 못했음 - 사운드 디자인에서 한 가지 불만은 배경음악이 작동하는 방식임
아마 플레이어가 비활성 상태일 때 재생되기 시작하는 것 같은데, 어떤 플레이를 해도 실제로 발동될 기회가 거의 없음
세력마다 별도의 사운드트랙이 있었던 것 같음
- 이상한 “이벤트” 소리, 인터페이스의 작은 삐빅거림, 무기의 “퓨퓨” 소리, 훌륭한 성우 연기를 좋아함
-
작업물은 훌륭하고 지도와 글도 마음에 듦. 정말 잘 만들었음
아쉬운 점은 육지 질감에 대비가 강한 경계가 보이지 않는다는 것임. 모든 것이 다른 지역으로 부드럽게 흘러가고, 산은 보이지만 질감은 거의 산을 무시함. 우리 행성의 질감에서 보이는 경계가 빠져 있음- 어느 정도 동의함. 원본 지도를 외계적으로 보이게 만든 흥미로운 특징 중 하나는 모든 것을 가로지르는 붉은 선이었음
아마 xenofungus겠지만, 마그마 같은 느낌도 나고 대륙이 갈라지는 것처럼 보였음. 새 버전에서는 그 느낌이 사라졌음
그래도 여기에 들어간 작업은 높이 평가하고, 결과물도 아주 멋져 보임
- 어느 정도 동의함. 원본 지도를 외계적으로 보이게 만든 흥미로운 특징 중 하나는 모든 것을 가로지르는 붉은 선이었음
-
그 게임을 그만하려고 디스크를 남에게 줘야 했음. 일과 수면에 심각하게 지장을 줄 정도였음
-
비슷한 맥락으로 판타지 지도 절차적 생성을 다루는 블로그 “Here Dragons Abound”가 있음. 한동안 업데이트되지는 않았음: https://heredragonsabound.blogspot.com/