(also known as BE☆MU☆SE, BEMUSE, and B☆M☆S)
This project uses README-Driven Development, and we are in the planning stage. Therefore, what you read below, as of the time of writing, doesn't exist yet. Also check out the Project Plan. The actual development starts in 2015. This file will also evolve over time as development progresses.
Should you have any question about the project plan, now is a good time to raise an issue.
Free and open-source web-based BMS simulator, built with the future's web technology. Play on your computer or on your iPad.
- Online play
- comes with some default selection of songs.
- people can host song collections on their own servers too.
- Offline play
- downloaded simfiles can be played later offline.
- can also play simfiles on your computer.
- BMS simfile support:
- 7-keys + Scratch
- 7-keys
- 14-keys
- However, they must be converted into ".bemuse" files first.
- Game modes:
- Single player mode
- Two player mode — two players play on the same machine.
- Online start time synchronization — play together with friends.
- Fully supports keysounds.
- Supports
#LNTYPE 1
and#LNOBJ
. - Play on PC (using keyboard or gamepad) or on iPad.
To make the game load as fast as possible, the app is split into multiple parts:
- boot: A special module to display loading bar and loads the application. Dependencies should be minimized.
- app: The game itself.
- test: The test code.
The directory structure:
- www: These files will be hosted online
- build: The built bundles (not included in Git).
- src: The source code for the game and the boot loader.
- boot: The source code for the boot loader.
- app: The source code for the game.
- test: The test code for the game.
- Node.js
- Git
- Text Editor with
.editorconfig
Support
-
Clone the Git repository.
-
npm install
to install dependencies.
-
npm install -g gulp
to install Gulp command-line tool.
gulp server
- To run the application, go to
http://localhost:8080/
. - To run unit tests, go to
http://localhost:8080/?mode=test
.
gulp build
BMS files need to be converted into .bemuse
file format. It is a simple file format to hold BMS files and keysound files together. A custom format is created to be easily consumed by web applications, both on desktop and mobile devices.
- All sound samples are converted into
.mp3
- Since it is the only format supported by major browsers!
- 10 bytes magic string "BEMUSEPACK"
- 4 bytes - metadata size N
- N bytes - metadata in JSON format
- song metadata
- title
- artist
- genre
- BPM
- readme
- list of all files
- File name
- File size
- File offset (relative to payload start)
- dependencies
- list of objects
- url: relative path to extra
.bemuse
file to load. 1 - type: list of resource types such as "bms", "keysound", "bga"
- for efficiently loading needed resources
- for example, dependencies without "bga" type will not be loaded when "bga" feature is turned off (or not implemented )
- url: relative path to extra
- list of objects
- song metadata
- The payload
- just a stream of bytes created from multiple files concatenated so that it can be sliced easily.
LICENSE, for now.
Footnotes
-
There isn't a simple way to perform partial download of large files. One approach is to split the
.bemuse
file into several parts. Therefore, if the download fails, we don't have to re-download the whole thing. ↩