BeamNG.Earth
A 1:1 scale streamed Earth for BeamNG.drive: real elevation and satellite imagery, floating origin, LOD streaming from a companion server
Manage a football team, make trades and coach to win championships
Translation pending
AI summary · website content
GamesJavaScriptGitHub @jontrieu22-langOnlineOwner 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
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗A browser-local football rebuild roguelike. Win a championship in as few seasons as possible without being fired.
No build or dependencies required. Serve dist/ with any static server, for example:
python3 -m http.server 4173 --directory dist
Open http://localhost:4173. Progress is saved in localStorage on that browser and origin.
node scripts/check.cjs
tests/browser/game.test.cjs uses Playwright and Chromium against port 4173 by default; setup and overrides are documented below. It covers gameplay controls, local persistence, and mobile overflow.
16 fictional AI teams, 10 regular-season games, top-six playoff qualification, three playoff wins for the title. A simple playoff gauntlet stands in for a full seeded bracket. Weekly choices trade current rating against young-player development. Salaries, paid training, free agents, and cash-for-pick trades share a budget. Funding is $80M + $2M per regular-season win + fan and playoff bonuses. Expiring contracts automatically renew at market salary; unaffordable rosters release the highest-paid player until solvent. All of these rules are deliberately simplified for this first playable version.
The 12 slots represent starters/units, rather than a full depth chart. Drafting or signing replaces the existing slot. Rivals have aggregate ratings, records, and strategic states, with simulated market signings. Draft tiebreaker is stable league order; standings tiebreaker is point differential. No real multiplayer or NFL assets.
Files: dist/js/game/engine.js holds game state and rules; dist/js/ui/app.js renders the UI; dist/styles/ contains responsive styles. Fonts are bundled under their included SIL Open Font Licenses.
Positive heat changes use scrutiny = 1 − 0.8 × max(0, 1 − tenure / 2)², where tenure = season − 1 + completed regular-season games / 10. This rises smoothly from 20% to 80% entering year two and 100% entering year three. Heat changes are rounded to one decimal place. Offseason reviews use all ten completed games, so scrutiny does not jump at a season boundary. Win cooling and successful owner reviews are unchanged. Game reports show the grace discount; trades and owner reviews use the same weighting. Existing saves keep accumulated heat and use the new rules on their next action.
New runs open in the season-one offseason with pick #3. Trades and free agency are available before or after drafting. Complete the draft, then explicitly choose Start season; kickoff itself does not simulate a game. Following owner review, the next season budget is granted, contracts age, and earned picks are preserved before standings reset. The new draft then happens within that upcoming season, so newly drafted rookies do not immediately age or lose a contract year.
First-year rookie salaries ($3M per selection) are reserved from discretionary spending and charged at selection. There is one veteran trade per season: before drafting its extra selection joins the current class, afterward it belongs to the next offseason. Training has two offseason slots and resets for Week 1.
Existing saves retain progress. In-progress seasons finish normally. Older pending drafts finish before entering the next offseason with that draft marked complete. Existing week-zero seasons open the offseason; an already-funded/finished draft is not duplicated. A year-one save with enough unspent rookie funds gets the new initial draft; otherwise its prior spending is preserved and drafting begins next offseason.
The Draft board tab shows all 44 prospects before and during the draft, with rank, position, overall, potential, current starter comparison, and availability. Trade up before entering the draft or before your first selection; the offer names the exact existing prospects it unlocks. Selecting players never removes them from the full board, while the selectable pool still shrinks as rivals pick between your selections. All remaining prospects can be selected, rather than only the first ten. Older saves retain their available prospects; missing historical ranks are filled once on migration without changing gameplay RNG.
Select any unspent pick and exchange it for a pick four places later plus another selection sixteen places after that (skip slots you already own). The offer previews the prospects you lose access to. No cash fee, but $3M of unreserved budget is required for the additional rookie contract. There is no trade-count limit. Select any unspent pick, including acquired picks, in the draft board selector. Offers work in the offseason and during the draft and survive reloads. Rival pick ownership prevents duplicate assets; the current draft floor prevents trading for already-passed picks. Trading up costs $6M per position moved. Trading down requires two later picks held by the same rival and enough remaining prospects to fill the resulting selections.
vercel.json serves dist as static assets with no install or build step. Link the repository root to Vercel and set main as the production branch. Vercel's native Git integration creates preview deployments for non-production branches and publishes main-branch updates. GitHub Actions runs game checks on main pushes and pull requests; the checks report separately and are not a deployment gate by themselves.
For tester feedback: create a feature branch, make changes, run node scripts/check.cjs, push and open a pull request, review the Vercel preview, then merge to main. Keep the production domain stable so browser-local saves persist. Saves from the old Sites domain do not transfer automatically to the Vercel domain.
dist/
index.html
js/game/engine.js
js/ui/app.js
js/ui/format.js
js/ui/screens/ # office, offseason, roster, market, league, draft, ending
js/ui/components/ # hot-seat, game-result, button, layout
styles/ # tokens, base, components, screens
assets/fonts/ # fonts and licenses
tests/game/engine.test.cjs
tests/browser/game.test.cjs
scripts/check.cjs
docs/visual-direction.md
docs/ui-checklist.md
See visual direction for editing boundaries and the UI checklist for review expectations. There is no production build step; Vercel continues to serve dist/.
With a static server on port 4173, install the optional browser-test tooling locally:
npm install --no-save --package-lock=false [email protected]
npx playwright install chromium
node tests/browser/game.test.cjs
BASE_URL overrides the local URL. PLAYWRIGHT_MODULE can point to an existing Playwright installation, CHROMIUM_PATH selects a system Chromium, and SCREENSHOT_DIR selects a screenshot directory (default: ignored test-results/). These tools are not runtime dependencies. No absolute workspace paths are required.