So, I still spend more time learning than trying to do something I can release as a game. If I were doing 2D, there would be a lot less to learn and I could probably get something out the door with my current level of skill. But 3D is tough, especially when you try and do it all. If you can find friends to form a team with where they work on art and you work on code, that would be ideal. But my friends are musicians, not 3D modelers. You can buy 3D models, but that gets REAL expensive REAL fast. Plus, the biggest draw back there is that you are stuck with whatever models you find and they probably don't really match up art-style wise. Having someone actually able to model, whether it's yourself or someone else can make an enormous difference.
My most recent projects are on my website at VirtuallyProgramming.com with XNA, DX11, and OGL stuff. I think that page covers the history of how all that came about; so I won't rehash that here. But, I started out doing XNA coding examples as tutorials. Then I switched to trying to write a DX11 engine from scratch in C++, as tutorials. Then I recoded it in OGL4.5 with C++. The Visual Studio projects are linked on those pages. So, all the source code is available for download, where you can see every line of code.
One thing I learned from being a musician is to focus on fundamentals and learning and not try to put the "cart before the horse" and start before you are ready. So, I've never really gotten my skill level up to the point where I feel like I'm really ready to make a full blown game. I hosted a contest to make a Pong game years ago. As judge I wasn't allowed to have an entry in the contest, but I wanted to join in on the fun and make my own version just to say "Here's what I would have done if I could have entered into the contest." So, I started working on 3D Pong which is in the opening montage on my YouTube channel near the end. I first made a mostly functional 2D version of the game to make sure I had all the concepts down and especially things that I don't do a lot of like screen management. Then I started coding the 3D version and it was coming along nicely. Then I had to spend most of a winter in the hospital watching my father die and that got cut short. I barely had time to judge the contest and by the time I got back to having time to work on finishing the 3D Pong game the contest was over and it was largely pointless. So, I never quite finished it up.
Then after Microsoft dropped support of XNA I got stuck trying to figure out where I would go next. I tried Unity for about 6 months but found that I was buying everything from models to code and not really learning anything like I had in XNA. So, I decided I wanted to continue learning about engine programming and doing things myself and decided to teach myself DX11. Then I decided I wanted to do OpenGL instead and had to start all over again.
Then I decided to focus on 3D modeling for a couple of years and I've been in that mode now for about a year and a half which means I haven't done any game coding during that time. The class is more work than I have time for, which leaves me zero time to write game code. Now, I've learned PBR art and I don't know how to write a PBR shader. So, when I do get back to the code I'm probably going to want to write and learn the math behind a PBR shader in GLSL.
I'm also going through some tutorials on Unreal Engine. I would like my future to be pursuing OGL as well as Unreal Engine so that I can learn the deep engine programming things and have Unreal available to crank things out more quickly. Unreal is C++ based and almost makes it pointless to do your own engine except that they own Unreal and you own your own engine. Plus, doing some of that really low level stuff helps you understand how engines work under the hood. I know a lot of what I do in my 3D modeling art is informed by my knowledge of how the graphics card itself works and how that model would be consumed by my engine code. When i put together a normal map for a model, I know the math behind a normal map and know how to write the code to play back a normal map in the engine. So, it helps me understand what I need to do as an artist. Most 3D artists would just be guessing and going off of rumor why you need to do a certain thing or how a normal map works.
Anyway, the big thing about going commercial is that your first several projects are almost guaranteed not to be commercial successes. Especially if you are working in 3D there's just so much TO know that it's going to take years before you have the first clue about what you're doing even if you spend dozens of hours on it every week. Without an artist, it will make it that much more difficult as you need at least some stand-in art. A good artist can come in and replace your poor art with better art later. But knowing how to code to get the art in there is really a big part of what graphics programming is all about.
So, you have to be honest with yourself as to whether the money is truly enough motivation to keep you going when you SPEND more money producing your first several projects than you EARN from them? When no one wants to buy your first few projects, what then? I've been going through "MasterClass" with James Patterson on writing novels. He's one of the top selling authors in the world. He said his first novel couldn't get published and it was a big let down. No one wanted to read it. But he picked himself up and wrote the next one. And the next one. And the next one. With failure after failure. And eventually, he learned from his failures and kept at it, not because he was looking for a big pay check, but because he loved writing and telling stories. And now he's got hundreds of major successes under his belt.
If the lure of the money is enough to keep you motivated even when you're operating at a loss because you truly believe that eventually you can get out of the red and into profit, then by all means do what you want to do.
If you want to become a professional game developer of some sorts even though the pay may be minuscule and you'll have to work on other peoples' ideas instead of your own, but you think you will still love it, then by all means do that.
You just have to realize this isn't even close to being easy and there's a steep learning curve. You're going to go through years of failure and producing crumby work. Can you stay motivated through the bad times? Because they will be more often than not in the early years. But if you can stick to it and work hard at learning from thousands and thousands of mistakes, you can get to that professional level where everyone agrees you know what you are doing. Will, your game sell once you reach that level? Probably, although there's no guarantee that it will. People who know what they are doing, like the Beatles for example, can produce mediocre work even on their worst days. It's no guarantee that your next project will be well liked by others (some of the Beatles best work was never played on the radio and most of it was never really considered their best). There have been lots of games that I would agree are solid video games, that I just didn't like. Most of them as a matter of fact. But until you reach that level, you're game probably isn't going to even be well constructed and likely to suffer from numerous problems.
If you want to go the fast commercial route, try Unity. You can script for it in JavaScript I believe (I always did C# with it because I was doing C# in XNA before that). So, the coding for it should come somewhat natural. It's a great engine for 2D and pretty good for 3D, although I'm favoring Unreal Engine partially because it's more C++ based and partially because it has a slightly better reputation for 3D work and high end graphics.
Doing the low level engine programming is not everyone's "cup of tea". I like the learning as much as anything else, and thus I find it rewarding to do something like try and understand the math behind a PBR shader so that I can code it myself in GLSL. On the other hand, I'm trying to learn Unreal Engine for those days when I want to get some work done as opposed to just learning. I figure there's no reason I can't code in OGL and in Unreal.
Oh. And as far as making money in game programming. Besides the years it takes to get to that level, I spend lots and lots of money on this and make almost nothing in return. My website is about $175 a year I believe. I have a subscription to Adobe CC that's $10 a month. I've got a subscription to Substance that is about $30 a month. Blender is free fortunately. I'm thinking about getting Marvelous Designer and ZBrush. I've spent thousands on computers and things like graphics tablets. I've spent hundreds if not thousands on books to learn it. I've spent thousands on classes. I've spent hundreds if not thousands on game assets at places like the Unity Store. My time is worth a substantial amount per hour that I could have been working at a job instead of games and you could say that adds up to far more of a financial loss than all this other stuff combined probably by an order of magnitude. If you really add up the costs, I would say I'm going to have to have a major hit of a game before I can get anywhere near out of the red. So, if it's just the lure of money, you have to truly believe you can eventually have a huge success after dumping massive amounts of money into it at the startup.
2D is probably a better bet if the primary interest is the money. Your startup costs are likely substantially less. The time involved is substantially less. The learning curve is substantially less. So, the quicker any success you do have down the road will pay itself off. Plus, I think 2D is still very popular on mobile.
Oh, and if you want to go down the difficult path of engine programming, check out LearnOpenGL.com and check out the OpenGL tutorials there. I've been meaning to go through that, if I can get the time to learn to write PBR shaders.