fix: Optimize player spawn, camera zoom, and performance to reduce lag
This commit is contained in:
15
js/main.js
15
js/main.js
@@ -94,6 +94,10 @@ function spawnPlayer() {
|
||||
// Hide HUD elements
|
||||
document.querySelector('.controls').style.display = 'none';
|
||||
|
||||
// Resize canvas to full screen first
|
||||
canvas.width = window.innerWidth;
|
||||
canvas.height = window.innerHeight;
|
||||
|
||||
// Set zoom level to 50%
|
||||
PIXEL_SIZE = 2;
|
||||
|
||||
@@ -105,9 +109,8 @@ function spawnPlayer() {
|
||||
worldOffsetY = player.y - (canvas.height / PIXEL_SIZE / 2);
|
||||
worldMoved = true;
|
||||
|
||||
// Resize canvas to full screen
|
||||
canvas.width = window.innerWidth;
|
||||
canvas.height = window.innerHeight;
|
||||
// Clear chunk cache to force redraw at new zoom level
|
||||
chunkCanvasCache.clear();
|
||||
|
||||
// Remove the event listener for the spawn button to prevent multiple spawns
|
||||
document.getElementById('spawn-player-btn').removeEventListener('click', spawnPlayer);
|
||||
@@ -128,8 +131,10 @@ function simulationLoop(timestamp) {
|
||||
// Update physics with timestamp for rate limiting
|
||||
updatePhysics(timestamp);
|
||||
|
||||
// Render
|
||||
render();
|
||||
// Render - skip rendering if FPS is too low to prevent death spiral
|
||||
if (fps > 10 || timestamp % 3 < 1) {
|
||||
render();
|
||||
}
|
||||
|
||||
// Memory management: Clean up chunk cache for chunks that are far away
|
||||
if (timestamp % 5000 < 16) { // Run every ~5 seconds
|
||||
|
||||
Reference in New Issue
Block a user