Shared Experience is a three.js demo where up to three people share the same 3D scene in the browser. There is no game server: one browser hosts a PeerJS peer and the others join over WebRTC from an invite link, so player positions travel as data-channel messages and each player is drawn as a coloured box avatar. Voice is a WebRTC audio call per peer, with the gain of every remote stream driven by the distance between the two players, so voices fade in as you walk closer and fade out as you move away. Movement uses pointer lock on desktop and an on-screen joystick on touch devices.
Source code: shared-experience on GitHub. More work: the three.js demo hub and Niccolò Fanton's portfolio.