BMS 기반 리듬게임 개발

2018.05.02 22:15

졸리운_곰 조회 수:275

BMS 기반 리듬게임 개발

VallistA2014.06.21 01:17

 


 

(그림 1) 현재 진행된 게임 스크린샷

 

bms 파싱게임 RhythmStar 프로토 타입

 

조작키 : A S D F J K L ;

 

P : 증속

O : 감속

 

--------------------------------------------------------------------------------

 

사용 엔진 : Cocos2d-x  , FMOD

사용 언어 : c++ , Java 

 

참조 문서 : 

http://cosmic.mearie.org/2005/03/bmsguide/ (BMS 관련 파일 형식 사이트)

http://smilejsu.tistory.com/380 (BPM 계산방식)

http://cafe.naver.com/cocos2dxusers (Cocos2d-x 사용자 모임)

http://lab.gamecodi.com/board/zboard.php?id=GAMECODILAB_Lecture_series&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=hit&desc=asc&no=38 (게임코디 C# BMS 리더기)

 

개발 기간 :

 

처음으로 개발해보는 BMS 연동 리듬게임이라 만드는데 시간이 꽤나 걸림. (c++ 관련해서는 자료 하나도 없었다.)

C#은 자료가 있어서 그쪽 좀 보고 했음. (위에 보면 게임코디 뭐시기 있을겁니다. 그 사이트로 이동하시면 보이실겁니다.)

 

개발 소요 약 2달 (Cocos2d-x 로 안했으면 더 빠르게 완성 되었을듯 싶네요)

 

소스 코드 구조 및 현재 진행된 구조 상황

 

(그림 2) 구조

 

STEP 0.

  - 게임 구조 및 기틀 마련

 

STEP 1.

  - BMS 스크립트 해석

  - BMS 스크립트 적용

 

STEP 2.

  - BMS 스크립트 기반 노트 생성

  - 노트 떨어지는 시간 맞추기

  - 노트 떨어지고 마지막 라인 닿으면 소리 나도록

 

-> 여기까지 하시면 BMS 음악 플레이어의 완성

 

STEP 3.

  - UI 만들기

  - 키보드 누를시 이벤트 생성

  - 각각 키 누를시 다음 노트 분석해서 키음 출력


STEP 4.

  - 노트 판정 추가

  - 노트 판정이 일어난 후 노트 삭제

  - 배속 추가

 

STEP 5.

  - 잡다한 이펙트 , UI 디자인

  - 콤보 및 판정 띄우기

  - 점수 및 최대 콤보, BPM 띄우기

  - 현재 재생 시간 바로 나타내기

 

 - > 여기까지 완료

 

STEP 6.

  - 뒷배경 동영상 띄우기 <진행중>

  - 안드로이드 연동

  - FMOD 안드로이드 연동

  - FFMPEG 안드로이드 , PC 연동

  - 롱노트

 

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

--------------------------------------------------------------------------------

 

Ver 0.1 동영상

 

 - 쪽팔려서 삭제

 

Ver 0.2 동영상

 

 

테스트 음악

削除 : Kronos

 

 - 배속 추가

 - UI 추가

 - 키음 추가

 - 키보드 이펙트 추가

 - HP 추가

 - HP 바 추가

 

Ver 0.3 동영상

 

 

테스트 음악

Daisan : -+

 

 - 점수 추가

 - 판정 추가

 - 체력 감소 증가 이벤트 추가

 - 콤보 , 판정 뷰

 - 최대 콤보

 - 이펙트 추가

 - 재생시간 추가

 

---------------------------------------------------------------

 

코딩방식
 

- 배속

 배속같은 경우에는 보이는 위치만 변경시켜 주었습니다.

 보이는 위치를 변경시켜주면 빨리 내려오는 것 처럼 보이기 때문이죠.

 

 m_pNote->getAnimation()->setPosition(ccp(m_pNote->getPos().x, (dTemp - D_JUDGE_POSITIONY) * D_ASSET_MNG->getAttachment() + D_JUDGE_POSITIONY )); 

 이런식 입니다.

 

 - 매니저

 각각의 Game 과 UI 쪽은 모두 분할되어 있습니다. UI Manager 와 GameManager로 분할되어있고, UI Manager를 GameManager 안에서 사용하는 방식이죠.

 그리고 UIManager와 게임은 이벤트로 서로 통신을 합니다.

 이름하여 이벤트식 코딩이랄까요?

 

 콤보같은 경우도 게임에서 이벤트를 보냅니다. 그러면 UI 쪽에서 받고 이펙트를 보여주는 방식인 겁니다.

 

 - BMS 

 BMS 의 경우에는 상당히 복잡한 구조로 되어있습니다.

 파일을 받은 포인터를 가져와서 포인터를 한줄씩 읽는 방식입니다.

 한줄에서 #이 들어가 있나를 체크를 하고 없으면 Next Line , 있으면 매소드중 분석하여 넣는 방식입니다.

 

 - 연주 방식

 노트 하나당 모두 키음을 가지고 있고, 보이지 않는 공간에서 치는 노트가 아닌 다른 노트들이 돌아갑니다.

 판정라인에 붙이쳐서 소리가 나는 방식이고, 그저 보이지 않는 곳에서 노트가 계속 떨어져서 음을 재생시킨다고 보시면 되겠습니다.


 

 

이 프로젝트에는 쓰레드가 들어가 있지 않아서 로딩속도가 굉장히 느립니다 ^^

로딩 속도를 늘리시려면 쓰레드를 추가해주신후 거기서 추가적으로 노트 데이터를 로드 하시면 됩니다

 

====================================================================================================

 

깃허브에 공유했습니다. 링크는 아래와 같습니다.

 

https://github.com/Vallista/ProjectBMSReader

리소스 파일이 저작권 침해의 문제가 있어서 뺏습니다.

소스만 보시면 될 것 같습니다.


출처: http://vallista.tistory.com/entry/BMS-기반-리듬게임-개발 [VallistA]

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
678 DDD - Aggregate, Factory, Repository 졸리운_곰 2018.05.13 90
677 리눅스 설치 날짜 확인 졸리운_곰 2018.05.09 264
676 윈도우 설치 날짜 확인하기 file 졸리운_곰 2018.05.09 310
675 마이크로서비스 아키텍처 file 졸리운_곰 2018.05.05 116
» BMS 기반 리듬게임 개발 file 졸리운_곰 2018.05.02 275
673 bms [음악리듬게임] 파일 포멧 구조 Guide to understand BMS format file 졸리운_곰 2018.05.02 276
672 마이크로서비스 아키텍처 file 졸리운_곰 2018.05.02 185
671 성공적인 인공지능 챗봇 구현 위한 3가지 이슈 file 졸리운_곰 2018.04.29 76
670 IT 인프라에 새로운 물결이 밀려온다 타이달스케일 ‘하이퍼커널’ file 졸리운_곰 2018.04.24 91
669 프로세스가 개발 문화를 이기기 어려운 이유 졸리운_곰 2018.04.24 87
668 한눈에 이해하는 사업계획서 file 졸리운_곰 2018.04.24 101
667 웹 기획서 양식& 체크리스트 졸리운_곰 2018.04.06 88
666 “이 정도만 알면 프로젝트관리 할 수 있다!” 졸리운_곰 2018.04.06 149
665 Windows 최강의 복사 프로그램: ROBOCOPY(Windows용 견고한 파일 복사) 졸리운_곰 2018.03.25 70
664 Windows Server에서 리눅스 rsync와 같은 기능 robocopy file 졸리운_곰 2018.03.25 134
663 창업 아이디어 발표자료 파워포인트 템플릿 예시 file 졸리운_곰 2018.03.17 121
662 RNN(LSTM) 소개 file 졸리운_곰 2018.03.13 94
661 [SVN] 'cleanup' 에러 file 졸리운_곰 2018.03.13 152
660 머신러닝 토치 라이브러리 강좌 Torch Video Tutorials file 졸리운_곰 2018.03.13 70
659 머신러닝 라이브러리 토치 설치 : Torch Install file 졸리운_곰 2018.03.13 134
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED