2d Game Engine

hey JGO,

Ive been trying to make a 2d game engine like GameMaker or Construct 2 and i was just wondering what features would be best implemented into my engine. I already have planned:

Asset Management
Scene editor
2d Sound engine
dynamic scripting
plugins for extended engine content
dynamic parallaxing
[Edit]collision/physics
If there is anything else that i should plan on adding over the years, please tell me.

Thanks :slight_smile:

Dynamic & procedural sounds, for one thing.

You also need a good name!

  1. Why would you want to do this?
  2. All the features that exist in GameMaker and Construct 2.

For one, I want the feeling of accomplishment and two I want to be able to have a totally personalized engine to fit my habits

You might want to add pathfinding to it? Hope it goes well :slight_smile:

Would a shader system be important?

MAYBE do that later, if I was you I would (firstly) focus more on important things like scripting and ONLINE, and hold your engine very simple, not so detailed as gamemaker, so you have more a ‘scripting-engine’ (where everyone can script his own shaders, as they are all different for different games). You can add some rare stuff for 2d engines like built in database communication, physics and so on.

So the user of your engine has not to worry about all that kind of stuff, but only has to worry about what he wants to do with his data…

Do you know what a “shader system” is?

If you’re starting out I suggest you start doing simple games like platformers, tiled games, tetris, space shooters etc instead of jumping straight into making a “Game Engine”. There’re many reasons for this.

Firstly, it’s not a great way to learn the basics of making a game. Secondly, any game engine you make in the beginning will be immediately outdated (read: crap). Thirdly, there already are good, up to date “Game Engines” out there. Fourthly, this is a huge time investment with little to no gain and will leave you with practically nothing to show for it.

Make ~5 simple games that take less than 20 hours to make each, learn a lot in the process, have 5 simple games to show for it and ready to move on to other things by the time you’ve done 5% of the “Game Engine”, learned almost nothing, nobody will ever use it for anything not even yourself and be left empty handed.

my 2 cents.

If you’re just getting started with programming games or you haven’t worked on large projects before, you’re right, you should avoid something like a game engine. The reason is because a game engine’s code base grows very large (hopefully) very quickly - and it is then when your OO programming skills and code organization skills are put to the test. If you find yourself constantly rewriting implementations then you probably don’t want to get started with writing a game engine because those implementations take a lot of work to write.

That said, I wouldn’t argue that it is ever a waste of time to program a game engine. You learn lots of different things during the process.

There really aren’t a lot of game engine out for Java - I mean you have a few that are hacked up dropped in a repository and forgotten about with zero proper documentation or support - and a few that are well supported but nothing compared to the C++\C.Net market.

I.e, the reason I chose to write a Java isometric game engine is simply because there aren’t any out there that are worth using over your own implementation (there are a few that look promising - but not much.) There is uIso - but that’s far from a game engine, than there was another, jIso - which had a complete crap code base, than there was “Java Isometric Engine” last talked about in 2008 lacking some essential features like scripting, map editor, item or quest system etc…

There really aren’t many purely java based game engines out there at all compared to other programming communities… I chose java to deploy something via an applet (I am actually much more adapt at C# .Net, C & C++ - but I do feel like I know my way a bit around Java) so I feel like using libraries with tons of native dependencies kind of defeats my entire purpose to it.

I have the capability to program a game engine I just want to know what features to add.

I would assume from this comment that the engine is more for you as opposed to a “one size fits all” type of engine such as Unity. If that’s the case then the answer is simple: write the features that you find you need as you need them. You are the one who knows what your habits are, and there’s little use in investing time and effort into an engine feature that you think you might possibly need in the future when that effort would be much better utilized implementing a feature that you know you need now.

As a general rule, the more general you make your engine, the less useful it becomes to your specific situation. Just my $0.02.

I’m sure you do but considering this:

I urge you to reconsider.

Besides, it’s much more fun to actually make a game instead of a game engine ;D

First my age doesn’t really matter. Second I simply despise having to create a new window and game class every time I start a game. I just want a simple enviorment to be able to quickly use

I disagree with the lot that say you shouldn’t do this. The way you are approaching it is completely wrong, though.

You won’t know what your personal engine should have until you make a game, and you realize the features or aspects that you need.
My suggestion is to make a game, and in the process, make the more game-common parts as modular as possible so that they can be used on their own in any game. If you do this again and again over time, you’ll obtain a collection of tools that are proven useful, because you’ve already used them in at least one project.

To get started, begin with a very basic core framework(Make a container, a gameloop, a way to display your graphics). And then with that, build a game as I mentioned before, and let your engine build as a result of realizing the different things you need from the games you are working on.

And besides that, doing it this way allows you to work on games more than an engine. I promise you, building an engine is not fun on its own.

And at the end of the day, if all you wanted to do was build an engine, I still say go for it. Why people would tell you not to, I have no idea. Yes, with your approach, you will likely end up with a very poorly functioning engine (if you even finished it in some aspect), BUT, experience is experience no matter what the final product is. Researching and building your own engine is a great way to learn how they are generally built, which gives you a better understanding of how to work with them.

Pretty soon you’ll be despising have to start up your IDE every time you want to do some programming. It doesn’t help you when the most trivial of things start to become a bother you know, programming is filled with repetitive and trivial matters. They’re necessary evils.

You likely don’t have to “create” such classes each and every time, you copy/paste them.

First of all, if your age didn’t matter you wouldn’t have posted a comment on it. Second, if you’re too lazy to copy+paste a window and game class you certainly won’t have the motivation to complete an entire engine.

Ok never mind close the thread