Marble Blast Web - Help Hi! Welcome to the web port of Marble Blast. This help page will give you a little introduction to the background behind this web version of the 3D platformer classic. A little side note regarding the help menu: Note that because a lot of features present in Marble Blast Platinum are not part of this port or work differently, most of the help pages are just here for completion's sake and don't actually describe this website's functionality. Development This web port of Marble Blast Gold and Marble Blast Platinum was mainly done by Vanilagy - all the code is free to access on Github. Special thanks go out to RandomityGuy, Whirligig, Jeff and HiGuy for contributing to and helping with this project, as well as to the entire Marble Blast community for their support. The Web Port Team Project Founder and Lead Developer Vanilagy Additional Programming and Support by RandomityGuy Whirligig Jeff HiGuy Technical overview The game is implemented in TypeScript and utilizes a modified version of three.js for rendering and OimoPhysics as its physics engine. Its levels and assets weren't rebuilt from scratch; instead, they are read and imported from .dif, .dts and .mis files used internally by the Torque 3D Engine, on which the original game runs. All the game's internal logic was implemented from scratch, however. The physics simulation runs at a fixed rate of 120 Hz and utilizes continuous collision detection - it was tuned to feel like a Marble Blast game, but there are still differences in the physics, because of which times in this game shouldn't be compared to those in the original. Resources are lazily loaded over the network when required for levels, making the initial load time of the website relatively short (about 4 MB). The UIs are all implemented in plain HTML and CSS, and local persistence for settings, scores and replays is provided by IndexedDB. The game features a state-based replay system which guarantees deterministic playback - replays are compressed using pako and stored locally. Custom levels are supplied by Marbleland and are cached on the server. The backend itself is implemented using Node.js and mostly handles resource loading and leaderboard updates. An SQLite database is used to store online scores. Licensing Some vector icons have been taken from Flaticon.