BeamNG.Earth
BeamNG.drive용 1:1 비율 실시간 지구, 실제 고도·위성 이미지·부동 원점·보조 서버에서 LOD 스트리밍
무료 게임 광고에 지쳐 직접 만든 모바일 브라우저용 버스 잼 퍼즐, 무한히 생성되는 레벨 제공
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
게임TypeScript · CSSGitHub @SusannaKay온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기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
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
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.