How do I attack this game-show programming project?
March 10, 2021 3:06 PM   Subscribe

One thing I'm interested in building to use after the pandemic is a "game show" setup where either one computer or a network of computers is used to display individual names and scores on three or four separate monitors, with a main control computer used as the sole input. The main control computer would also be able to hook up to a venue's projector, to display the main game (for instance, a Jeopardy or Family Feud board.) I need an angle of attack.

I expect I will have to program the setup by hand, which is fine, but I think I need a structure in mind first because that affects what I need to purchase and what I need to learn.

I can see two obvious routes:
- Handle this all from a single computer: Find a powerful laptop that can output to five external displays and just use that. This would be much easier to program but probably more expensive, because most laptops are not built for this and the ones that are, are probably much more expensive.
- Build a network of Raspberry Pi 4s: These do everything I need to do (output graphics to two monitors, run small programs). The challenge is, I have to find a way to handle networking.

The second approach seems significantly less expensive, and so it's what I'm tempted to go with. But having never worked with networking before, that leaves me with a few questions:

What's the best protocol? Bluetooth, local wifi, USB data transfer cables, Ethernet, something else?

I'll be programming in Python, probably. Is there anything I need to know about networking in Python, specifically? Should I learn another language to handle this?

Is there any prior work that makes this much, much easier?

What should I be asking that I don't know enough to ask?
posted by LSK to Computers & Internet (12 answers total) 1 user marked this as a favorite
 
Third option: any laptop + external graphics card enclosure + graphics card that can push 4 external monitors -may- work (with the laptop itself driving a 5th external monitor). I'm unsure about how I'd attack the rest of the problem, but it seems like it could be a cheaper middle ground below the laptop option.
posted by isauteikisa at 3:18 PM on March 10, 2021


This should just be a web site.
posted by bowbeacon at 3:27 PM on March 10, 2021 [4 favorites]


Are the remote displays just showing "slow" information, like name and score? Is there a return conduit with a trigger button, or are you doing that by some other method?

I like the Rpi4 display idea. Small, cheap, has network connectivity (wifi or ethernet), and has a video output.

What about this: run a web server on the "main" computer. Have a URL for each position that the remote units are loading and reloading (either on a timer, or triggered by some event on either end).
posted by JoeZydeco at 3:27 PM on March 10, 2021


Here's something similar you may find useful as research https://www.pcscoreboards.com/scoreboards.shtml
posted by tiamat at 3:31 PM on March 10, 2021


Agreed that this should be a website, doesn't even need to be a dynamic Javascript thing. Make a BIG TEXT full screen view of a page with a meta-refresh tag on it. A Raspberry Pi will handle networking for you if you can designate a server for each client to connect to and put them all on the same local wifi network. The server could be an RPi or a laptop, running some simple server-side code like a Python Flask App.

You didn’t mention if the contestants need some form of input, so I’m treating everything as a passive display here.
posted by migurski at 3:43 PM on March 10, 2021 [2 favorites]


Have you considered USB monitors? These are usually powered by a DisplayLink chip - their FAQ says up to 6 monitors on Windows, though the real limit may be much higher.
posted by mshrike at 3:47 PM on March 10, 2021


Response by poster: Re: input - Any input would be connected to the host computer, so that's not an issue. The non-host units don't need to send signals back.
posted by LSK at 3:51 PM on March 10, 2021


The Jackbox games work by having participants use their phones as game controllers via a web browser. The main display presents a code, which they use to log in to the Jackbox game site.

You could do something similar -- have participants scan a QR code on the main monitor that points their device to a web app hosted by your main computer, over wifi. Or you could get some cheap Android tablets to do the same thing, only bigger.

Now the tricky part, writing a networked game app -- actually two apps, one for the main display and one for the controllers (in JavaScript). You might get ideas how to do this by googling "writing a jackbox clone".
posted by RobotVoodooPower at 3:51 PM on March 10, 2021


Have you seen things like this hack a day project?
posted by rockindata at 4:02 PM on March 10, 2021


If you don't need input from the monitors, you could use that DisplayLink unit linked above, and you'd probably want to go with Windows. I'm guessing your app would have to create a window for each display, including the main display, and you'd have to manually or programatically drag each window to its corresponding monitor upon startup (seems the hardware doesn't help you with this). I'd probably hack something together in C#.
posted by RobotVoodooPower at 4:56 PM on March 10, 2021


Also, realize that there are length limits on USB and HDMI connections, so if the monitors are more than 10 feet or so (it's complicated) you might want to consider a wifi or wired ethernet solution.
posted by RobotVoodooPower at 5:40 PM on March 10, 2021


The main problem is going to be a display. Laptop won't really cut it. You pretty much need a desktop capable of using two video cards with 3 video outputs each. It's simply way too expensive, IMHO.

As others said, this can be a website pretty easily, as it sounds like you don't need very fancy graphics, and depending on local rendering power and available bandwidth, web graphics can be pretty impressive. And you can use almost any web browser.

If you already have the game rules written, you can probably write up something that will display primitive simple SVG-based graphics in a few hours with some existing frameworks and whatnot. Then it's a matter of spit and polish.
posted by kschang at 9:25 PM on March 10, 2021


« Older Seeking songs with a "reveal"   |   Please help us renovate our tiny kitchen Newer »
This thread is closed to new comments.