개인 난이도표 만들기
개인 난이도표를 만드는 법을 간단히 적어둡니다.
준비물#
- 난이도표를 올릴 수 있는 호스팅 서비스
- CTRL + C, CTRL + V
- 시간 (10분만 있으면 가능)
시작#
1. BeMusicSeeker 설치#
LR2를 사용하고 있다면 난이도표 폴더 관리를 하기 위해 반드시 설치해야 하는 프로그램입니다. 또한 이번 과정에선 난이도표를 추출할때도 사용할 겁니다. 설치 링크 (클릭)
2. 난이도표 만들기#
Create New를 클릭해서 곡을 분류합니다. LEVEL 1 , LEVEL 2 식으로 폴더를 원하는 레벨 만큼 만들고 곡도 레벨별로 만든 폴더에 분류합니다.
3. 분류된 난이도표를 json으로 추출#
만들어진 난이도표에 대고 우클릭 해서 export를 누르면 header.json과 data.json을 추출할 수 있습니다.
4. 편집#
Notepad++ 같은 편집기를 사용해서 3번 과정에서 추출한 header.json과 data.json을 엽니다.
header를 먼저 열어 name, symbol, data_url을 제외하고 모두 지웁니다. level_order는 지우지 않아도 됩니다.
자주 쓰는 몇 가지만 부연 설명#
- name : 난이도표 이름
- symbol : 난이도표 기호
- level_order : LR2나 BMSeeker내에서 레벨 정렬에 관한 건데, 숫자가 아닐 경우 반드시 쌍따옴표로 감싸줘야합니다. 그냥 건들지 않는 걸 추천.
- compat_prefix : LR2나 BMSeeker내에서 폴더 이름을 정할 수 있습니다. symbol과 같은 기호로 해도 되고 아예 지워버려도 됩니다.
- data_url : data.json의 위치입니다. 이 글은 data.json을 구글 스프레드시트를 사용해 불러올 것이기 때문에 뒤에서 한번 더 다룰 예정.
data.json은 이 곳에서 csv로 변환합니다.
5. 구글 스프레드시트로 변환#
구글 스프레드시트를 열어서 변환한 csv파일을 가져옵니다.
md5, level, title, artist, url, url_diff, name_diff, comment를 제외하고 모든 열을 삭제합니다.
자주 쓰는 몇 가지만 부연 설명#
- md5 : bms파일의 md5값
- level : 레벨
- title : 곡 제목
- artist : 작곡가
- url : 원곡 다운로드 링크
- url_diff : 차분 다운로드 링크, 동봉인 경우 비워둡니다.
- name_diff : 차분 다운로드 칸에 적는 간단한 설명( ex) 제작자 )
- comment : 차분에 대한 간단한 설명을 적는 곳
- url_pack : 원곡이 출전한 대회의 패키지 링크를 적는 곳 (필수 아님)
- name_pack : url_pack의 패키지 이름이나 부연설명 (필수 아님)
다음 이 강좌를 이용해 data.json을 가져옵니다.
4번 과정에서 수정했던 header.json을 열어 data_url 부분에 저 강좌를 이용해 얻은 링크를 넣습니다.
6. 난이도표를 공개#
위 링크를 클릭해 난이도표용 페이지 샘플을 다운로드 한 후, 추출한 header.json과 data.json을 적당한 호스팅 서비스에 업로드 한 후, 해당 링크를 BeMusicSeeker로 가져와서 정상적으로 커스텀 폴더가 만들어지면 성공입니다.
그 외#
글에는 쓸 부분만 간단하게 적어뒀는데, 난이도표 사양에 대한 자세한 정보는 이 곳을 참고하면 됩니다.
무료 호스팅 서비스는 Github이나 Gitlab Pages 서비스를 이용하면 편리합니다.
+ 한 시트에서 여러 난이도표를 운영하는 법#
이 부분에 대한 부연설명. (코드 참고는 여기에서 했음.)
function doGet(e) {
var tablelist = e.parameter.tablename; // 주소창에는 ?tablename=data0~data2로, (obj, null, 2)에서 2는 얼마나 들여쓰기를 할건지 결정.
var sheetId = '시트 아이디 입력'
if (tablelist == 'data0') { // ?tablelist=data0일 때 sheet0의 데이터를 가져오는 것.
var obj = getSheetAsObj(sheetId, 'sheet0');
return ContentService.createTextOutput(JSON.stringify(obj, null, 2)).setMimeType(ContentService.MimeType.JSON);
} else if (tablelist == 'data1') {
var obj = getSheetAsObj(sheetId, 'sheet1');
return ContentService.createTextOutput(JSON.stringify(obj, null, 2)).setMimeType(ContentService.MimeType.JSON);
} else if (tablelist == 'data2') {
var obj = getSheetAsObj(sheetId, 'sheet2');
return ContentService.createTextOutput(JSON.stringify(obj, null, 2)).setMimeType(ContentService.MimeType.JSON);
} else { // 주소 뒤에 아무것도 적지 않았을때
return ContentService.createTextOutput(JSON.stringify(null)).setMimeType(ContentService.MimeType.JSON);
}
}
혹시 더 좋은 코드가 있다면 연락주세요…