Choosing an engine to work with is an interesting task, there are so many! All kinds of language support and all kinds of pros and cons. Here are some of the ones I have tried:
It is what the cool kids use. Many indie game developers really love unity. Full native 2d support, good support and forum activity. For me, I just don’t like the visual part of the IDE. It just doesn’t feel right for me.
Really easy and visual. Very fast development with several tools focused in 2d games. Now with studio version you can develop for mac, windows, linux, even mobile and web. I tried the html version export, but I was disappointed… It never worked as good as the desktop applications.
Interesting engine, but requires Lua knowledge. Lua is interesting but I didn’t really liked using the language.
After being an iPhone developer for nearly 3 years it was a clear path to use an Obj-C engine. The truth is as an iPhone owner, the games I play on my phone are not good enough for my gamer taste. I miss using mouse/keyboard or gamepad. I don’t intend to make casual games and that is where mobile games really shine.
Custom game engine
I thought about this several times. What can go wrong if you know all the insides of your engine? Well… I had to decide between making games or making engines, there is not enough time for that.
I like coding in Python. I don’t code in it as much as I like, but the programs that I made were really easy to write. It is full Python code and seems like an interesting choice since I want to keep my games for desktops, but still support cross-platform.
In the end you should work with the tools you are more comfortable with.