On creating an Internet-ified Hobbit Pinball game

Warning: do not try this on your own unless you know what you are doing. You have been warned. Trying this may void warranties and evoke little sympathy from tech support!

[DISCUSS] this write-up on Reddit.

[UPDATE] JJP has this covered. Search for the word 'Internet' in the patent.

My endearing back-story

In the non-technical arena, I've always been a fan of Tolkien, and even study his work a little. It took until the year 2016 for all of these loves to come together in the form of Jersey Jack's awesome Hobbit pinball game . Finally I had a game that had interesting (if non-canonical) intellectual property, great audio/video/gameplay, and to my surprise Linux under the hood. Unfortunately the stock game wasn't quite there. It wasn't CONNECTED to anything. I set out to fix that. Don't get me wrong, I'm not one of those people that thinks that plugging every damn thing into the Internet (ala the "Internet of Things") is a good idea. No I do not. This is how we get Cylons. However, the Internet of Pinball (IoP - Trademark 2016, ME) is a very GOOD thing, and a promising area of development. I claim no rights to these ideas. These are my notes.

Apologies...

Overview...

TLDR; Links

If you are a glutton for punishment and want to see a low quality recording of the original live-stream, check out https://www.youtube.com/watch?v=ZIjp6hzc_zg#t=1320s (~long, starts at minute 22, done with my friend Maelstrom517 and a few awkward moments like covered up screens)

The Future of Pinball! (?)

Have a world-wide registry of pinball game scores. It would be easy for each pinball machine to upload their high scores to a single web server, perhaps run by JJP. We could also make a metric for game difficulty, based on how it is configured (for example, if you configure your game to award points instead of a free game, this makes it easier to get higher scores, and should have a lower rating). So, we could have an "absolute" score as well as a "weighted" score. It would be possible put some security on this, so for example the owner would have to register the game with JJP and you could use the serial number or ethernet MAC address to identify the machine. You could use some kind of one-way HMAC to sign the score uploads to discourage cheating. You could overlay the physical location of the game on Google Maps so you could view pinball hot-spots and where the high scores were coming from. Tweet high scores to the Internet, post them to Facebook or whatever silly social media type things you are interested in. Possibly get alerts based on certain initials, etc.

Allow service personnel to remotely manage the machine - for example to see if it is turned on, to view the playfield to see if there is a problem (stuck orc door, etc) or find out when a pinball is stuck somewhere. Could even allow people to remotely diagnose bad switches, LED lights, etc.

Password protect all this stuff so only the "right" people could do it.

Use a wireless dongle instead of wired ethernet.

Head to head tournament play. Get annoying messages when someone is kicking your ass in the tourney. Automatic tourney high-score boards.

Capture the 3rd display

Overlay a webcam focused on the player's head (ugh)

A brand new high (or low) in Internet harassment, stalking and anonymous obscenity

Hardware and Software

Motherboard: MSI H81M-P33 (https://us.msi.com/Motherboard/H81M-P33.html#hero-overview). A pretty solid, if inexpensive looking motherboard. It uses the onboard DVI for the 1080p backglass, and the VGA for the little bonus display on the right-hand side. If you are a distributor or run a route I'd buy one or two to have laying around in case you have one burn out some day.

CPU: Intel(R) Celeron(R) CPU G1840 @ 2.80GHz (fam: 06, model: 3c, stepping: 03). If you wanted this to rock as a streaming pin, you could upgrade the CPU.

OS: Ubuntu 15.10, kernel 4.2.0-16.

root@bedebox:/mnt/hobbit/1# file boot/vmlinuz-4.2.0-16-generic boot/vmlinuz-4.2.0-16-generic: Linux kernel x86 boot executable bzImage, version 4.2.0-16-generic (buildd@lcy01-07) #19-Ubuntu SMP Thu Oct 8 15:, RO-rootFS, swap_dev 0x6, Normal VGA

Other: SQL database at the backend. Didn't mess with this, but could run a script to upload scores to a server, tweet for the twits, etc.

Tech Hints on how I did it

Setup: In order to not get in as much trouble I'm not going to give step-by-step instructions but I will give you some hints. Use a hardware write blocker to DD the drive and lay down the image on a same-brand SSD of any size 32gb or bigger. In between consider converting to VMDK and setting up a temporary VM to get into it to enable networking and SSH. Single user boot mode. patchelf --set-rpath $ORIGIN for portable binaries. Re-create Apache directory requirements on boot before starting daemon

Streaming: ffmpeg - http://unix.stackexchange.com/questions/87107/using-ffmpeg-to-stream-to-twitch-tv-with-desktop-audio, https://trac.ffmpeg.org/wiki/StreamingGuide.

Link to Bede's game (CURRENTLY TURNED OFF)

Thanks

Thanks to Reza Beha (AKA Maelstrom517) for helping me on my PoC day and being a good friend and all around good guy.

Thanks to Signum University for allowing me to study fun stuff like Tolkien, myth, and literature online with like-minded folks from around the world.

Me

Last updated: 2016-08-11