I have been programming in C from 2010 to present, with my programming journey including a basic networking program, 2D games, win32 apps, among other projects. I am wanting to pursue now one of my biggest goals, which is 3d game development. My main question is what is the best language to use for this based on what I need, and the best API(s).
From recently working on a rather large 2D game project, I have learned that game development is a lot of work, and there is a lot of different skills involved. From writing my game completely in C with help from SDL 2.0 and SDL 2.0 Mixer, I had little time to learn proper game design and structures, as most of my time was spent maintaining and updating my game engine. This was a nuisance to me, as I want to learn the math involved with development of a game and along with the proper procedures and theories. I think that this will help me apply more mathematics in different areas of programming also, since I don't have a lot of practice algorithms and different mathematical formulas I might need to use in programming. The physics involved in 3D game development would also be a bonus.
What I desire is a language that will help me learn the theories and concepts in game development and 3D math, without having to reinvent the wheel by constantly having to write interfaces over existing ones. The language that caught my eye is C#, with the XNA API for 3D development for games. I realize Microsoft has stopped actively supporting this API, but I have heard that MonoGame is actively supporting an XNA interface. I was curious if this was the best choice for me, considering my past experience. Along with how much C# I would want to learn before I get started in 3D game development.
I welcome other language suggestion/API(s) too, if you think they will be better suited to my needs. Please don't suggest game engine software such as Unity and drag n' drop software.