Eli의 여백

바쁜 나날들 사이에서 생각났던 이런저런 것들을 적어봅니다.

프로그래밍

BMS구동기 v0.1

Eli♪ 2016. 1. 24. 02:13

결과물 사진

 

 

사용한 것

  • Visual studio 2015, community edition (CE)
  • monogame (C#기반이다)
  • GitHub for visual studio (extension)

현재까지 완료된 사항

  • 키를 누르면 하위 폴더에 포함된 사운드 재생
  • 키를 누르면 하위 폴더에 포함된 BMS 읽기
  • 키를 누르면 line by line으로 읽은 BMS 출력
  • Visual studio와 GitHub를 연동
차후 해결과제
  • 읽은 BMS파일을 가지고 regular expression을 이용해서 노트 순서와 시간 계산

 

원래는 private repository가 되는 GitLab하고 연동하려고 했는데 잘 안되어서 어쩔 수 없이 코드가 공개되는 GitHub랑 연동한다. 이 코드를 숨기는 것보다 내가 개발하는 것의 버전관리가 훨씬 중요하기 때문에... GitLab도 그냥 Git를 사용할거면 push pull 된다 (링크).
 
사실 이 프로젝트는 원래 python을 이용해서 개발하려고 했다. 내가 python에 매우 익숙하고, 웬만한 방식의 coding 및 GUI를 다 해봤기 때문에 훨씬 유리할 것으로 생각했으나, 한 가지 난관에 부딪친 게.... 바로 컴파일이다. 다른 사람이 내 프로그램을 실행하기 위해서 python과 pygame을 깔아야 한다면 이건 망한거나 마찬가지다.
python으로 그림 파일 읽고, note로 쓸 직사각형 sprite를 만들고, mouse track되는 직사각형이 다른 sprite를 건드리면 소리가 나면서 사라지는 것까지 구현했었다. 그런데 py2exe를 이용해서 컴파일하면 자꾸 소리파일의 경로를 못찾아버린다. 게다가 다른 사람한테 배포했더니 듣도보도 못한 dll 에러가 발생하는 바람에 python으로 개발은 접었다.
 
주변 사람중에 아주아주 오래 전에 MFC로 개발한 사람이 있어서 MFC + C++로 가볼까 했는데 direct3D를 직접 써야하는 듯해서 다른 방법을 알아보던 중, monogame이라는 것을 지인을 통해 알게 되었다.
 
xna라는 GUI library를 게임목적에 맞게 잘 포장한 확장이다. Visual studio용 플러그인으로 다운받을 수 있다(링크).
 
대충 사이트를 둘러보거나 결과물들을 보면 꽤 쓸만한 것을 알 수 있다. 난 컴공과도 아니고, 그렇다고 GUI에 전문가도 아니기 때문에 native API를 이용하기에는 좀 한계가 있어보여 이 monogame이란 것을 사용해서 만들기로 했다.

 

C#도 처음 접해보는데 다행히 python이랑 비슷하게 objected oriented 언어라서 큰 무리 없이 적응할 수 있었다. 다만 단점이라면 수없이 많이 발생하는 중괄호와 변수 type을 매번 적어줘야 된다는 점, 그리고 visual studio라는 무거운 툴을 써서 소스코드 하나 쓰는데 잡다한 파일이 매우 많이 생성되는 점들이 초반에 큰 걸림돌이 되었다. 지금은 잘 적응해서 쓰고 있다.

'프로그래밍' 카테고리의 다른 글

BMS구동기 v0.3  (1) 2016.01.24
BMS구동기 v0.2  (0) 2016.01.24
02. Git 다운로드 및 GitLab과 연동  (0) 2015.09.02
01. GitLab 가입 및 프로젝트 생성  (0) 2015.08.31
python에서 따로 설치한 module들의 정보 보기  (0) 2015.08.30