Função em javascript para checar colisão

A alguns dias atrás eu estava pesquisando sobre desenvolvimento de jogos 2D com javascript, assistindo algumas aulas, vi que sempre precisava de uma função que faz a checagem de colisão, para games aonde se tem obstaculos e você precisa desviar, mas serve pra qualquer coisa que necessite a checagem de colisão, segue o codigo:

detectCollisionEl = function(el1, el2) { el1.offsetBottom = el1.offsetTop + el1.offsetHeight; el1.offsetRight = el1.offsetLeft + el1.offsetWidth; el2.offsetBottom = el2.offsetTop + el2.offsetHeight; el2.offsetRight = el2.offsetLeft + el2.offsetWidth; return !((el1.offsetBottom < el2.offsetTop) || (el1.offsetTop > el2.offsetBottom) || (el1.offsetRight < el2.offsetLeft) || (el1.offsetLeft > el2.offsetRight)) } a função é bem simples de se usar, vc tem como parametros as duas div's que quer verificar a colisão.

E lembrando que não foi eu que desenvolvi, pesquisei e achei no stack.

No passado eu estudei bastante sobre colisão de objetos e é algo muito legal de programar, mas também num jogo de plataforma começa a ficar muito difícil decidir o que fazer numa colisão, como por exemplo a colisão com uma parede, se ela foi exata, se por conta do framerate fez um objeto atravessar o outro (e daí nesse caso decidir voltar o objeto).

Depois de estudar isso eu entendo perfeitamente como que 100% dos jogos tem problema de "wall clipping".

Uma parada que eu percebi também é que tem que haver um desenvolvimento bastante personalizado para cada jogo, pois além da função, se a gente usa os "hitboxes" (collision boxes) de maneira muito precisa, acaba por estragar um pouco a experiencia do jogador. Um exemplo classico é do Super Mario, em que você pode sair completamente de uma plataforma sem cair. Até onde me lembro, se não fosse assim, a experiencia do jogador seria muito frustrante, principalmente por causa de todo delay e perspectiva. Outro exemplo que teve impacto muito grande no desenvolvimento foi o jogo Celeste, em que você precisa ser muito ágil e preciso. Não encontrei exatamente o conteúdo em que ouvi falar sobre isso, quase certeza que foi do [Ahoy](https://www.youtube.com/user/XboxAhoy/featured), mas esses são muito boons também: https://www.youtube.com/watch?v=Nv5KrS3cN9c , https://youtu.be/z7xMIRzIDpU
> Outro exemplo que teve impacto muito grande no desenvolvimento foi o jogo Celeste, em que você precisa ser muito ágil e preciso. > >Não encontrei exatamente o conteúdo em que ouvi falar sobre isso Eu acho que vi esse vídeo e é **muito sofisticado** o jeito que eles fizeram no Celeste. Obra de arte! E sensacional os dois vídeos que você mandou ali, principalmente o primeiro 🤝
Muito massa, estou começando agora, quero entrar na area de desenvolvimento 2D e esse tipo de comentário me ajuda muito.