[SW종합설계] 최종 보고서

2023. 6. 19. 23:00학부 강의/SW종합설계

SW종합 설계 최종 보고서

 

1. 과제명

 

  • 메르헨 (Märchen)

 

저희가 만들 게임의 이름은 '메르헨'입니다. 메르헨(Märchen)은 독일어로 문학, 어린이를 위하여 만든, 공상적이고 신비로운 옛이야기나 동화라는 의미입니다. 이야기를 바탕으로 제작된 맵을 탐험하는 저희의 게임 특성상 잘 어울리는 이름이라고 생각합니다.

 


2. 목적 및 필요성

 

가. 프로젝트의 목적

- 주목할 만한 트랜드

 매년 주목할만한 트렌드에 대하여 소개하는 ⌜트렌드 코리아⌟라는 도서가 있습니다. 2023년에 발간한 ⌜트렌드 코리아 2023⌟에서는 '평균 실종'이라는 현상에 대하여 주목하고 있습니다. 우리는 산업혁명 이후 대량생산, 대량소비가 보편화되고, 획일적인 집단 교육 체제가 등장하면서 동질적인 집단 속에서 개체를 파악하는 데 익숙해졌습니다. 하지만 오늘날은 이전과 달리 개개인 삶의 양식, 경험, 환경 등이 다양해 지고 있습니다. 어떤 현상에 대해 설명할 때 "보통, 일반적, 대개, 평균적으로 어떠하다"라고 말하는 것이 어려워지고 있습니다. 개인의 삶이 다양화 되면서 이제까지 평균에 근거한 '무난한 상품', '보통의 의견', '일반적인 접근법' 등이 흔들리고 있습니다.

 몇 년 전까지만 해도 각 분야의 메이저 기업들은 '줄 세우기'를 했습니다. 사람들의 관심의 크기를 바탕으로 상품과 정보에 순위를 매겼었습니다. 몇 년 전까지만 해도 우리나라의 가장 큰 포털 사이트인 '네이버'에서도 '실시간 검색어 순위'로 우리나라 사람들이 '평균적으로' 어떤 것에 관심이 있는지 순위를 매겼었습니다. 노래를 들을때도 해도 음원 차트의 순위대로 노래를 들었습니다. 피시방에 가면 피시방 점유율을 참고해서 어떤 게임을 할지 고민하던 시기도 있었습니다. 하지만 최근 몇 년동안 이러한 줄 세우기 전략이 많이 없어졌습니다. 오히려 개인의 취향에 맞춘 동영상과 신문 기사와 노래를 추천하는 것이 더 중요해졌습니다. 오늘날 유튜브와 스포티파이의 사례만 보아도 개인의 취향에 맞춘 컨텐츠를 제공하는 것이 얼마나 중요한지 알 수 있습니다. 더 이상 피시방 점유율이 높다고 해서, 내 옆자리에 앉은 사람이 특정 게임을 한다고 해서 그 게임을 따라 하는 시대는 지났습니다.

 최근 출판업계에서는 십만의 대중 독자보다 확실한 독자 2000~3000명을 고민해서 책을 만든다고 합니다. 예전과 달리 독자들은 단순히 베스트셀러라는 이유로 책을 사지 않습니다. 오히려 자신이 구독하고 있는 유튜버의 책을 선호합니다. 깊이 빠져있는 취미, 분야, 문화의 책을 산다고  합니다. 이러한 접근법은 게임을 만들 때도 적용할 수 있을 것 같습니다. 모호한 대중의 취향보다는 확실한 소수의 취향에 초점을 맞춰서 게임을 개발해야 하는 시대가 온 것 같습니다.

 2023년 2월에 출시한 '호그와트 레거시'의 사례를 살펴보았습니다. 발매 2주만에 1200만장을 판매하고 8억 5천만 달러의 수익을 올렸습니다. 성공적인 출시라고 할 수 있습니다. 하지만 출시하기 전에 해당 게임에 대한 사람들의 반응이 긍정적이었던 것만은 아니었습니다. 게임의 재미를 떠나 원작소설에 대한 고증이 재대로 이뤄질지 걱정하는 '해리포터 시리즈의 팬들'이 많았습니다. 실제로 해당 게임을 구매하게될 팬들에게는 원작 세계관에 얼마나 충실한지가 중요했습니다. 이들은 단순히 마법사가 나오는 판타지 게임을 원하지 않았습니다. 그동안 소설과 영화를 통해 상상해오던 해리포터 시리즈의 세계관을 게임이라는 컨텐츠를 통해서 더 능동적으로 경험하길 원했습니다. 소설에 묘사된 특정한 장소와 인물을 찾아가고 주인공이 사용하는 마법 주문을 따라 외치며 즐거워 합니다. 이들에게 고증은 게임을 하는 이유이자 하나의 재미입니다.

 Game of the Year 줄여 '고티'라고 부르는 것은 한 해에 발매되는 수많은 게임들 중 여러 온, 오프라인 매체에서 그 해를 대표할 만한 뛰어난 게임에게 수여하는 상들을 통칭하는 말입니다. 2022년 고티를 수상한 게임은 엘든링이다. 엘든링은 FromSoftware가 만든 게임입니다. FromSoftware는 데몬즈 소울, 다크 소울, 블러드본 등의 인기 있는 액션 RPG 시리즈를 개발한 회사로 그 특유의 암울한 분위기의 세계관과 그곳에 녹아있는 개성있는 캐릭터 그리고 무지막지한 난이도로 유명해, '소울라이크'라는 하나의 장르를 만들어 냈습니다. 엘든링도 소울라이크 게임으로 많은 기대를 모았고 실제로 소울라이크 게임으로서 높은 완성도, 경의로운 심미성과 더불어 다양한 마법/무기와 폭넓은 전략 플레이, 긴장감있는 몬스터 배치와 기믹으로 뛰어난 게임 플레이 경험을 선사했습니다. 엘든링이 2022년 고티에 선정될 수 있었던 것은 소울라이크 장르의 팬들을 타겟으로 설정하고 그들의 요구와 기대를 충족시키는 것에 집중한 FromSoftware의 선택 덕분이었습니다.

 이렇듯 앞으로는 다양한 사람들이 일반적으로 많이 플레이할거 같은 대중적인 게임보다는 보다 세분화된 타겟층을 설정하고 그들이 게임을 통해서 얻고자하는 핵심 경험을 중점적으로 고려해서 게임을 만들어야 할 필요가 있을 것 같습니다.

 

 

- 지적재산권 활용하기

 그래서 저희 팀은 나름 유명한 지적재산권을 활용해보기로 했습니다. 익숙한 이야기를 게임의 요소로 활용해서  친숙함과 공감대를 형성할 수 있을 것 같았습니다. 현실적으로 별도의 비용없이 사용할 수 있으면서 충분히 인도가 있는 지적재산권을 중심으로 후보군을 선정했습니다. 팀원들이 각자 생각나는 게임 테마들을 Miro라는 협업 도구에 모두 적어놓고, 후보군을 정리 했습니다. 이렇게 테마 후보들을 모은 후, 게임 요소로 쓸만한 테마와 쓸 수 없을 것 같은 테마로 나눠서, 사용할 테마들은 메인 테마로 모았습니다. 메인 테마로 사용할만한 테마들을 후보군에서 따로 뺀 후, 저작권에 걸리는 테마들과, 그 테마에 맞는 에셋이 없는 테마들은 거르고 사용 가능한 테마들만 따로 모았습니다. 사용 가능한 테마들을 따로 분류한 후, 거기서 비슷한 컨셉의 테마끼리 모았습니다.

 

 개별적인 이야기 테마들을 하나의 게임으로 녹여내기 위해서 전체적인 게임 스토리를 구상했습니다. 팀원 모두가 모여서 게임의 스토리를 설정했습니다. 추후 세부사항에 변동이 있을 수 있지만 전체적인 게임 스토리의 뼈대는 다음과 같습니다.

 “플레이어가 억센 빗줄기를 피해서 근처 건물로 들어선다. 건물은 폐도서관과 같았다. 좀처럼 비가 잦아들 기미가 보이지 않자 건물 안으로 들어선다. 건물의 외견과는 달리 건물의 내부에는 인기척이 있었다. 멀리서 플레이어를 발견한 남자는 곧바로 플레이어를 향해 다가온다. 이 남자는 도망친 가축을 대하듯 거칠게 플레이어를 잡아끌며 어딘론가 이동한다. 불만가득한 중얼거림을 통해서 남자는 폐도서관의 사서로서 책을 관리하고 있다는 사실을 알 수 있었다. 한참을 걸어 어느 책장앞에 다다랐다. 책장에 꽂힌 책들은 일반적인 책과는 달랐다. 책은 굵은 사슬과 자물쇠로 잠겨있었다. 사서는 플레이어를 뚫어져라 쳐다보며 고개를 갸웃거린다. 사서는 플레이어에게 어느 이야기에서 탈출했는지 물었다. 플레이어는 자신이 책이 아닌 바깥세상에서 왔고 잠시 비를 피하기 위해서 도서관에 들어왔다고 설명한다. 사서는 의심의 눈초리로 플레이의 모습을 관찰한다. 이내 납득한 표정 짓는다. 최근 책 속 위험인물들이 난폭하게 굴어서 자신의 힘들게 한다며 하소연한다. 플레이어에게 자신을 도와 책 속 등장인물들을 제압하고 힘을 빼앗아 오면 나갈 수 있게 도와준다고 제안한다. 플레이어는 이를 수락하며 게임이 시작된다. 플레이어는 책 속으로 들어가고 각각의 보스들을 만난다. 플레이어는 처음에는 사서의 제안을 착실히 수행하지만, 점차 게임이 진행되면서 플레이어는 자신이 사서에게 속았음을 느낀다. 자신을 사서라 칭하는 남자는 사실 책장의 책들을 관리하는 간수이며 주인공을 놓아줄 생각이 없었다. 플레이어는 최종적으로 탈출하기 위해서 간수를 쓰러트려야 한다. 이를 위해서 각 스테이지의 보스들의 힘과 도움이 필요하다.”

- 메인 테마 자료조사

 지난주 본격적인 게임 제작에 앞서 플레이어가 가장 처음으로 플레이할 1번 스테이지의 메인 테마를 결정하였습니다. 메인 테마는 이상한 나라의 앨리스를 활용하기 결정하였고, 팀원 전원이 이상한 나라의 앨리스 원작 소설을 다시 읽는 시간을 가졌습니다. 이상한 나라의 앨리스 원작 스토리에 대한 이해도를 높이고, 이를 바탕으로 게임에 필요한 내부 구성 요소들에 대하여 논의해보았습니다. 이상한 나라의 앨리스의 등장인물들과 배경을 적극적으로 활용하면서 1번 스테이지를 구성하기로 결정했습니다. 또한 비슷한 다른 소설이나 동화의 등장인물들을 깜짝 활용하여 게임에 재미를 더하기로 결정했습니다.

 

 

나. 관련 연구 및 기술 동향

 

  • 게임엔진 자체 제작 vs 유니티, 언리얼

- 자체 제작 게임 엔진의 장점
 자체 제작 게임 엔진은 게임 개발자가 필요한 기능만 추가하여 최적화할 수 있으므로 높은 성능을 보장할 수 있고, 게임 개발자가 필요한 기능을 추가하고 최적화하여 게임 엔진을 제작하므로 게임마다 최적화된 엔진을 사용할 수 있으며, 게임 개발자가 직접 제작한 엔진이므로, 필요한 기능을 직접 추가하거나 변경할 수 있습니다. 또한 게임 개발자가 직접 게임 엔진을 제작하면서 소요되는 비용이 많을 수 있으나, 대형 게임 제작사의 경우 게임 엔진을 자체 개발하는 비용보다 상용 엔진 사용 시 발생하는 수수료가 더 많이 듦으로 비용 절감 효과를 볼 수 있습니다.

- 자체 제작 게임 엔진의 단점
 소형 게임 제작사의 경우에는 상용 엔진 사용 시 발생하는 수수료보다 게임 개발자가 직접 게임 엔진을 제작하면서 소요되는 비용이 더 많을 수 있고, 게임 개발자가 직접 게임 엔진을 제작해야 하므로, 추가 작업량이 발생할 수 있습니다.

- 상용 게임 엔진의 장점
 유니티와 언리얼 게임 엔진은 개발자들이 쉽고 빠르게 게임을 개발할 수 있는 환경을 제공하고, 많은 개발자들이 사용하기 때문에 관련 정보나 지식을 얻기 쉽고, 빠른 개발과 지식 공유로 인해 생산성이 높습니다.

- 상용 게임 엔진의 단점
 유니티와 언리얼 게임 엔진은 게임 제작사의 수입에 따라 수수료가 매우 많이 발생할 수 있고 이로 인해 게임 제작 비용이 높아질 수 있습니다. 또한 상용 게임 엔진이므로, 자체 제작 게임 엔진에 비해 최적화가 어려울 수 있습니다.

- 우리가 유니티를 선택한 이유
 우선 유니티는 크로스 플랫폼을 지원하여 PC, 모바일, 콘솔 등 다양한 플랫폼에서 게임을 개발할 수 있고, 쉽고 직관적인 인터페이스와 코드 작성 기능, 다양한 에셋과 리소스, 생산성 향상을 위한 다양한 기능을 제공하여 개발자들의 생산성을 높일 수 있습니다. 그리고 유니티는 대규모 개발자 커뮤니티를 보유하고 있어, 정보나 지식을 얻기 쉽습니다. 또한 애니메이션 및 물리 시뮬레이션을 처리하기 위한 다양한 기능을 제공해 주기 때문에 보다 쉽게 캐릭터나 몬스터를 만들 수 있습니다. 이렇기 때문에 유니티는 언리얼보다 게임 개발이 쉽고 진입 장벽도 낮기 때문에 저희는 유니티 게임 엔진을 선택했습니다.

 

  • 유니티 설명 (+언리얼과 비교)

- 유니티가 가진 강점
 유니티는 게임의 개발환경을 제공하는 대표적인 게임 엔진 중 하나로서 언리얼 엔진과 함께 게임 엔진 시장을 양분하고 있는 엔진입니다. 2022년 기준 전체 게임 엔진 시장에서 약 60%의 점유율을 가지고 있고 유니티가 이렇게 게임 엔진 시장에서 강력한 높은 점유율을 가지고 있는 가장 큰 이유는 가벼움과 접근성을 뽑을 수 있습니다. 유니티는 언리얼 엔진에 비해 더 가벼운 환경을 제공하며 이러한 특성때문에 낮은 사양의 구동환경을 가지고 있는 사용자들도 쉽게 접근할 수 있는 강점을 가지고 있습니다. 유니티는 입문 장벽이 낮아 사용자들이 많은 엔진으로 풍부한 자료를 가지고 있고 자체 '에셋 스토어'를 통해 각종 게임리소스, 스크립트, 플러그인등으로 공유할수 있도록 하면서 조금 더 쉽게 자료에 접근할 수 있습니다.

 

 

  • 유니티로 만든 대표적인 게임들

- 길건너 친구들
 Hipster Whale에서 출시한 iOS/안드로이드/윈도우 용 아케이드 게임입니다. 고전 길건너기 게임인 프로거를 모티브로 한 듯 하며 모든 그래픽이 복셀 엔진을 기반으로 하여 직육면체인 것이 특징입니다. 중독성이 매우 뛰어나 이미 씨넷, 맥월드, 더 가디언, 앱스토어 등등의 매체에서 'Best of 2014' 게임으로 선정되기도 했습니다.

- 어몽어스
 InnerSloth에서 제작한 마피아 형식의 사회적 추론 게임이자 생존게임입니다. PC/모바일/Nintendo Switch/에픽게임즈 등 다양한 플랫폼에서 플레이 가능합니다. 온라인 또는 로컬 Wi-Fi에서 4~15인의 플레이어와 함께 플레이하며 우주선을 타고 떠나는 여행을 준비하는 컨셉의 게임으로 직업은 크게 시민과 마피아로 나누어져 있고, 크루원 (시민)은 미션을 클리어해서 미션 게이지를 다 채우거나, 살해당한 크루원 (시민)을 찾아 토론을 통해 임포스터 (마피아)를 찾아서 투표한 후 모두 잡으면 승리, 임포스터 (마피아)는 크루원 (시민)들에게 들키지 않고 크루원 (시민)을 모두 살해하면 승리하는 게임입니다.

 

 


3. 과제 수행내용

 

가. 연구내용

 

본격적인 활동에 앞서 효율적인 협업을 위한 환경을 조성했습니다. 협업을 위해서 사용한 프로그램은 다음과 같습니다. unity, github repo, github project, miro, notion, slack, discord.

 

  • 개발환경 구축

노션을 활용해서 팀원 모두가 자유롭게 사용 가능한 팀스페이스를 생성했습니다.

 

협업에 필요한 일정과 문서를 공유하고 팀이 공유하고 있어야 하는 지식이나 공유하면 좋은 지식을 정리해서 올렸습니다.

 

Github을 활용해서 형상 관리와 개발 프로세스를 통제했습니다.

 

 

  • 요구사항 분석 (유스케이스 작성)
    : 요구사항 분석을 위해서 2개의 유스케이스 작성했습니다. 구현해야 할 기능들을 파악할 수 있었습니다. 또 기능들 간의 의존성 파악하고 개발의 우선순위를 대략적으로 파악할 수 있었습니다. Github projects에도 활용하여 전체 개발일정 추산에 도움이 되었습니다.

 

  • 구현한 기능과 구현 과정

- Fusion 동기화 기본 원리
 게임을 시작하면 각자 NetworkRunner를 생성합니다. 생성된 NetworkRunner는 플레이어의 아바타를 생성합니다. 플레이어는 각자 키보드나 마우스를 통해서 아바타를 조작할 수 있습니다. 클라이언트는 키보드와 마우스의 입력값을 호스트에게 전달합니다. 호스트는 클라이언트의 입력값을 받아서 클라이언트에 해당하는 아바타를 조작합니다. 호스트에서 수행한 작업은 클라이언트들에게도 동기화 됩니다.

- 공격 동기화
 공격과 피격을 구현하기 위해서 플레이어 prefab에 hitbox를 추가했습니다. Fusion에서는 hotbox를 통해서 네트워크 지연보상을 구현할 수 있습니다. 공격시 raycast를 생성하고 raycast가 특정한 레이어의 hitbox와 충돌한 경우 HP를 감소시킵니다. 부정한 방식으로 공격하는 것을 방지하기 위해서 클라이언트들은 공격에 대한 요청을 호스트에게 전달하고 모든 공격과 피격에 대한 처리는 호스트가 실행합니다.

- 애니메이션 동기화
 호스트는 모든 아바타에 대한 공격과 이동에 대한 처리를 완료한 후에 RPC를 이용해서 클라이언트에서 애니메이션을 실행시키는 함수를 원격으로 호출합니다.

- Host Migration
 기존의 경우 게임의 호스트가 나가면 남아있는 모든 클라이언트들의 게임이 강제로 종료되는 문제가 있었습니다. 만약 호스트가 게임을 종료하면 남아있는 클라이언트 중 한 명이 호스트의 역할을 계승하도록 했습니다. Host migration이 시작되면 기존의 network runner를 재사용할 수 없기 때문에 모든 network runner를 삭제하고 다시 생성해야 합니다. 이 과정에서 각각의 클라이언트는 기존의 network runner에서 게임의 진행 상황을 받아와서 새로운 network runner를 생성하고 game manager에 저장된 connection token을 확인해서 다시 아바타에 대한 입력 권한을 획득합니다. 일정 시간이 지나도 재접속하지 않는 경우 호스트의 아바타를 삭제합니다.

 

- 애너미 AI 구현
 몬스터에 유니티 엔진에서 제공하는 AI 기능 중 하나인 Nav Mesh Agent 기능을 적용시켜 3D 공간에서 AI 객체가 경로 탐색 및 이동을 스스로 수행할 수 있도록 구현 했습니다. Nav Mesh Agent는 Navigation Mesh라는 메시를 기반으로 동작하며 이것을 바탕으로 목적지까지 가장 효율적인 경로를 찾아내고, 경로를 따라서 이동하며 장애물을 스스로 피하면서 목표를 추격해 목적지에 도달할 수 있도록 도와줍니다. Navigation Mesh는 3D 공간을 일정한 크기의 다각형 영역으로 나눈 그래프 구조이며, 이동 가능한 지역과 장애물 등을 미리 정의해둔 맵 정보입니다.

- 체력 회복 아이템 구현
 회복 아이템을 먹으면 HP를 20 회복하고, 아이템은 사라지도록 구현했습니다.

- 아이템 및 원거리 몬스터 미사일 이펙트 구현
 체력 회복 아이템에 Light 효과와 Particle 효과를 추가하여, 아이템의 시인성을 높여 멀리서도 식별 가능하게 구현했습니다.
 몬스터의 미사일 공격에 Particle 효과를 추가하고, Particle의 크기와 생성 입자의 개수를 조절하여 미사일을 좀 더 화려하게 꾸몄습니다.

 

- TPS 카메라 구현
 플레이어를 따라다니는 TPS(Third-Person Shooter) 카메라로 캐릭터 뒤에서 조작하며 좀 더 넓은 시야로 플레이를 할 수 있습니다. 플레이어 오브젝트에 CameraArm을 넣어 플레이어 머리 쪽 부분을 기준으로 카메라가 마우스 포인터 이동 입력값을 받아 시야를 이동하게 됩니다.

- 플레이어 이동 조작
 물리의 영향을 받지 않는 transform 기준 이동 방식 대신 velecity를 사용해 자연스러운 물리 이동 방식을 구현하였습니다. 벽을 통과하는 버그 또한 물리의 영향을 받아 없으며, 부드럽게 가속도로 움직이게 됩니다.
 wasd로 기본 동작을 하게 되며, 카메라의 방향을 받아와 카메라가 바라보는 방향을 기준으로 앞뒤좌우 입력이 결정됩니다.
 스페이스바를 누르면 점프, 시프트를 누르면 회피(구르기), 컨트롤을 누르면 걷기를 하게 됩니다. 컨트롤의 요소로 멀리 점프를 하고 싶으면 앞으로 달려가며 점프를 하고 회피를 누르면 더 멀리 나아 갈 수 있습니다.
 또한 서로 영향을 받아 회피 중엔 점프를 할 수 없고, 가만히 서있을 때는 회피를 할 수 없습니다.
 처음 BoxCast를 이용해서 아바타가 공중에 위치하는지 지면에 위치하는지 확인했습니다. 하지만 테스트를 수행하면서 Y축 62부터 정상적으로 작동하지 않는 문제를 발결했습니다. 불규칙적으로 지면에 착지해도 계속해서 공중에 위치한다는 결과값을 출력하는 경우가 있었습니다. 그래서 기존의 BoxCast가 아닌 OverlapBox를 사용해서 문제를 해결했습니다. OverlapBox를 활용해서 프레임마다 그라운드 체크를 수행해 아바타가 공중 혹은 지면에 위치하고 있는지 안정적으로 확인할 수 있었습니다.

- 플레이어 공격
 마우스 좌 클릭을 누르면 공격을 하게 되며, 플레이어의 설정에 따라 망치를 들고 있는 근접 공격, 총을 들고 있는 원거리 공격으로 나뉩니다.
 근접 공격은 마우스를 누르면 일정 지연 시간에 따라 짧은 시간 동안 피격 범위가 켜졌다가 꺼집니다. 또한 망치가 휘둘러지는 궤도를 따라 이펙트가 잔상을 남깁니다.
 원거리 공격 또한 마우스를 누르면 탄환을 발사합니다. 하지만 화면의 중앙 조준점과 총구의 위치가 달라서 조준점에서 레이 캐스트를 발사해 착탄 지점을 미리 계산하고 받아와 총구의 방향이 착탄 지점을 바라보게 만듭니다. 탄환 또한 궤도를 따라 잔상을 남깁니다. 그리고 벽이나 바닥, Enemy에 닿거나 일정 시간이 지나면 탄환이 사라져 카비지 컬렉터가 자주 돌아가지 않게 합니다.
 원거리 무기를 장착하고 있을 때에 r 키를 누르면 재장전을 시행하게 되고, 잔탄을 모두 소모하고 공격을 해도 재장전이 시행됩니다.

- Enemy 타겟팅 설정 및 전환
 Enemy에게 일정 범위 가까이 다가가게 되면 타겟으로 설정되어 Nav Mesh Agent로 플레이어를 따라오고 공격하게 됩니다. 다른 플레이어가 Enemy를 공격하면 공격한 플레이어의 정보를 받아와 타겟을 변경합니다. 플레이어가 죽으면 타겟과 Nav Mesh Agent를 해제해 다시 논타겟팅 AI 알고리즘을 실행합니다.

- 논타겟팅 Enemy AI 구현
 Enemy에게 타겟이 설정되어 있지 않다면 논타겟팅 AI 알고리즘을 실행합니다. 시작 위치에서 랜덤 고민 시간을 가지고, 랜덤 방향으로 정해진 거리만큼 이동합니다. 이동한 다음 다시 랜덤 고민 시간만큼 가만히 있다가 다시 원래 있던 방향으로 돌아오게 되면 한 사이클이 끝이 납니다. 이러한 로직을 계속 반복해서 시행하게 해 Enemy들이 어지러이 돌아다니게 됩니다.

 

 

- 로비기능 

닉네임 입력 기능 
세션 검색 기능 (검색중)

생성된 방이 있을 때

 

  • HP 바

 

플레이어와 에너미의 현재 HP를 표시하는 HP바를 구현했습니다. 에너미와 다른 플레이어의 HP바는 아바타의 머리 위에 표시하고 플레이어 자신의 HP는 화면의 좌측 상단에 표시하도록 했습니다. 또한 어디에 위치하든 HP가 플레이어를 바라보도록 카메라 방향으로 회전하도록 했습니다.

 

  • 채팅창

플레이어 간에 소통을 위하여 채팅 기능을 추가했습니다. 채팅 기능을 추가하면서 다음과 같은 버그들을 수정했습니다.

  • 채팅의 마지막 글자가 입력되지 않는 버그 : 이벤트 시스템이 모든 입력을 처리하기 전에 메시지를 보낸 경우 마지막 글자가 입력되지 않았습니다. 리스너를 사용하여 이벤트 시스템이 모든 입력을 처리하기를 기다리도록 했습니다.
  • 채팅창이 비활성화 되지 않는 버그 : 메시지를 보낸 후에도 채팅창이 계속해서 활성화 되어있는 버그가 있었습니다. 조건문을 수정하여 채팅을 보낸 다음에는 채팅창이 비활성화 되도록 수정했습니다.
  • 채팅 중에 움직이는 버그 : 채팅을 입력 중에는 아바타를 움직일 수 없도록 했습니다.

 

  • 무기선택/시작 창

본격적으로 게임에 진입 하기 전 무기 선택과 게임시작 창을 추가했습니다. 특정 물체와 부딪치면 해당 화면이 뜨고 무기를 선택하거나 본격적으로 게임을 시작 할 수 있습니다. 게임시작을 누르면 나가기 버튼이 없어지고 5초의 카운트다운을 시작하며 플레이어는 게임에 본격적으로 진입할 준비를 할 수 있습니다. 카운트 다운 시작시 나가기 버튼이 사라지고 카운트다운 취소 버튼을 누르면 다시 나타납니다.

  • 맵 이동중에 다시 물체와 부딪치면 UI창이 뜬채로 맵을 이동하던 버그를 카운트 다운 완료시 Collider을 제거하게 함으로서 수정했습니다.

 

  • 플레이어 리스폰 위치 갱신

일정한 위치에 도달하면 모든 팀원의 리스폰 위치가 갱신됩니다.

 

  • 스토리 텍스트 출력

설정한 범위에 도달하면 txt 파일에서 한 줄씩 읽어와 화면에 표시합니다. ‘F’ 키를 눌러서 다시 실행할 수 있습니다.

 

  • 상호작용

아이템을 획득한 후 ‘F’ 키를 누르면 반응하는 게임 오브젝트를 구현했습니다.

 

  • 스폰너 (일반 스폰너, 카운트 스폰너)

일정한 범위에 도달하면 에너미와 아이템을 생성하는 스폰너를 구현했습니다. 또한 정해진 수의 에너미를 제거하는 미션에서 사용하기 위하여 처치한 에너미의 수를 카운팅하는 스폰너를 추가했습니다. 이 스폰너는 설정한 목표치에 도달하면 이어서 실행할 동작을 추가할 수 있습니다.

 

각종 무료와 유료 에셋들을 활용하여 오브젝트들을 직접 배치하며, 최대한 노력해서 이쁘게 만들었습니다.

 

  • 모델링

매지카 복셀 프로그램을 사용해 복셀*을 직접 찍어서 모델링했습니다.

(복셀 (Voxel): 2차원적인 픽셀 (도트)을 3차원의 형태로 구현한 것)

 

  • 리깅

‘메지카복셀’ 프로그램으로 복셀로 제작한 모델에 ‘블렌더’ 프로그램을 사용해 리깅을 하여 모델을 휴머노이드형으로 변환했습니다.

(리깅 (Rigging): 3D 애니메이션에서 3D 모델링 캐릭터의 뼈대를 만들어 심거나 뼈대를 할당하여 캐릭터가 움직일 수 있는 상태로 만드는 일)

 

  • 애니메이션

믹사모라는 애니메이션 추출 사이트에서 애니메이션을 내려받아 휴머노이드 모델에 적용하였습니다.

 

믹사모를 활용한 하트여왕 입니다.

 

홍학을 휘두르는 다이아몬드 카드병정 입니다.

 

  • 배경음, 효과음

특정한 장소에 도착하면 배경음악이 들리도록 했습니다. 또한 플레이어와 에너미가 이동, 공격, 아이템 획득, 상호작용할 때마다 효과음이 발생하도록 했습니다.

 

  • 보스 구현

일반 몬스터를 구현하기 위해서 작성한 코드를 상속하여 보스 몬스터를 구현했습니다.

3가지 공격 패턴을 가지고 있으며, 유도 마법 투사체는 40%, 직선 광선 마법은 40%, 바닥 주위에 원형으로 전체 마법 공격은 20%로 실행하게 했습니다.

 


4. 결과물

 

도서관 외부에서 입장할 닉네임을 선택하고 방을 생성 할 수 있습니다.

 

유저는 다른 유저가 생성한 방을 볼 수 있고 방에 접속 가능 상태가 표시됩니다.

 

방에 접속하면 스토리가 시작됩니다.
사서는 플레이어에게 날뛰는 이야기를 잠재워 달라고 부탁합니다.
플레이어는 이상한 나라의 엘리스 책에 다가갑니다.
책에 다가갈 시 플레이어는 책에 무기를 선택할 수 있습니다.
책에 들어오면 눈앞에 토끼굴로 향하는 나무 구멍이 나타납니다.
토끼굴에 진입하면 동굴이 나타나고 쥐들이 플레이어를 습격하기 시작합니다.

 


 

  • 1섹터 Big Room

플레이어는 토끼굴에서 벗어나 문들이 가득 있는 커다란 방에 도착합니다. 점프맵을 통과하여 열쇠를 획득하고, 맞은편에 방문을 열고 탈출하면 다음 섹터로 이동하게 됩니다.

플레이어보다 커다란 지형지물들이 있습니다.
의자와 탁자 사이를 점프하며 열려있는 문 쪽으로 이동합니다.
앨리스의 눈물로 만들어진 호수에 빠지지 않게 잘 점프해서 열쇠 쪽으로 이동해야 합니다.
끝에 도달해 열쇠를 획득합니다.
호수에 빠지지 않게 건물 조각을 밟고 문으로 이동합니다.
열쇠를 획득한 상태에서 문 앞에 서서 F키를 누르면 문이 열리고 다음 섹터로 이동할 수 있습니다.

 


  • 2섹터 하늘섬

 1섹터에서 문을 열고 탈출하면 이어지는 섹터로, 쥐(몬스터)들을 피해 중앙에 있는 섬에 도달하면 티파티를 계속 즐기고 있는 ‘모자장수’와 ‘삼월토끼’를 만납니다. 그러나 3섹터로 가는 길목을 티파티를 하느라 막고있습니다.

 

 둘은 아리송한 대화를 하고 있으며, ‘모자장수’ 시간이 자기 편이 아니라서 계속 티파티를 하고 있다고 언급합니다. 시계에는 건전지가 빠져있는 칸이 두 개 있으며, 둘의 대화에서 ‘체셔 캣’과 ‘쥐’들이 건전지를 가져갔음을 유추할 수 있습니다. 원작에서는 ‘시간이 자기 편이 아니라서’ 시계는 6시에 고정이 되어 있고 티파티를 계속하고 있습니다. 그리고 ‘모자장수’ 본래 수수께끼같은 발언을 하는 것이 특징이라 플레이어를 인지하고 있는 메타적 발언도 합니다. 이것을 인용해 플레이어는 6시에 멈춰있는 시계를 돌리기 위해 건전지를 모으는 스토리를 만들었습니다.

 

 섬 양쪽에는 두 갈래 길이 있으며, 왼쪽에는 ‘체셔 캣’과 공작부인 저택입니다. 체셔 캣은 그저 장난을 좋아하는 고양이 답게 ‘그냥 장난으로’ 건전지를 훔쳐 숨겨놨습니다. 공작부인 저택에 마법으로 물건들을 띄워 두었으며, 플레이어는 점프맵을 통과해 건전지를 습득해야 합니다.

 

 섬 오른쪽은 주전자와 찻잔을 머리에 쓰고있는 쥐들이 ‘모자장수’의 괴롭힘을 견디다 못해(팔걸이로 쓰이거나, 머리에 주전자를 끼우거나) 건전지를 훔쳐 겨울을 나기 위해, 그리고 복수하기 위해 친구들과 함께 농장에 틀어박혔습니다. 농장에서는 쥐들을 40마리 이상 쓰러뜨리면 건전지가 나타납니다. 중앙섬으로 되돌아와 시계에 건전지를 장착해 작동 시키면 시간이 흐르게 되고, 2섹터를 클리어하게 됩니다.

 

중앙섬 즈음에 도달하면 ‘삼월토끼’와 ‘모자장수’의 대화가 들리는 듯 텍스트가 출력됩니다.
길을 막고 티파티를 하고있으며, 시계에는 건전지 홈이 두 개 있고, 시계는 6시에 멈춰 움직이지 않습니다.
‘체셔 캣’이 건전지를 가져간 공작부인 저택 입니다.
저택의 거실에서 ‘체셔 캣’의 대사를 들을 수 있습니다.
저택의 왼쪽방으로 책과 가구들이 어질러져 있는 점프맵입니다.
책과 쿠션을 밟고 올라갈 수 있지만 건전지에 바로는도달하지 못하는 루트입니다, (동전 맵 중간으로 이동)
수많은 동전들과 상자들을 밟고 올라갈 수 있습니다.
최종적으로 건전지가 있는 곳으로 올 수 있습니다.
쥐들이 숨어들어간 농장입니다.
머리에 주전자와 찻잔을 쓰고 있습니다.
쥐들을 40마리 이상 쓰러뜨리면 건전지 1개를 획득할 수 있습니다.
시계를 작동 시켜 시간이 흐르면 6시를 벗어나 티 파티가 끝나게 되고, 이 다음 섹터로 갈 수 있습니다.

 


  • 3섹터 크리켓 경기장

아주 넓은 크리켓 경기장으로 경기를 하고 있던 ‘카드병정’들을 50마리 이상 처치하면 4섹터로 갈 수 있습니다. ‘카드병정’은 두 가지이며, 원작과 같이 홍학을 들고 휘두르는 병정과 고슴도치를 던지는 병정이 있습니다.

 


  • 4섹터 하트여왕 성

하트여왕 성과 장미 미로가 나타납니다. 풀 벽 미로에는 카드병정들이 빨갛게 칠하다 만 장미들이 있습니다. 미로를 지나쳐 성에 도달하면 하트여왕과의 보스전을 치르게 됩니다.

플레이어는 미로를 통과해 성에 도달해야 합니다.
미로에는 흰 장미와 여왕의 명으로 빨갛게 칠해진 장미들이 있습니다
미로를 통과하고 성에 도달하면, 하트여왕이 플레이어를 판결했다며 공격합니다.
여왕이 플레이어를 추적하는 마법 투사체를 사용합니다.
마법 투사체보단 더 강력하지만 피하기 쉬운 직선 광선 공격입니다.
점프로 피해야하는 원형으로 공격하는 전체 마법 공격입니다. 제일 강력합니다.
여왕의 HP를 0으로 만들면 무릎을 꿇으며 보스전이 끝이 납니다.
이후 텍스트와 함께 도서관으로 돌아가는 포탈이 생성됩니다.

 


5. 결과물 활용 방안 (기대효과)

주요 활용 분야 및 기대효과

 

 21세기에 들어서 우리 주위에 시간을 때우거나 스트레스를 해소할 오락, 예능, 영화, 독서 등 수많은 엔터테인먼트 콘텐츠들이 있습니다. 최근 일본에서 가장 높은 기대를 받고 있는 스퀘어에닉스의 요시다 나오키의 인터뷰에서, 이제 게임들이 경쟁해야 하는 것은 같은 게임이 아니라 넷플릭스라고 언급했습니다. 이처럼 유저들의 시간 파이를 플랫폼과 상관없이 누가 가져가느냐 경쟁하고 있는 것입니다. 다양한 콘텐츠들이 난무하고 있는 시대에서 우리가 가져야 할 것은 유저를 모을 수 있는 방법이고, 우리 프로젝트에서 추구하고 있는 것은 '재미'입니다.

 '메르헨'도 단순히 졸작에 의미를 두는 것이 아닌 유저들의 흥미를 이끌 수 있는 요소들을 고안하였습니다. 주 연령층은 10 ~ 30대로 약간의 어려운 난이도와, 퍼즐과 전략적 플레이 요소를 넣어서 클리어했을 시에 성취감과 재미를 느낄 수 있게 합니다.


 그리고 멀티플레이로 협동 게임을 지원합니다. 플레이어들끼리 서로 협동하며 맵을 나아가고 보스를 잡고 기믹을 파훼하고 맵을 클리어하며 공동의 목표를 달성합니다. 비슷한 취향을 가진 사람들과 함께 동질감도 느낄 수 있게 합니다.
 기존의 음원을 새롭게 가공해 진입 장벽을 낮추고 호기심과 궁금증을 불러일으키는 샘플링이 요즘 노래 트렌드인데, 그와 비슷하게 사람들에게 익숙한 동화나 이야기를 바탕으로 게임을 구현해 이용자들이 좀 더 쉽게 이 게임을 접하고 친근하게 받아들일 수 있게 합니다.