나룻배를 타고 물 위로


말을 타고 땅 위를 여행하는 데 이어, 이번에는 나룻배인 Rowboat를 추가했습니다. 물 위에 배를 띄워 노를 젓고, 마음에 드는 곳에 멈춰 앉은 채로 낚시할 수 있습니다.

최초의 배

나룻배의 첫 구현은 GitHub 컨트리뷰터 letnaturebe가 보내 주었습니다. 아래는 그 배의 최초 모습입니다.

GitHub 컨트리뷰터 letnaturebe가 보내 준 최초의 나룻배. 캐릭터가 검을 든 채 배 안에 앉아 있고, 노는 양옆에 놓여 있습니다.

이 배를 바탕으로 선체와 탑승 자세를 다듬고, 나무 텍스처와 노 젓는 동작, 물보라를 더했습니다.

배를 띄우고 내리기

리카(Rica)에게 나룻배를 기본 가격 1골드에 구매할 수 있습니다. 야외의 물에 들어가 가방에서 배를 사용하면 승선하고, 다시 사용하면 내립니다. 배는 사용해도 소모되지 않습니다.

배를 띄울 수 있는 수심은 낚시가 가능한 수심과 같은 기준을 사용합니다. 강이나 바다에서 수심이 0.1m 이상이면 탈 수 있고, 땅 위에서는 띄울 수 없습니다. 배를 타고 너무 얕은 곳으로 들어가면 자동으로 내립니다.

이동 속도는 같은 조건의 도보 이동보다 1.25배 빠르게 설정했습니다. 배는 물속 바닥이 아니라 수면 높이를 따라 움직이며, 타고 있는 동안에는 물을 건너도 젖음 디버프가 새로 붙지 않습니다. 방향을 바꿀 때는 작은 원호를 그리며 선회합니다.

나무배 모델 다듬기

처음 받은 배 모델은 Blender 스크립트로 생성한 모델입니다. 배 안에는 가로로 놓인 널판 세 개가 있고, 캐릭터는 가운데 자리에 앉습니다. 양쪽 노는 별도로 움직일 수 있게 나뉘어 있습니다.

아래는 배 후미에 뚫려 있던 부분에 판을 대어 막은 상태입니다.

배 후미의 뚫린 부분을 판으로 막은 나룻배

후미를 막은 뒤에도 자세히 보니 선수 부분의 양쪽 선체가 완전히 연결되지 않고 약간 벌어져 있었습니다. 아래 확대 사진에서 뱃머리에 남은 틈을 볼 수 있습니다.

선수 부분의 양쪽 선체가 완전히 연결되지 않아 틈이 남아 있는 나룻배의 확대 모습

이후 선수 끝의 양쪽 선체를 연결해 틈을 막고, 선체 안팎의 두께도 다듬었습니다. 아래는 선수의 틈을 막은 모습입니다.

선수 끝의 양쪽 선체를 연결해 틈을 막은 나룻배

아스트라에게 나무 텍스처 요청하기

이때까지 배의 재질은 단색이었습니다. 나무배의 질감이 드러나도록 아스트라에게 나무 텍스처를 직접 그려서 적용해 달라고 요청했습니다.

아스트라는 이미지 생성 도구로 갈색 오크 판재 텍스처를 만들었습니다. 아래는 요청 내용과 만들어진 나무 텍스처입니다.

아스트라에게 배에 쓸 나무 텍스처를 그려 적용해 달라고 요청한 대화와 생성된 나무 판재 이미지

선체와 바닥에는 배의 길이 방향으로, 가로 널판에는 폭 방향으로, 노에는 자루와 날의 길이를 따라 나뭇결이 이어지도록 입혔습니다. 가방에 표시하는 아이콘도 같은 배 모델을 렌더해 만들었습니다.

아래는 나무 텍스처를 배에 적용한 모습입니다. 선체와 바닥, 가로 널판과 노에 나뭇결이 드러납니다.

선체와 바닥, 가로 널판과 노에 나무 텍스처가 적용된 나룻배

노와 몸이 함께 움직이도록

노 젓기 애니메이션도 아스트라에게 만들어 달라고 요청했습니다. 아래 영상은 그렇게 처음 만들어진 동작입니다. 아직 앉는 방향을 바꾸기 전이라, 캐릭터가 배의 진행 방향을 바라보며 노를 젓고 있습니다.

이후 캐릭터가 배의 진행 방향에 등을 지고, 선미를 바라보며 노를 젓도록 앉는 방향을 바꿨습니다. 아래는 앉는 방향을 수정한 모습입니다.

배의 진행 방향에 등을 지고 선미를 바라보도록 앉는 방향을 바꾼 캐릭터

아래 영상은 뒤로 돌아앉은 자세에 노 젓기 애니메이션을 적용한 모습입니다. 캐릭터가 배의 진행 방향에 등을 지고 선미를 바라보며 노를 젓습니다.

기존의 의자에 앉는 자세를 바탕으로 발이 배 바닥에 닿도록 높이를 맞췄고, 배가 조금씩 흔들릴 때 탑승자도 함께 움직이게 했습니다.

이동을 시작하면 양쪽 노를 뱃전 바깥으로 펼칩니다. 노의 날로 물을 뒤쪽으로 밀고, 수면 위로 되가져올 때는 날을 눕힙니다. 배의 이동 속도에 따라 노 젓는 박자도 달라집니다.

캐릭터의 양손은 움직이는 노 손잡이를 따라갑니다. 손잡이를 몸 쪽으로 당길 때 상체도 뒤로 기울어지도록 해서, 팔과 몸이 같은 박자로 노를 젓게 했습니다. 노를 다루는 동안에는 손에 들고 있던 장비를 숨깁니다.

잠깐 멈췄다고 바로 노를 접으면 짧게 이동할 때마다 동작이 반복됩니다. 그래서 멈춘 뒤에는 노를 펼친 채 5초 동안 기다리고, 그 안에 다시 움직이면 바로 노 젓기를 이어가도록 했습니다. 더 오래 멈추면 노를 천천히 접어 뱃전에 걸쳐 둡니다.

아래 영상은 배가 멈춘 뒤에도 노를 약간 펼쳐 둔 자세를 유지하도록 수정한 모습입니다.

물결과 물방울을 더한 완성본

배가 앞으로 나아가면 뱃머리에서 V자 모양으로 퍼지는 물거품이 이동 경로에 남습니다. 거품은 조금씩 퍼지며 옅어지고, 각각 다른 시간에 사라지도록 했습니다. 배가 멈추면 남아 있는 거품도 더 커지지 않고 제자리에서 사라집니다.

노의 날 끝이 수면에 들어가는 순간에는 작은 물방울과 거품이 생깁니다. 실제 노의 위치와 수면 높이를 기준으로 만들기 때문에, 멈춰서 노를 펼쳐 두고 있을 때는 새 물보라가 생기지 않습니다. 물 이펙트는 낮과 밤의 밝기, 그래픽 설정도 따릅니다.

아래는 배가 물을 가르는 효과와 노가 수면에 닿을 때 물방울이 튀는 효과까지 더한 완성본입니다.

배 위에 앉아서 낚시하기

배를 타고 낚시할 때는 하체의 앉은 자세를 유지하면서 상체로 낚싯줄을 던지고 낚싯대를 다룹니다. 기존 앉기 동작과 낚시 동작을 뼈대별로 조합했고, 허리가 앉은 골반 위에서 꺾이지 않도록 허리 아래쪽까지 앉은 자세를 유지했습니다.

배에 앉아서 낚시할 때는 캐릭터가 바라보는 선미(배의 뒤쪽) 방향으로만 낚싯줄을 던질 수 있도록 수정했습니다. 캐릭터 기준으로는 정면이고, 배의 진행 방향을 기준으로는 뒤쪽입니다. 다른 방향으로 낚시하면 앉은 자세가 어색해지기 때문에, 옆이나 선수 방향으로는 낚시할 수 없게 했습니다.

낚싯대를 들고 선미 쪽 가까운 물을 클릭하면 낚시를 시작하므로, 이때는 키보드로 배를 움직이고 클릭으로 낚싯줄을 던지면 됩니다. 낚시 사거리인 8m 밖을 클릭하면 이동합니다. 낚시나 공격 같은 동작을 시작할 때는 5초를 기다리지 않고 노를 접어 해당 동작으로 전환합니다.

아직 남은 전투 제약

배는 전투가 시작되어도 자동으로 내리지 않으며, 계속 이동하고 방향을 바꿀 수 있습니다. 다만 현재는 탈것에 탄 동안 스킬과 어빌리티를 쓸 수 없는 기존 제약이 남아 있어, 배 위에서는 기본 공격만 가능합니다. 배 위에서의 전투 규칙은 더 정리할 부분으로 남아 있습니다.