포트폴리오/게임 개발 프로젝트

MediaPipe를 활용한 홈 트레이닝 지원 게임 '홈트 몬스터 헌터'

양양줘 2025. 1. 23. 22:34

 

'홈트 몬스터 헌터'는 MediaPipeUnity 엔진을 활용하여 개발된

홈트레이닝 지원 피트니스 게임입니다.

몬스터 처치와 함께 진행되는 다양한 운동몬스터 수집을 통해

운동에 필요성은 알지만 흥미를 느끼지 못하는 사람들에게 "재미"를 주고,

운동 기록을 통해 사용자들의 지속적인 운동 관리를 지원합니다.

 

🖐️ 프로젝트 소개

 -  게임명 : 홈트 몬스터 헌터 (Home Training Monster Hunter)

 -  프로젝트 기간 : 2024.03 ~ 2024.08

 -  활용 기술 : Unity(2021.3.17f), MediaPipe(Python(3.8.9))

 -  참여 인원 : 개발 2, 아트 1

 -  참여 직군 : 개발

 -  깃허브 : https://github.com/Heojihyang/HT-MonsterHunter

 -  시연영상 : https://youtu.be/ZjgQ0i_CR4k?si=uUzNwgSw6SVlXlJo

 

<프로젝트 개요>
코로나 19로 인해 홈트레이닝의 수요가 증가하였고, 2030세대 사이에서 헬스는 하나의 유행으로 자리잡았다. 하지만 운동을 꾸준히 하지 못하는 사람들이 다수 존재한다. 이 프로젝트는 운동의 필요성은 알지만, 흥미를 느끼지 못하는 사람들에게 "재미"를 줌으로써 운동에 동기를 부여하고 "실질적이고 지속적인 관리"를 통해 장기적인 성과를 낼 수있도록 돕는다. 이 과정에서 홈트레이닝의 가장 취약점인 "올바른 자세"를 학습하며 운동할 수 있도록 돕는다.

 

<게임 플레이 개요>

1. 몬스터 처치

운동 지원 부위

게임의 메인 시스템인 몬스터 처치 시스템에서는 10종류의 몬스터와 던전을 지원합니다.  각 던전에서는 신체 부위에 알맞는 운동 루틴들이 구성되어있으며 플레이어는 화면의 가이드 모델을 보고 운동을 따라하면 됩니다.  매 회 동작들은 실시간으로 운동 자세 정확도를 측정하여 몬스터에게 데미지를 입히고, 화면에 UI로도 표시됩니다.  각 던전은 약 6분정도의 플레이타임을 가지며, 운동을 정확하게 수행하여 최종 평가 점수가 일정 기준을 넘기면 해당 던전의 몬스터 를 수집할 수 있습니다.

 

2. 몬스터 도감
본 게임은 포켓몬고와 같은 몬스터 도감을 지원합니다. 사용자가 수집한 몬스터들을 직관적으로 확인할 수 있으며, 몬스터 캐릭터의 상세 정보를 확인할 수 있습니다.

 

3. 운동 기록

사용자는 본인이 진행한 운동 정보들을 '운동 기록'을 통해 캘린더 형식으로 확인할 수 있습니다.

 

<스크린 이미지>

슬라이드해서 보세요!

01234567891011121314

 

 

 

💡 담당 파트

게임 전체 시스템 분류

저는 Mediapipe를 활용하여 운동 정확도를 측정하고

몬스터를 처치하는 '몬스터 처치 시스템'을 담당했습니다.

 

일반 게임에서 '던전'이라 불리우는 곳의 내부 인터랙션을

모두 담당했다고 보시면 될 것 같습니다.

 

세부적으로 구현한 것들을 키워드로 요약하자면 아래와 같습니다.

플레이어모델, 사용자 동작 정확도 측정,

 던전 루틴, 몬스터, 가이드 모델, UI, 사운드

 

아래는 게임의 전체 플로우차트입니다.

문양이 만들어준 게임 플로우 차트

 

던전은 한씬에서 구현하였고,

선택된 운동 부위의 번호를 playerprefs로 넘겨받아

그에 맞는 운동 루틴을 실행하도록 하였습니다.

몬스터와 가이드모델도 던전 번호에 맞는 친구가 생성되는 시스템입니다.

한 던전(부위)당 운동 동작은 약 3개로 이루어져있으며

운동 루틴은 코루틴으로 구현하였습니다.

 

웹캠으로 랜드마크 정보를 인식하고 송신

가장 문제였던 플레이어 트래킹 모델

아래 오픈소스를 찾아 활용하였습니다.

https://github.com/ganeshsar/UnityPythonMediaPipeBodyPose

 

 

미디어파이프에서 제공하는 바디 랜드마크 인식 정보

우선 Python 환경에서 미디어파이프 라이브러리를 활용하여

웹캠을 통해 플레이어 랜드마크를 인식하고

유니티로 송신합니다.

오픈소스 활용

유니티에서는 랜드마크 좌표를 실시간으로 수신하여

중심부와의 거리를 기준으로 플레이어 랜드마크 오브젝트를 를 생성, 업데이트하고

랜드마크를 라인렌더러로 이어 플레이어 모델을 완성합니다.

 

 

운동 동작 정확도 측정

방향벡터의 각도를 기반으로 구현하였습니다.

사용자가 운동을 하는 타이밍마다 각도 평가 함수를 호출 시킵니다.

각도 평가 함수 안에서는 사용자의 랜드마크 위치 정보를 가지고

각도 계산 함수를 호출합니다.

 

이 계산기는 전달받은 오브젝트로 2개의 방향벡터를 그리고,

두 방향벡터간의 각도를 return합니다.

그리고 미리 지정해놓은 정답 각도값과 비교하여

총 4단계로 동작 정확도를 판단합니다.

 

각도 평가 항목 예시 (웃지마세요...)

정확한 운동 자세의 이미지를 학습시켜

자동으로 각도를 지정하는 머신러닝 기술을 활용했다면 좋았겠지만

해당 부분의 개발 기간이 약 2주로 짧았기 때문에

조금은 수동적인 방식을 선택했습니다.

 

이외 사운드, UI, 몬스터 공격 이펙트, 게임중지 패널 등의 구현은

간단하게 이루어졌기 때문에 생략하도록 하겠습니다.

자세한 것은 시연 영상 중 던전 부분을 확인해주세요.

 

 

 

🏆 성과

1. 콘텐츠유니버스코리아 2024 - KGDcon2024 부문 킨텍스 전시

 - 전시기간 : 2024.08.29 - 08.30

 

[2024] 홈트 몬스터 헌터

장르 체험형 스포츠 액션 어드벤처 플랫폼 모바일 '홈트 몬스터 헌터'는 MediaPipe와 Unity 엔진을 활용하여 개발된 홈트레이닝 지원 피트니스 게임입니다. 몬스터 처치...

cafe.naver.com

 

2. 문화 기술의 융합 논문 출간

 

미디어 파이프 기술을 이용한 홈트레이닝용 피트니스 게임

본 논문에서는 코로나19 팬데믹으로 인해 증가한 홈트레이닝 수요를 효과적으로 지원하는 피트니스 서비스를 제안한다. 이 서비스는 미디어 파이프 기술과 유니티 엔진을 활용하여 제작된 피트

www.kci.go.kr

 

 

✨ 후기

우선 이 프로젝트는 학교 소프트웨어융합학과의 졸업프로젝트로 진행된 프로젝트입니다.

보통 AI를 활용한 앱을 주로 하는 분반이었는데, 저는 게임을 진로로 하고 있기 때문에

사회공헌적인 주제의 게임 + 기술 활용 -> 뭘 만들지...

를 고민하다가 나온 게임이 이 게임이랍니다.

저희 팀끼리는 홈몬헌이라고 불러요 ㅎ

 

#. 팀원

사랑해 얘들아

이 프로젝트의 가장 큰 인사이트라고 하면 저희 팀원들을 만난거라고 할 수 있을 것 같습니다!

저희 학교에 게임 커리큘럼이 뚜렷한 편이 아니라서 팀으로 게임을 만들 수 있을거라고는 기대를 안했는데

게임에 진심인 친구들을 만나서 학교에서 3박 4일, 1박 2일 크런치까지 진행했었어요 ㅋㅋㅋ

(사실 그때 게임 다 만듦)

아트 1명, 개발 2명이라서 저랑 개발친구(문양)이랑 초반에 분업 싹 하고

매주 각자 진행상황 보고만 했는데 회의가 10분을 넘어간적이 없었어요.

다들 알아서 착챡,,

이런팀 어디에도 없다,,

 

전시하다가 줌들으러 사라진 대학생들

KGDcon2024 쇼케이스작에 선발되고

킨텍스에서 전시를 할 때도 주변 부스 분들과 이야기를 많이 나눴는데

특히 옆 부스분들께서 팀 분위기가 좋다고 저희 팀을 좋게 봐주셔서

전시 마지막 날 저녁까지 얻어먹고 왔어요ㅎ

(다시한번 감사드립니다!)

 

전시 정말 너무너무 재밌었는데

확실히 본인이 직접 참여하는 체험형 게임이라 그런지

다들 시연하는데 엄청 재미있어하셨어요.

그리고 본인만 당할 수 없다면서 저희 대신 지나가는 사람 붙잡으시고 ^^ㅎㅎ

명함도 많이 받았답니다!

 

 

#. 기술 구현

 

그리고 오픈소스 활용 경험도 처음이었어요.

초반에 공짜로 할 수 있는 링피트! 라며 신나게 기획했는데

제가 기술 활용 파트를 담당하게되어서 막상 만드려니까

어케 해야할지 모르겟는거에요...;;

구글링 엄청하고 지인한테 물어보고... 저 오픈소스를 알게 됐는데

저 오픈소스를 활용 하는것도 실행이 안되는거에요;;;;;;; ㅠ

 

시행착오기간 일주일 정도 거치고 웹캠이 켜지고 제 플레이어 모델이 구현 됐을때

그 성취감은 크으 잊지 못할 것 같네요✨

(코드분석 20시간은 한듯...)

 

그리고 팀에 기획자가 따로 없었어서 동작 정확도 측정을 어떤식으로 할지도

해당 파트 담당자인 제가 이것저것 시도해보면서 만들었어요.

시간으로 따지면 플레이어 모델 구현 ~ 동작 정확도 측정 방식 선정 및 구현까지

한 30시간?? 정도 쓴 것 같아요.

어떻게든 만들어 냈다는게 매우 뿌듯했습니다.

 

 

#. 운동 🏋️

 

아.. 이게 가장 큰 인사이트인가..?

허벅지가 튼튼해졌습니다....

각도 기반 측정방식을 채택하고 나서 정확도 측정이 제대로 되고 있는지,

어느정도의 각도가 적정한지 테스트를 해야하는데

이 게임의 테스트는 운동이거든요...

가장 먼저 만든 부위가 허벅지 던전인데

ㅋㅋㅋ 진짜 죽음이에요.

시연영상 한번 찍으려면 6분 다 플레이를 하고 엔딩까지 봐야하는데

그거 찍고 맨날 다리 후들거리면서 계단을 못내려왔어요.

그래서 이 게임의 기능은 제가 증명을 합니다..

 

 

#. 아쉬웠던 점?

 

코드를 효율적이게 짜지 못한게 가장 큰 아쉬운 점인 것 같아요.

 

이때 코딩을 정말 오랜만에 했었어요. (약 8개월)

휴학하는동안 C++ 문법 1회독 돌리고 자료구조까지 C++로 복습했는데

복학하고 1년간 거의 CS과목만 듣다보니

8개월의 코딩 공백기가 생겼던 시기였거든요.

 

그래서 지금 코드를 보면 아 왜저렇게 짰지... 하며 누구에게 보여주기 부끄럽다는 생각을 합니다.

하지만 또 이걸 반대로 생각하면

게임 코드를 어떻게 분리해서 짜야하는지에 대한 감을 얻었다고 할 수 있을 것 같습니다!

지금도 부족하겠지만 제가 아는 선에서는

스크립트를 최대한 재사용이 가능하도록 짜고

인스펙터에서 데이터를 관리할 수 있도록 해서 유지보수성을 높이고

기능과 목적에 따라 스크립트를 분리하는 습관이 들어있습니다!

 

 

 

흠흠

마무리를 어떻게하지?

그럼 홈몬헌 프로젝트 소개를 마치겠습니다.

감사합니다 : D

 

 

 


 

wooj22 - Overview

🎮 Game Programmer. wooj22 has 14 repositories available. Follow their code on GitHub.

github.com

 

양우정

 

www.youtube.com