Monthly Archives: March 2016
On Libraries and Languages

Lately I’ve been really bored with school. I’m still getting perfect grades, but it isn’t as exciting as it used to be. Unfortunately, I haven’t been able to find any new languages or libraries to occupy my time either. I usually pop around from thing to thing and learn as I go, but now there isn’t much I feel like learning. I’ve also tried to come up with project ideas to practice skills I already have, but I haven’t been able to come up with much. Recently, Stardew Valley was released and I bought it. It is an amazing game. I’ve sunk tons of hours into it now, and I’m loving every minute of it. I was curious to see how the game was made and why it was restricted to Windows. It was made with XNA, in C# most likely. They seem to not want to port to MonoGame, and therefore Mac and Linux. Such an amazing game, made in a library I wrote off as not viable. It has me thinking long and hard about my biased opinions. However, in this case I have an excuse for not liking XNA. I’m primarily a Mac user. No XNA there. Sure there is MonoGame, but it doesn’t seem to have the love that XNA receives. I actually installed Windows 10 through Boot Camp just to play this game and mess around in MonoGame, as the Mac version of MonoGame wouldn’t work for me. I’ve again come to the conclusion that XNA / MonoGame is not viable for me. I need cross platform functionality.

I few options always cross my mind and the same questions and frustrations always pop up. First lets look at the languages I love most, regardless of their viability for cross platform games.

  1. Swift
  2. Scala
  3. C#
  4. Java
  5. C++
  6. JavaScript
  7. C
  8. Python

When bringing in the cross platform requirement Swift dies instantly, open source or not. C# also fades since its support is sketchy at best. Python fades due to lack of general game libraries and speed. C is out due to its lack of Object Oriented Programming support. JavaScript is out because your code isn’t private. The last three are fine.

  1. Scala
  2. Java
  3. C++

Now I have to consider the gaming libraries available in these languages. Raw OpenGL is almost always available, but I’d like to avoid the low level stuff for now.

C++

  • Allegro 5
  • SFML
  • SDL

Java / Scala

  • libGDX
  • LWJGL
  • JMonkey
  • Slick2D

Allegro 5 was the first true gaming library I learned. I still love it and I know how to do a lot with it. I do not like that it is in C. Same goes for the widely popular SDL. SFML is my favorite here as it is in C++ and has a few add-on modules that extend its feature set.

On the JVM we have quite a few libraries available, most of which I am going to disqualify for myself. Slick2D is old, JMonkey is for 3D, and LWJGL is too low level. LibGDX wins here. It provides lots of add-on modules and has a lot of functionality built in.

Which to choose? I don’t know. It has been some time since I messed around with SFML, so I think I will go with that for awhile.

Until next time!