Advertisement

Start with library or complete engine?

Started by April 12, 2018 02:45 PM
5 comments, last by Alberth 6 years, 10 months ago

Hi GameDev.net

I have almost 5 years of experience as a java developer. On my day job I create web applications, mostly back-end work. So I know a few things about programming, and I'm not afraid to write some code. I'm looking to get into game development as a hobby, as a side project. Would be nice if eventually I could have my own mobile game published (even if it has only a handful of downloads). Will probably focus on 2D games. I'm not an artistic person so I think it will be easier to find free 2D assets than 3D assets to use.

I'm not sure how I should start this journey. I think with a library I might learn more about the concepts, what happens under the hood of a game. While with a complete engine I might be more productive. The things that I have tried so far:

LibGDX: Java, so definitely within my comfort zone. I have followed a tutorial that I found on their wiki. While it was a simple catch game, it actually amazed me how complete (graphics, sound, gameplay) a game I had already created with such few lines.

Unity: C#, shouldn't give me much difficulties. Completed a few of their beginner tutorials. After completing the 2D UFO game I'm now trying to see if I have enough knowledge to make a Pong game.

It's entirely up to you. Lots of programmers enjoy the tinkering aspect that comes with starting low-level and building up their own set of routines, others like to see results as soon as possible and consider the coding to be more of a means to an end. And then there's the issue of whether you care about learning new skills while you do it, or whether that is just time wasted.

My default recommendation is usually "Unity/C#", but if you are comfortable with Java and have had some decent results from LibGDX then you can certainly continue with that. In particular, working with larger engines like Unity (or Unreal, or similar) can often mean a period of readjustment for someone who is already a programmer, while they learn how to adjust their normal method of working into the way that the engine 'wants' you to work. That alone could be a good argument for sticking with LibGDX in the short term, at least while you get used to the fundamentals of game development.

Advertisement

It certainly takes some getting used to. While I can easily set up a whole architecture for a web application I don't even know where to start when it comes to games. 

Another advantage of Unity seems to be the availability of learning resources. 

Short term I'm certainly interested in learning. But what I learn I want it to be valuable long term as well. 

Engine versus a library are complementary, I think. Using a library means that quite some of the ground work needs to be programmed by you, so you get to see how the core game loop works for example.

An engine hides much of the low level stuff, and you step in at a much higher level of things directly relevant to the game, where motion, physics, and details of getting the images to the screen have already been done for you.

Both are valuable to understand in the long term, imho.

 

As for what to do, nobody said you can't do both. You can for example just play with both for a week (or make 1 game, or whatever you want as first experiment), and see how you like it.

Well, I'm currently trying to build pong with Unity. Perhaps I should try to make it in LibGDX afterwards.

Being a programmer I certainly want to have some lower level knowledge as well. I'm not looking to build games simply by drag and drop ... Is LibGDX low level enough to learn about the game loop?

Game loop sounds mysterious, but it's just a loop running at animation frame rate, handling user input from mouse/keyboard, updating game state, and rendering graphics to the screen.

LibGDX looks like you have to write that loop yourself, so yep, low enough :)

 

Drag & drop is generally not enough with engines, you always have to write logic, generally by programming it in C# with Unity. Unreal has blue-prints, for users afraid of typing code, but that's of course programming with the mouse :P

Engines are mostly a framework with a lot of default functionality that you can extend, from what I understand of it (I also prefer the DIY solution, as it's more fun for me that way).

Advertisement

This topic is closed to new replies.

Advertisement