TL;DR: Players just need a browser on their phone. No app. Separately, someone needs to install a game on their PC/Mac/Linux/Android and run it.
Users (mom, grandma, sister, dad, little brother) install a game on their PC/Mac/Linux/Android. That game runs a webserver (using the happyfuntimes library)
Players then connect to the game with their smartphone. First they need to be on the same LAN. Then they open their browser and connect to the game.
To make that easy there’s a public server at happyfuntimes.net. When the game starts it tells happyfuntimes.net “I’m running a game. My local ip address is 192.168.1.47”. Happyfuntimes.net records that IP address and the public IP address.
Players then also, on the phone’s browser, go to happyfuntimes.net. Since they are on the same lan happyfuntimes.net sees them as the same public IP as the game so it redirects the browser to the game’s local ip (in this example http://192.168.1.47:18679)
Boom! They’re in the game. I’ve had 89 people playing a bomberman clone for example
Now the problem is browsers are banning the features the phone’s browser needs for the games unless the pages are https.
So, I need certs. Certs are assigned to domains so I need domains. Domains are easy. I can run a dynamic dns server. Certs though are either $$$ a piece or free from letsencrypt but the limits on letsencrypt make it not a solution. If a game becomes indie popular and 1000 people install it that’s 1000 certs needed.