As the clock rolls over 1000 hours spent developing MUVR, it’s important to reflect upon the important milestones and implementation decisions that lead to a realistic product.
- WebRTC was chosen for it’s versatile and robust Real-Time communication capabilities utilizing ICE and STUN for NAT traversal.
- socket.io was chosen for use in WebRTC session establishment and signaling that supports WebSockets and XHR based fallbacks.
- Enforced H.264 video coding due to prominence of hardware accelerated decoding even in older devices to extend battery life.
- HAProxy was chosen for it’s lightweight and versatile nature. Straightforward Layer 3 implementation made WebRTC signaling easy.
- Let’s Encrypt Free certificates, automated renewal (with zero downtime thanks to HAProxy).
- AutoSSH allows me to run my server cluster within my own home while caching all responses in the OVH hosted frontend; significantly lowering costs.
- CSS3 was for it’s powerful (and often GPU backed) performant transforms and wide compatibility for applying styles to video elements.
- Gamepad API for great and well documented support of many different gamepads.
- three.js for high accuracy calculations for creating a virtual frustrum to map DeviceOrientation to an x,y coordinate on a plane of dynamic dimensions.
- adapter.js for it’s shim to insulate apps from spec changes and prefix differences.
- qrcode.js for it’s ability to generate QR codes for pairing that specify a correction level to prevent incorrect scans of large URL’s.
- WebGL for it’s GPU backed operations. While not fully compatible for all browsers, it offers some immense benefits and will be key in the future.
- Native Caster Application
- Electron for it’s ability to package web based applications with a cross-platform nature as well as integrate seamlessly with native applications.
- Go for it’s high level concurrency and cross platform nature. Go powers the native device input.