Hey! Thank you for the kind words about our game.
The core camera system is just a basic lerp:
```
let cameraX = 0;
let cameraY = 0;
// move camera towards user
let targetX = userX - 75;
let targetY = userOnGround ? userY - 95 : userY - 87;
let cameraLag = 0.11;
if (explosion.length > 0) {
// ...set targetX/Y to center of the explosion...
}
cameraX -= (cameraX - targetX) * cameraLag;
cameraY -= (cameraY - targetY) * cameraLag;
```
There is additional logic around setting `targetX`/`targetY` to different targets depending on what's going on in the game, and some tweaks to make the camera smoother at very fast or very slow speeds, but that is the basic idea.
Let us know if that was helpful or if you have any other questions.