BeamNG.Earth
A 1:1 scale streamed Earth for BeamNG.drive: real elevation and satellite imagery, floating origin, LOD streaming from a companion server
Got tired of free-games ads, so I made my own to play & chill. 🤷♂️ A bus jam puzzle for mobile browsers with endless procedurally generated levels, always solvable and tuned by a simulated player. T
Translation pending
GamesTypeScript · CSSGitHub @SusannaKayOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Got tired of free-games ads, so I made my own to play & chill. 🤷♂️ A bus jam puzzle for mobile browsers with endless procedurally generated levels, always solvable and tuned by a simulated player. TypeScript + Three.js
Translation pending
Taken from the repository README
Loading the full README.
Read the full README ↗A "bus jam" puzzle game for mobile browsers. Play it here.
Tap a bus and it leaves the parking lot following its arrow, if the road ahead is clear. Drag a bus and it slides one cell into a free space, like the tiles in a 15 puzzle: that's how you clear the way for the bus you need. Passengers wait in line and only get on the bus of their color. Buses that nobody can board wait in the stalls, and if the stalls fill up before the person at the front of the line finds a ride, you lose.
Ingorgo is Italian for traffic jam. I like this kind of game, but the free ones on the app stores are more ads than game: thirty seconds of puzzle, thirty seconds of video. So I made my own to play & chill, with no ads, ever. The part I cared about most was the levels: they should keep getting harder without ever becoming impossible.
This is the part I find most interesting. Every level is built backwards, the way you shuffle a 15 puzzle: start from an empty lot and apply reverse moves.
The difficulty curve rises quickly at first, with a sawtooth pattern on blocks of 10 levels: climb, a breather level, then a boss on the tenth. Past level 100 it goes into overdrive: more colors, fuller lots, and eventually only 3 stalls.
npm run check-levels generates a range of levels and replays each solution. scripts/calibrate.ts recalibrates the difficulty table and has to be run again whenever the generator changes.
src/game/) is completely separate from rendering (src/render/): the engine is instant and pure, and the renderer turns each event into an animation timelinesrc/game/
types.ts cells, buses, exit paths
engine.ts game rules: tap, slide, garages, boarding, win/lose, crane, extra stall
generator.ts level generator and difficulty curve
calibration.ts chosen variant for each calibrated level
solver.ts searches used for hints, level checks and calibration
rng.ts seeded random generator
src/render/
view3d.ts Three.js scene
timeline.ts turns game events into animations
themes.ts the six worlds
src/main.ts UI, input, overlays
scripts/check-levels.ts replays the solution of a range of levels
scripts/calibrate.ts difficulty calibration (plus write-calibration.ts)
npm install
npm run dev # dev server, reachable from your phone on the same Wi-Fi
npm run build # production build in dist/
npm run check-levels -- 200 # generate and verify levels 1 to 200
URL parameters:
?level=42 opens a specific level (tapping the level number at the top does the same)?debug=1 shows the level stats: difficulty, how full the lot is, how many buses start blockedEvery push to main is deployed to Vercel automatically.