Search code examples
libgdxgame-enginemonogamelove2d

Game dev engines


Sorry about my question, I know that this is a stupid one. I want to begin in game dev, where should I start? Should I start with libGDX, Love2D or with Monogame. I know how to program in this languages (JAVA, LUA and C #). I just wnat an opinion from those who have more expirience than I. Please, help me. Thank you


Solution

  • I'm afraid the answer to questions like these is "It depends."

    There are several factors you'll want to consider:

    1. Do I know the programming language?
    2. Does it support the platforms I want to put my game on?
    3. How complex is my game?
    4. How big/present is the community?

    In full disclaimer, my experience has primarily been with libGDX and Unity, with a smattering of SFML.

    Programming Language

    Learning to create games becomes a lot easier if you already know how to program, but only if you know the language you're writing the game in. For example, I'm most knowledgeable with Java, and while C# is similar in many regards, I still lose a lot of time in Unity to understanding the quirks of the language.

    • If you know Java, go libGDX
    • If you know C#/.NET, go Monogame
    • If you don't know how to program, Lua is probably the easiest to pick up (although you might also consider a tool like GameMaker).

    Platforms

    Honestly, this is becoming less and less of an issue as more interpreted languages are supported on more platforms. It is worth noting that some frameworks make it easier to be cross-platform than others. For example, libGDX provides a tool which generates all the Android/iOS/HTML template code for you when you create your project.

    • Targeting all PCs: I recommend libGDX. MonoGame and LOVE also provide cross-platform support, but in my limited experience, Java tends to provide better cross-platform support as a language- it's been doing it for a long time.
    • Console Platforms: Of the three, I recommend MonoGame. To my knowledge neither libGDX nor LOVE support consoles.
    • Web Platforms: I recommend libGDX, as you can export your game as a web app powered by GWT.

    Complexity

    The more complex your game is (in terms of computation, graphics, physics, etc.), the more sophisticated a game engine you require. Conversely, the simpler your game, the more those shiny game engine features are going to get in the way. Another hint here is to look at what published indie game developers have used (Bastion is a good game that was written in MonoGame, so you know it works).

    • Complex: Go with libGDX or MonoGame. These languages are typically more performant than Lua.
    • Not Complex: If you're just learning to program, then LOVE might be a good place to learn the basics, although you'll still probably want to move up to a more robust game engine.

    Community

    Especially when you're getting started, community is important. You need a bunch of friendly people who can help answer your questions or look at your buggy code with you. Rather than try to find a way to measure involvement, let me give you an example of some things to look for:

    • IRC Chat: An active IRC imho is an excellent way of knowing that there is a helpful community.
    • Forums: If you look at the forums and see that the last post was in 2014, that's a pretty good indicator that the community is small or dead.
    • Game Galleries: This gives you an idea of how many people are using the library, and what they were able to do.
    • StackOverflow Activity: The more questions you see on SO around that game engine, the more people are likely using it, which means the larger community it is likely to have.

    Hopefully this helps- there are dozens of other game engines out there (many of which might fit your needs better than these three), but we'll need more details to go on in order to give a good recommendation.