Evaluation of 2D game engines
Evaluation of Game Engines for CitiHopper
Löve2D
Löve2D is a great game engine to start with and has excellent documentation and was perfect for the game jam. It was really fast to get up and running using the examples included in the documentation. Löve2D uses lua programming language. It has no IDE and you can use any editor and simply run the programs using the love.exe command.
However when we tried to build for mobile, problems arouse and we decided to try Godot instead.
Godot
Godot consists of its own IDE much like unity. Several langages are supported. We tried to use its own scripting language GDscript. Learning the IDE and new way of thinking discouraged us from Godot and also we weren’t able to build a simple example for mobile. So we turned or hope to HaxeFlixel.
HaxeFlixel
HaxeFlixel showed promise. It doesn’t have an IDE that we had to learn. The programming language used is Haxe, which seemed very nice. Since we wanted our game to be physics based the physics engine was important, In haxeflixel the physics engine is not part of the game engine but you can use a number of physics engines. We tried Nape physics engine and Box2D but we found it too complicated to use compared to Box2D in Löve2D, so we gave up and moved to Unreal Engine.
Unreal Engine
We had lots of previous experience with Unreal Engine so it made most sense to try it next. Unreal engine does have 2D mode in the form of Paper 2D that we had no experience with and had not heard anything good of, so we decided to make the game 3D. We had not tried building for mobile before but it was relatively easy to build for Android, and somewhat more complicated to build for iOS, but still simple once you get all the certificates right. We have developed using C++ before but decided to use as much blueprint as possible for CitiHopper, which in the end meant no C++ at all.
The biggest problems with Blueprint is structuring the code. You can put your code in a number of places and sometimes it is not self evident where the best place to keep differnt parts of the code. Also it is good to break up large blueprints into functions an macros to reduce clutter.