Here is my answer:
1, the game is divided into different types of platforms: Web games, mobile phone games, PC-side games, dedicated host game, as a personal developer, basically only the second to make money, the first need server-side operations, the latter 2 kinds will not be considered
2. What software tools do you use to write games? In a nutshell, it's two: 2D with Unity 3D with Cocos-2d,3d. And they all have one advantage: they can be deployed directly across platforms to Android/iphone (or even web pages).
3, but the key question is: you need a good idea!
This idea is not only playable, but also has a certain core technology, others can not easily imitate. For example, I am more impressed on the PSP "Time-limited corridor," and loco Roco used in the soft surface physics engine.
4, what kind of programming ability must have? Well... The ability to independently write 2048, flappybird such a game (or more simple to play bricks). High-level, is Angry Birds, the average person even know that there is box2d such a physical engine can not write.
A non-computer professional asked me: How to learn to write games?