Subscribe to GameFromScratch on YouTube Support GameFromScratch on Patreon
19. July 2017

The following tweet, sparked off a bit of an interesting conversation about game development, game engines, game journalism and it’s affect on end users.


I understand the perspective Adrian takes and I agree and disagree with him all at once.

First off, the part I agree with.   The end users should not be prejudging, or in this case, outright dismissing games based of the engine they are developed in.  This is like dismissing a film because of the way it was filmed.

However, that same analogy holds true.  Think back to the beginning of the 3D movie craze around the time of Avatar and all the CRAP films that were made because of this focus on 3D.  Dismissing a film because there was a 3D version available was a dumb thing to do... but being wary of it it certainly wasn’t.

This is where I stand on the subject, from a developers perspective.  When it comes to 2D games, I think this is pretty much a moot point.  The game engine is really quite transparent on 2D titles and really it’s the art that sets the tone.  With 3D however, it’s not so simple.  3D game engines certainly put their fingerprint on the games they create and game developers should be very aware of those fingerprints. 

There are two ways a game engine influences the underlying game, design and results.  Let’s quickly talk about both.

Design is when the structure of a game engine influences the structure of the underlying game.  For example Unity by default has a very level oriented work flow, while CryEngine has a very landscape/terrain focused design and both it and Unreal Engine are very 1st/3rd person oriented in their design.  In all cases this can be overcome...  Mortal Kombat is an Unreal Engine game, Cities: SkyLines was made using Unity and Star Citizen was made using CryEngine (now Lumberyard).  In every case though, this took a great deal of effort and wrangling an engine into doing what the engine didn’t want to do.  I remember a great deal of complaints among early Kickstarted CRPG games (like Wastelands 2) about the game engine negatively influencing the end game.

Where it is increasing noticeable though, its in the results (AKA graphics) and this is for a couple of different reasons.  First, when you are dealing with a 3D game, there is a great deal more computation going on behind the scenes than in a 2D title.  You have a 3D renderer, materials system, lighting system, physics system etc.  All of these things are complex and will come with defaults to make a developers life easier.  Thing is, every single time people go with the defaults, it’s a finger print left by the game engine on a game.  You will often see comments like “Unity games are ugly”, where in reality the end user is picking up on the default renderer, lighting, etc.  The other tell tale sign of a game engine is using assets from it’s collective asset store.  An asset store is a potential boon to developers, especially ones with limited resources.  On the other hand, hearing the same jingling, seeing the same model or texture, etc... will rapidly lead users to find the games feeling very “same-y”.  You would be amazed what our subconscious mind picks up, there is a reason we have Deja vu so often, and no... nothing was changed in the Matrix.

Another reason why end users might wish to be aware of what game engines a game was written in comes down to hardware.  Some engines simply run poorly on some hardware or have higher system requirements, etc.  For example, all CryEngine powered games could be customized and tweaked using the same process and could be expected to run similarly.  This is a very valid reason for consumers to be aware of what engine a game was written in.

Finally, some readers, even less technically inclined readers may in fact want a peek behind the curtain.  I certainly know I eat this kind of stuff up.

So, should journalists stop talking about what game engine a certain game is made with?  Certainly not.  Don’t focus on it, or condemn because of engine used, but discuss it?  For sure!

At the same time any gamer that’s dismissing games outright due to the engine they are created with are doing themselves and the games in question a massive disservice.  Finally, I don’t think game developers should be overly concerned which game engine they go with, so long as it fits their need.  They should however be very aware that these game engines do put their fingerprints all over their games if they aren’t careful!


23. October 2015


If you are a LibGDX developer or even a Java developer hoping to target iOS some pretty big news just happened.  In a nutshell Xamarin acquired RoboVM (more details here).  If both of those names are meaningless to you, here’s a quick rundown.


Xamarin are ultimately the company formed around Mono, which is the open source cross platform version of Microsoft’s .NET framework.  That’s actually simplifying their history a fair bit.  Many years ago they were a company called Ximian, and their big push was trying to make Linux on the desktop happen and part of that process was the Mono project.  In between they were purchased by Novell, Novell blew up in spectacular fashion and from the ashes Xamarin was born.  Of perhaps most interest to game developers, Xamarin developed the technology that Unity is built on top of.  In fact, if you are working in a C# based game engine ( MonoGame, WaveEngine, Paradox, etc ) chances are it requires a Xamarin license to target iOS or Android.


RoboVM on the other hand are a much smaller developer that provide a very similar product, just targeting Java instead of .NET.  Basically RoboVM provide an iOS runtime for Java applications, enabling you to run Java apps pretty much unchanged on iOS.


So, why do we care?


Well first off, RoboVM is the technology that LibGDX depends on for iOS deployment, ironically chosen while moving away from Xamarin years ago.  In many ways, RoboVM owes it’s success and existence to the libGDX community.  In fact, the LibGDX founder Mario Zechner started working for RoboVM about a year ago.  Note, working for…  it isn’t his company, something far too many people seem to miss these days.


Fast forward to recent history…

  • RoboVM is now owned by Xamarin
  • the core of RoboVM, the Ahead of Time (AoT) VM is no longer open source
  • the pricing is much less indie friendly


So basically a core component that LibGDX depends on to support iOS just became closed, more expensive and owned by a company that doesn’t really seem to get game developers.  This all in a world where people don’t expect to ever pay for anything… although that’s certainly a conversation for a different day.


To Mario/RoboVM’s credit, they have offered a free license option for LibGDX developers.  You need to apply for the license, have a development team limit of 3 developers and need to activate the license on your build machines with a machine count limit attached to the license.  Of course it also adds the pain of dealing with a license were there previously was none.  The one silver lining in all of this is you get debugging support including in this license, something that was previously a paid feature.


At the end of the day, what exactly does this mean for LibGDX developers?  Well you are now basically in the same boat as C# developers.  To support certain targets you now have a pay wall in front of you.  Of course the current license offer will mitigate that for many existing LibGDX developers but how that actually turns out is yet to be seen.  With that license offer in place, LibGDX devs are still in a better place than most MonoGame/Paradox/et al developers out there, to say nothing of the fact there is no added cost to support Android.  They are however certainly in a worse place then they were before.


I’m not going to lie and say this development is great news, it certainly isn’t.  It however isn’t the end of the world scenario many are making it out to be.  If enough community demand exists, they can pick up the code for RoboVM and run with it.  Or port to another Java on iOS solution such as Codename One or Avian.  Or explore a different approach entirely like Unity are moving toward.  Of course they could also take the path of least resistance and keep working with RoboVM.


There are however two meta-points I want to mention here.


First off, no matter how much this affects you personally, some of the reactions I have seen to this have been downright off putting.  The amount of heat Mario has taken over something that is basically beyond his control is just sickening.  It really makes one wonder why people would even contribute to an open source project in the first place.   Now caustic end users in an open source is nothing new, but it’s always disgusting to witness.  Now Mario is a big boy and is handling fine so far as I can tell, but really ask yourself… if you had to put up with this crap, would you bother donating your time anymore?


Second, Xamarin, if anyone from that company happens to be reading this, I hope the entire experience is an eye opener.  When the entire indie game development industry looks at you at best as a necessary evil, at worst as the devil, it’s time for some introspection.  Part of that relates to the above paragraph… people are horrifically over entitled these days and the thought of having to pay for anything is galling.  Ignore this crowd, there isn’t much you can or should do.


On the other hand, with a more reasonable licensing, you would have a much larger community of advocates and I have to assume greater profits.  Your legacy as a tool vendor to corporations really shows in your pricing model.   Heck, look at LibGDX for example… they were using RoboVM in the first place to avoid you!  If you followed the Unity or Unreal model of geared to income licensing then suddenly your products would become much more appealing to a much larger segment of the population.  Your license fees are a bitter pill to swallow for a hobbyist looking to release a free title, while someone who was commercially successful would probably be willing to pay a greater amount.


At the end of the day this isn’t a story that is going to play out in a single day.  There is an active discussion and more information on the LibGDX forums that I think is the ideal place to discuss things.  Just keep the personal insults out of it.


EDIT: One major concern people had with the license granted for LibGDX developers was how long it would be valid.  I just had the following conversation with Nat Friedman (CEO of Xamarin) on Twitter:



Other very interesting things related to Xamarin licensing were discussed, which I will be putting in a separate post.  This announcement is very relevant to LibGDX developers however.


23. September 2013


I’ve recently been having a bit of a fight with Google development tools, GWT and the GWT plugin for Chrome on Windows 8 specifically.  Following the linked instructions I did manage to get the plugin installed, however today I started experiencing a new joy…  Every few minutes I would experience:




It would sometimes happen on load, other times when I tabbed back to Eclipse.  Apparently the GWT plugin is notoriously fragile.  Given the fact it doesn’t even run on Windows 8 without something of a song and dance, this isn’t really shocking.  I did however find a fix.  If you experience a GWT DMP Plugin crash in Chrome, check the following.


Go to chrome://extensions in Chrome.  Locate the plugin and click options:



In my case, there were no inclusions set for some reason.  Make sure localhost is added like so.  ( I did too just in case… )




And, no more crashes!  That said, I’m still fed up with the entire process.  There is a project called Super Dev Mode that removes the plugin requirement completely, but there is an element of complexity involved. 


1. September 2013


I finally decided to check out LibGDX, a very cool and popular Java based cross platform game development library.  I’ve been meaning to check out LibGDX for ages, it’s the Java part that turned me off.  It’s not the programming language, Java is a really good one, it’s the eco-system.  Always it seems like when dealing with Java I deal with a whole slew of new headaches.  Often it seems the cause of those headaches is Google.  Today sadly was no exception.  This post reflects not at all upon LibGDX, a long time ago I intended to run a series of PlayN tutorials, but I spent so much time supporting the build process or fragility of Eclipse that I simply gave up.  Fortunately LibGDX ships with a setup tool that makes a bunch of these problems go away, but it’s certainly not solved the problems completely.


The first problem is partially on me, partially on Eclipse and a great deal on Java.  I installed Eclipse as it’s the preferred environment for LibGDX and often trying to do things the non-Eclipse way can really make things more difficult, at least initially.  ( I massively prefer IntelliJ to Eclipse )  Right away I fire up Eclipse and am greeted with:

failed to load the JNI shared library

If you are a veteran developer this is no doubt immediately obvious to you.  I checked the most common things, first make sure JDK is installed.  Make sure JAVA_HOME is set, make sure javac runs from the commandline, run javac –version to make sure things are working right.  In the end it was a version mismatch.  I downloaded the 64bit version of Eclipse and the 32bit version of the Java JDK.  The obvious answer is to download the 64bit JDK but I really wouldn’t recommend that.  Amazingly enough in 2013 the 64 bit version still causes problems.  For example, FlashDevelop wont work with it.  That is just one of a dozen applications I’ve seen that wont run with the 64bit version.


Not really a big deal.  Eclipse should have done a heck of a lot better job with the error message.  If it said “64bit JDK required” this would have taken about 10 seconds to solve.  Keep in mind this is a problem that’s existed for 3 or 4 years, so don’t expect an improvement on the Eclipse side any time soon.  Accessibility and polish has never really been a priority when it comes to Eclipse.  The fact 64bit Java is still problematic, that’s 100% on Java though!



Anyways, other than fighting with Eclipse and Java, everything went wonderfully with LibGDX.  I got my project made and configured without issue ( beyond oddly enough, the Setup UI wanting the original GDX install zip file, I had already deleted… oops ).  Then when I went to run the HTML5 target in Chrome I get:




I click the Download the GWT Developer Plugin button.


Nothing.  No error, no page load, nothing.  I reload and try again.


Check my internet connection… all good.




So then I grab the URL for that button and it loads a Chrome Store page ( at least it did something! )



This application is not supported on this computer.  Installation has been disabled.


Lovely.  If I got that message when I clicked the initial link, things would have made a great deal more case.  Want to know why I hate Google for this one?


First off… it works in Internet Explorer and Firefox.  It’s only in Chrome that the GWT developer plugin doesn’t work ( on Windows 8 as it turns out ).  But that’s not the hatred part.

Take a look at GWT issue 7778.

"This application is not supported on this computer. Installation has been disabled" while installing GWT developer plugin on Chrome

So, its a known issue of Google’s developer tool working in Google’s browser on Windows 8.  But the hatred part…



November 9th, 2012.  It’s been a known and reported problem for almost a year.  Fixed?  God no!


Welcome to working in Google tools.  You will spend a stupid amount of time trying to debug what the problem is, only to find yourself looking at year(s) old tickets that have been ignored by Google.  When working in Android I ran into common tickets with hundred of comments that were years old on nearly a daily basis.


This isn’t a one off rant, this kind of stuff happens EVERY SINGLE TIME I work with Google technology.  I have literally never once NOT run into a problem, from Android, to DART, to NaCL to GWT.  Every single time.


It’s not such a big deal for me, I’ve got the experience enough when working with Google tools to expect minimal or wrong errors when problems occurred and for half assed support when I research the problem.  Frankly I just stay the hell away when I can.  Where its a gigantic deal breaker is when a new developer runs into these additional hassles.  In some ways it’s kind of infuriating as great libraries like LibGDX become that much harder for developers to access.


14. June 2013

So a few weeks back the RazerBlade 14" laptop was announced and frankly this is exactly the kind of machine I have been looking for for a very long time.  I am exclusively a laptop user, but also a gamer and obviously as a game creator, I put a certain additional demand on my machines.


Right now, I am working primarily with a pair of machines.  The first is a Asus RoG G53SX.  Its coming up on two years old now, but it has a i7 with 16GB of RAM as well as an OK nVidia 560M video card.  So far as laptops went a year and a half back, this was about as good as you could get for a game playing system.  There is really only one problem:



It's a monster.  Endor has small moons that weigh less, then you can take into account another couple pounds for the equally monstrous power supply.  Plus the fans literally burn my legs if I game with it actually on my lap!


Still, it serves it's purpose well.  When I am home at my desk, this is my primary machine, but it's portable enough that I can move between rooms or take it with me if I need a full power machine.  I will say though, lugging this thing around isn't pleasant… good exercise, but not good fun.


Earlier this year when my ultra portable died I ended up replacing it with a MacBook Air.  This wasn't my intention, I actually already have an iMac that I can port/test for iOS on, so I actually purchased this laptop with the intention of running only Windows on it ( in the end, I dual booted ).  When shopping I found that portable laptops where either cheap and awful, or expensive and awful!  At it's price level the MBA was actually the best constructed while still being ultra portable.  It's been a good machine and I can't complain.  The performance is OK, but if this was my only machine I certainly wouldn't be doing any gaming!  The HD4000 just isn't up to the task, and frankly, the battery isn't either.


On a typical day, I spend about 4 hours out and about using my MacBook, then another 4-6 working or playing on the Asus at home.  Wouldn't it be wonderful if I could just have one machine?  One that had the portability of my MacBook Air, but the power of my "desktop replacement"?


Enter the Razer Blade!  In case you haven't heard of it, Razer announced a 14 inch laptop, packing a 675M GPU and the newest Haswell Intel CPU.  Most impressively, they did it in a .66inch heigh form factor!

Razer Blade 14inch 06


For me, and my circumstances, its a match made in heaven!  The only thing I wasn't too keen on was the price, but at the end of the day if you want good + small + fast, you are going to have to pay for it.  It's still cheaper than a MacBook Pro and seemingly of comparable build quality.


Anyways, this is exactly the type of laptop I have been looking to buy for the last decade, and that has never existed.  After a couple days humming and hawing, I pre-ordered one.


Then E3 came and they announced "they were rewarding their loyal pre-order customers" and shipping early.  This was yesterday, so my laptop was being shipped to me about 2 weeks earlier than I expected.  WOOT!


Then today I get a notice that my shipment was back-ordered and it would be at least a 2 - 4 week wait.


So I basically went from patiently waiting for the ship date to arrive, to exuberant that it was going to be here in a day or two, to outright frustrated and waiting at least as long, perhaps twice as long as I originally expected, all in the span of 2 days.


This was really really really bad PR Razer!  The whole idea of back-ordering a pre-order is already quite irritating.  I mean, if you are going to not be able to ship on your ship date… why the hell are you taking pre-orders?  Why in my right mind would I pre-order something from you if it doesn't help me in the slightest. More so, you really blew it on the PR front.  The communication has been awful.  Frankly if it wasn't such a unique product, my order would have been cancelled already.  It's not really a matter that a manufacturing delay occurred, that happens, it sucks, but it happens.  


Where you blew it was managing expectations.  I was ok with my initial release date, thats the entire concept behind pre-order in the first place, so when that date arrives, you are sure you will get one.  Then you got my hopes up and my anticipation going by announcing at E3 that you shipped.  Not only aim I not receiving now… I am not even getting it on my original ship date… hell, being back ordered, who knows when I will get it making me question why the hell I pre-ordered in the first place.  Oh and on top, the notice of back order was a system generated message with not a lick of explanation why.


This is my first transaction with Razer and I am certainly not impressed.


Sorry, end of rant.  In the grand scheme of things it's very minor… I have to wait longer for a laptop I don't specifically need ( if my laptop was broken, that would be a much different story! ).  If they hadn't announced it was shipping yesterday, or it was explained why it was backordered it would have simply irritated, not aggravated me.  It's the combination of aspects that got me steamed… and incredibly disappointed in Razer.

Totally Off Topic

AppGameKit Studio

See More Tutorials on!

Month List