The amount of experience which you have makes clear that you know how to make a program. You have some experience in several languages. You work in a development environment.
You must make a few simple games if you really want to understand how games work and are ported to systems. Use your current development environment to make and implement these. Here is a partial list:
... or other simple games...
Create 3 to 5 of these games, finished really well and modified, and port to two or more platforms for each game.
If your development environment is not adequate for the more art asset faceted games down the list, then consider another development software environment or a game engine once the time comes. Since you like C# and Java, why not use them? There are fine games and game engines written in Java or C#. Some let you use the language of your preference other than the one in the game engine, for example using C# for your game scripting, VB6 for your user interfaces, and both over a Java game engine. By the way, it is not entirely necessary to use or have a game engine to create and run a game on a computer, but your capabilities would obviously be greater in general.
There is no need for a programmer of your experience to avoid C++, but choose your libraries carefully because of the possibility of getting lost in all the features. C++ has a strength and advantages in the lower level aspects such as graphics, yet beyond the ability of most inexperienced programmers.
A fair warning of one of the pitfalls of game making: User interfaces can make or break a development choice. Look from the beginning at development systems which have good interface development at the start. Take a look at Mono, SharpDX, and Unity 3D. The #GTK has fast start development with GNOME projects to make interfaces, as an example.
Here is a list of game engines and don't overlook the C++ ones, since you are fairly experienced in programming:
Of course you must take into consideration your present and future art abilities. You may wish to be programmer heavy. Finding artists is an option, but good ones will want to see solid progress on your part and something to show for it in a game concept.
When you are ready to make your own unique games, then you will know it.
[Edited for typo]