JSON Skin Tips (English) - exch-bms2/beatoraja GitHub Wiki

This page is an incomplete definition for beatoraja json skins, until a proper definition is made.
I'll edit this page a lot; eventually it will look good I hope.
I don't speak Japanese but I'll try to use mostly Google Translate-friendly English (after I've made the first draft).

header

Skin type, resolution, and some other things are defined here.

"type":0,
"name":"example",
"w":1920,
"h":1080,
"playstart":1000,
"scene":3600000,
"input":500,
"close":1500,
"fadeout":1000,

"type" - What kind of skin it is. 0 is 7k, 1 is 5k, 2 is 14k, 3 is 10k, 4 is 9k, 5 is select, 6 is decide, 7 is result, 15 is course result, 16 is 24k, 17 is 24k double.
"name" - Name of the skin that's displayed in skin select.
"w" and "h" - Width and height of the skin. What resolution monitor the skin was made for. For example Remi-S is 640x480, WMIX is 1280x720 and LITONE5 is 1920x1080.
"playstart" - Waiting time before the song starts, after the bms is already loaded. This gives the player some time to prepare. "scene" - I don't know, so I use 3600000 because that's what the default skin uses.
"input" - I don't know, so I use 500 because that's what the default skin uses.
"close" - Waiting time after quitting out of a song before it actually quits out of the song. Notes keep moving, Keys and lasers work, but judges don't show up during this waiting time.
"fadeout" - I don't know, so I use 1000 because that's what the default skin uses.

property

custom "op"s are defined here.
"op" probably stands for "option".
op's are either true or false.
Custom op's range from 900 to 999, below and above that are already in use by the game.
op's are used to determine whether something should or should not be rendered in the "destination" section.
It will also be possible to use them in the "image" section" in the future, but that's complicated so I'll write about it later.

"property":[
	{"name":"fast/slow", "item":[
		{"name":"off", "op":901},
		{"name":"on" , "op":902}
	]},
	{"name":"bga", "item":[
		{"name":"on" , "op":905},
		{"name":"off", "op":906}
	]},
],

"name" - Name of the option that appears in skin select.
"item" - inside the [] are the things that will appear in the drop down list.
"name" (inside "item") - what you see in the dropdown list.
"op" - which op gets set to true when that option is picked; all other op's in "item" are false.
You can put as many things as you want in "property" and as many options as you want in "item". This example has only two but the possibilities are endless. Not really endless: the lowest op you can use is 900 and the highest is 999.

filepath

Custom file options appear in skin select like property options.
They allow the player to pick from a list of images. It's an easy way to have different optional textures, for example notes or lasers.

"filepath":[
	{"name":"note", "id":"idlaser", "path":"notes/*.png"},
	{"name":"laser", "id":"idnote", "path":"laser/*.png"}
],
"name" - The name of the setting you see in skin select.
"id" - The id of the "source" that this option is linked to. You can use numbers for id's but I think it's good to use words in parenthesis. I like to name my id's "idsomething", so that it's easy to recognize anywhere that it's an id and not for example an image.
"path" - The path of the image file. For "filepath" always use wildcard ( * ), so it will list every file that matches in front of and after the * sign. You can use for example note_*.png, and it will list every file that starts with "note_" and ends with ".png".
Always put "name" before "id" in "filepath"; Sometimes it doesn't matter but sometimes it crashes when you do it the wrong way around. At least in my experience.

source

//explain what sources are in skinning
//insert example here
//explain example
//list options you can enter in source definition, mention wildcard ("*.png"), recommend using "words in parenthesis" for "id"s
⚠️ **GitHub.com Fallback** ⚠️