Early Development Prototype
A real-time proximity voice chat prototype for League of Legends custom games.
RiftLink is a game companion prototype that connects player distance to voice volume. It combines a position-tracking pipeline, a real-time backend, and a browser-based voice client to create proximity-style communication for custom games.
RiftLink Proximity Chat explores how real-time position data, WebRTC voice communication, and Discord-style lobby features can be combined to create proximity-based communication for custom League of Legends games.
The core architecture for receiving and processing player position data has been defined. The next planned milestone is building the voice communication layer and testing Discord/WebRTC integration for proximity-based audio.
Normal voice chat treats every player the same. Everyone can hear everyone at equal volume, regardless of where they are in the game. For custom games, that removes spatial tension and makes communication less immersive.
RiftLink receives player positions, calculates distances, and sends each voice client a volume value so nearby players sound clear while distant players fade out.
Receives player coordinates from a spectator-side source and normalizes them into a shared map coordinate system.
Calculates player-to-player distances and converts them into smooth audio volume values.
Allows players to join a lobby through a link, enable their microphone, and receive dynamic voice volume updates.
Planned Discord support for login, lobby invites, user linking, bot commands, and optional channel-movement fallback.
Backend-managed lobbies map browser users to in-game player identities and distribute proximity updates.
Designed for private League of Legends custom games with friends and experimental gameplay modes.
Define the coordinate model, receive position updates, display players on a test map, and calculate distances.
Create lobbies, add join links, match players to identities, and broadcast proximity updates.
Add microphone support, connect players with WebRTC, and apply dynamic volume locally.
Add Discord login, bot commands, lobby invites, identity linking, and channel movement experiments.
Add the dashboard UI, settings, demo video, screenshots, and portfolio-ready testing notes.
Full-stack real-time prototype
Early development and architecture stage
Proximity voice, lobbies, and realtime player position logic
System design and full-stack development
function getVolume(playerA, playerB) {
const distance = Math.hypot(
playerA.x - playerB.x,
playerA.y - playerB.y
);
const fullVolumeDistance = 120;
const maxHearingDistance = 600;
if (distance <= fullVolumeDistance) return 1;
if (distance >= maxHearingDistance) return 0;
return 1 - (distance - fullVolumeDistance)
/ (maxHearingDistance - fullVolumeDistance);
}
RiftLink is an independent prototype project inspired by custom-game experiences. It is not affiliated with, endorsed by, or connected to Riot Games. The project is designed as a portfolio proof of concept and does not modify the League of Legends client.