This is my current ongoing project. My intentions are to treat this more as a learning experience than having the goal of completing a full game. For that matter, it will always be very basic. (Please excuse my poor pixel graphics!)

The game has a downwards looking 2D orientation. This is obviously quite strange for a roller coaster simulator; It doesn’t support changes in track height, overlapping track, or even loops! I started in 2D simply because I had no idea how to accomplish a coaster in 3 dimensions. (And honestly, I wasn’t even sure about doing it in 2D, but I did it!) My goal is to eventually transition the game to an Isometric view once I figure out how to animate a train along a complex track (with loops, changes in elevation, crossing over other objects, etc.) in Isometric. This 2D version is more of a proof-of-concept for me.

Technology Used

The game is an HTML5 canvas, so it is browser-based with a JavaScript client. My dev environment is using a DigitalOcean VM for hosting since I am also using Python and MongoDB. Users and maps are stored in a MongoDB database, while a Python Flask app is used for saving and loading from the database. I chose python and MongoDB purely for gaining experience working with them. In the future, I may also use Node.js to handle multiplayer server logic over WebSockets.


  • Map generation, loading, and saving for multiple users.
  • Move and scale viewport
  • Tile placement (For dev only)
  • Roller Coaster track
  • Splines/Bezier curves for the track path
  • Booster and Brake tracks

To-do List

  • Eventually Isometric View
  • Eventually different elevations of track
  • Eventually loops and such
  • Multiplayer support on a single park
  • Other rides
  • Paths
  • Park guests
  • Particle System
  • Multiple stations per track
  • Multiple trains per track
  • Block brakes
  • Coaster builder wizard
← Return to Projects