Should I first make an engine, or just program the game?


I’ve been planning to develop a 2D platformer, but I wanted to ask something before I started my first project:

Is it worthwhile to program a game engine that would deal with basic aspects (collisions, animations, getting inputs, etc), or should I just focus on the game itself and put everything there?

Maybe there’s no difference at all and I’m just a newbie, but I’d love to hear everyone’s opinions!


Always engine for me, as all my games will be in 3D, my engine is geared as such, you can make one for 2D… Custom physics should be easy that way too…

1 Like

Since this is your first project, I recommend starting on the engine. Start with each part (Ex. animations, collisions) and work to make them as modular as you can. Then, design a simple test level around your engine with some core features your game requires. That will help you identify what you need to modify in your engine so that your game is well-equipped and ready to be developed.


Also, I almost forgot, welcome to the forums.

1 Like

Yeah, you’re right! I’m gonna start simple, then go off from it! Thanks! :]

Aah! This community seems to be really friendly and active, so thanks for the help!

1 Like

When I started my engine I started the engine editor. I set up the t key to change in to playmode. That way I could quickly added new elements to my project and test them as I went.

Made it really fast for me and I had a fully working editor to make the levels with

And welcome to the forum.


As an alternative approach, I suggest you actually develop your engine and your game in tandem. In this way it’s easy to focus your engine efforts to provide functionality that your game needs and let it evolve as you develop. Do try to consider things you might need, but also try not to get hung up on them.

Basically, start from, “I want my game to do (insert feature)”, then create an engine that facilitates that. Create your game and utilize the engine to implement that feature. Then move on to the next feature.

An advantage of this approach is that it helps ensure you don’t actually spend time writing something you’re not going to ship. For example, you’ve listed that your engine should have collisions, animations, input. At the start of a project it’s easy to envision all the things that you want. As you go further, those things change. For example, you may decide that for your initial release, animations aren’t actually that important because you took the art in a different direction. If you don’t actually need that functionality, not much point in coding it :slight_smile:

I say this from experience… I’m one of those people who have, in the past, gotten super caught up in details and having a robust engine. What tends to happen is I spend a bunch of time working on an engine that I end up not using, or not utilizing fully. I’ve made a lot of effort lately to shift my approach and I’ve found it to be beneficial. Do ensure you’re following SOLID coding practices though, as it will make it much easier to extend your engine to meet the needs of your changing requirements.

Good luck!



Ooh for sure! This is definitely the best option I think. It would help me set my scope down, as well as see bugs and etc… I’ll for sure try this! Thank you so much!!