'Project/게임개발'에 3개의 글이 있습니다.

BMS 파싱 및 리듬게임 개발 (C#)

posted-at2017.04.21 16:18 :: posted-inProject/게임개발 :: posted-byNarrL



bms파싱게임 Narrhythm 프로토타입 버전

>> Narrhythm 다운로드 << 트래픽 초과로 삭제



(게임 실행을 위한 런타임 2개)


vcredist_x64.exe

(Visual Studio 2010 런타임)


xnafx40_redist.msi

(XNA 4.0 런타임)



[조작키]

P : bms플레이

F3, F4 : 배속 조절




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


참조 문서.

http://bit.sparcs.org/~tokigun/article/bmsguide.php (bms 파일형식)

http://smilejsu.tistory.com/380 (BPM 계산 방식과 배속 구현)





1. 파싱 클래스 작업 완료

2. XNA와 연동 작업 진행 중



XNA와 연동 성공 및 간단한 프로토타입 구현 동영상






- 순수 wav 만으로 제작된 2개의 bms로 테스트 해보았음.


- BPM에 따른 속도 계산 및 배속조절을 적용하지 않았고, 임의의 속도로 스크롤함 -> 싱크 안맞음





1. BPM에 따른 속도 계산 구현.

2. 오투매니아의 DJMAX 레이아웃을 적용해봄.

3. 배속조절, BGA 구현중



(* 후반부 일시정지는 테스트를 위해 의도된 것, 중앙의 노트는 자동연주되는 wav들)





1. 배속조절 완료

2. 콤보, 판정 완료

3. BGA 완료






  1. guest icon나선민2013.06.03 17:44

    제가 증강현실기법을 기반으로한 드럼 게임 만들고 있거든요..소스좀참고하고싶은데ㅠㅠ 괜찬으시면 nsm0728@naver.com 로주심 감사하겟습니다ㅜ

  2. guest icon안재근2013.10.01 03:16

    안녕하세요^^
    소프트웨어학과 재학중인 학생입니다
    이번 학기에 제가 프로젝트를 하나 맞게 되었는데
    키넥트를 이용한 드럼리듬게임 제작입니다...
    저도 C#으로 제작하려고 생각 중인데 마침 사용하신 언어가 C#이셔서 부탁드려봅니다 소스를 참고차 보고 싶은데 실례가 되지않는다면 kings_and@naver.com으로 보내주셨으면 감사하겠습니다.

  3. guest icon2014.03.18 14:08

    비밀댓글입니다

  4. guest icon비누2014.05.14 19:33

    안녕하세요^^
    이번 프로젝트로 리듬 게임을 제작중인 학생입니다.^^
    리듬게임을 위한 리듬의 배열 선언문제에서 막혀서 그러는데 소스를 참고해보고싶습니다.ㅠㅜ 혹시 코드좀 보내주실수있나요?ㅜ.ㅜ
    eunban100@nate.com

  5. guest icon포듬이2014.06.24 16:47

    안녕하세요!
    데이터장갑으로 게임 기획중인 학생인데
    소스 보내주실수 있으면 부탁드려요!ㅠㅠ
    rethme@naver.com

  6. guest icon개그왕2014.08.18 21:53

    안녕하세요 이번에 리듬게임을 제작중인데 소스를 참조하고싶어 댓글 답니다.

    괜찮으시다면... 소스 공유 괜찮을까요.

    그리고 저는 자동노트생성방식을 연구중인데 어떤방식으로하셨는지도 알려주세요~

    감사합니다^^

  7. guest icon2014.09.25 10:32

    비밀댓글입니다

  8. guest icon2014.09.25 10:33

    비밀댓글입니다

  9. guest icon2014.10.02 22:12

    비밀댓글입니다

  10. guest icon2014.10.15 15:04

    비밀댓글입니다

  11. guest icon2014.10.27 11:10

    비밀댓글입니다

  12. guest icon컴공허접2014.11.19 15:44

    안녕하세요~자바로 구현하려고 하는데 소스 코드좀 보내주실수 있나요?ㅠㅠ
    rhkdgus221@naver.com

  13. guest icon2014.12.15 12:22

    비밀댓글입니다

  14. guest icon2015.03.16 17:37

    비밀댓글입니다

  15. guest icon컴공학생2015.03.17 20:55

    리듬액션게임 을 공부하고있는 학생입니다.
    실례가 되지않는다면 소스좀 보내주실수있을까요
    daihyung1@naver.com

  16. guest icon2015.12.20 04:00

    비밀댓글입니다

  17. guest icon2016.05.02 18:17

    비밀댓글입니다

  18. guest icon2017.09.21 21:40

    비밀댓글입니다

BMS 파싱 및 리듬게임 개발 (C#) - 2

posted-at2013.08.28 16:52 :: posted-inProject/게임개발 :: posted-byNarrL


참조 문서.

http://bit.sparcs.org/~tokigun/article/bmsguide.php (bms 파일형식)

http://smilejsu.tistory.com/380 (BPM 계산 방식과 배속 구현)



지난번 BMS 파싱 및 리듬게임 개발 (C#) 에 이어서 다시 제작에 들어간 bms구동기이다.


가장 까다로웠던 이벤트 채널도 사실상 구현이 완료되었고.


이벤트 채널은 실제로 오브젝트를 배치하지는 않지만 곡이 재생될 때 발생하는 이벤트(BGA 변경, 배경음 재생 등)를 지정하는 데 사용한다.
channel #01: 배경음 채널
지정한 키값을 배경음으로 재생한다. 이 배경음은 어떤 경우에라도 항상 재생된다. 존재하지 않는 키값은 무시한다.
channel #02: 마디 단축
이 채널은 다른 채널과는 다르게 데이터로 숫자를 받는다. 지정한 실수 배로 해당 마디의 길이를 줄이거나 늘린다. (0.5일 경우 원래 길이의 반으로, 2.0일 경우 원래 길이의 두 배로) 이는 BPM의 조정과 다르며, 해당 마디가 재생되는 시간 자체가 그만큼 짧아지거나 길어지는 것을 의미한다.
channel #03: BPM 채널
해당하는 위치에서, BPM을 지정한 16진수 숫자(1부터 255까지)로 바꾼다. 예를 들어서 78은 BPM 120을 의미한다.
channel #04: BGA 채널
현재 표시되고 있는 배경 이미지 파일을 해당하는 키값에 지정된 이미지 파일로 바꾼다. 지정된 이미지는 다른 이미지가 이 채널에서 지정될 때까지 계속 보여진다.
channel #05: BM98 확장 채널
이 채널은 BM98에서만 사용할 수 있다. 따라 오는 데이터들을 순서대로 해당 마디의 에 넣는다. 그리고 오브젝트 채널에서 명령을 내릴 때, 해당 마디의 큐가 비어 있지 않으면 나오는 순서대로 00이 아닌 키값에 큐에서 키값을 꺼내서 그 키값에 대응하는 스프라이트를 기본 오브젝트 모양 대신 출력한다. 키값에 대응하는 스프라이트 번호는 미리 지정되어 있으며 부록에 그 목록이 있다.
channel #06: Poor BGA 채널
사용자가 오브젝트를 입력하지 못 했을 때 표시될 배경 이미지를 해당 키값의 이미지로 바꾼다. 일반적인 BGA 채널과는 달리 Poor BGA 채널은 하나 뿐이며, 투명색 등은 모두 무시된다.
channel #07: BGA 레이어 채널
현재 표시되고 있는 배경 이미지 파일을 해당하는 키값에 지정된 이미지 파일로 바꾼다. channel #04와 다른 점은 이 이미지는 channel #04에서 지정한 이미지 위에 표시된다는 것이다. (검은색, 즉 투명색으로 되어 있는 부분은 아래의 일반 BGA 이미지가 비쳐 보이게 된다.) 그래픽 편집 툴의 레이어 기능과 흡사하다.
channel #08: 확장 BPM 채널
해당하는 위치에서, BPM을 지정한 키값에 지정된 BPM 값(#BPMxx 명령으로 지정한 값)으로 변경한다.
channel #09: 시퀀스 정지 채널
해당하는 위치에서, 지정한 키값에 지정된 시간(#STOPxx 명령으로 지정한 값) 만큼 오브젝트가 움직이는 것을 멈춘다. 이미 재생되던 배경음은 그대로 재생되지만 다른 모든 것은 해당하는 시간만큼 멈춰 있게 된다.



롱노트, 배속조절, BGA(이미지, 동영상) 까지 모두 구현되었으니 기본적인 BMS 파싱 작업은 완료되었다고 볼 수 있다.



약 100개 정도의 유명 BMS 파일들로 테스트해본 결과 모두 무사히 통과,

간혹 로딩한 이미지 메모리가 뻥튀기 된다던가, 동영상 프레임이 이상해지는 문제는 해결해야할 버그사항들 이다.



네트워크는 제로보드 호스팅을 통한 DB 사용으로 로그인, 레벨, 포인트 등의 기능을 연동해놓은 상태이다. (임시)

http://kobi3000.cafe24.com/xe/



그래픽 작업은 지인들 동원해서 진행중..



아래는 현재까지 작업에 대한 동영상. (그래픽 작업 미적용)






회사일과 병행하면서 하다보니 진행속도가 만족스럽지는 않다..

  1. guest icon이가람2013.12.06 17:50

    안녕하세요, 이번에 포트폴리오로 리듬게임을 제작하고 있는 취준생입니다.
    조금 실례지만(ㅎㅎ) 몇가지 질문 드리고자 합니다.
    혹시 BMS데이터을 읽어 들어서 노트를 생성할 때
    모든 노트를 미리 생성한 다음에 본 게임이 진행되는 방식인가요?
    아니면 본 게임이 진행되는 상황에서 유동적으로 노트를 제때제때 생성하는 방식인가요?

    소중한 답변 부탁 드립니다. 감사합니다.

    • guest icon NarrL2013.12.10 14:34 신고

      미리 생성해놓고 스크롤하는 방식입니다.

  2. guest icon이가람2013.12.11 11:51

    답변 감사합니다^^.

  3. guest icon이가람2013.12.12 17:39

    질문 하나 더 드려도 될까요?

    배속 구현 할 때, 혹시 멀티 쓰레드 형식으로 구현하셨나요?(당연히 그러겠지만...)

    예를 들어

    노트를 내려오게 하는 쓰레드하고
    노트 배속을 관리하는 쓰레드 이런 식으로

    따로 관리하는 방식을 취하셨나요?

    그렇다면 어떤 식으로 관리하셨는지 조금 알 수 있을까요?

    현재 제가 유니티로 개발하고 있어서 배속 기능을 비슷하게 구현하고 있지만

    조금 끊기는 문제가 있네요...

    • guest icon NarrL2013.12.16 10:26 신고

      제꺼에서는 구조상 배속을 다른 쓰레드로 나눌 필요가 없네요..
      배속 조절을 해도 실제 노트 간격이 늘어나는 것이 아니라 Draw시의 노트위치만 변경해주는 방식이라..
      유니티 경우에는 끊김이나 프레임드랍은 고질적인 문제라고 알고있어요. 가비지컬렉터 문제도 있고..

    • guest icon이가람2013.12.17 21:03

      허... 그렇군요ㅎㅎ... 이 놈의 배속이 문제네요 ㅠㅠ 시간 내주셔서 감사합니다^^.

  4. guest icon2014.12.10 08:00

    비밀댓글입니다

음악 가사 타이핑 게임 개발 (C#)

posted-at2013.05.29 04:21 :: posted-inProject/게임개발 :: posted-byNarrL

2008년도에 제작하던 가사 타이핑게임



갑자기 고3 때 제작하던 고대 유물이 생각나서 하드를 뒤져보니까,


소스파일은 물론 실행파일 리소스 전부 건재하더라.


덕분에 오랜만에 추억에 잠길 수 있었음.


기본적으로 외국음악들 가사를 타이핑하는 게임인데(영어로) 애니 오프닝 엔딩들이 주를 이룸.


한 때 중국인이 만든 웹게임 typing 어쩌고를 보고 삘꽂혀서 배껴서 만들어봤던 건데, 고등학교 졸업하고 흐지부지 되버린듯..


그래서, 다시 완성해 보려고 함 !



** 개발진행상황 **

(2013-6-01 개발 시작)

(2013-6-05 프로토타입 완성)



- 1~3 days

C# + xna + ffmpeg 동영상 출력으로 大삽질 시전

결국 어느정도 해결됬으나 싱크가 0.001초정도씩 밀리는 경향이 나타남..



- 4 day

동영상 출력 및 xna 유니코드 폰트 출력 등 구현 



- 5 day

기본적인 가사 타이핑 게임 Prototype 완성





- 6~8 days

바쁜관계로 UI개선 및 이펙트 추가만 틈틈이..





- after 9 days
제로보드xe 기반 홈페이지와 계정연동 성공 및 기타 UI개선 (mysql)

슬슬 형태가 갖춰진다..