https://www.machinet.net/tutorial/build-javascript-2d-platform-game