(a.k.a. BE☆MU☆SE)
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. Code will be inlined into index.html.
- app: The game itself.
- test: The test code.
- bin: Miscellaneous shell scripts.
- config: Contains application configuration.
- public: Contains default HTML and CSS assets.
- src: Contains the application source code.
- tasks: Contains Gulp tasks.
- support: Contains support code for Gulp tasks.
- web_modules: Contains modules that is not convenient to include through npm, such as Jasmine.
These directories are generated by the build tool and is not in repository:
- coverage: Contains code coverage data and report.
- dist: Contains built code that will be uploaded.
- Node.js
- Git
- Text Editor with
.editorconfig
Support
- Clone the Git repository.
- Run
npm install
to install dependencies. - Run
bin/setup
to setup pre-commit hooks and other setup stuff.
npm start
- To run the application, go to
http://localhost:8080/
. - To run unit tests, go to
http://localhost:8080/webpack-dev-server/?mode=test
.
npm run build
npm test
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. ↩