A while back (years, because I'm ooooold), I came across some articles about a "game development language". It was apparently a hotly debated topic at the time. The idea was that there should be a programming language, just like Python, C++, Java, or many others, which was directly designed for making game development in it easy. I never really got the deeper points about structure and features that they made, but the notion stuck with me, mainly because it smelled a lot like the stuff done by modding communities, i.e. creating tools for modding various games. I know modding mostly from Minecraft, and things like Forge (if I remember the name correctly) provided a basis (language) for more easily modding the game. As a, back then, fairly newbie hobby game programmer, I liked the idea of not having to deal with memory structures and screen formats to 'just' create a game.
Fast forward to now. I have set routines for programming most game projects, and like most low-level devs I know or know of, I have libraries of standard methods for getting things done. If I need to do something, there is a 50/50 chance I already have most of it done somewhere, ready for transfer into my project. But once upon a time, I, too, was starting from scratch.
Yesterday, someone in the forums asked about how to start programming games, and there were some suggestions of GameMaker and such. I added OpenGL/C++. Why did I add something that seemingly advanced for what was clearly a question about taking the first babysteps? Because I have built a routine that makes it pretty easy to get moving in OpenGL/C++. It takes a minute to explain, and then the newbie can start putting some things together. And instantly, I started to think back to the whole 'game language' and modding thing. And an old thought struck me. I think it might be time we made a new way of getting into game development.
It's an old thought, as mentioned, which I have been kicking around again lately, trying to update it to where I am now in game development. So please, bear with me, not everything is 100% thought through. But the main point is.
I am a fan of open source. Not that everything open source is amazing, but the concept is, to me, the entry to a whole new worldview. Like many others, I learned OpenGL/C++ from the ancient Neon Helium tutorials (they are now called 'Legacy Articles', I believe). They are basically a set of open code, which does stuff in 3D, and they're great, especially considering their age (many parts are obsolete now, but the main points are still strong). Imagine being a newbie game dev, wanting to get your feet wet, and finding something similar, but with a fully functional game. Good documentation, functions set up for easy use by newcomers, and tutorials for integrating new ideas. All the rough and hyper-technical parts just done.
For a quick example of this idea, I can say that I use wxDev-C++ for programming my games. Not because it's new or snazzy or anything. In fact, it's behind on many, many things. And it's ugly, and a bit buggy. But it has one feature that makes me love it above all others: At the beginning of a project, I can simply select "OpenGL", and it creates the full screen setup for me. And by that I mean it provides the complete code for a very basic OpenGL program (a window with a triangle spinning in it). I can focus on thinking about my game math, and not setting up pixel parsers or llama blasters or soil rotation schedules or whatever. It's like having someone doing your taxes for you. For free. Every time.
Imagine a full game like that, one with a full 3D landscape (2D available at request) provided, with basic asset import and generation, model movement and so forth. One where you have commands like "CreateCreature()" or "AddItemToInventory()", allowing you to define the game content variables, instead of recreating everything that everyone has done a gazillion times before. Essentially, a game designed for modding.
Sure, you may say that this would just be a noob magnet, like the Unity engine has started to become, a tool that lets people with no idea what they're doing make some trash instead of taking the time to make something solid. And that would definitely happen. Paint is cheap, so any idiot can splash some colors on a canvas and proclaim themselves to be an artist. But if paint was still as expensive as a few centuries ago, I bet many new artists would never have risen to put their mark on the craft. Code is the paint of game developers, so the amount of code available for cheap or free defines the field as a whole. By taking the first steps for others, giving them a place to continue from, game development could open up to many more people.
But more than that, the starter-kit game described could open up to others. I started my 3D experience long ago (again, I am old) with 3D Studio Max, and it always had cool features. But Blender 3D caught my eye early on, because it had a batshit insane community creating things for it, and it made use of that. Imagine if Mojang had incorporated Minecraft mods at a similar rate, how would the game look now? If a starter-kit game had, say, all the code for someone to generate a world to walk around in and pick things up, maybe some crafting and basic enemies, someone trying their skills at dabbling with that code might end up adding a physics engine, and future dabblers could dabble on with that. This is, to me, the source of organic, perhaps even chaotic, growth. And future generations of game developers could start from there, just like many today start out making mods for existing games. But this game could grow from every 'mod', adding features and thereby new game concepts to be learned from it.
I'm rambling. This is not one of my most developed ideas, mainly because it seems so bizarre, even to me. But we always preach learning by doing, so why does every new game have to start with the dev-to-be coding up the same screen controllers and input handlers? Hand them the damned things to study and learn from, and let them build on the works of others. We know how the wheel works, if people have to reinvent it, at least let them reinvent it in new and better ways, from looking at the old stuff.
If people like this idea, I will consider doing my game project this way. I will provide full code and documentation for new (or experienced!) devs to get into the game making stuff quicker. And people can rant and rave about how this and that is bad about my work, because that lets me know more about how to make it better. In fact, the more people get in a twist about what should be improved, the happier I would likely be. Especially when people go "look, let me show you what I mean", because then I learn, too!
Is this insane? Has this already been done, perhaps crashing and burning and making the kids cry or worse? Would you want to dabble with it, or is it useless to you? I really have no idea where to go with this from hereon, exactly, so I am just improvising. Any reaction might be the one thing to put me on a more productive track....