What I Learned Coding X-Wing vs TIE Fighter (1999)
gamasutra.com
gamasutra.com
Demo of the associated kickstarted game "Overload": http://playoverload.com/playable-teaser/ Copied from that link: The teaser includes VR support for the Oculus Rift only. The final launch of Overload will support other VR devices.
Apparently newer Overload demos include eye tracking support: https://youtu.be/jcXWpL9CMps
Descent: Underground Early Access claims VR support and is $15 (50% off) on Steam right now: http://store.steampowered.com/app/360950 Reviews say there's not much there yet though.
Went home and immediately ordered a PS4 Pro and Playstation VR on the strength of it. Wondering how hard it would be to start hacking around with it. Honestly, I haven't been blown away that much by a game since I the first time I played Doom way back in 1994.
Give me a team star wars game with mission objectives and voice chat for your squadron and for me, the future will have arrived.
The only bugger of it is that there's still no across the board UDP support in browsers(1) which means if you're building games with HTML5 and JavaScript, whatever you do, you're still using TCP, which is a PITA. It's actually even worse: WebSockets obviously a bunch of HTTP guff on top so it's not even like you're using vanilla TCP. At present I don't think there's any way to use raw TCP from JavaScript.
This obviously isn't a big problem for slower paced or turn-based games but it's a total pain in the neck for anything that has real time dynamics (FPS, many types of 2D arcade game, etc.).
(1) There is WebRTC, which is apparently UDP-based, but it's not yet supported across all browsers: http://caniuse.com/#feat=rtcpeerconnection. It's also meant for peer to peer so may or may not be a good fit for the kind of client/server/master game state comms you'd need for a multiplayer game. (I suppose you could utilise one of the clients for the master state but this is obviously open to abuse given that JS runs in a completely insecure execution environment - anything can get injected in there.)
But yeah, WebRTC for example also effectively implements resending the whole state - if you get too far behind, the receiver can request a video keyframe from the sender.
However, you don't always send the entire "world", but a delta-encoded version of it (the server keeps a history of the world state and a timestamp for each client, so it can send only what has changed since the last acknowledged packet.)
Depending on the game you have to do a bit more work (interpolating changes so it always looks smooth even if packets are dropped, latency compensation, etc.)
Its also ironic that people building networked games today are making the same mistakes - and it all starts from a huge misconception of how the internet and its protocols really work.
For as much as we like to think of ourselves "clever", networking is one area where intuition usually leads to terrible implementations :)
With bittorent and browsers opening a zillion connections at once, a single connection can be easily swamped. For those of us using a VPN past the ISP, that means everything, but a game with a single connection is likely just as vulnerable. These days (if not using a server) having clients each send their data and what they received from everyone else to all other clients might be more likely to work.
And that was of course fine until these people with cable or DSL broadband started getting in on the act with their 70-80ms ping times, and wiped the floor with all us saddos still on dial-up connections. (Or equally, you'd get some cocky sod jump on from their university network and, equally, annihilate everybody else.)
OK, I giggled at this! :D
On a related-but-not note, I wonder if 13 year old girls react the same to Titanic now as they did when it was in theaters? I'll find out in about 11 years myself but curious if anyone has anecdotal evidence.