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