게임/대항해시대 4 PK - Steam Edition -

대항해시대4 리마스터 금단의 에디트... 파나마 운하 개척하기!

서한스 2021. 6. 14. 00:41

금단(禁斷)의 에디트 : 파나마 운하................맵 Hex

 

 

 

아래 그림은 보물지도를 약간 조작하여 포르투벨류(x표시)를 중심으로한 파나마 지협의 지도입니다.

                        

 

 

 

 

 

 

 

 

 

 

 

실제 해상에서의 그림은 아래와 같은데, 현재 함대가 있는 곳이 카리브해이고, 그 반대편이 태평양입니다.

 

 

 

 

 

 

 

 

 

 

 

메인함대가 태평양과 카리브해를 오갈 수 있도록 하기 위한 가장 기본적인 조작 방법은 도시를 옮기는 것입니다.

 

 

 

 

 

 

 

 

 

 

이렇게 옮겨버리면... 카리브해에서도 포르투벨류로 여전히 입항 할 수 있고...

 

 

 

 

 

 

 

 

반대로, 태평양에서도 입항이 가능합니다.

 

 

 

 

 

즉, 카리브해, 태평양 양쪽에서 입항이 가능하게 됩니다.

 

그러나 이 방법의 문제점은

태평양에서 입항한 경우 ->출항시 "자동"항로로 출항하면 "카리브해"로 나갈 수 있지만,

                                               "수동"항해로 출항하면 도로 "태평양"으로 나가게 된다는 것입니다.

반면,

카리브해에서 입항한 경우-> 반드시 "카리브해"로만 출항 가능합니다.

(지금과 같이 신대륙 서쪽에 항구가 없는 상태일 때) 

 

※ 그 이유에 대해서는 이 글 아래 맵Hex 공략 참조.

 

 

 

요컨데, "운하"로서의 기능이 온전하지 못한,

불완전한 에디트가 되어버리므로 지금까지 이 방법은 소개를 유보하여 왔습니다.

 

 

 

 

 

 

 

 

그리하여 이번에는 위와 같은 문제점을 한방에 날려버릴 수 있도록 이리저리 만져보다가... 차라리...

 

 

 

 

 

 

 

 

 

 

 

 

 

뚫었습니다 !!!

 

 

 

 

 

 

 

 

 

 

↓ 좀 멋진 스샷을 찍어보려고... 한 30분 왔다리 갔다리 하면서 찍은 사진...  ^^;

 

 

 

 

 

 

 

 

실제해상의 지형지물을 그대로 반영한 것이 바로 보물지도(항로도 아님)인데,

이렇게 운하를 뚫어놓고 다시 이 글 맨 위의 지도를 열어보니... 뚫린게 확실하군요 !!!  

                     

 

 

 

 

 

 

 

 

 

 

 

같은 방법으로 이번에는 수에즈 운하를 뚫어보았습니다.

                     

 

 

 

 

 

 

 

 

거기에 알렉산드리아-아덴 항로(update)를 만들어 보았습니다.

이 항로는 알렉산드리아와 아덴 사이의 항로를  9C, 9D, 9E지점에서 세 번 꺾이는 항로 입니다.

 

 

 

 

 

 

 

 

 

9C지점 통과할 때의 스샷...

 

 

 

 

 

 

 

 

수에즈운하 관통 중...

 

 

 

 

 

 

 

 

9D지점을 통과할 때의 스샷...

 

 

 

 

 

 

 

 

9E지점을 통과할 때의 스샷...

 

 

 

 

 

 

 

 

 

 

어느 정도 맵HEX 의 방법을 터득하게 된 이후...

이번에는 동해(東海)로 와서 아래의 좌표 지점에 "무언가 있어야 할 것이 없는" 것이 상당히 섭섭하여...

 

 

 

 

 

 

 

 

 

 

 

 

울릉도와 독도를 생성시켰습니다.

 

 

 

 

 

 

 

 

독도를 중심으로 만든 보물지도 스샷...

실제 경도/위도에 충실하게 하다보니 약간 일본쪽으로 치우친게 아닌가 생각될지 몰라도...

사실은 원본맵의 큐슈와 시모노세키가 너무 서쪽으로 늘려진 것입니다.

                      

 

 

 

 

 

 

 

 

 

 

첨부파일 설명


파나마수에즈.zip 를 다운받아 풀면 다음의 두개의 파일이 있습니다.


수에즈항로-dh4pk.exe
알렉산드리아-아덴 항로가 연결된 실행파일

주의: 오사카-에도 항로 없음. -> 아래 제작노트 설명 참조.

 


파나마수에즈world.dat
파나마운하, 수에즈운하, 울릉도/독도 맵hex가 된 상태

 

 

위 첨부파일을 대항4pk폴더에 풉니다.

폴더가 어디 있는지 모르는 분은 윈도우탐색기로 "dh4pk.exe"를 검색하면 폴더 위치를 알려 줍니다.

exe파일을 더블클릭합니다.

(이런 설명도 해야하나... 의구심이 들지만... 의외로 모르시는 분들도 제법 계시더군요. OTL... )


두 파일은 하나씩만 사용해도 되며, 함께 사용해도 됩니다.
단, "파나마수에즈world.dat" 파일은 이름을 "world.dat"로 바꾸어주어야 합니다.

 

 

 

 

 

 

 

 

 


참조 글


"파나마운하"에 관하여는
http://cafe.naver.com/daehangs/28669 벨캄프 님의 글
http://cafe.naver.com/daehangs/8525 kindmoon0 님의 글
http://cafe.naver.com/daehangs/2712 낭트머핀 님의 글
http://cafe.naver.com/daehangs/20081 haken0823 님의 글


"수에즈 운하"에 관하여는
http://cafe.naver.com/daehangs/795 smage 님의 글
http://cafe.naver.com/daehangs/2990 maincoper 님의 글
http://cafe.naver.com/daehangs/6098 imgoing0111 님의 글 참조.


"아틀란티스"에 관하여는
http://cafe.naver.com/daehangs/11905 술레이만 님의 글


"랜덤맵"에 관하여는
http://cafe.naver.com/daehangs/17382
http://cafe.naver.com/daehangs/17418 mirmidmi 님의 글

 

폴르토벨류(로) Portobello
http://100.naver.com/100.nhn?docid=769237
파나마 콜론주에 있는 17∼18세기의 에스파냐 요새.

포르토벨로는 카리브해에 면해 있는 작은 도시로서 1502년 콜럼버스가 발견하여
1597년 항구로 정비되었다.

에스파냐 식민지 시대에는 대서양 연안의 교역 중심지로 중요한 역할을 하였다.
항만 주위에는 17∼18세기 해적의 습격을 대비해 세운 5개의 요새 유적이 남아 있다.
1987년 유네스코(UNESCO:국제연합교육과학문화기구)에서 세계문화유산으로 지정하였다.


파나마
http://100.naver.com/100.nhn?docid=156926

 

 

 

 

 

 

 

 

 

 

 

 

 

 

맵Hex 공략 및 제작노트

 

 

 

 

 

 

★1 포르투벨류 동쪽으로 이동

 

 

world*.dll
offset 
a340~ 602b 0000 0023 0000 682b 0000 f822 0000 001415 항구(소도시)00, 멕시코14, 마추피추15
----> b22b 0000 ---- ---- bb2b 0000 ---- ---- ------ 약간 동쪽으로 이동

-> 카리브해, 태평양 양쪽에서 입항가능

단, 태평양에서 입항한 경우
출항시 "수동"항해로 출항하면 "태평양"으로 나가게 되고,
"자동"항로로 출항하면 "카리브해"로 나가게 됨.

카리브해에서 입항한 경우는 반드시 카리브해로만 출항.

 

∵ 수동항해 출항시에는 "입항지점의 좌표(=함대의 최후 좌표)"에서 해상모드로 나가게 되고,
   자동항해 출항시에는 world*.dk4 파일의 도시정보 중 "자동항해출항지점좌표"로
   해상모드로 나가기 때문.


위 포르투벨류의 도시정보에서
602b 0000 0023 0000 -> 시가지 좌표
682b 0000 f822 0000 -> 자동항해 출항지점 좌표

 

자동항해 출항지점 좌표는 예컨데,

런던,베라크루스,시라쿠사 의 경우는 시가지 좌표의 약간 우측(東)
리스본,캘리컷,한양                                                  좌측(西),
제노바,이스탄불                                                      아래쪽(南)
항주,알렉산드리아,하바나                                         위쪽(北)으로 설정되어 있다.

 

그밖에 세빌리아(南西), 스톡홀름(南東), 함부르크(北東) 등 모든 도시의
시가지좌표와 자동항해출항지점좌표는 아주 미세하게 다르게 설정되어 있다.

 

∵이렇게 시가지좌표와 자동항해출항지점좌표를 다르게 설정해 두어야
  자동항해시 함대가 육지를 가로지르는 것을 방지할 수 있고,
  또 마치 선박이 해안(부두)에 접안하는 것처럼 실제게임에서도 자연스럽다.

 

※ 이 때문에 필자가 "엽기"시리즈를 만들 때 "신도시"를 만드는(옮기는) 것이 무척 까다로웠다.

※ 도시의 좌표에 관하여 자세한 설명은 http://cafe.naver.com/daehangs/25651 참조.
   좌표의 원리를 먼저 이해하지 못하면 아래의 설명은 전혀 이해할 수 없습니다 !

 

 

 

위와 같은 문제점 때문에...차라리...뚫자 !!!

 

 


해상모드에서의 map 파일은 무엇인가????

답: world.dat
    증표지도 및 보물이 묻혀 있는 곳의 지도(보물지도)도 이 파일임.

 

routemap.dk4와 world.dat파일은 서로 무관함.
routemap파일은 이름 그대로 게임상에서의 "정보->항로도"에서 볼 수 있는
7개의 해역 및 전세계 지도이다.

실제 해상에서의 지형과 항로도상의 지형은 서로간에 전혀 관계가 없다.
실제 해상에서 존재하는 섬이 항로도에 없다든지,
혹은 그 반대로 항로도에는 표시되는 섬이 실제 해상에서 없는 경우도 있다.

따라서 실제지형(Map)이 바뀌더라도 "항로도"는 전혀 변화가 없다.

 

해상모드에서의 실제 지형과 관련있는 것은 오직 "패자의 증표지도 및 보물지도" 뿐이다.

위에 예시된 스샷에서 보는 바와 같이
파나마운하, 수에즈운하, 울릉도/독도 등을 생성시켜도
"항로도"는 종전과 비교했을 때 전혀 변화가 없으며,
다만 패자의증표지도 또는 보물지도에서만 반영된다.

 

위에서 본 보물지도들의 경우 정상적인 게임에서는 볼 수 없는 것으로서,
보물지도의 좌표를 수정하여(정확히 말하면 보물의 좌표를 수정하여)
지형의 변화를 확인할 수 있도록 hex edit 조작한 그림이다.

 

 

 


★2  파나마 운하 Map

world.dat

2aab70 7100 -> 0000
2abef8 0a00 -> 0000
2ad280 1a00 -> 0000               
2ae608 8d00 -> 0000         4개를 바꾸면 파나마 지협이 뚫린다!

 

 

 

 

 

★3 수에즈 운하 Map

world.DAT 
1f18be~ 2200 -> 0000 시나이반도 北, 지중해
1f2c46~ 4000 -> 0000
1f3fce~ c101 -> 0000
1f5356  0500 -> 0000
1f66de  1500 -> 0000
1f7a66  0500 -> 0000
1f8dee  1500 -> 0000
1fa176  0500 -> 0000
1fb4fe~ 1500 -> 0000
1fc886~ d001 -> 0000                     
1fdc0e~ 5400 -> 0000 
1fef96~ 2100 -> 0000 카이로 東, 홍해      12개를 바꾸면 수에즈 운하가 뚫린다!

 

 

 

 


★4 오사카-에도 항로 -> 수에즈운하 항로 update 2008. 6.25
 
dh4pk.exe
offset
182ba0 5f3b 9e9d9ca5   에도-오사카
-----> 1927 9c9d9ea5   알렉산드리아-아덴

 

offset  굴곡점   수정좌표
17b380~   9c     375c 0000 4a19 0000  시나이반도 위 지중해
17b388~   9d     375c 0000 2a1a 0000  홍해 카이로동쪽
17b390~   9e     2561 0000 d321 0000  아덴만


※ 항로의 기본적인 구조에 관하여는 http://cafe.naver.com/daehangs/25552 참조.

 

 

 

Why ???

왜 오사카-에도 항로를 "알렉산드리아-아덴"항로로 바꾸었나?...............................................2010. 7. 9 update

 

요점만 말씀드리면 아래와 같습니다.

1. 대항4pk의 항로는 기존의 항로를 다른 항로로 바꿀 수는 있어도 새로이 추가할 수는 없습니다. 항로 수 제한.

2. 대항4pk의 굴곡점은 기존의 위치를 다른 좌표로 바꿀 수는 있어도 새로이 추가할 수는 없습니다. 굴곡점 수 제한.

3. 알렉산드리아-아덴 항로(소위 수에즈 항로)에는 항로1개와 굴곡점 3개가 필요합니다.

4. 항로와 굴곡점을 수정할 때에는 기존의 게임에 가장 영향을 덜 미치게 에디트 하여야 뒷탈이 없습니다.

5. 오사카-에도 항로에는 항로1개와 (專用)굴곡점3개가 할당되어 있습니다.

6. 에도는 (정상적인 게임에서는) 주인공이 티알일 때에만 등장합니다.

7. 에도 신도시 이벤트는 패자의증표획득 혹은 엔딩을 위한 필수 이벤트가 아니며,

   오사카-에도 항로가 없어도 게임에 미치는 영향은 (초보자가 아닌한) 사실상 미미합니다.

8. 다른 항로를 알렉산드리아-아덴 항로로 바꿀 경우 항로를 최소 2개 이상 수정해야 하며

    따라서 게임에 예기치 못한 부작용을 수반할 우려가 매우 큽니다.

 

상세히 설명드리자면 각 항목당 10줄 이상의 부연설명이 필요하지만,

사실, 설명을 원하는 분들은 위 요점만 보더라도 무슨 말인지 이미 이해하셨으리라 봅니다. ^^;

  

 

 

 

 

 

 

 

★5   대항4pk  world.dat  Map의 기본원리

 

※ xxxx "두자리"로 하나의 사각형 cell을 구성  xxxx = 0000(바다) ~ xx03  약 600여종

※ 맵 한줄의 差 : 1388(hex)  
   ∴ 세계지도 맵 한줄은 hex 1388 ÷ 2 = 9c4 = dec 2,500개의 사각형 cell로 구성.
                
※ 전체의 cell 갯수 ?
   world.dat offset의 끝 -> hex: 5f5e0f = dec: 6,249,999     
   hex두자리가 하나의 cell을 구성하므로 6,250,000 ÷ 2 = 3,125,000 개

 

※ 맵 세로 cell의 갯수 ?
   3,125,000 ÷ 2,500 = 1,250 개
 
∴ 대항4pk의 세계지도 맵은 가로x세로 2,500 x 1,250 = 3,125,000 개의 사각형 cell로 구성되어 있다.


※ 경/위도 1도에 cell의 갯수는 ?
   2,500 ÷ 360(경도) =  6.9444
   1,250 ÷ 180(위도) =  6.9444   ∴ 경/위도 1도에 약 7 x 7 = 49개의 cell

 

 

 

 

 

 

 

 

★6   world.dat 파일의 cell 배치 구조


           게임에서 보는 세계 지도
┌─────────────────────┐
│■■■  ■                ■■       ■■■■■■■■   │
│ ■■■■               ■■■■  ■■■■■■■■     │
│   ■■■                        ■■■■■■■  ■      │
│     ■                 ■■■■  ■■■■■              │
│        ■■■■         ■■■     ■   ■               │
│           ■■             ■■            ■              │
│             ■■           ■■                 ■■      │
│               ■                                   ■■     │
└─────────────────────┘

 

 


        게임에서 보게 되는 cell 배치

1    2    3   4   5   6   7   8   9   .....................2500
2501 2502 2503250425052506250725082509........5000 ↕ 세계지도의 한줄 차이가 offset에서는 hex1388 差
5001 5002 5003500450055006500750085009........7500
--------중--------------------략--------------
----------------------------------------------
----------------------------------------------
----------------------------------------------
----------------------------------------------
(1250번째줄).......................................3125000끝

 

설명:
가로1,세로1의 cell이 북위90,서경180 의 cell이고
가로2500,세로1250의 cell이 남위90,동경180의 3,125,000번째 cell

 

 

 

         world.dat 파일의 offset
offset
0000~-----------------------------------------
1388~----------------------------------------- ↕ hex 1388 (dec: 5,000) 差
2710~-----------------------------------------
3a98~-----------------------------------------
7530~-----------------------------------------
-------------중-------------략----------------
----------------------------------------------
----------------------------------------5f5e0f끝


 

 

 

 

 

 

 


★7  함대가 현재 위치한 좌표에 임의의 지형 생성시키기 

 

임의의 지점에 게이머가 원하는 임의의 지형(얼음,녹지,사막,바다 등)을 생성시킬 때에는
게임상에서 "볼 수 있는" 경/위도를 이용하여 접근하면 오차가 많이 생기며 정확하지 않다.

다음과 같이 게임상에서 "볼 수 없는" hex좌표로 계산을 하여야 정확히 수정할 수 있다.

중간계산과정 및 공식유도과정이 상당히 난해 할 수 있으므로
이해가 잘 안되면 그냥 결론에 해당하는 "공식"만 보아도 무방하다.

 

 


◆ 사전 지식 ◆

hex 9c3f = dec 39999
hex 4e1f = dec 19999

                          경도      위도
"세상의 끝"의 hex 좌표  : 3f9c 0000 1f4e 0000 (동경180도, 남위90도)
이 점에 관하여는 http://cafe.naver.com/daehangs/30965  akdraw 님의 글 참조.


world.dat 맨 마지막 cell의 offset : 5f5e0f

 

경도
40000 ÷ 2500칸 = 16  =  hex 10
∴ 경도 hex 10 마다 cell 가로 1칸 증가.


위도
20000 ÷ 1250줄 = 16  =  hex 10
∴ 위도 hex 10 마다 cell 세로 1줄 증가.

 

 


함대의 현재의 hex 좌표

117~11f  라파엘

157~15f  호드람

197~19f  릴

1d7~1df  마리아

217~21F  교타로

257~25f  웃딘

297~29f  티알

 

 

 

 

 

 

 

◆ 기본 산수 문제 ◆

0번~99번까지의 100명의 학생이 다음과 같이 정렬한다.

0 1 2 3 4 5 6 7 8 9    
10111213141516171819
20212223242526272829
....중.......략.....
....................
90................99


57번학생은 가로 몇번째, 세로 몇번째에 있는가?


한줄의 差는 10
∴ 57 ÷ 10 = 5.7      하지만 나머지 "올림" 이므로 세로 6번재 줄


여섯번째줄 1분단 학생의 번호는?
(6-1) x 10 = 50번


50번학생이 1분단에 위치하므로 57번학생은 세로 8분단 !


위 기초 원리를 염두에 두고 아래 과정을 이해하시기 바람.

 

 

 

 

◆ 맵 hex edit 과정 ◆

                      경도      위도
현재 함대좌표: f646 0000 a21a 0000 (라스팔마스 수동항해 입항중)

 

라스팔마스의 위도 = 1aa2
1aa2 = 1ab번째 줄.         <- 위도 0000 0000 은 첫번째 줄이므로 나머지 "올림"


1ab번째줄 첫번째 cell의 world.dat offset
(1ab-1) x 1388 = 208050    <- 첫째줄의 world.dat offset은 000000이므로 -1 

 


라스팔마스의 경도 = 46f6
46f6 = hex 470번째 칸.         <- 경도 0000 0000 은 첫번째 칸이므로 나머지 "올림"

한칸은 xxxx두개의 hex 자리로 구성되므로
hex(470-1) x 2 = 46f x 2 = hex 8de       <- 각 줄의 경도 0000은 1칸이므로 -1

 


∴ 함대의 현지점 f646 0000 a21a 0000의 cell의 world.dat offset은
208050 + 8de = 20892e


20892e~  3100 -> 0800(얼음)   성공 !

 

 

 


◆ 계산 공식 ◆                         ※ 모든 수치는 16진수


좌표                   : ABCD 0000 EFGH 0000  (ABCD경도, EFGH위도)

world.dat의 offset : GHE x 1388  + CDA x 2
                   (세로 GHE번째 줄)     (가로 CDA번째 칸)  

 

 

 

 

 

 

 

 


★8    울릉도, 독도 만들기

 

울릉도:  동경131, 북위37
독도  :  동경132, 북위37

 

제작방법:

동그랗게 생긴 하나의 섬은 대부분 9개의 조각(cell)으로 구성되어 있다.
┌─┬─┬─┐
│1  │2 │3 │
├─┼─┼─┤
│4  │5 │6 │
├─┼─┼─┤
│7  │8 │9 │
└─┴─┴─┘

9부분         지형번호       섬
1 2 3            63 8f 62     ┌∩┐
4 5 6    ->   8e 0a 72     ⊂■⊃             
7 8 9           61 8d 60     └∪┘

오직 5만이 육지이고, 나머지 1,2,3,4,6,7,8,9는 연안지형(해안선)이다.   

 

 

 

울릉도를 카리브해 북위19,서경81의 작은섬에서 copy한다.

메인함대를 작은섬의 4번 위치에 두고 save하여 좌표 CA2A 0000 AB1E 0000를 알아냄.

 

공식을 이용하여 작은섬 4번의 cell위치 구하기:
1ea x 1388 + 2ac x 2 =  256250  + 558   = 2567a8  (기준=그림 4번의 좌표)
     

255420~ 6300    1   <- 기준에서 -1388
      22~ 8f00    2
      24~ 6200    3

2567a8~ 8e00    4   <- 기준
      aa~ 0a00    5
      ac~ 7200    6

257b30~ 6100    7   <- 기준에서 +1388
      32~ 8d00    8
      34~ 6000    9

 

 


위 9조각의 cell 지형을 울를도의 좌표로 이동한 후 바꾸어 준다.

 

울릉도좌표: 1087 0000 bc16 0000  (4번의 좌표)

16b x 1388 + 871 x 2 = 1bb1d8 + 10e2 = 1bc2ba  world.dat의 offset

 

1baf32~  0100 -> 6300    <- 기준에서 -1388
1baf34~  0000 -> 8f00
1baf36~  0100 -> 6200

 

1bc2ba~  1000 -> 8e00    <- 기준
1bc2bc~  1100 -> 0a00
1bc2be~  1000 -> 7200
 
1bd642~  0100 -> 6100    <- 기준에서 +1388
1bd644~  0000 -> 8d00
1bd646~  0100 -> 6000

 

이렇게 울릉도 좌표의 world.dat cell을 바꾸어주면, 울릉도가 생긴다.

 

 

 

 

 

※ 독도 : 울릉도보다 좀더 작게 표현해야 사실적이므로 다음과 같이 조작한다.


문제는 대항4pk원본의 세계지형에 하나의 cell로만 섬을 표현하는 지형이 없다.
아무리 작아도 전부 울릉도 내지는 일본의 도고섬(독도에서 가장 가까운 일본섬)
크기이다. http://100.naver.com/100.nhn?docid=845244

따라서 그 대안으로 두개의 연안지형 cell을 연결하여 표현하도록 한다.
 

 


독도의 좌표: 7f87 0000 f316 0000

16f x 1388 + 877 x 2 = 1bfff8 + 10ee = 1c10e6   world.dat의 offset


1c10e6~ 1000 -> 9700   ∩
1c246e~ 0100 -> 9500   ∪


※ 참고
지형번호  지형모습
9500       ∪
9600       ⊂
9700       ∩
9800       ⊃         9600 9800 ⊂⊃는 너무 사람 얼굴 같아서 배제함.


울릉도의 섬 중심부(위 5번)는 육지인 반면,
독도는 연안지형 두개의 조합이므로 선박이 그냥 관통한다.

 

 

 

 

 

 

 

 

 

 


이상의 맵hex방법을 응용하면,

대항2에서처럼 江을 거슬러 올라가게 한다거나,
대서양에 아틀란티스 대륙 생성,
심지어 현재의 메르카토르 도법이 아닌 세계지도
예컨데, 남북이 뒤바뀐 맵을 만드는 것도 가능하다.

 


 

 

끝.

 

 

 

 

 

 

 

 

推薦諸島 항해중 스샷...

 

반응형