These exist! Yes.
- You can still use QBASIC and compile it to an EXE. Distribute your game with a copy of DosBox, and it will work uniformly across Windows, Linux, and macOS.
- If you like Lua, go for Pico8 or LÖVE. Pico8 is fairly constrained, and LÖVE is a bit more general.
- If you like JavaScript, write a game that uses the 2D canvas and Web Audio API. You can upload this to your website and play it on any computer.
- Haxe (look it up, I don’t know it well enough.)
- If you like something more capable, try out a game engine like Unity. You can hack together a simple game following tutorials and create Windows, Linux, and macOS builds at the touch of a button.
I think it’s worth discussing why people like “constrained” systems in a bit more depth, because some of the things I’ve mentioned above are definitely not constrained.
As you get older and more experienced, you develop opinions about how software should be developed, and most can’t turn these opinions off at will. These opinions range from ones about the programming experience (compile times, type systems, testing) to the user experience (small downloads, no unnecessary libraries, support for specific targets, etc.)
Spend some time with a kid in high school who loves making video games. Let me tell you, even though I am 100% a better programmer and better software engineer than the high school kids I meet, I still get a fresh dose of humility when I work with them on game projects.
They simply don’t care about type systems, testing, or library dependencies yet. They just want to put cool things in their game and share it with other people. The tools for making that happen, and making it happen easily and quickly, are better than they have ever been. The tools are also free (as in beer), once you have a computer and internet connection.
So if you want to rediscover the experience of programming like a kid again, try rediscovering the wild and eager mindset of programming like a kid, and you’ll find that the modern tools are pretty damn cool.