My gaming laptop – a project post

So here’s the deal – I hate gaming laptops. They’re huge, heavy, have crap battery life and you pay more than you did for your desktop to get a laptop that sucks compared to your desktop.  Why not just spend more money on my desktop?  But on the other hand it would nice to be able to play games from bed. Or at a coffee shop, maybe when I’m traveling – so it’s a bit of a conundrum. I’ve finally found a solutions that works for me — this is the story of the my off and on attempts, and my next post will be an easy to follow how to if you want to try also.

My personal laptop is a Samsung Chromebook Pro. It’s light and tiny, it’s battery lasts forever, its got a taller resolution than 16×9 which is great for reading. It’s got an intel fanless processor in so it handles complex web pages way better than a tablet, but doesn’t get all hot and bothered like oldschool netbooks did.  It can run android apps like hearthstone, since it has the google play store. It’s basically  the bee’s knees. And now it plays any game my computer can play, with a few limitations.

For bed I initially thought about a little TV and another Nvidia Shield. This set top box is awesome – It’s my main entertainment device for my TV. It streams games from my nvidia graphics card. It’s an android tv box so it has google cast. It’s a 4k HDR playback machine, and it even has amazon video – a rarity in the android world.  But I didn’t really want a TV in my room, and that seemed like a lot of investment for not that much more flexibility.

But Nvidia also makes a tablet with the same game streaming technology – a 3/4 year old one.  So if that can do it my chromebook should be able to handle it too. And since I have gigabit internet at home I should have plenty of bandwidth to stream to the outside world.  I found an opensource implementation of the protocol – moonlight and gave it a whirl. It kind of sucked. Both the android version and the alpha chrome extension.  Mouse support was wonky — android one had to click and drag, the chrome one it’s acceleration was way off.  Clicking the touchscreen wouldn’t move the cursor, just clicked wherever the cursor was. Not that great experience, but worked ish for some games.

I spent a few weekends hacking at the code to try and get better mouse support – but fundamentally the protocol isn’t built for it. It only has mouse move event support, so syncing to exact positions is messy. Even more messy is that it’s not a fixed size grid so you cant translate touch events to cursor position directly – 100,100 might be in one spot in one game and in a different spot in another. I tried things like adding a rest button for when the errors added up and touchpoint/cursor point got off, but it wasn’t a good experience. So eventually I gave up trying to force a system to do something it’s not good at.

I took the plunge and set up an ubuntu chroot with crouton (not nearly as tricky as it sounds tbh :P) and played around with Steam In Home Streaming. Finally! this works! Theres a weirdly inconsistent frame rate- and the latency seems not great, but it works and is playable.  I’m satisfied for a bit – but it’s frustrating because I have to manually configure my firewall for it after every reboot, and if I want to do it outside of my house I’ll need a VPN. blah. Plus the crappy performance compared to my shield meant i’d pretty much always get up and go to my desk or my couch. But at least the mouse and touchscreen worked.

This weekend I learned that cloud gaming service Parsec also lets you stream from your own computer. And it’s way more performant than steam — (https://blog.parsecgaming.com/steam-in-home-streaming-latency-test-versus-parsec-7884144b29f1) So I gave it a try attempt. I was hoping to ditch the chroot so tried android app first. It crashes instantly on my chromebook – I’m guessing because it’s intel and not arm.  After installing the linux client that worked! The frames seemed better everything was good, until I started an actual game. Then my latency went to hell (worse than steam). Digging a bit I discovered that it wasn’t able to use. the hardware h264 encoder. I found a ppa with some enhanced intel drivers for ubuntu, installed them and OMG EVERYTHING WORKS WONDERFULLY! Theres a few minor things that I don’t like but the experience of actually playing a game is finally there.  I do have to have my computer on (nvidia can wake it up remotely), the experience of launching a game is more like a remote desktop – nvidia I start the game from a list of games I have installed in a local UI, and then the stream starts right in the game (or steam big picture mode if I select that). And I don’t get quite as good fps as I do with nvidias streaming, and need to use borderless window for best effect. This is likely to do with not as tightly coupled hardware support. However it’s super functional and makes me super pleased – especially as I get ready to be gone for the holidays. (note the intel drivers did make steam streaming a little better too – but the frame rate issue was still present)

EDIT: I may have lied 😦 touch screen does seem to be doing the same thing nvidia did – I could have sworn it was working, if I get it working again I’ll update

EDIT EDIT: It still works – just was in a game that doesn’t like touch screen apparently ❤