Skip to content

Latest commit

 

History

History
155 lines (105 loc) · 4.81 KB

README.md

File metadata and controls

155 lines (105 loc) · 4.81 KB

BEAT☆MUSIC☆SEQUENCE

(also known as BE☆MU☆SE, BEMUSE, and B☆M☆S)

web-based music game of the future

Waffles Travis CI Code Climate Code Climate (Coverage) Code Climate (Coverage)


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.

Features

  • Online play
  • 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.

Development

Project Structure

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.

Prerequisites

  • Node.js
  • Git
  • Text Editor with .editorconfig Support

Setup

  1. Clone the Git repository.

  2. npm install

    to install dependencies.

  3. npm install -g gulp

    to install Gulp command-line tool.

Development Server

gulp server
  • To run the application, go to http://localhost:8080/.
  • To run unit tests, go to http://localhost:8080/?mode=test.

Building

gulp build

Deploying

Bemuse File

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!

File format draft

  • 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 :trollface:)
  • The payload
    • just a stream of bytes created from multiple files concatenated so that it can be sliced easily.

License

LICENSE, for now.

Footnotes

  1. 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.