요즘 가속도 측정에 관한 이슈들이 많이 올라오는 듯 합니다.

게임을 자주 할 시간이 없어서 인벤 게시판만 가끔 보고 있었는데 예전에 이런저런 선박들 성능 측정도 해보고 하며 즐겁게 게임하던 기억이 많이 나네요.

다른게 아니라 예전에 제가 가속도 측정 실험을 한참 할 때 사용하던 툴을 올려드리면 누군가는 시간을 투자해서 이런저런 실험들을 해보실 수 있지 않을까 해서 아주 조악하지만 제가 '수정'한(제가 만든 프로그램이 아닙니다.) 프로그램을 올려드립니다.

GVONavish 라는 프로그램인데 일본인 프로그래머분이 오픈소스로 소스를 공개해둔 프로젝트를 수정해서 만들었습니다. 원본의 소스코드는 https://osdn.net/projects/gvonavish/ 에 있습니다. 비주얼 스튜디오 2010을 사용해서 컴파일했고 제가 바꾼 것이라고는 약간의 한글화, 그리고 프로그램이 읽어오는 측량 좌표를 읽는 즉시 output.txt 라는 텍스트 파일로 내보내도록 만든 것 뿐입니다. 프로그램에 능하신 분들은 프로젝트에 참여하셔서 더 강력한 기능들을 추가하실 수 있으면 좋을 것 같습니다.

프로그램은 기본적으로 네비게이션 기능을 위해 만들어져 있으나 네비는 이보다 좋은 프로그램들이 많으니 실험용으로 제가 수정한 부분이 여러분들에게 도움이 되길 바랍니다.

사용법을 말씀드리자면, 이 프로그램은 순전히 네비게이션의 엔진만 있습니다. 맵 그림파일은 여러분들이 직접 지정해주셔야 합니다. 처음 실행하면 파일 위치를 알려달라고 하는데 다른 네비를 많이들 사용하고 계실테니 원하는 맵 그림파일을 선택해주시면 됩니다.

항적을 기록하는 방법은 여느 네비와 똑같습니다. 프로그램을 켜둔 상태에서 측량 스킬을 사용하면 그 즉시 항적기록을 시작합니다. 실행파일이 있는 위치에서 바로 output.txt 파일을 만들어내고 파일을 열어보면 세 개의 열로 데이터가 기록될겁니다. 이 중에서 첫 번째 세로줄 값은 무시하셔도 됩니다. 원래 제가 시간을 기록하려고 타임스탬프를 출력하도록 했는데 해역이 바뀔 때 이상한 값을 내놓는 에러가 있어서 사용하지 않고 있었습니다.

두 번째와 세 번째 세로열이 각각 x 좌표y 좌표입니다. 그리고 프로그램을 처음 실행했다가 종료하면 폴더 안에 GVONavish.ini 라는 파일과 RouteList.dat 라는 파일이 생깁니다. GVONavish.ini 는 각종 설정값이 저장되는 파일이고 RouteList.dat 파일은 항적을 저장하는 파일입니다. RouteList.dat 는 특별히 건드릴 필요가 없습니다. 이거는 네비에서 제공하는 항해경로를 저장하고 불러오고 하는 기능에 사용되는 파일입니다. 중요한것 하나는 GVONavish.ini 파일 안에 pollingInterval 이라는 파라미터가 중요한데, 좌표 측정을 수행하는 시간간격을 얼마로 설정할 것인지를 적는 란입니다. 만약 pollingInterval=1000 이라면 1000 밀리초, 즉, 1초에 한 번씩 좌표를 얻겠다는 의미가 됩니다. 그렇다면 10초동안 측정을 했다면 output.txt 에 10줄의 자료가 입력이 되겠지요?

이렇게 여러분들이 시간에 따른 내 선박의 좌표정보를 얻었으면 이 정보를 이용해서 중고등학교 물리시간에 배운 이동거리-속도-가속도 사이의 관계를 이용하셔서 엑셀 등의 프로그램으로 내 배의 성능을 분석하시면 되겠습니다.

사실은 x-y 좌표를 모두 기록하기 때문에 선회능력의 객관적인 효과를 알기 위해 각운동(angular motion) 분석을 해볼려고도 했었는데 쓸데없는 짓을 그만하고 현실에 충실하고자 그만두었던 ㅜㅜㅜ

이 프로그램을 이용한 실험은 근본적인 한계가 있습니다. 그 한계는 측량 스킬이 알려주는 좌표가 썩 정확하지 않다는 것 때문에 생깁니다! 측량스킬은 게임내 선박의 위치를 정수좌표로만 알려주는데 실제로 게임 내부에서는 이 좌표가 실수값으로 처리될 것으로 생각됩니다. 따라서 생각보다 그래프가 매끄럽지 않고 울퉁불퉁하게 나오기가 일쑤입니다. 이 문제는 pollingInterval 을 조정해서 결과 그래프를 어느정도 smoothing 을 할 수 있긴 하지만 근본적인 해결책이 될 수는 없습니다. 하지만 제가 예전에 팁게에 요런 글들을 올렸었습니다.

http://www.inven.co.kr/board/dho/498/14696?name=subject&keyword=%EA%B0%80%EC%86%8D
http://www.inven.co.kr/board/dho/498/14695?name=subject&keyword=%EA%B0%80%EC%86%8D
http://www.inven.co.kr/board/dho/498/15459?name=subject&keyword=%EA%B0%80%EC%86%8D

보시면 아실 수 있으시겠지만 가속도가 크게 차이나는 배들을 실험해보면 어느 배가 정확히 얼마나 더 빠른지 수치적으로 비교해볼 수 있습니다. 다만 우리가 얻어낼 수 있는 원천 데이터의 한계에 의해 가속도가 비슷비슷한 최상위배들 중에서 누가 더 가속이 좋은지는 가려내기 어려울 수 있습니다. 특히 요즘 알려진바에 의하면 대항해시대에서 선박의 가속도는 '단계'별로 구분되어 있다고 알려져 있는데 가속성능이 몇 단계 차이가 그닥 나지 않는 경우는 솔직히 성능차이를 구별할 수 있을지 별로 자신이 없습니다. 말씀드린 원천적 한계 때문에요.

그리고 바이러스가 걱정되시는 분들은 절대로 다운로드 받지 마시기 바랍니다. 사실 제가 올린 프로그램은 저 스스로는 100% 안전하다고 생각합니다. 하지만 여러분들이 이 프로그램을 이용하시고나서 일어날 수 있는 모든 일들(이 프로그램을 이용해서 생긴 일이건 아니건간에)에 대해 제가 책임질 수 없기 때문에 거듭 말씀드리지만 바이러스나 악성코드, 랜섬웨어 등이 걱정되신다면 이 프로그램을 절대 이용하지 마시고, 간단한 C++ 공부를 하셔서 위에 소개해드린 오픈소스 프로젝트에 참여를 하셔서 직접 코드를 수정하고 컴파일해서 사용해주시기 바랍니다. 제가 수정한 소스코드를 올리지 않은 이유는 제 코딩수준이 너무 부끄러워서 그런 것도 있지만 사실 코드를 올린다고 해도 실행파일을 같이 올리게 되면 그 실행파일이 제가 올린 코드를 컴파일해서 만들어졌다는 보장도 없기 때문에 믿고 쓰실 분들만 쓰시면 되겠다고 생각해서 올리지 않았습니다.

잡설을 마치고 마지막으로 원본 프로그램의 소스코드 출처를 명시하면서 제 글을 마치겠습니다. :)