go for c++ - you will do a lot of reinventing the wheel
I've been programming in C++ for years and I can tell you it is easy to use lots of opensource wheels so you don't have to invent them.
The big advantages I see on C++ are:
- it gives you more room for optimizations;
- it gives you access to some very good engine, library and framework options.
And these are the reasons for not using C++:
- those kinds of optimizations are unnecessary on most situations;
- these engines are an overkill for the game project, suited for AAA, but too much for us average users; or
- there are ports for these.
Notice how I did not include that it is hard, complex, or anything like that.
It is easier to evaluate an engine when considering the needs of a game; so I avoid telling someone to pick a language, purely. I always tell them to pick an engine or framework, the language choice should come with it, unless they are asking specifically about programming languages. And C++ is just as complete as any other languages, you can use even garbage collection just by including some header files (that you didn't reinvent), to name a single functionality. C++ can be used for making the games.
So, my 2-cents.
Picking languages may be misleading, and takes your focus away from the programming itself. You'll end up learning the language over learning programming, and this will make you reluctant to changes, sometimes even avoid any changes completely or be afraid of them. Avoid making a language "your language" or you will end up being its programmer, and not the opposite, remember who is the tool here!
You can choose an engine like Game Maker/Game Editor, that will teach you some basics. With it, you'll learn a lot of what makes a game.
There are several games being sold that were actually built with Game Maker, it is in fact a professional tool.
So you could pretty much stop right here and make games.
But if you think you want to go a little deeper, you could get another game engine like Unity or Blender Game Engine, that will require more study, but will give you more power over how your game works. Unity is very popular today and has lots of resources online for the beginner.
You could pretty much stop there and make games with Unity, it is a very professional tool.
But if you want to go even deeper, put your hands on an engine, library or framework that does not count with a visual editor. Here libraries like SDL (be it with C++, C#, Python, [...]) are the most useful. You'll understand a lot better what happens when a game runs, and may even be able to make your game run better and faster. But you will need a lot more time studying and practicing. There are innumerous options other than SDL. Löve2D, SFML, Angel2D, indieLib, ClanLib, LibGDX, Haxe, MonoGame, SourceSDK, Polycode... Some are more complex than others and require more work, so you'll have to measure your game's needs and make a choice based on them.
Your listed games are really not the type that requires a lot of performance. A trading card game could be done with pretty much anything, so I'd probably use Game Maker, Sprite Builder, Game Editor, Enigma or something like these. A top-down RPG could be done with RPG Maker, there are commercial titles that were. I would recommend something like Löve2D, Haxe, PyGame or similar for your card game, if you don't want to create these by using game making tools.
Edited by dejaime, 28 January 2014 - 01:03 PM.