my code is super laggy and I dont know how to fix it, can someone help pls??? I tried chathpt and claude ai and neither of them made it less laggy!
// scripts/info.js
const WORLD_SEED = 11111; // seed for world
const WORLD_SIZE = 100; // size of world
const CAM_MINZOOM = 0.5;
const CAM_MAXZOOM = 2;
const CAM_ZOOMSENSITIVITY = 0.1;
const BACKGROUND_COLOR = '#333'; // bg color
const ONETILE_CHANCE = 0.01; // chance of 1
const TILE_SIZE = 64; // Size of each cell
const TILE_SPACING = 5; // pixels between tiles
const PATH_ZEROTILE = 'assets/empty_tile.png';
const PATH_ONETILE = 'assets/1_tile.png';
// scripts/script.js
const grid = document.getElementById('grid');
const ctx = grid.getContext('2d');
let isDragging = false;
let startX, startY;
let translateX = 0, translateY = 0;
let scale = 1;
const totalCellSize = TILE_SIZE + TILE_SPACING;
let emptyImage = new Image();
emptyImage.src = PATH_ZEROTILE;
let oneImage = new Image();
oneImage.src = PATH_ONETILE;
// Tile cache
const tileCache = new Map();
function resizeCanvas() {
grid.width = window.innerWidth;
grid.height = window.innerHeight;
}
resizeCanvas();
grid.addEventListener('mousedown', startDrag);
document.addEventListener('mousemove', drag);
document.addEventListener('mouseup', endDrag);
grid.addEventListener('wheel', zoom);
function startDrag(e) {
isDragging = true;
startX = e.clientX - translateX;
startY = e.clientY - translateY;
}
function drag(e) {
if (!isDragging) return;
let newTranslateX = e.clientX - startX;
let newTranslateY = e.clientY - startY;
// no move past world border
newTranslateX = Math.min(0, Math.max(newTranslateX, -WORLD_SIZE * totalCellSize * scale + grid.width));
newTranslateY = Math.min(0, Math.max(newTranslateY, -WORLD_SIZE * totalCellSize * scale + grid.height));
if (newTranslateX !== translateX || newTranslateY !== translateY) {
translateX = newTranslateX;
translateY = newTranslateY;
requestAnimationFrame(render);
}
}
function endDrag() {
isDragging = false;
}
function zoom(e) {
e.preventDefault();
const zoomFactor = 1 + CAM_ZOOMSENSITIVITY;
const delta = e.deltaY > 0 ? 1 / zoomFactor : zoomFactor;
const rect = grid.getBoundingClientRect();
const mouseX = e.clientX - rect.left;
const mouseY = e.clientY - rect.top;
let newScale = scale * delta;
newScale = Math.max(CAM_MINZOOM, Math.min(CAM_MAXZOOM, newScale));
if (newScale !== scale) {
const scaleFactor = newScale / scale;
translateX = mouseX - (mouseX - translateX) * scaleFactor;
translateY = mouseY - (mouseY - translateY) * scaleFactor;
// no zoom past world border
translateX = Math.min(0, Math.max(translateX, -WORLD_SIZE * totalCellSize * newScale + grid.width));
translateY = Math.min(0, Math.max(translateY, -WORLD_SIZE * totalCellSize * newScale + grid.height));
scale = newScale;
requestAnimationFrame(render);
}
}
function seededRandom(x, y) {
const dot = x * 12345 + y * 67890;
const a = Math.sin(dot + WORLD_SEED) * 43758.5453123;
return a - Math.floor(a);
}
function getTile(col, row) {
if (col < 0 || col >= WORLD_SIZE || row < 0 || row >= WORLD_SIZE) {
return null;
}
const key = `${col},${row}`;
if (tileCache.has(key)) {
return tileCache.get(key);
}
const tileCanvas = document.createElement('canvas');
tileCanvas.width = TILE_SIZE;
tileCanvas.height = TILE_SIZE;
const tileCtx = tileCanvas.getContext('2d');
const cellImage = seededRandom(col, row) < ONETILE_CHANCE ? oneImage : emptyImage;
tileCtx.drawImage(cellImage, 0, 0, TILE_SIZE, TILE_SIZE);
tileCache.set(key, tileCanvas);
return tileCanvas;
}
function render() {
ctx.fillStyle = BACKGROUND_COLOR;
ctx.fillRect(0, 0, grid.width, grid.height);
ctx.save();
ctx.translate(translateX, translateY);
ctx.scale(scale, scale);
const viewportWidth = grid.width / scale;
const viewportHeight = grid.height / scale;
const startCol = Math.max(0, Math.floor(-translateX / (totalCellSize * scale)));
const endCol = Math.min(WORLD_SIZE - 1, startCol + Math.ceil(viewportWidth / totalCellSize) + 1);
const startRow = Math.max(0, Math.floor(-translateY / (totalCellSize * scale)));
const endRow = Math.min(WORLD_SIZE - 1, startRow + Math.ceil(viewportHeight / totalCellSize) + 1);
for (let row = startRow; row <= endRow; row++) {
for (let col = startCol; col <= endCol; col++) {
const x = col * totalCellSize;
const y = row * totalCellSize;
const tile = getTile(col, row);
if (tile) {
ctx.drawImage(tile, x, y, TILE_SIZE, TILE_SIZE);
}
}
}
ctx.restore();
}
function initialRender() {
if (emptyImage.complete && oneImage.complete) {
render();
} else {
requestAnimationFrame(initialRender);
}
}
initialRender();
// window resize
window.addEventListener('resize', () => {
resizeCanvas();
render();
});
thankyou so much for helping!!!!
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.
It looks like your post is mostly code; please add some more details.