Skip to content
forked from bemusic/bemuse

⬤▗▚▚▚ Web-based online rhythm action game. Based on HTML5 technologies, React, Redux and Pixi.js.

License

Notifications You must be signed in to change notification settings

MoriEdan/bemuse

Repository files navigation

BEAT☆MUSIC☆SEQUENCE

(a.k.a. BE☆MU☆SE)

web-based music game of the future

Waffles Travis CI Code Climate Code Climate (Coverage) Gitter


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. Code will be inlined into index.html.
  • app: The game itself.
  • test: The test code.

Directory Structure

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

Prerequisites

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

Setup

  1. Clone the Git repository.
  2. Run npm install to install dependencies.
  3. Run bin/setup to setup pre-commit hooks and other setup stuff.

Development Server

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.

Building

npm run build

Running Tests

npm test

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.

About

⬤▗▚▚▚ Web-based online rhythm action game. Based on HTML5 technologies, React, Redux and Pixi.js.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 84.3%
  • CSS 9.2%
  • HTML 3.7%
  • PHP 2.5%
  • Other 0.3%