• entries
    32
  • comments
    143
  • views
    30456

Time for a new way of developing games?

2162 views

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....



9 Comments


Recommended Comments

It's an interesting idea, and I think I have a couple of thoughts both for and against.

For)
* There is always a lot of boilerplate code, and engines or templates only ever get you to the very beginning. It makes sense that there should be code to get you even closer to the 'creative starting line'. A friend of mine certainly talked about templates for different types of games. So this could save some time.

Against)
* You make the assumption that the world needs more game developers or a lower bar of entry. I'm not convinced at all that this is the case. There seem to be plenty of developers. It's a highly competitive market place, and I don't see why allowing more lower skilled developers to get to market is going to help anybody. There was a study that showed the overall perceived quality of games is decreasing (review scores are decreasing) - and yet there are more games being developed than ever. So is adding more beginners going to help? Seems like it's already straight forward to get into game development, you've just gotta do the hard work to make an actual game that's good.

* You are right that the more complete templates you provide, the more 'noobs' you will attract and these games will be more similar. We've seen this with things like GameMaker (edit: and Unity). The more work that's done for the game developer the less original the game they produce - this is almost by definition. I remember all the StarCraft 2 mod games - they were novel, but they were all obviously SC2 minigames or mods. I wouldn't pay for a single one of them. And 99 out of 100 of them can be easily forgotten. Yes we've seen some mods spawn new titles. But then, that's already a thing isn't it? You may be talking about something that already exists.

Edited by Gavin Williams

Share this comment


Link to comment

Isn't that really just what a game engine is? More general engines provide more of a framework that let's you do that stuff more easily, but there are also plenty out there that basically give you a working game to customise... the main downsides tend to be that they're more limiting than something more general, and that the overwhelming majority of games made tend to look at feel overly similar, often earning the engine a bad reputation.

Share this comment


Link to comment
On 17/9/2017 at 4:06 AM, Gavin Williams said:

It's an interesting idea, and I think I have a couple of thoughts both for and against.

For)
* There is always a lot of boilerplate code, and engines or templates only ever get you to the very beginning. It makes sense that there should be code to get you even closer to the 'creative starting line'. A friend of mine certainly talked about templates for different types of games. So this could save some time.

Against)
* You make the assumption that the world needs more game developers or a lower bar of entry. I'm not convinced at all that this is the case. There seem to be plenty of developers. It's a highly competitive market place, and I don't see why allowing more lower skilled developers to get to market is going to help anybody. There was a study that showed the overall perceived quality of games is decreasing (review scores are decreasing) - and yet there are more games being developed than ever. So is adding more beginners going to help? Seems like it's already straight forward to get into game development, you've just gotta do the hard work to make an actual game that's good.

* You are right that the more complete templates you provide, the more 'noobs' you will attract and these games will be more similar. We've seen this with things like GameMaker (edit: and Unity). The more work that's done for the game developer the less original the game they produce - this is almost by definition. I remember all the StarCraft 2 mod games - they were novel, but they were all obviously SC2 minigames or mods. I wouldn't pay for a single one of them. And 99 out of 100 of them can be easily forgotten. Yes we've seen some mods spawn new titles. But then, that's already a thing isn't it? You may be talking about something that already exists.

Your two 'againsts' actually cancel each other out, at least a little bit. More developers would mean both more good and bad ones, meaning it would be harder for the bad ones to get noticed, because more good ones would take the field. That is a VERY oversimplified way of stating it, but I do feel that a lot of the "Steamcrap" and pointless mods for any game get noticed because there is a lack of really compelling new stuff out there. Even all the AAA titles are more or less starting to mix together. A tool to create in new ways would, in my mind, allow people with better ideas but fewer resources to upend some of that drudgery. The cost, yes, is that there will be even more Steamcrap and the like, but that feels inevitable. An elitist developer scene never benefitted anyone (other than elitist developers, but that seems to be a dying breed), and the more chaos that can be created, the more creative chaos there should be room for, no? I am not sure of anything here, just spitballing...

On 17/9/2017 at 4:13 AM, jbadams said:

Isn't that really just what a game engine is? More general engines provide more of a framework that let's you do that stuff more easily, but there are also plenty out there that basically give you a working game to customise... the main downsides tend to be that they're more limiting than something more general, and that the overwhelming majority of games made tend to look at feel overly similar, often earning the engine a bad reputation.

Yes and no. The problem with a game engine is that it is typically a finished piece of work and a closed black box. Sure, I can learn how to use Unity, but I cannot learn how to create something on my own from it, because I cannot gain full access to how it works. What if I realize that it has crappy collision detection and want to fix it? What if the way it does multiplayer doesn't fit with my plans? Most of the time, the answer will be either "tough cookie" or "rewrite everything in a way that means you might as well have done it yourself in the first place". By providing full code and documentation, anyone can actually dig as deep into it as desired, and change things while learning about them. Engines (in my experience) do not do nearly that. Which might be partly why their games easily end up looking the same, as you noted.

Share this comment


Link to comment
8 minutes ago, Embassy of Time said:

because I cannot gain full access to how it works. What if I realize that it has crappy collision detection and want to fix it? What if the way it does multiplayer doesn't fit with my plans? Most of the time, the answer will be either "tough cookie" or "rewrite everything in a way that means you might as well have done it yourself in the first place". By providing full code and documentation

Sounds like a downside to closed source engines.  Were you aware of open source engines such as GODOT? Unreal is a proprietary engine, but anyone can obtain and download the source. Some other engines (such as C4) provide source access with certain licences.

Share this comment


Link to comment
On 19/9/2017 at 2:16 PM, jbadams said:

Sounds like a downside to closed source engines.  Were you aware of open source engines such as GODOT? Unreal is a proprietary engine, but anyone can obtain and download the source. Some other engines (such as C4) provide source access with certain licences.

I knew of GODOT, but I have heard mixed receptions. I did check it out, of course, and probably should again, t least for some ideas on code. I never heard of C4, but just googled it, and both it and a few others came up that look interesting. I never knew you could see the source of Unreal!

What may still be lacking is a more rookie-friendly way into the code. As stated, I am an early "disciple" of NeHe code, and would really love something similar for bigger stuff. Whether it makes more sense to do it on something existing or something I make and therefore know is still hard for me to decide on. Suggestions are, as always, very welcome!

Share this comment


Link to comment

Ah right, so you're looking more for an explanation to go along with the code.

I think part of the reason such things are so rare is that all of these capable engines and frameworks you see weren't just written as-is in a vacuum, but have evolved over time.  This makes it tricky to do a write-up, as it's hard to come up with a good sequence for the explanation.

Share this comment


Link to comment
Quote

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. 

Reminds of a video from J. Blow - Ideas about a new programming language for games.

Share this comment


Link to comment

Correct me if I'm wrong, but wouldn't this be fairly simple to accomplish with a github project? Individuals could just pull the engine elements they need and begin working on their own projects.

Share this comment


Link to comment
On 16/10/2017 at 12:12 PM, rluks said:

Reminds of a video from J. Blow - Ideas about a new programming language for games.

Yes, I watched that a while back, too! It was one of the sources that made me dig into the topic. I think he has some fine basic ideas, but he is still too "deep" into coding, making it seem like mostly just a new coding language and/or a lib of game relevant functions. But the idea itself is interesting!

On 17/10/2017 at 4:03 PM, pbrela2 said:

Correct me if I'm wrong, but wouldn't this be fairly simple to accomplish with a github project? Individuals could just pull the engine elements they need and begin working on their own projects.

This would be the superior model. However, my experience with projects of the type tells me that it simply would not work. People need something more central to attach their work to, or it ends up with hundreds of branches and conflicting versions. My thoughts on the organizational issue would be more along the line of Blender 3D, i.e. a central piece of software that has an open community around it. It might lean on semantics, but in the eyes of the average user/participant/contributor, I think those semantics would be a big make or break deal...

Share this comment


Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now