Rewind game sessions and edit code live.
Why Bloop? | Docs | Demos
bloop has 0 dependencies. Experiment with it in 30 seconds.
bun create bloop@latest- Unit testable
- Record gameplay "tapes"
- Rewind any live or recorded gameplay session
- Hot reload code changes during a rewinded play session
- Rollback netcode
import { Bloop } from "@bloopjs/bloop";
export const game = Bloop.create({
// bag is a singleton object for global game state - useful for prototyping
bag: {
clicks: 0,
}
})
// game systems run in the order you define them
game.system('input', {
// systems update state in response to events:
// * input events like keydown, mousemove
// * frame lifecycle events like update
// * network events like peer join
mousedown({event, bag}) {
bag.clicks++;
console.log(`Clicked ${bag.clicks} times!`)
},
})This is a simple clicker game.
See the docs for more info about how the game can be wired up to a renderer, headless testing, or how you can easily add rollback netcode.
https://trybloop.gg has examples of game demos I've built with bloop, you can play them live in the browser or check out their source code.
If you're interested in evaluating bloop for a game jam or for your commercial project, please hit me up! I'm happy to devote some of my time to help you get started.
Contributions welcome!
To get started developing bloop locally:
Mac/Linux
./bin/setupWindows (Powershell)
.\bin\setup.ps1- Keyboard and Mouse Input Handling
- Animated Sprites
- Transform Hierarchy
- Collision detection
- Cameras
- ECS
- Scene Loading
- Gameplay phases
- Feature flags
- Config values
- Gamepad (aka controller) input handling
- Godot
- Toodle
- Browser
- PC
- Desktop Mac
- iOS
- Steam Deck
- Nintendo Switch
- Run anywhere you can allocate a byte buffer
- Single frame object pools
- Multithreading
- Aseprite
- LDtk
- VSCode / Cursor
--
This project was created using bun init in bun v1.3.1. Bun is a fast all-in-one JavaScript runtime.
