What it does
The game starts a level through the saga, plays it with whatever puzzle pack it uses, and reports the result. The saga checks the level is unlocked and a life is available, takes the chosen boosters from the inventory and adds the streak's free ones, then on the result pays coins by the level's tier, records the best stars, unlocks the next level, takes a life on a loss and moves every running event on.
Time is the saga's own. The game moves it on as it runs and reports how long it was closed, capped so a changed device clock cannot hand out a day of lives. Lives refill one at a time, unlimited lives run out and events end on that clock, so a whole season of play can be replayed or tested in a moment.
Everything it keeps is plain data keyed on ids. A save restores into a newer config, keeping progress on the levels and boosters that still exist and dropping the rest, so you can add levels and retune rewards under live saves.
Features
- A level map — a count or a list of levels, chapters as map areas, and hard and super-hard tiers that pay more.
- Lives on a timer — taken on a loss or on starting (and returned on a win), refilled per interval, bought back with coins, or switched off.
- Unlimited lives — a reward that stacks seconds of free play.
- Boosters — kinds used before a level or during it, with prices, starting counts and an inventory.
- Win streaks — tiers of free pre-level boosters for wins in a row, lost on a loss.
- Continues — a rising price list per attempt; what a continue gives is your game's to decide.
- Coins, stars and collectibles — first-win and replay rewards, stars to spend on decoration, items your levels report.
- Timed events — milestone tracks that pay out as points pass each step, and races against rivals with seeded paces, with an option to send the player back to zero on a loss.
- Receipts — rewards granted once only, however often the code that grants them runs.
Good for
- A Royal Match or Candy Crush style saga — wrap
match3levels in a map, lives and boosters. - A sorting saga —
container-sort,tray-match,screw-sortorconveyor-sortlevels with the same meta. - Hybrid-casual campaigns — hundreds of seeded levels with tiers and a streak to keep players going.
- Live events without a server — milestone tracks and races that run on the saga clock with seeded rivals.
- Balancing and testing — the whole economy runs headless, so you can simulate a month of play in a test.
Make it yours
The number of levels, their tiers and chapters, the lives (count, refill time, when they are taken), every coin price and reward, the boosters, the streak tiers, the continue prices and whether won levels can be replayed are all configuration. A long saga of a thousand generated levels with lives lost on failure and a three-tier streak is one setup; a short authored map with three lives taken on starting, replays for stars and no continues is another.
A quick look
Start the next level with a booster, then report how it went.
const saga = levelSaga.createLevelSaga({ id: 'my-game', levels: 120, hardEvery: 10, chapters: 20,
boosters: [{ id: 'rocket', when: 'before', price: 300 }] });
game.step('saga', dt => saga.elapse(dt));
saga.startLevel(undefined, { rocket: 1 });
saga.finishLevel({ won: true, stars: 2 });
Works with
- Any level-based puzzle pack:
match3,conveyor-sort,container-sort,tray-match,screw-sort. renovation-progress— spend the stars on rooms and decorations.save— keep the saga's state between sessions.
Good to know
- It plays no level and draws nothing: the map screen and the level are your game's.
- There is no network: race rivals are seeded bots, not real players.
- It trusts the time you give it; the cap on time away limits, but cannot detect, a changed clock.
- Rewards are given at once; a claim-later inbox is up to your game.






