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
This commit is contained in:
parent
8e4e48e540
commit
d08b48cdda
158
data/zuma.json
158
data/zuma.json
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"generatedAt": "2026-07-28T04:37:09.319Z",
|
"generatedAt": "2026-07-28T05:13:50.748Z",
|
||||||
"count": 20,
|
"count": 20,
|
||||||
"levels": [
|
"levels": [
|
||||||
{
|
{
|
||||||
|
|
@ -371,13 +371,13 @@
|
||||||
"colors": 4,
|
"colors": 4,
|
||||||
"quota": 22,
|
"quota": 22,
|
||||||
"introBalls": 7,
|
"introBalls": 7,
|
||||||
"pushSpeed": 25,
|
"pushSpeed": 100,
|
||||||
"powerUpRate": 0.07,
|
"powerUpRate": 0.07,
|
||||||
"seed": 8919,
|
"seed": 8919,
|
||||||
"starScores": [
|
"starScores": [
|
||||||
590,
|
750,
|
||||||
880,
|
1130,
|
||||||
1170
|
1500
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -525,13 +525,13 @@
|
||||||
"colors": 4,
|
"colors": 4,
|
||||||
"quota": 26,
|
"quota": 26,
|
||||||
"introBalls": 8,
|
"introBalls": 8,
|
||||||
"pushSpeed": 32,
|
"pushSpeed": 128,
|
||||||
"powerUpRate": 0.07,
|
"powerUpRate": 0.07,
|
||||||
"seed": 16838,
|
"seed": 16838,
|
||||||
"starScores": [
|
"starScores": [
|
||||||
710,
|
960,
|
||||||
1060,
|
1430,
|
||||||
1410
|
1910
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -919,13 +919,13 @@
|
||||||
"colors": 4,
|
"colors": 4,
|
||||||
"quota": 30,
|
"quota": 30,
|
||||||
"introBalls": 9,
|
"introBalls": 9,
|
||||||
"pushSpeed": 35,
|
"pushSpeed": 140,
|
||||||
"powerUpRate": 0.065,
|
"powerUpRate": 0.065,
|
||||||
"seed": 24757,
|
"seed": 24757,
|
||||||
"starScores": [
|
"starScores": [
|
||||||
830,
|
1140,
|
||||||
1240,
|
1710,
|
||||||
1650
|
2280
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -1277,13 +1277,13 @@
|
||||||
"colors": 4,
|
"colors": 4,
|
||||||
"quota": 32,
|
"quota": 32,
|
||||||
"introBalls": 10,
|
"introBalls": 10,
|
||||||
"pushSpeed": 35,
|
"pushSpeed": 140,
|
||||||
"powerUpRate": 0.065,
|
"powerUpRate": 0.065,
|
||||||
"seed": 32676,
|
"seed": 32676,
|
||||||
"starScores": [
|
"starScores": [
|
||||||
880,
|
1220,
|
||||||
1320,
|
1820,
|
||||||
1760
|
2430
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -1487,13 +1487,13 @@
|
||||||
"colors": 4,
|
"colors": 4,
|
||||||
"quota": 38,
|
"quota": 38,
|
||||||
"introBalls": 11,
|
"introBalls": 11,
|
||||||
"pushSpeed": 37,
|
"pushSpeed": 148,
|
||||||
"powerUpRate": 0.06,
|
"powerUpRate": 0.06,
|
||||||
"seed": 40595,
|
"seed": 40595,
|
||||||
"starScores": [
|
"starScores": [
|
||||||
1060,
|
1480,
|
||||||
1580,
|
2210,
|
||||||
2110
|
2950
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -1713,13 +1713,13 @@
|
||||||
"colors": 4,
|
"colors": 4,
|
||||||
"quota": 34,
|
"quota": 34,
|
||||||
"introBalls": 10,
|
"introBalls": 10,
|
||||||
"pushSpeed": 37,
|
"pushSpeed": 148,
|
||||||
"powerUpRate": 0.06,
|
"powerUpRate": 0.06,
|
||||||
"seed": 48514,
|
"seed": 48514,
|
||||||
"starScores": [
|
"starScores": [
|
||||||
940,
|
1320,
|
||||||
1410,
|
1980,
|
||||||
1880
|
2640
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -2091,13 +2091,13 @@
|
||||||
"colors": 4,
|
"colors": 4,
|
||||||
"quota": 26,
|
"quota": 26,
|
||||||
"introBalls": 8,
|
"introBalls": 8,
|
||||||
"pushSpeed": 45,
|
"pushSpeed": 180,
|
||||||
"powerUpRate": 0.06,
|
"powerUpRate": 0.06,
|
||||||
"seed": 56433,
|
"seed": 56433,
|
||||||
"starScores": [
|
"starScores": [
|
||||||
740,
|
1090,
|
||||||
1110,
|
1640,
|
||||||
1480
|
2180
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -2245,13 +2245,13 @@
|
||||||
"colors": 5,
|
"colors": 5,
|
||||||
"quota": 30,
|
"quota": 30,
|
||||||
"introBalls": 9,
|
"introBalls": 9,
|
||||||
"pushSpeed": 40,
|
"pushSpeed": 160,
|
||||||
"powerUpRate": 0.055,
|
"powerUpRate": 0.055,
|
||||||
"seed": 64352,
|
"seed": 64352,
|
||||||
"starScores": [
|
"starScores": [
|
||||||
840,
|
1200,
|
||||||
1260,
|
1800,
|
||||||
1680
|
2400
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -2603,13 +2603,13 @@
|
||||||
"colors": 5,
|
"colors": 5,
|
||||||
"quota": 36,
|
"quota": 36,
|
||||||
"introBalls": 11,
|
"introBalls": 11,
|
||||||
"pushSpeed": 40,
|
"pushSpeed": 160,
|
||||||
"powerUpRate": 0.055,
|
"powerUpRate": 0.055,
|
||||||
"seed": 72271,
|
"seed": 72271,
|
||||||
"starScores": [
|
"starScores": [
|
||||||
1010,
|
1440,
|
||||||
1520,
|
2160,
|
||||||
2020
|
2880
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -2997,13 +2997,13 @@
|
||||||
"colors": 5,
|
"colors": 5,
|
||||||
"quota": 34,
|
"quota": 34,
|
||||||
"introBalls": 10,
|
"introBalls": 10,
|
||||||
"pushSpeed": 43,
|
"pushSpeed": 172,
|
||||||
"powerUpRate": 0.055,
|
"powerUpRate": 0.055,
|
||||||
"seed": 80190,
|
"seed": 80190,
|
||||||
"starScores": [
|
"starScores": [
|
||||||
960,
|
1400,
|
||||||
1440,
|
2100,
|
||||||
1920
|
2800
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -3207,13 +3207,13 @@
|
||||||
"colors": 5,
|
"colors": 5,
|
||||||
"quota": 42,
|
"quota": 42,
|
||||||
"introBalls": 12,
|
"introBalls": 12,
|
||||||
"pushSpeed": 43,
|
"pushSpeed": 172,
|
||||||
"powerUpRate": 0.05,
|
"powerUpRate": 0.05,
|
||||||
"seed": 88109,
|
"seed": 88109,
|
||||||
"starScores": [
|
"starScores": [
|
||||||
1190,
|
1730,
|
||||||
1790,
|
2600,
|
||||||
2380
|
3460
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -3433,13 +3433,13 @@
|
||||||
"colors": 5,
|
"colors": 5,
|
||||||
"quota": 38,
|
"quota": 38,
|
||||||
"introBalls": 11,
|
"introBalls": 11,
|
||||||
"pushSpeed": 45,
|
"pushSpeed": 180,
|
||||||
"powerUpRate": 0.05,
|
"powerUpRate": 0.05,
|
||||||
"seed": 96028,
|
"seed": 96028,
|
||||||
"starScores": [
|
"starScores": [
|
||||||
1090,
|
1600,
|
||||||
1630,
|
2390,
|
||||||
2170
|
3190
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -3791,13 +3791,13 @@
|
||||||
"colors": 5,
|
"colors": 5,
|
||||||
"quota": 34,
|
"quota": 34,
|
||||||
"introBalls": 10,
|
"introBalls": 10,
|
||||||
"pushSpeed": 48,
|
"pushSpeed": 192,
|
||||||
"powerUpRate": 0.05,
|
"powerUpRate": 0.05,
|
||||||
"seed": 103947,
|
"seed": 103947,
|
||||||
"starScores": [
|
"starScores": [
|
||||||
980,
|
|
||||||
1470,
|
1470,
|
||||||
1960
|
2210,
|
||||||
|
2940
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -4001,13 +4001,13 @@
|
||||||
"colors": 5,
|
"colors": 5,
|
||||||
"quota": 46,
|
"quota": 46,
|
||||||
"introBalls": 13,
|
"introBalls": 13,
|
||||||
"pushSpeed": 48,
|
"pushSpeed": 192,
|
||||||
"powerUpRate": 0.05,
|
"powerUpRate": 0.05,
|
||||||
"seed": 111866,
|
"seed": 111866,
|
||||||
"starScores": [
|
"starScores": [
|
||||||
1330,
|
|
||||||
1990,
|
1990,
|
||||||
2650
|
2980,
|
||||||
|
3970
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -4155,13 +4155,13 @@
|
||||||
"colors": 6,
|
"colors": 6,
|
||||||
"quota": 32,
|
"quota": 32,
|
||||||
"introBalls": 9,
|
"introBalls": 9,
|
||||||
"pushSpeed": 51,
|
"pushSpeed": 204,
|
||||||
"powerUpRate": 0.05,
|
"powerUpRate": 0.05,
|
||||||
"seed": 119785,
|
"seed": 119785,
|
||||||
"starScores": [
|
"starScores": [
|
||||||
930,
|
1420,
|
||||||
1400,
|
2130,
|
||||||
1860
|
2840
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -4549,13 +4549,13 @@
|
||||||
"colors": 6,
|
"colors": 6,
|
||||||
"quota": 38,
|
"quota": 38,
|
||||||
"introBalls": 11,
|
"introBalls": 11,
|
||||||
"pushSpeed": 53,
|
"pushSpeed": 212,
|
||||||
"powerUpRate": 0.05,
|
"powerUpRate": 0.05,
|
||||||
"seed": 127704,
|
"seed": 127704,
|
||||||
"starScores": [
|
"starScores": [
|
||||||
1120,
|
1720,
|
||||||
1670,
|
2580,
|
||||||
2230
|
3440
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -4907,13 +4907,13 @@
|
||||||
"colors": 6,
|
"colors": 6,
|
||||||
"quota": 34,
|
"quota": 34,
|
||||||
"introBalls": 10,
|
"introBalls": 10,
|
||||||
"pushSpeed": 50,
|
"pushSpeed": 200,
|
||||||
"powerUpRate": 0.045,
|
"powerUpRate": 0.045,
|
||||||
"seed": 135623,
|
"seed": 135623,
|
||||||
"starScores": [
|
"starScores": [
|
||||||
990,
|
1500,
|
||||||
1480,
|
2240,
|
||||||
1970
|
2990
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -5133,13 +5133,13 @@
|
||||||
"colors": 6,
|
"colors": 6,
|
||||||
"quota": 40,
|
"quota": 40,
|
||||||
"introBalls": 11,
|
"introBalls": 11,
|
||||||
"pushSpeed": 50,
|
"pushSpeed": 200,
|
||||||
"powerUpRate": 0.045,
|
"powerUpRate": 0.045,
|
||||||
"seed": 143542,
|
"seed": 143542,
|
||||||
"starScores": [
|
"starScores": [
|
||||||
1160,
|
1760,
|
||||||
1740,
|
2640,
|
||||||
2320
|
3520
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -5343,13 +5343,13 @@
|
||||||
"colors": 6,
|
"colors": 6,
|
||||||
"quota": 50,
|
"quota": 50,
|
||||||
"introBalls": 14,
|
"introBalls": 14,
|
||||||
"pushSpeed": 61,
|
"pushSpeed": 244,
|
||||||
"powerUpRate": 0.045,
|
"powerUpRate": 0.045,
|
||||||
"seed": 151461,
|
"seed": 151461,
|
||||||
"starScores": [
|
"starScores": [
|
||||||
1510,
|
2420,
|
||||||
2260,
|
3630,
|
||||||
3010
|
4840
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -5553,13 +5553,13 @@
|
||||||
"colors": 6,
|
"colors": 6,
|
||||||
"quota": 52,
|
"quota": 52,
|
||||||
"introBalls": 14,
|
"introBalls": 14,
|
||||||
"pushSpeed": 64,
|
"pushSpeed": 256,
|
||||||
"powerUpRate": 0.045,
|
"powerUpRate": 0.045,
|
||||||
"seed": 159380,
|
"seed": 159380,
|
||||||
"starScores": [
|
"starScores": [
|
||||||
1580,
|
2580,
|
||||||
2370,
|
3870,
|
||||||
3160
|
5160
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
||||||
|
|
@ -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-colors', 'COLORS (4-6)', 'number', 'min="4" max="6" step="1"')}
|
||||||
${field('zu-quota', 'QUOTA', 'number', 'min="20" step="1"')}
|
${field('zu-quota', 'QUOTA', 'number', 'min="20" step="1"')}
|
||||||
${field('zu-intro', 'INTRO BALLS', 'number', 'min="1" 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-power', 'POWER-UP RATE', 'number', 'min="0" max="0.2" step="0.005"')}
|
||||||
${field('zu-seed', 'SEED', 'number', 'step="1"')}
|
${field('zu-seed', 'SEED', 'number', 'step="1"')}
|
||||||
${field('zu-star1', '★ SCORE', 'number', 'step="10"')}
|
${field('zu-star1', '★ SCORE', 'number', 'step="10"')}
|
||||||
|
|
|
||||||
|
|
@ -180,7 +180,7 @@ export function validateLevelParams(def) {
|
||||||
if (!(def.colors >= 4 && def.colors <= 6)) errs.push('colors must be 4..6');
|
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.quota >= 20)) errs.push('quota must be >= 20');
|
||||||
if (!(def.introBalls < def.quota)) errs.push('introBalls must be < quota');
|
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 (!(def.powerUpRate >= 0 && def.powerUpRate <= 0.2)) errs.push('powerUpRate must be 0..0.2');
|
||||||
if (!(Array.isArray(def.starScores) && def.starScores.length === 3
|
if (!(Array.isArray(def.starScores) && def.starScores.length === 3
|
||||||
&& def.starScores[0] < def.starScores[1] && def.starScores[1] < def.starScores[2])) {
|
&& def.starScores[0] < def.starScores[1] && def.starScores[1] < def.starScores[2])) {
|
||||||
|
|
|
||||||
|
|
@ -170,26 +170,26 @@ const SHAPES = { sCurve, horseshoe, spiral, zigzag, doubleLoop, figureEight };
|
||||||
|
|
||||||
const TABLE = [
|
const TABLE = [
|
||||||
// level, name, shape, colors, quota, intro, push, powerUpRate
|
// level, name, shape, colors, quota, intro, push, powerUpRate
|
||||||
[1, 'Riverbend', 'sCurve', 4, 22, 7, 25, 0.07],
|
[1, 'Riverbend', 'sCurve', 4, 22, 7, 100, 0.07],
|
||||||
[2, 'Temple Gate', 'horseshoe', 4, 26, 8, 32, 0.07],
|
[2, 'Temple Gate', 'horseshoe', 4, 26, 8, 128, 0.07],
|
||||||
[3, 'Twin Pools', 'doubleLoop', 4, 30, 9, 35, 0.065],
|
[3, 'Twin Pools', 'doubleLoop', 4, 30, 9, 140, 0.065],
|
||||||
[4, 'Switchbacks', 'zigzag', 4, 32, 10, 35, 0.065],
|
[4, 'Switchbacks', 'zigzag', 4, 32, 10, 140, 0.065],
|
||||||
[5, 'Serpent Coil', 'spiral', 4, 38, 11, 37, 0.06],
|
[5, 'Serpent Coil', 'spiral', 4, 38, 11, 148, 0.06],
|
||||||
[6, 'Crossroads', 'figureEight', 4, 34, 10, 37, 0.06],
|
[6, 'Crossroads', 'figureEight', 4, 34, 10, 148, 0.06],
|
||||||
[7, 'Rapids', 'sCurve', 4, 26, 8, 45, 0.06],
|
[7, 'Rapids', 'sCurve', 4, 26, 8, 180, 0.06],
|
||||||
[8, 'Sun Court', 'horseshoe', 5, 30, 9, 40, 0.055],
|
[8, 'Sun Court', 'horseshoe', 5, 30, 9, 160, 0.055],
|
||||||
[9, 'Thunder Steps', 'zigzag', 5, 36, 11, 40, 0.055],
|
[9, 'Thunder Steps', 'zigzag', 5, 36, 11, 160, 0.055],
|
||||||
[10, 'Twin Serpents', 'doubleLoop', 5, 34, 10, 43, 0.055],
|
[10, 'Twin Serpents', 'doubleLoop', 5, 34, 10, 172, 0.055],
|
||||||
[11, 'Deep Coil', 'spiral', 5, 42, 12, 43, 0.05],
|
[11, 'Deep Coil', 'spiral', 5, 42, 12, 172, 0.05],
|
||||||
[12, 'Tangled Path', 'figureEight', 5, 38, 11, 45, 0.05],
|
[12, 'Tangled Path', 'figureEight', 5, 38, 11, 180, 0.05],
|
||||||
[13, 'Lightning Run', 'zigzag', 5, 34, 10, 48, 0.05],
|
[13, 'Lightning Run', 'zigzag', 5, 34, 10, 192, 0.05],
|
||||||
[14, 'Whirlpool', 'spiral', 5, 46, 13, 48, 0.05],
|
[14, 'Whirlpool', 'spiral', 5, 46, 13, 192, 0.05],
|
||||||
[15, 'Obsidian Gate', 'horseshoe', 6, 32, 9, 51, 0.05],
|
[15, 'Obsidian Gate', 'horseshoe', 6, 32, 9, 204, 0.05],
|
||||||
[16, 'Twin Tempests', 'doubleLoop', 6, 38, 11, 53, 0.05],
|
[16, 'Twin Tempests', 'doubleLoop', 6, 38, 11, 212, 0.05],
|
||||||
[17, 'Stormsteps', 'zigzag', 6, 34, 10, 50, 0.045],
|
[17, 'Stormsteps', 'zigzag', 6, 34, 10, 200, 0.045],
|
||||||
[18, 'Maelstrom Cross', 'figureEight', 6, 40, 11, 50, 0.045],
|
[18, 'Maelstrom Cross', 'figureEight', 6, 40, 11, 200, 0.045],
|
||||||
[19, 'Abyss Coil', 'spiral', 6, 50, 14, 61, 0.045],
|
[19, 'Abyss Coil', 'spiral', 6, 50, 14, 244, 0.045],
|
||||||
[20, 'The Final Coil', 'spiral', 6, 52, 14, 64, 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
|
// Calibrated against the headless aimbot in verifyZuma.js, which takes the best
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue