I did get the Pi camera working with mjpeg-streamer, but it's definitely not as good as the webcam I'm using, and I'm back to running into frequently unusable jpegs being posted, which basically kills the framerate of the camera in-game. It's just a difference in one line of code, so I can probably put together instructions that would include either option.
I'm thinking the webcam is going to be the way to go because they're easier to mount, can make use of an easy-to-acquire USB extension cable if installing in a cab some distance away from the RPi, and have the potential for better image quality and low light performance. In my testing scenario, the pi camera on the short ribbon cable was just annoying. There appear to be up to 2 meter extension ribbon cables for this, but I'm not interested in going down the pi camera path anymore and dealing with its shortcomings.
There may be more expensive, better quality pi cameras than the one I bought, but I'm not investing any more into them.
The webcam I've been having great results with is the Logitech C615 which is overkill for this application. The images for Mario Kart need to be 320x240, so a 1080p webcam is not needed. However, I don't want to invest a ton of money into testing other webcam options, so I'm not sure what to suggest for a cost-effective and good quality option. This camera is currently listed at close to $40 on amazon and I see it was $30 when I originally purchased it. I would think if you could find a well-reviewed cheap webcam that you can confirm works with RPi and has good low light performance, it would probably be good for this.
Octoprint uses the same streamer, and
this page lists reported working webcams for RPi with this streamer.
I'm not sure if I want to get much more complex with this by adding in GPIO inputs and dynamically changing the IP according to the JVS I/O. It's kind of cool, but that will require me to wire this up to my I/O. Assuming I assign the same player number to a given cabinet, I can just set up the RPi to be the expected IP for the given player and not worry about changing it.
@obcd, I am interested in any input you have on migrating most of this to a ram disk. I do have the stills that I'm serving stored in a ram disk, but whatever else the OS and other processes are doing is unchanged, so I'm not sure what to look out for with regards to SD writes. I assume there are some processes generating logs. I'm pretty sure apache is. I honestly don't know what the mjpeg-streamer is doing and whether or not it's streaming to RAM (not sure performance would be great if it had to write to SD).