What to use, What to use!

This post is a little look into how and what I chose to make games in. I will make some criteria and critique a few game libraries and engines based on that criteria. If you are deciding what to use to create your stuff in hopefully this could help your decision process! If not, I hope at the very least It’s an interesting read.

 

So we are one the same page…..game libraries vs engines (skip this if you already know what it is)?

Before we begin I would just like to make sure everyone is on the same page. We will start with a few definitions.

Game library

When referring to code, a library is a package of reusable code that you import into your project and can use within your code. Doing this stops the reinvention of the wheel, for example, if I need to calculate PI to 10 decimal places and someone has already written the code to do it, why not just use that code.
SO! a game library is a package of reusable code which revolves around the game development process and shortens this process by giving you code that will at the very least, make things you need (like a way to draw images on the screen) easier to implement in your code.

Where do you write the code!? In an IDE silly! IDE stands for Integrated Development Environment and is a piece of software that allows you to write, run and debug code as well as any other features the creator decided to include (like auto-complete on certain words).

so to conclude, you have the IDE where code gets written, the code you write, and the code you import/use within your own code.

Game Engine

A game engine is a piece of software that is specially made to create a game in the same way Microsoft Word is made to write documents. They both trivialise certain aspects of the creation process, for example, Microsoft Word has tools to insert a table into your document, if you were using Notepad you would have to either create a table in another software (and manually get it into your document) or improvise like crazy.

In comparison, if you were using a game engine you might be able to create and layout a level within the engine, but without it, you would have to either create and layout a level in another software (and manually get it into your game) or improvise like crazy!

Differences

If you use a library then you will be 100% coding your game and importing other people’s code to ease the process. In contrast, a game engine can be so feature-rich that you won’t even have to write a line of code. Most game engines still support programming, but you will be under the limitations of the engine.

The main advantage/disadvantage is that you could create a game easier and faster with a game engine, but you get greater control over your game and how it works when using a game library. At the end of the day, it depends on what you prefer and find easier to learn!

 

Critiquing a few libraries and engines

Over the years I have been trying to find a game library or engine that I can love using, this has lead me to hop from one technology to the next. Not because I’m indecisive but because it turns out I’m incredibly picky about the tools I use to make games, and I should be!…I guess.

Here I will create some criteria and use it to inform you about a few of the libraries and engines I have used.
So! Here is my criteria!

Can you program in it? (applies more to engines) – I actually like programming, drag and drop systems are not for me.

Is it Lightweight? at times it feels like it’s you VS the IDE or engine if it’s too feature rich, I prefer a simple light weight approach.

how fast can I start writing game features? (applies more to libraries) – If I have to go through a lengthy setup process, import a bazillion things and write 100 lines of code just to get a window to pop up, I’m out!

Is UI navigation simple and does Its look nice? (applies more to engines) If its something I will be using for hundreds of hours a day in and day out, it’s no good If I hate looking at and using it.

Does it target a platform? -It has to be easy to distribute and officially export to a platform even if that platform is just windows!

Do things made in it perform well? – As long as what I make doesn’t run like a slideshow.

Lets get judgy!

 

Slick 2d 

http://slick.ninjacave.com/

This is a library written in and is for Java. I used to use this while I was in university, its built on top of JLWGL which is a game library that is capable of handling both 2d and 3d games. Slick2d is made to direct the power of  JLWGL solely into the development of 2d games by giving you access to functionality that would make implementing a 2d game easier.

Can you program in it? (applies more to engines) – Yes!

Is it Lightweight? – Yes!

how fast can I start writing game features? (applies more to libraries) – Not as fast as I would like  and its a bit of a pain to set up

Is UI navigation simple and does Its look nice?(applies more to engines) -Yeah, pretty simple to use but only if you already know how to use java

Does it target a platform-No, it just compiled to a simple jar when I used it but probably has updated since then

Do things made in it perform well? -Yeah actually

4/6

I quite liked this library but other things do what it does slightly simpler and better in my opinion though if you know Java already it’s not a bad choice.

 

Unity 

https://unity3d.com/

If you haven’t heard of it, Unity is a game engine where you can program in c#, I explore using it now and then and made a small concept game with a friend using It. It’s a pretty good engine; I just feel that it’s a good 3d engine with tacked on 2d features.

Can you program in it? (applies more to engines) – Yes!

Is it Lightweight? – No!

how fast can I start writing game features (applies more to libraries) – Very fast!

Is UI navigation simple and does Its look nice? (applies more to engines) – No, too many side menus and you write code in an IDE that is separate from the engine!

Does it target a platform? – Yes! Pretty much every modern thing you can think of

Do things made in it perform well? – Yes

4/6

might be what I use when I start to develop 3d games but for now, I would just rather use an engine specifically built for 2d games!……c# isn’t my favourite language to use either.

 

Processing 

https://processing.org/

Processing can be considered as its own language based on the Java language and was created to draw to the screen easily, it even comes with an IDE but you can also use it as a Java library if you want better access to classic Java! I used this to write my first game……that I didn’t fully complete.

Can you program in it? (applies more to engines) – Yes!

Is it Lightweight? – Yes!

how fast can I start writing game features (applies more to libraries) – very fast! It’s easy to use and set up, just a shame it doesn’t have tile map support or anything like that, but it’s not specifically a game library!

Is UI navigation simple and does Its look nice? (applies more to engines) – Yes!

Does it target a platform? – Yes! Windows, android

Do things made in it perform well? – …..No

5/6

I loved using this; the only problem is my game used to run like ass on other people’s computers, not everyone’s, just some. The game wasn’t doing anything crazy, and maybe I could have optimised my code better? Maybe it’s just a slow language? Maybe Processing 3 would run better(I was using processing 2)? Either way, before the performance thing it was my development tool of choice.

 

Play-clj 

https://github.com/oakes/play-clj

This Is a library written in and is for Clojure, Play-clj is built on top of Libgdx another versatile 2d game library that works with allot of languages that run on the JVM.  Libgdx is already compatible with Clojure but does not take advantage of the fact Clojure is a functional programming language, here is where Play-clj comes in, it modifies the library so you can stick with the practices of functional programming and still make games! This modification to the Libgdx library means you can do some pretty cool things like update game code while your game is still running.

I have a small video tutorial on it

Can you program in it? (applies more to engines) – Yes!

Is it Lightweight? – Yes!

how fast can I start writing game features (applies more to libraries) – Pretty fast!

Is UI navigation simple and does Its look nice? (applies more to engines) – Yes!

Does it target a platform? No! Not that I know of

Do things made in it perform well? – Yes!

5/6

As far as I could tell it only compiled to a jar (though libgdx has a bunch of targets!), but the reason I don’t know for sure is because the documentation for Play-clj isn’t excellent and I couldn’t find much surrounding exporting code. The level of documentation is alright if you are willing to pick through existing code!
I would use it seriously if it had solid platform targets and its documentation was a bit better.

I still use it for fun though!

 

Arcadia-Unity 

https://arcadia-unity.github.io/

Its unity but you can use Clojure instead of c# making it instantly worth a look

Can you program in it? (applies more to engines) – Yes!

Is it Lightweight? – No!

how fast can I start writing game features (applies more to libraries) – Very fast!

Is UI navigation simple and does Its look nice? (applies more to engines) – No too many side menus and you write code in an IDE that is separate from the engine!

Does it target a platform? – Yes!

Do things made in it perform well? – Yes!

4/6

The same comments as the unity entry apart from this is what I will probably use when I start to create 3d games. Documentation is incredibly light at the moment but it uses the same functions as the c# version does and I already know how Clojure works so it shouldn’t be too bad converting the c# documentation into Clojure.

 

Gamemaker studio 2

Gamemaker, an incredibly feature-rich game engine that uses its own language for programming called GML (game maker language). This engine was the first ever thing I had looked into before i started uni….I hated it. A couple attempts to use it later…still hated it. Now Gamemaker Studio 2 has come out it feels pretty good to use.

Can you program in it? (applies more to engines) – Yes!

Is it Lightweight? – No, but taking into consideration that you don’t have to leave the software to do anything (you can write code and make sprites right in the engine)…yes!

how fast can I start writing game features (applies more to libraries) – Very fast!

Is UI navigation simple and does Its look nice?? (applies more to engines)  – Yes!

Does it target a platform? – Yes!

Do things made in it perform well? – Yes!

5.5/6

This is what I am using to make my current game and it’s great so far. Though it’s not very lightweight, each individual feature is well developed and can stand on its own as a separate application and that’s what’s great, you get a level editor, an IDE and an image processor all within one piece of software.

 

Conclusion 

So what did I learn! Formalising your preferences into a list of criteria helps allot. Before, I would jump from one technology to another and because I didn’t have a solid thought out list of what I was looking for, sometimes it would take me months of using a thing before I realised it wasn’t right for me! That is allot of wasted time, in fact I plan to rewrite my first game in another technology for this reason.

 

Leave a Reply

Your email address will not be published. Required fields are marked *