This is an implementation of the retro game Bubble Trouble.
- The player must shoot the bubbles before they collide with the player to complete each level.
- The bubbles randomly bounce around the screen in different velocities.
- All bubbles split-up into two smaller bubbles when shot except the smallest one in the list of standard bubbles.
- Each level comes with it's own scene and degree of difficulty.
- You'll be able to play the game here 🎮
- Drawing on the HTML5 Canvas, the game loop, and collision detection are all done without any libraries or frameworks.
- This project is written in a functional style using the Elm Architecture.
- It's not purely functional because of the limitations of JavaScript and I/O being inheritently impure.
- Instead of deep cloning objects and arrays for immutability, Immutable JS - a persistent data structures library, is used.
First you need to install yarn
by following instructions on the Yarn documentation or just use npm
To get dependencies
yarn install
or npm install
Install Webpack globally
yarn global add webpack-devserver webpack
or npm install webpack-devserver webpack -g
To serve at http://localhost:3000/public using Webpack
yarn run watch
or npm run watch
To build when NODE_ENV environmental variable is set to production
yarn run deploy
or npm run deploy
To run tests using Jest
yarn run test
or npm run test
- Finish prototype
- Add scores
- Complete units tests
- Add lives and levels
- Add sprites and sound
Bubble Trouble is released under the The GPL 3.0 License.