Skip to content

Instantly share code, notes, and snippets.

@dtinth
Last active August 29, 2015 14:13
Show Gist options
  • Save dtinth/0b633afa89a2a070647d to your computer and use it in GitHub Desktop.
Save dtinth/0b633afa89a2a070647d to your computer and use it in GitHub Desktop.
BEMUSE Proposal Draft

Project Title

Bemuse — web-based BMS simulator of the future

Background and Motivation

BMS is a file format for music game simulators, created by Urao Yare in 1997. It was created to store song note patterns in a similar way to Konami’s music game, Beatmania. The format has been extended and evolved over the years, and many simulators supporting this file format are created. This format is still widely used even today, with Japan and Korean people creating hundreds of BMS songs and releasing them for free every year.

However, BMS simulators that work cross-platform are lacking. Most simulators work on Windows only or are very incomplete or buggy. Moreover, it is quite hard to get started playing BMS. The player has to find an appropriate simulator for their computer, and also has to download BMS files to play.

Recent development on HTML5 technology brings a possibility to create a full-featured game without requiring any plugins (e.g. Adobe Flash, Apple QuickTime, or Unity Web Player). WebGL brings 3D graphics to the web. Web Audio API allows sounds to be decoded, played, sequenced, synthesized, analyzed, and automated using JavaScript code. Prior experiment has confirmed that creating a music game is now feasible with today’s web technology, even on mobile devices.

In addition to that, ECMAScript 6 (ES6) is being developed as the next version of JavaScript with better syntax and semantics, which allows applications to be developed in a more consistent and maintainable way. Even though many parts of ES6 are not available in current browsers, fortunately, several “transpilers” exist to convert ES6 code into ES5, which can be run in today’s browsers. This means that we can write code in the web’s future language today.

Last but not least, many tools have been developed to facilitate project management, source code control, peer reviews, automated and continuous integration, code review, testing, dependency management, and deployment. These tools allow developer to be more productive and create a higher quality software. Most of them are available for free for open source projects.

My enthusiasm for music games, development of HTML5, ES6 technologies, and tools motivated me to experiment with these things to create a music game using future web technologies.

Purpose and Objective

This project has many purposes:

  • From a music gamer perspective
    • To make BMS easier to access — anyone with a modern web browser can visit the website and play the game without installing any software or plugins.
    • To create a BMS simulator that can be played on Windows, Mac, Linux, and iPad.
    • To allow BMS creators to publish songs through this game.
  • From a software engineering perspective:
    • To experiment and use new web technologies to create a music-based game with real-time sound effects, which, as far as I know, has not been done before.
    • To learn and use automated tools to increase productivity and quality of the software.
    • To create an open-source software that is friendly to contributors, and can be used as an example for JavaScript projects written in ES6.
    • To learn to design and implement a fairly large game system using commonly-used patterns in JavaScript.
  • From a project management perspective:
    • To incorporate project management and other tools to manage a project in a sustainable way.
    • To learn to work in a small team of 3 people effectively, possibly with contributions from the BMS community.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment