AI: adjust balance + HUMAN: add time to show the pattern and fix a filename
This commit is contained in:
@@ -5,6 +5,57 @@ Hard fish should be more difficult AND rarer to catch than easy fish (easy = low
|
||||
|
||||
Response:
|
||||
|
||||
I have the full picture now. Here's my diagnosis of why it feels unbalanced, and the number changes I'd propose. I won't touch anything until you approve.
|
||||
|
||||
Why it feels broken
|
||||
1. Hard fish barely appear. Your weight is (max_difficulty - difficulty + 1) ** 0.5. With the Bass license (max 100), a difficulty-10 Bone Fish gets weight √91 ≈ 9.5, while the difficulty-100 Hammerhead gets √1 = 1. That's a ~9.5x gap — hard fish are extremely rare. The sqrt was meant to compress this, but subtracting from max_difficulty first re-stretches it. This is the main "I never see hard fish" cause.
|
||||
|
||||
2. The difficulty→skill-check mapping is brutally nonlinear. Bar length is (1 - difficulty/100) * 50:
|
||||
|
||||
Difficulty 10 → ~45° bars (very easy)
|
||||
Difficulty 50 → ~25°
|
||||
Difficulty 90 → ~5° bars
|
||||
Difficulty 100 → 0 → crashes (the error you hit)
|
||||
Meanwhile bar count is difficulty // 10:
|
||||
|
||||
Difficulty 100 → 10 bars, each ~0° wide. Mathematically impossible.
|
||||
Difficulty 90 → 9 bars at ~5°.
|
||||
So the top-tier fish are simultaneously max-count AND min-length — the difficulty hits you twice, multiplicatively. That's your "insanely impossible" fish.
|
||||
|
||||
3. Speed also scales linearly with difficulty on top of both of the above — a third stacking penalty.
|
||||
|
||||
So difficulty attacks length, count, and speed all at once, and the hardest fish round to literally uncatchable.
|
||||
|
||||
Proposed number changes (data/constants only, no logic)
|
||||
A. Rebalance appearance weighting (k in pickRandomCreature) Change the exponent k from 0.5 to 0.75. This keeps hard-fish rarity (you want that) but softens the gap so you actually see them. Hammerhead goes from 1/9.5 odds to roughly 1/5.5 relative to the easiest fish. If you want them rarer, I'd stay nearer 0.6; for more frequent, 0.85.
|
||||
|
||||
B. Fix the length formula's floor (constants in startSkillCheck) The 50 base and the /100 divisor are the levers. I'd propose base 60 and flooring the length so difficulty-100 doesn't hit 0 — but flooring is logic, so instead I can change the formula's constants so the minimum never reaches 0 at difficulty 100: use (1 - difficulty/125) instead of /100. At difficulty 100 that's (1 - 0.8) = 0.2 → 12° bars instead of 0. This also fixes the crash without a logic change.
|
||||
|
||||
C. Soften bar count difficulty // 10 is steep. difficulty // 15 caps the Hammerhead at 6 bars instead of 10, Lobster(80) at 5, Pufferfish(50) at 3. Much more playable.
|
||||
|
||||
D. Creature difficulty spread (optional, in creatures.tsv) Your difficulties cluster at round numbers (10,20,40,50,60,70,80,90,100). That's fine. I'd leave the TSV alone unless you want me to spread them.
|
||||
|
||||
One thing I need you to confirm: proposals A, B, and C each change a number inside a formula. That's technically editing a line of code, not just a standalone constant. You said numbers-only and ask before logic. These are numeric constants embedded in expressions — do you count that as allowed, or do you want to make those edits yourself and have me only touch the standalone constants (AVAILABLE_UPGRADES, AVAILABLE_BAITS, creatures.tsv, the k value)?
|
||||
|
||||
Tell me which scope you want and I'll proceed.
|
||||
|
||||
###############################################
|
||||
|
||||
Follow Up:
|
||||
|
||||
thats fine to modify - theyre still constants. go ahed and implement changes A, B, and C, and ill playtest the game to see if its more balanced.
|
||||
|
||||
Response:
|
||||
|
||||
All three done:
|
||||
|
||||
A — k: 0.5 → 0.75 (hard fish appear more often while staying rarer than easy ones).
|
||||
B — length formula: (1 - difficulty/100) * 50 → (1 - difficulty/125) * 60. Difficulty-100 fish now get ~12° bars instead of 0°, which also kills the randrange(0) crash.
|
||||
C — bar count: difficulty // 10 → difficulty // 15. Hammerhead (100) drops from 10 bars to 6, Lobster (80) to 5, Pufferfish (50) to 3.
|
||||
Quick reference for what the hardest fish now looks like at Bass tier, no upgrades: Hammerhead = 6 bars at ~12° each, speed capped by the existing max(..., 5). Tough but passable.
|
||||
|
||||
One edge case still lurking that I did not touch (it's the logic you asked me to leave alone): the newPos divisor (360 - lastEndPos) // (numBars - len(...)) can still produce randrange(5, 5) if early bars eat most of the circle. Lowering the bar count makes it much less likely, but it's not impossible on a bad roll. Flag it if you hit a crash during playtesting and we can revisit.
|
||||
|
||||
Go ahead and playtest — let me know how the frequency and difficulty feel.
|
||||
|
||||
###############################################
|
||||
Reference in New Issue
Block a user