Ever play with legos? It’s totally cool, and completely freeform, and you just reach into your bin, pull out some blocks, and start snapping them together. Cool, right?
The legos manufacturer also sells kits, with detailed instructions. Have you ever built one of those kits? I haven’t, but I get that they can be fun.
But imagine that, EVERY time you want to play with your legos, BEFORE you get to the freeform part, you MUST carefully complete a detailed lego model EXACTLY according to the instructions. Only then may you start building what YOU want to build.
Would you still want to play with your legos? Would others?
This is what modern day game development is like.
I’ve been researching ways to set up a C# game development environment for my nephew. The Visual Studio IDE is still the king, being free and very powerful. But the XNA library, which used to be the Windows code you need to draw art and play sounds for games, has been shut down by Microsoft.
SlimDX and SharpDX have sprung up to replace XNA in this space, with an array of higher-level developer libs on top of them.
Any way I go, I MUST load exactly correct sets of files into the exactly proper places on my dev machine, and hook them up with opaque incantations. Then I must also use exact incantations to get these software tools to setup Windows, so that (finally) my code can actually get to the business of making the game I wanted to make in the first place. Legos it ain’t!
Why do we tolerate this? Well, of course, computers and operating systems and video cards are all very complex under the hood, and under the hood is where we program. But nobody likes to get tripped up in (metaphorical) wire bundles, so we organize and compartmentalize our code. We programmers recognize the utility of keeping things simple and clean.
But I also think that programming can be a priesthood, and having to know and correctly use bizarre incantations is how a priesthood maintains its exclusive status. I’ve seen it many times. “If you can’t handle it, you don’t belong here.” It’s toxic and exclusionary.
But I guess I’m frustrated because I feel like a dinosaur. It’s only been a few years since I explored new dev tools and libs. But there’s so much that’s new, and different ways of doing things (that I don’t like)
Retained-mode, message-passing architectures are just as popular as ever (Windows, Unity, etc), though I find them gross. WYSIWYG dev tools (Game Maker) are just as popular, though I find them limiting. And complex WYSIWYG GUI design tools (Flash, Window Builder, Glade) are very useful in large and distributed teams, but unwanted complexity for my lone-wolf style.
Whatever happened to turn the computer on, and start typing code? Okay, I know that hasn’t happened since the C-64/Apple 2 days. /old man rant
But even the Raspberry Pi, which was billed as a return to those days, requires the same complicated setup as every other modern dev environment.
Microsoft has actually worked hard (for years) to make life as easy as possible, FOR enterprise coders. Game coders are expected to join the priesthood.
I’m sure I can put together a dev environment for my nephew. And I’m sure I can lead him though the minefield of incantations necessary to get him started. I just wish there were a better way.