DOI QR코드

DOI QR Code

Design of Fishing Game Based on a Cross-Platform Server

  • 투고 : 2022.01.25
  • 심사 : 2022.02.17
  • 발행 : 2022.04.29

초록

COVID-19의 확산으로 인하여 많은 지자체에서는 대규모의 관광객이 유입되는 상황에 대한 부담감이 발생하고 있다. 또한 워라벨(Work-Life-Balance)을 중시하는 풍토가 생겨나면서 개인의 삶과 만족도에 관한 관심이 급격히 높아지고 있다. 또한, 메타버스 분야의 인기로 인해 많은 사람이 관련 콘텐츠에 관한 관심이 높아지고 있다. 특히 '모여봐요. 동물의 숲' 은 2020년도 1,500만 장 이상 판매를 하였고, 이곳에서 집을 인테리어하고, 낚시하고 곤충을 채집하는 교류를 즐기고 있다. 본 연구에서는 이러한 추세에 맞춰 제주 인프라를 기반으로 하는 온라인 낚시 게임 개발을 소개하고자 한다. 본 논문은 구현 및 개발 내용을 위주로 설명을 할 것이며, 특히 온라인 서버를 개발, 유니티3D 엔진을 기반으로 제주도 지형의 아름다움을 최대한 살린 지형모델을 개발 및 낚시에 최적된 캐릭터 애니메이션을 통해 차별화된 게임 개발을 소개한다.

Due to the spread of COVID-19, many local governments are burdened with the influx of large-scale tourists. As a climate that values Work-Life-Balance has emerged, interest in individual life and satisfaction is rapidly increasing. In addition, due to the popularity of the metaverse field, many people are increasingly interested in related content. In particular, "Animal Crossing: New Horizons" sold more than 15 million copies in 2020, and is enjoying exchanges of interior design, fishing, and collecting insects here. In line with this trend, this study introduces the development of online fishing games based on Jeju infrastructure. This paper focuses on implementation and development, and in particular, it introduces differentiated games through character animation optimized for developing a topographic model that maximizes the beauty of Jeju Island's topography based on the Unity 3D engine.

키워드

I. Introduction

COVID-19의 확산으로 인하여 국가 간의 여행이 제한되고, 이로 인하여 제주의 관광 산업[1, 2] 역시 영향을 받고 있다. 김포-제주 간 항공 노선을 통해 국내 관광객이 많이 다녀가고 있다. 제주도는 2021년 선제적 관광 전략 중 관심을 끄는 내용으로 제주 특수성을 반영한 지역관광 콘텐츠 개발하고, 주민 중심의 지역관광 활성화와 지역관광 활성화를 통한 지역 상생 기반 조성 및 온라인 중심 마케팅과 해외시장 특성에 맞는 마케팅 추진 등을 들 수 있다.

과거 제주도의 관광 인프라 확충 및 사용자의 만족도를 높이려는 방안으로 가장 많이 회자된 것은 제주도 지역별 가장 인기가 높은 지역 내에 스마트 ICT 기술과 VR/AR 기술[3, 4, 5] 등을 도입하여 관광의 특정 요소를 목표화하여 체험을 극대화하는 것이었다. 그러나 이러한 기술을 활용한 체험이 과연 이용자가 제주도를 방문하게 할 만큼의 파급력을 가지는지는 회의적이다. 제주도를 대표하는 가장 강렬한 키워드는 ‘청정자연’이기 때문이다.

따라서 제주도의 관광 콘텐츠가 결합된 개발을 통해 새로운 시너지를 발현하는 디지털 서비스 콘텐츠를 개발하 고자 한다. 제안 연구는 온라인 기술을 기반으로 낚시 게임 콘텐츠를 좀 더 확장한 형태로 콘텐츠 개발 및 서비스를 목표로 한다. 이를 통해 온라인 게임을 즐기는 젊은 사용자층인 20~40대 사이에 제주와 힐링 세상을 자연스럽게 제공하고 이 가상의 환경 속에서 자연스럽게 제주를 미리 학습하는 콘텐츠를 개발하고자 한다.

II. Game Design

1. Game architecture

본 논문은 구현 논문으로 제주도의 바다를 배경으로 하 는 다양한 낚시 게임 개발 방법에 대한 소개를 보여준다

일반적으로 유명한 낚시 게임[6, 7]들은 정교한 메커니즘과 살아있는 물고기 움직임 구현에 초점을 두고 있다. 본 제안 방법인 제주도 기반 낚시 게임은 사용자가 적극적으로 참여하는 상태에서 제주의 관광 자원을 접하게 되고, 훨씬 능동적으로 정보를 접하고 그 내용을 빨리 숙지하게 된다는 특징이 있다. 낚시를 시발점으로 필드 내에서 삶을 살아가는 형식의 구성이며 지속적인 성장과 사용자 간 커뮤니케이션을 독려하며 힐링 성장 라이프를 제공한다. 이 과정에서 제주의 문화와 자원을 접하고 자연스럽게 ‘제주 다움’을 익히도록 하며, 능동적인 사용자 포섭이 가능하다.

제안 방법은 제주도 지형을 직접 지형모델로 만들고, 캐릭터 조작을 통해 직접 낚시의 재미를 구현하였고, 이를 위해 PC 기반으로 개발한다.

본 연구 방법에서 개발한 게임은 4가지의 과정으로 나누어진다. 첫 번째는 서버 클러스터 구축 및 네트워크 시스템 개발이며, 두 번째는 지형모델 개발, 세 번째는 리소스 데이터 개발 및 배치이다. 네 번째는 캐릭터 모델링과 이를 구동하기 위한 애니메이션 개발이고, 마지막이 낚시 시스템 모듈 개발이다. 낚시 시스템 모듈 개발 부분은 현재 계속 개선 중이다. 게임의 전체적인 흐름도는 그림 1과 같다. 그림 1은 제안 게임의 전체 흐름을 나타내며, 인-게 임과 아웃-게임으로 나눈 후, 각 프로세스의 연결 구성을 완성하게 된다. 여기서 UI 기능 및 동작 등 프로세스에 따라 연동되는 동작에 대한 시안 가이드를 기반으로 관련 기획서를 완성하게 된다. 특히 인-게임 내의 가장 우선되는 동작은 낚시를 위해 좌대를 클릭하는 것이며, 이 좌대를 클릭하며 기본적인 모든 동작과 프로세스가 완성된다.

Fig. 1. The flow chart shows the process of fishing based on the pedestal.

1.2 Development of server cluster and network system

본 제안 방법에서는 AWS(Amazon Web Services) [8] 를 사용하지 않고, 본 게임 서비스에 사용될 리눅스 시스 템과 MYSQL의 구성을 고려하고, 또한 사용될 비용 등을 고려하여 linode.com[9]의 클라우드 서비스를 선택하여 서버 시스템을 구성하였다. 서버 시스템에는 로그인 클러 스터, 게임 서비스 클러스터, 어카운트 DB 클러스터, 게임DB 클러스터를 구성하였으며, 백엔드단 기능으로 매칭큐, 매칭 서비스, 파티인스턴스, 푸쉬서버, 리더보드, 게임 인스턴스를 포함하였다. 특히 메신저 기능의 경우, 서비스용으로 자체적으로 보유하고 있던 mrUDP기능을 포함하여 모바일 기기와 PC와의 통신의 원활하며, 접속 끊김 후 자동 복구 기능이 포함된 네트워크를 포함했다. 특히 멀리 플랫폼 다중 대화 기능이 있는 메신저 기능을 추가하여 온라인 채팅이 언제든지 가능한 시스템 구성을 완료하였다.

본 서버 구성은 로우-레벨 소켓 래퍼를 지원하지 않으며, 네트워크 연결을 고려한 하이-레벨용으로 구성되어 있다. 핵심 영역을 건드리지 않고 네트워킹의 세부 사항 수정은 불가능하도록 설계하였으나, 이를 통해 UDP 및 TCP 나 네트워크 유형 전환이 쉽다는 혜택을 얻을 수 있다.

특히 클라이언트 측면에서는 ConnectionTCPClient, ConnectionUDPClient 또는 ConnectionMUDPClient를 선택할 수 있도록 구성되어 있다. MUDP는 모바일 환경을 위해 특별히 고안된 본사 자체 개발 mrUDP 프로토콜이며, 연결 해제 없이 전송 매체/라우터 변경 사항을 관리할 수 있는 기능을 탑재하고 있다.

서버 측면에서는 NetServerTCP, NetServerUDP 또는 NetServerMUDP 중 하나를 선택해야 한다. 프로토콜 유 형을 선택했으면 연결을 통한 메시지 처리만 하면 되도록 구성되어 있다. 모든 프로토콜 메시지는 메시지 MessageData 클래스에 묶여 있고 그 데이터의 인터페이스는 프로토콜 컴파일러에 의해 생성될 MessageBase의 하위 클래스에 있는 구성이다.

로우-레벨 네트워크 IO 처리를 위해 EPOLL, KQUEUE 및 Windows IOCP를 지원하도록 하였다. 이를 통해 무거운 네트워크 로드 또한 처리할 수 있게 하였다. 그림 2는 개발자 간 기능 공유 및 원활한 커뮤니케이션을 위해 Trello.com의 관리 기능을 활용하고 있다. 엑셀 테이블 데이터를 곧장 서버 DB로 업로드하는 방식 내부 공유와 사용법을 올려놓은 화면이다.

Fig. 2. Trello.com's management capabilities for functional sharing and smooth communication among developers

그림 3은 게임에 적용되는 테이블로 엑셀로 작성 후에 서버 시스템에 올리게 된다. 이를 통해 프로그래머의 도움 없이 기획자가 직접 시스템 구성을 수정, 테스트할 수 있도록 하였다.

Fig. 3. Upload system

완성된 서버 구성 내용은 서버 소스의 동작 오류 등의 파악을 위해 CI(Continuous Integration) 시스템을 설치하여 연동하였다. 이를 통해 기본적인 빌드에 생기는 오류 등의 체크는 자동으로 확인할 수 있도록 하였다.

본 연구 방법에서는 서버 기능의 단위 테스트를 위해 서버 로그 파일을 기반으로 한 확인을 지속해서 테스트하는 중이다. 이러한 목표 확인을 위해 데이터 전송에 대한 상세한 내용을 0.01초까지 확인해야 할 필요가 있어서 서버의 로그 시스템값을 조밀하게 구성한 상황이다. 이러한 테스트는 TTA에서의 최종 시험 때까지만 진행할 것이며 이 후에는 로그 시스템의 시간 체크 단위를 좀 더 유연하게 하여 서버 시스템이 받을 수 있는 부하의 양을 최소화하는 것이 필요하다. 그림 4는 개발 중인 소스는 Github에서 관리 및 기능 통합을 진행하고 있다. 각자 업로드되는 내용에 따른 빌드의 오류 등을 자동으로 점검할 수 있도록 CI(Continuous Integration) 서버를 연동시켰다. 본 서버는 젠킨스(Jenkins)[10]를 통해 동작한다.

Fig. 4. The source code under development is being managed and integrated by Github.

3. Terrain

본 연구에서는 제주를 기반으로 한 낚시 게임을 주제로 하고 있으며, 제주 관련 관광 정보 기획 데이터를 기반으로 제주다움을 느낄 수 있는 지형모델을 지향하고 있다. 본 연구에서는 기본적인 지형모델[11, 12]의 메쉬 개발을 위해 유니티 엔진에서 제공해주는 지형모델 에디터 (Default Unity Terrain Editor)[13]를 사용하였다. 다만, 현재 지하 동굴, 폭포수, 바위, 기암절벽 등의 표현이 필요한 부분은 직접 3D 메쉬를 디자인하여 결합하는 방식할 예정이다.

본 연구에서의 지형모델은 제주도 지형 기획을 바탕으로 직접 제작하는 필드 제작과 제작된 필드의 그래픽 효과를 개선하기 위한 후처리 효과 적용 등의 2가지 방향성을 가지고 있다. 메모리 효율적인 방법을 위해 거리에 따른 지형별 표현을 위해 LOD(Level of Detail : 거리에 따른 디테일 표현 차이)[14]를 적용하였고, 처리 과정에 지형의 텍스처의 블랜딩 기술(스플릿 맵)을 적용할 것이며 이를 통해 자연스러운 텍스처 색감 처리와 빛의 산란 등을 표현하였다.

그림 5는 높이 맵을 테스트하기 위해 준비해 본 예제 중의 하나이다. 흰색 색상과 검은색 색상의 농도에 따라 지형의 높이와 깊이가 달라지는 구성을 볼 수 있다. 색감의 조절을 통해 제작하고자 하는 지형의 기본적인 구성이 완성되기 때문에 초기 지형모델의 메쉬 제작 가이드에 큰 도움을 줄 것이다.

Fig. 5. Height map test

그림 6은 제주도 한라산의 정상과 백록담의 형태를 보여주는 높이 맵으로, 제안 방법에서 만든 높이 맵을 기본으로 백록담 근처의 지형모델을 개발한다. 여기서는 백록담이 깊게 폐인 구성을 만들어진 만큼 실제 게임상에서는 한라산의 전경을 볼 수 없는 문제가 생겨 이 부분은 카메라 이동 기법을 통해 보완한다.

Fig. 6. A height map of the top of Hallasan Mountain in Jeju Island and the shape of Baengnokdam

그림 7은 제작된 지형모델을 보여주고 있다. 지형모델개발 외에도 지형을 기반으로 후처리 작업에 관련된 기능을 개발 고도화시켜야 한다. 특히 후처리 작업을 통해 화면에 보이는 색감의 밝기와 채도, 샤프니스, 색감 등 총 15개가 넘는 기능을 지원하고 있다. 한편, 모니터별 색감이 다른 까닭에 표준형 색감을 미리 선정하고 그 색감을 기준으로 한 작업을 제작 진행하였다

Fig. 7. Result of Terrain

4. Development of Character modeling and animation

캐릭터 모델링과 애니메이션[15, 16]은 서로 연계되어 연속적으로 완성이 되어야 하는 작업이다. 본 작업의 완성을 위해 1차 캐릭터 가이드 제작 > 1차 캐릭터 3D 모델링 > 1차 캐릭터 리깅 > 1차 캐릭터 이동 애니메이션 제작 > 캐릭터 이동 전체 프로세스 기획 > 1차 캐릭터 아이들 모션 제작 > 1차 캐릭터 전투 애니메이션 제작 > 애니메이션 블랜딩 툴 개발 > 게임 내 적용 > 2차 캐릭터 가이드 제작의 순서를 따라 진행하게 되었다. 이러한 작업 순서는 4번째 캐릭터가 완성되기까지 반복되는 작업이 될 것이다.

캐릭터를 순차적으로 계속 제작하고 애니메이션을 추가 제작하는 절차였다면 모두 제작 완료 가능할 상황이었나 이런 순서의 작업은 개발기능 변화에 따라 4개 캐릭터를 모두 수정해야 하는 부담감을 주는 구성인 만큼 1개 캐릭 터를 1차 완성 후 오랜 시간 테스트와 적용을 거쳐 수정 사항이 없다고 판단되는 시점에 다음 작업을 진행할 필요성이 있다.

그림 8은 기획서를 기반으로 구성한 캐릭터의 애니메이션 동작 전체 프로세스를 보여주고 있으며, 상황별 동작하는 모든 애니메이션의 링크와 흐름을 포함하고 있다.

Fig. 8. The process of animation movement of a character

그림 9는 낚시가 진행되면 1개의 동작이 아닌, 7개의 동작이 연결되어 그 동작이 섞인 느낌의 애니메이션을 플레이하는 모습이다. 이를 통해 키보드와 마우스를 움직이고 있는 방향에 따라 그 위치에 적절한 애니메이션을 블랜딩하여 플레이해주는 기능을 제작하였다. 본 블랜딩 애니메이션 기능을 통해 각 상황에 맞는 애니메이션을 적절하게 자동 플레이해주는 기능이 완성되었다.

Fig. 9. fishing action animation

5. Fishing system module development

낚시는 모듈 형태로 제작되어 좌대에서 이 기능을 불러들이는 형태로 구성하였다. 데크 내에서는 사용자가 지정 해주는 키 입력값에 따라 블랜딩 된 애니메이션이 출력되며, 물 한가운데에서는 낚시 시스템 모듈이 동작하며 키 입력에 따른 결괏값이 2D 애니메이션으로 출력된다.

물 한가운데 보이는 물고기 아바타는 스파인(Spine)툴을 사용하여 2D 그래픽에 본(Bone)을 설치하고 움직이는 형식을 취하였다. 이벤트 3가지 방식으로 동작하며 각 이벤트에 따른 애니메이션은 모두 다르게 구성하였다.

그림 10은 낚시 캐스팅에서 인카운트까지의 기본 프로세스 순서도를 보여준다.

Fig. 10. Basic Process Flow Chart from Fishing Casting to Encounter

6. PC client build

유니티 엔진[17, 18]을 통해 제작된 본 시스템은 엔진을 통해 직접 테스트 등이 가능하나, 엔진의 기본 구성을 베이스에 얹고 시스템을 테스트하는 것이므로 실제적인 테스트 내용과는 다른 내용을 보여줄 수 있다. 이런 문제 해 결을 위해 클라이언트 빌드를 수시로 제작하여 테스트하는 작업을 병행하고 있다.

특히 온라인 시스템의 안정성을 확인하기 위해 여러 대 의 컴퓨터로 접속된 상황에서의 안정성을 테스트할 필요 가 있디. 이런 테스트를 위해 헤드리스 클라이언트 (Headless Client)를 제작 완료하였다. 본 클라이언트를 화면상에 그래픽적인 연출을 하지 않은 채 데이터의 왕복 만을 실제 게임과 동일하게 진행하도록 구성된 클라이언 트이다. 이 클라이언트를 사용해 1000명 사용자 접속 등 의 상황을 손쉽게 테스트해 볼 수 있다.

기본 클라이언트 빌드 및 헤드리스 클라이언트 사용을 통해 지속적인 테스트와 개발을 병행하고 있으며, 이를 통한 디버깅을 진행 중이다. 단, 클라이언트 빌드는 개발 중 너무 많은 시간을 빼앗는 요소로 작용할 수 있는 만큼 활용 방식 부분에 있어 유연하게 대처하고자 노력하고 있다.

III. Experimental Environment

본 구현에 필요한 소프트웨어와 하드웨어는 다음과 같다. CPU는 인텔사의 i9-11세대를 사용하고, 그래픽 카드는 지포스(GeForce) GTX 3080, 12GB를 사용하고, 메인 메모리는 32GB이다. 소프트웨어는 유니티 2020.3.24.F 버전과 C#4.0을 사용하였다.

그림 11은 제주도 지형모델을 생성하여, 제주도 특색의 나무와 구조물을 배치한 결과를 보여준다. 본 제안 방법에서는 현재 낚시 및 어류에 대한 분석을 진행하고 있어서 낚시 게임에 특화된 부분은 현재 개발 중이다.

Fig. 11. Jeju island

IV. Conclusions

본 논문에서는 유니티 3D 엔진을 사용하여 온라인 서버 및 제주도 지형의 아름다움을 최대한 살린 지형모델을 개발하였다. 특히 제주도의 유려한 환경을 최대한 살린 지형에서 낚시 게임을 개발하였다. 제주를 기반으로한 힐링 낚시 콘텐츠를 만들기 위해 제주도의 명소를 찾아가 사진과 스케치로 컨셉을 구상하였고, 특히 제주를 기반으로 한 지형모델을 만들기 위해 전문가들과 함께 지형모델을 구성하였다.

본 연구는 PC 기반의 낚시 게임에 필요한 구성 요소를 제시하였고, 실제 온라인 낚시 게임으로 제작하여 배포할 예정이다. 다만, 모바일에서의 대응은 현재 많은 리소스를 사용하고 있지 않기 때문에 이 부분도 차후 연구과제로 구성 중에 있다. 차후 연구에서는 낚싯대에 물고기가 걸렸을 때 휘어지는 기점이 있으며 그 기점에 따라 휘는 감도가 다르다는 점을 바탕으로 하여, 낚시 시스템 모듈에 대해 베지어 곡선(Bezier Curve)을 적용할 예정이다. 이를 통해 낚싯대가 현실감에 기반한 휨을 보여주기 위해 베지어 곡선의 공식을 적용할 것이다. 또한 현수선(Catenary)을 통해 낚싯대에 연결된 낚싯줄은 힘과 중력의 방향에 따라 일직선이 아닌 약간 쳐진 곡선 느낌이 들도록 할 예정이다.

ACKNOWLEDGEMENT

참고문헌

  1. Animal Crossing New Horizons: https://www.nintendo.co.kr/software/switch/acbaa/index.html
  2. Jeju tourrism trends annual report, JEJU TOURISM ORGANIZA TION, 2021
  3. Development of mobile applications and key technologies for smart tourism based on the ICT convergence, Ministry of Science and ICT, 2020
  4. Kisung Jeong, "A Study on Virtual Reality Techniques for Immersive Traditional Fairy Tale Contents Production", Korea Computer Graphics Society Vol. 22, No.3, P43-52, 2016. https://doi.org/10.15701/kcgs.2016.22.3.43
  5. Jason Jerald, " The VR Book: Human-Centered Design for Virtual Reality", Morgan & Claypool Publishers, October 16, 2015.
  6. Ace Fishing, Com2us: https://apps.apple.com/kr/app/%EB%82%9A%EC%8B%9C%EC%9D%98-%EC%8B%A0/id694972182
  7. Fising crash, https://tensquaregames.com/
  8. Amazon Web Services : https://aws.amazon.com/ko/
  9. linode.com: https://www.linode.com/ko/
  10. Jenkins: github.com/jenkinsci/jenkins
  11. Greg Snook,"Real-Time 3D Terrain Engines Using C++ and DirectX9 (Game Development Series)", Charles River Media; 1st edition (June 30, 2003)
  12. Osou Alexander, "Terrain Rendering mit Hardware Tessellation unter DirectX 11", AV Akademikerverlag, 2014
  13. Unity3D Terrain Editor: https://docs.unity3d.com/kr/2018.4/Manual/terrain-UsingTerrains.html
  14. David Luebke et al., "Level of Detail for 3D Graphics", Morgan Kaufmann, 2003
  15. Unity 3D character modeling: https://docs.unity3d.com/kr/530/Manual/Preparingacharacterfromscratch.html
  16. Animation: https://docs.unity3d.com/kr/current/Manual/class-Animation.html
  17. Jared Halpern, "Developing 2D Games with Unity: Independent Game Programming with C#", Apress; 1st ed. edition, November 29, 2018
  18. Unity3D: https://unity3d.com/kr