Widen centre drain gap; calm the music down

Gameplay (you should now be able to lose balls):
- flipper length 170 -> 154, so the rest-position tips meet with a ~50px
  gap instead of ~18px - balls dropping down the middle now drain freely
- keep the outlane guard posts so side drains stay fair (all drains now
  happen through the widened centre), and verify with autoplay: centre
  drains = 40, side = 0, ~10s average ball life for the bot

Audio (was a harsh machine-gun):
- completely rewrote both music loops: no more square waves or noise
  hats in the music; sparse triangle bass + soft melody with rests, at
  lower volume (play loop now ~47% audible windows, was a solid wall)
- softened the wall-hit thud (frequent during rallies) and the charge
  ticks
This commit is contained in:
georgios
2026-09-09 16:51:56 +02:00
parent 973dd870fd
commit 996918ff8c
15 changed files with 73 additions and 45 deletions
+5 -5
View File
@@ -525,8 +525,8 @@ class Game:
if self.charging:
self.was_charging = True
self.charge = min(1.0, self.charge + 0.022)
if self.frame % 5 == 0:
self.sfx.play("tick", vol=0.3 + self.charge * 0.5)
if self.frame % 6 == 0:
self.sfx.play("tick", vol=0.16 + self.charge * 0.25)
if self.charge >= 1.0:
self._fire()
else:
@@ -628,9 +628,9 @@ class Game:
elif e.kind == "nudge":
self.sfx.play("tick", vol=0.2)
elif e.kind == "wall_hit":
if self.wall_cool <= 0 and e.data > 9.5:
self.sfx.play("wall", vol=min(0.5, (e.data - 9) / 5))
self.wall_cool = 5
if self.wall_cool <= 0 and e.data > 11.0:
self.sfx.play("wall", vol=min(0.4, (e.data - 11) / 6.0))
self.wall_cool = 9
elif e.kind == "flipper_hit":
if self.rng.random() < 0.3:
self.sfx.play("tick", vol=0.25)