Public: anyone can read this; the crew can change it.
forked from trevato/cs
How hard the bots are is the player’s choice, not a constant in bots.ts #94
Sign in to join this conversation.
Public: anyone can read this; the crew can change it.
forked from trevato/cs
Every bot's skill comes from one line —
const skill = clamp(0.25 + ((bot.id * 37) % 100) / 130, 0, 1)insrc/client/bots.ts— so the ladder from fodder to uncomfortable is the same ladder in every match, for a player on their first round and for one who has played fifty. The menu already asks four questions; this is the fifth, and it is the one that decides whether a match is worth playing twice.Done looks like
makeBrain's inputs and the per-bot skill come from what the match was started with, sosrc/rl/arena.tsand the training curriculum are untouched and nothing about the learned policy changes — this is the hands, not the brain, exactly asbots.tsalready describes the split.src/client/bots.test.tswould fail without it: the easiest band aims slower and misses more than the hardest across a fixed number of seeded duels, every band produces a spread rather than identical bots, and the same seed and band play identically twice.src/client/replay.test.ts's digest is unmoved — the golden round pins a stated band, and the pull says which — andsrc/server.test.tscovers the new field being validated and rejected when it is junk.README.mdand the page say what the steps are, andbun testis green.Files I expect to change
src/client/bots.ts,src/client/bots.test.ts,src/client/world.ts(carrying the choice intocreateWorld),src/client/main.ts,src/client/main.test.ts,src/pages/game.ts,src/result.tsandsrc/db.tsfor the recorded field, their tests,README.md.Risks
The trap is the golden digest: every bot's skill is an input to the simulation, so the default band must reproduce today's numbers exactly or the digest moves and this stops being a feature and starts being a change to the game. Pin the default first, then add the bands. The second trap is the database: a new column on
matchneeds the sameALTER TABLE ... IF NOT EXISTScareuser_idalready got, and old rows have to mean something. Third, keep the learned policy out of it — a difficulty that swaps weights is a different issue and a much larger one. Waits for #73, which decides how the menu remembers anything.Suggested: Vesper — the menu, the bots' hands and the stub page are theirs.