takarajordan commited on
Commit
a8a5691
·
verified ·
1 Parent(s): 0198438

make game speed at delta time

Browse files
Files changed (1) hide show
  1. index.html +29 -13
index.html CHANGED
@@ -540,6 +540,10 @@
540
  totalAICollected: 0,
541
  rareAICollected: 0,
542
  gameStartTime: Date.now(),
 
 
 
 
543
  };
544
 
545
  // Room generation with deterministic seeding
@@ -2177,23 +2181,24 @@
2177
  }
2178
 
2179
  // Update
2180
- function update() {
2181
  const player = game.player;
2182
- const speed = 0.15;
 
2183
  let dx = 0,
2184
  dy = 0;
2185
 
2186
  if (keys["arrowup"] || keys["w"]) {
2187
- dy = -speed;
2188
  player.facing = "up";
2189
  } else if (keys["arrowdown"] || keys["s"]) {
2190
- dy = speed;
2191
  player.facing = "down";
2192
  } else if (keys["arrowleft"] || keys["a"]) {
2193
- dx = -speed;
2194
  player.facing = "left";
2195
  } else if (keys["arrowright"] || keys["d"]) {
2196
- dx = speed;
2197
  player.facing = "right";
2198
  }
2199
 
@@ -2298,15 +2303,16 @@
2298
  }
2299
  }
2300
 
2301
- player.animFrame += 0.2;
2302
  }
2303
 
2304
  // Update particles
2305
  game.particles = game.particles.filter((p) => {
2306
- p.x += p.vx;
2307
- p.y += p.vy;
2308
- p.vy += 0.5;
2309
- p.life--;
 
2310
  return p.life > 0;
2311
  });
2312
  }
@@ -3436,8 +3442,18 @@
3436
  }
3437
 
3438
  // Game loop
3439
- function gameLoop() {
3440
- update();
 
 
 
 
 
 
 
 
 
 
3441
  render();
3442
  requestAnimationFrame(gameLoop);
3443
  }
 
540
  totalAICollected: 0,
541
  rareAICollected: 0,
542
  gameStartTime: Date.now(),
543
+
544
+ // Timing
545
+ lastTime: 0,
546
+ deltaTime: 0,
547
  };
548
 
549
  // Room generation with deterministic seeding
 
2181
  }
2182
 
2183
  // Update
2184
+ function update(deltaTime) {
2185
  const player = game.player;
2186
+ const speed = 4.0; // tiles per second
2187
+ const frameSpeed = speed * (deltaTime / 1000); // convert to per-frame movement
2188
  let dx = 0,
2189
  dy = 0;
2190
 
2191
  if (keys["arrowup"] || keys["w"]) {
2192
+ dy = -frameSpeed;
2193
  player.facing = "up";
2194
  } else if (keys["arrowdown"] || keys["s"]) {
2195
+ dy = frameSpeed;
2196
  player.facing = "down";
2197
  } else if (keys["arrowleft"] || keys["a"]) {
2198
+ dx = -frameSpeed;
2199
  player.facing = "left";
2200
  } else if (keys["arrowright"] || keys["d"]) {
2201
+ dx = frameSpeed;
2202
  player.facing = "right";
2203
  }
2204
 
 
2303
  }
2304
  }
2305
 
2306
+ player.animFrame += 5.0 * (deltaTime / 1000); // 5 animation cycles per second
2307
  }
2308
 
2309
  // Update particles
2310
  game.particles = game.particles.filter((p) => {
2311
+ const frameMultiplier = deltaTime / 16.67; // normalize to 60fps
2312
+ p.x += p.vx * frameMultiplier;
2313
+ p.y += p.vy * frameMultiplier;
2314
+ p.vy += 0.5 * frameMultiplier;
2315
+ p.life -= frameMultiplier;
2316
  return p.life > 0;
2317
  });
2318
  }
 
3442
  }
3443
 
3444
  // Game loop
3445
+ function gameLoop(currentTime) {
3446
+ // Calculate delta time
3447
+ if (game.lastTime === 0) {
3448
+ game.lastTime = currentTime;
3449
+ }
3450
+ game.deltaTime = currentTime - game.lastTime;
3451
+ game.lastTime = currentTime;
3452
+
3453
+ // Cap delta time to prevent large jumps (e.g., when tab is inactive)
3454
+ game.deltaTime = Math.min(game.deltaTime, 33.33); // Max 30fps minimum
3455
+
3456
+ update(game.deltaTime);
3457
  render();
3458
  requestAnimationFrame(gameLoop);
3459
  }