From d08b48cddaf89229e383d2bac34c36e134b163c8 Mon Sep 17 00:00:00 2001 From: Brian Fertig Date: Mon, 27 Jul 2026 23:15:44 -0600 Subject: [PATCH] chore(zuma): increase pushSpeed and starScores for all 20 levels Significantly raise pushSpeed values across all levels (roughly 4x increase) to make the game more challenging. Updated corresponding star score thresholds proportionally. Adjusted editor UI max pushSpeed to 400 and updated validation constraints to match. Changes affect: - data/zuma.json: level definitions with new pushSpeed and starScores - src/games/zuma/ZumaEditor.js: editor input max value - src/games/zuma/ZumaLogic.js: validation range - tools/genZuma.js: generator table values --- data/zuma.json | 158 +++++++++++++++++------------------ src/games/zuma/ZumaEditor.js | 2 +- src/games/zuma/ZumaLogic.js | 2 +- tools/genZuma.js | 40 ++++----- 4 files changed, 101 insertions(+), 101 deletions(-) diff --git a/data/zuma.json b/data/zuma.json index c8bd01d..74912de 100644 --- a/data/zuma.json +++ b/data/zuma.json @@ -1,5 +1,5 @@ { - "generatedAt": "2026-07-28T04:37:09.319Z", + "generatedAt": "2026-07-28T05:13:50.748Z", "count": 20, "levels": [ { @@ -371,13 +371,13 @@ "colors": 4, "quota": 22, "introBalls": 7, - "pushSpeed": 25, + "pushSpeed": 100, "powerUpRate": 0.07, "seed": 8919, "starScores": [ - 590, - 880, - 1170 + 750, + 1130, + 1500 ] }, { @@ -525,13 +525,13 @@ "colors": 4, "quota": 26, "introBalls": 8, - "pushSpeed": 32, + "pushSpeed": 128, "powerUpRate": 0.07, "seed": 16838, "starScores": [ - 710, - 1060, - 1410 + 960, + 1430, + 1910 ] }, { @@ -919,13 +919,13 @@ "colors": 4, "quota": 30, "introBalls": 9, - "pushSpeed": 35, + "pushSpeed": 140, "powerUpRate": 0.065, "seed": 24757, "starScores": [ - 830, - 1240, - 1650 + 1140, + 1710, + 2280 ] }, { @@ -1277,13 +1277,13 @@ "colors": 4, "quota": 32, "introBalls": 10, - "pushSpeed": 35, + "pushSpeed": 140, "powerUpRate": 0.065, "seed": 32676, "starScores": [ - 880, - 1320, - 1760 + 1220, + 1820, + 2430 ] }, { @@ -1487,13 +1487,13 @@ "colors": 4, "quota": 38, "introBalls": 11, - "pushSpeed": 37, + "pushSpeed": 148, "powerUpRate": 0.06, "seed": 40595, "starScores": [ - 1060, - 1580, - 2110 + 1480, + 2210, + 2950 ] }, { @@ -1713,13 +1713,13 @@ "colors": 4, "quota": 34, "introBalls": 10, - "pushSpeed": 37, + "pushSpeed": 148, "powerUpRate": 0.06, "seed": 48514, "starScores": [ - 940, - 1410, - 1880 + 1320, + 1980, + 2640 ] }, { @@ -2091,13 +2091,13 @@ "colors": 4, "quota": 26, "introBalls": 8, - "pushSpeed": 45, + "pushSpeed": 180, "powerUpRate": 0.06, "seed": 56433, "starScores": [ - 740, - 1110, - 1480 + 1090, + 1640, + 2180 ] }, { @@ -2245,13 +2245,13 @@ "colors": 5, "quota": 30, "introBalls": 9, - "pushSpeed": 40, + "pushSpeed": 160, "powerUpRate": 0.055, "seed": 64352, "starScores": [ - 840, - 1260, - 1680 + 1200, + 1800, + 2400 ] }, { @@ -2603,13 +2603,13 @@ "colors": 5, "quota": 36, "introBalls": 11, - "pushSpeed": 40, + "pushSpeed": 160, "powerUpRate": 0.055, "seed": 72271, "starScores": [ - 1010, - 1520, - 2020 + 1440, + 2160, + 2880 ] }, { @@ -2997,13 +2997,13 @@ "colors": 5, "quota": 34, "introBalls": 10, - "pushSpeed": 43, + "pushSpeed": 172, "powerUpRate": 0.055, "seed": 80190, "starScores": [ - 960, - 1440, - 1920 + 1400, + 2100, + 2800 ] }, { @@ -3207,13 +3207,13 @@ "colors": 5, "quota": 42, "introBalls": 12, - "pushSpeed": 43, + "pushSpeed": 172, "powerUpRate": 0.05, "seed": 88109, "starScores": [ - 1190, - 1790, - 2380 + 1730, + 2600, + 3460 ] }, { @@ -3433,13 +3433,13 @@ "colors": 5, "quota": 38, "introBalls": 11, - "pushSpeed": 45, + "pushSpeed": 180, "powerUpRate": 0.05, "seed": 96028, "starScores": [ - 1090, - 1630, - 2170 + 1600, + 2390, + 3190 ] }, { @@ -3791,13 +3791,13 @@ "colors": 5, "quota": 34, "introBalls": 10, - "pushSpeed": 48, + "pushSpeed": 192, "powerUpRate": 0.05, "seed": 103947, "starScores": [ - 980, 1470, - 1960 + 2210, + 2940 ] }, { @@ -4001,13 +4001,13 @@ "colors": 5, "quota": 46, "introBalls": 13, - "pushSpeed": 48, + "pushSpeed": 192, "powerUpRate": 0.05, "seed": 111866, "starScores": [ - 1330, 1990, - 2650 + 2980, + 3970 ] }, { @@ -4155,13 +4155,13 @@ "colors": 6, "quota": 32, "introBalls": 9, - "pushSpeed": 51, + "pushSpeed": 204, "powerUpRate": 0.05, "seed": 119785, "starScores": [ - 930, - 1400, - 1860 + 1420, + 2130, + 2840 ] }, { @@ -4549,13 +4549,13 @@ "colors": 6, "quota": 38, "introBalls": 11, - "pushSpeed": 53, + "pushSpeed": 212, "powerUpRate": 0.05, "seed": 127704, "starScores": [ - 1120, - 1670, - 2230 + 1720, + 2580, + 3440 ] }, { @@ -4907,13 +4907,13 @@ "colors": 6, "quota": 34, "introBalls": 10, - "pushSpeed": 50, + "pushSpeed": 200, "powerUpRate": 0.045, "seed": 135623, "starScores": [ - 990, - 1480, - 1970 + 1500, + 2240, + 2990 ] }, { @@ -5133,13 +5133,13 @@ "colors": 6, "quota": 40, "introBalls": 11, - "pushSpeed": 50, + "pushSpeed": 200, "powerUpRate": 0.045, "seed": 143542, "starScores": [ - 1160, - 1740, - 2320 + 1760, + 2640, + 3520 ] }, { @@ -5343,13 +5343,13 @@ "colors": 6, "quota": 50, "introBalls": 14, - "pushSpeed": 61, + "pushSpeed": 244, "powerUpRate": 0.045, "seed": 151461, "starScores": [ - 1510, - 2260, - 3010 + 2420, + 3630, + 4840 ] }, { @@ -5553,13 +5553,13 @@ "colors": 6, "quota": 52, "introBalls": 14, - "pushSpeed": 64, + "pushSpeed": 256, "powerUpRate": 0.045, "seed": 159380, "starScores": [ - 1580, - 2370, - 3160 + 2580, + 3870, + 5160 ] } ] diff --git a/src/games/zuma/ZumaEditor.js b/src/games/zuma/ZumaEditor.js index acfb7ee..6150e3a 100644 --- a/src/games/zuma/ZumaEditor.js +++ b/src/games/zuma/ZumaEditor.js @@ -205,7 +205,7 @@ export default class ZumaEditor extends Phaser.Scene { ${field('zu-colors', 'COLORS (4-6)', 'number', 'min="4" max="6" step="1"')} ${field('zu-quota', 'QUOTA', 'number', 'min="20" step="1"')} ${field('zu-intro', 'INTRO BALLS', 'number', 'min="1" step="1"')} - ${field('zu-push', 'PUSH SPEED', 'number', 'min="10" max="100" step="1"')} + ${field('zu-push', 'PUSH SPEED', 'number', 'min="10" max="400" step="1"')} ${field('zu-power', 'POWER-UP RATE', 'number', 'min="0" max="0.2" step="0.005"')} ${field('zu-seed', 'SEED', 'number', 'step="1"')} ${field('zu-star1', '★ SCORE', 'number', 'step="10"')} diff --git a/src/games/zuma/ZumaLogic.js b/src/games/zuma/ZumaLogic.js index 1063a9a..9487a66 100644 --- a/src/games/zuma/ZumaLogic.js +++ b/src/games/zuma/ZumaLogic.js @@ -180,7 +180,7 @@ export function validateLevelParams(def) { if (!(def.colors >= 4 && def.colors <= 6)) errs.push('colors must be 4..6'); if (!(def.quota >= 20)) errs.push('quota must be >= 20'); if (!(def.introBalls < def.quota)) errs.push('introBalls must be < quota'); - if (!(def.pushSpeed >= 10 && def.pushSpeed <= 100)) errs.push('pushSpeed must be 10..100'); + if (!(def.pushSpeed >= 10 && def.pushSpeed <= 400)) errs.push('pushSpeed must be 10..400'); if (!(def.powerUpRate >= 0 && def.powerUpRate <= 0.2)) errs.push('powerUpRate must be 0..0.2'); if (!(Array.isArray(def.starScores) && def.starScores.length === 3 && def.starScores[0] < def.starScores[1] && def.starScores[1] < def.starScores[2])) { diff --git a/tools/genZuma.js b/tools/genZuma.js index d3d88fb..067d9e3 100644 --- a/tools/genZuma.js +++ b/tools/genZuma.js @@ -170,26 +170,26 @@ const SHAPES = { sCurve, horseshoe, spiral, zigzag, doubleLoop, figureEight }; const TABLE = [ // level, name, shape, colors, quota, intro, push, powerUpRate - [1, 'Riverbend', 'sCurve', 4, 22, 7, 25, 0.07], - [2, 'Temple Gate', 'horseshoe', 4, 26, 8, 32, 0.07], - [3, 'Twin Pools', 'doubleLoop', 4, 30, 9, 35, 0.065], - [4, 'Switchbacks', 'zigzag', 4, 32, 10, 35, 0.065], - [5, 'Serpent Coil', 'spiral', 4, 38, 11, 37, 0.06], - [6, 'Crossroads', 'figureEight', 4, 34, 10, 37, 0.06], - [7, 'Rapids', 'sCurve', 4, 26, 8, 45, 0.06], - [8, 'Sun Court', 'horseshoe', 5, 30, 9, 40, 0.055], - [9, 'Thunder Steps', 'zigzag', 5, 36, 11, 40, 0.055], - [10, 'Twin Serpents', 'doubleLoop', 5, 34, 10, 43, 0.055], - [11, 'Deep Coil', 'spiral', 5, 42, 12, 43, 0.05], - [12, 'Tangled Path', 'figureEight', 5, 38, 11, 45, 0.05], - [13, 'Lightning Run', 'zigzag', 5, 34, 10, 48, 0.05], - [14, 'Whirlpool', 'spiral', 5, 46, 13, 48, 0.05], - [15, 'Obsidian Gate', 'horseshoe', 6, 32, 9, 51, 0.05], - [16, 'Twin Tempests', 'doubleLoop', 6, 38, 11, 53, 0.05], - [17, 'Stormsteps', 'zigzag', 6, 34, 10, 50, 0.045], - [18, 'Maelstrom Cross', 'figureEight', 6, 40, 11, 50, 0.045], - [19, 'Abyss Coil', 'spiral', 6, 50, 14, 61, 0.045], - [20, 'The Final Coil', 'spiral', 6, 52, 14, 64, 0.045], + [1, 'Riverbend', 'sCurve', 4, 22, 7, 100, 0.07], + [2, 'Temple Gate', 'horseshoe', 4, 26, 8, 128, 0.07], + [3, 'Twin Pools', 'doubleLoop', 4, 30, 9, 140, 0.065], + [4, 'Switchbacks', 'zigzag', 4, 32, 10, 140, 0.065], + [5, 'Serpent Coil', 'spiral', 4, 38, 11, 148, 0.06], + [6, 'Crossroads', 'figureEight', 4, 34, 10, 148, 0.06], + [7, 'Rapids', 'sCurve', 4, 26, 8, 180, 0.06], + [8, 'Sun Court', 'horseshoe', 5, 30, 9, 160, 0.055], + [9, 'Thunder Steps', 'zigzag', 5, 36, 11, 160, 0.055], + [10, 'Twin Serpents', 'doubleLoop', 5, 34, 10, 172, 0.055], + [11, 'Deep Coil', 'spiral', 5, 42, 12, 172, 0.05], + [12, 'Tangled Path', 'figureEight', 5, 38, 11, 180, 0.05], + [13, 'Lightning Run', 'zigzag', 5, 34, 10, 192, 0.05], + [14, 'Whirlpool', 'spiral', 5, 46, 13, 192, 0.05], + [15, 'Obsidian Gate', 'horseshoe', 6, 32, 9, 204, 0.05], + [16, 'Twin Tempests', 'doubleLoop', 6, 38, 11, 212, 0.05], + [17, 'Stormsteps', 'zigzag', 6, 34, 10, 200, 0.045], + [18, 'Maelstrom Cross', 'figureEight', 6, 40, 11, 200, 0.045], + [19, 'Abyss Coil', 'spiral', 6, 50, 14, 244, 0.045], + [20, 'The Final Coil', 'spiral', 6, 52, 14, 256, 0.045], ]; // Calibrated against the headless aimbot in verifyZuma.js, which takes the best