I'm looking into eventually making a game engine...
If you're serious about your goal, then concentrate on C/C++. It's a steep and long learning curve, but once you master it you'll be able to take on any programming task.
If your goal is to become such a skilled programmer, I don't think learning a more domain-specific programming language first is worthwhile. They'll teach you a certain paradigm (rules you're supposed to follow), but when you transition to C/C++ you'll find that there are no strict rules and there are many successful paradigms to reach specific goals, and you'll get very confused/scared and try to avoid C++ and never become good at it. So in my opinion you should learn to stay afloat in the deep end as soon as possible. Once you understand how a complex C++ application works down to the most fundamental level, you'll have no trouble learning any domain-specific language should you need it, without getting distracted by the paradigms it enforces.
Opinions vary wildly on this subject though. So perhaps there is no right answer and you have to figure out for yourself which learning approach works best for you. Personally I've started with C and assembly, and then learned C++. I've never regretted starting at a very low level, because it taught me the skills to deal with complicated issues. I know lots of people who are very comfortable writing C# code, but totally panic when something unexpected happens because they are clueless how to handle it.
The thing is, you will encounter unexpected issues during the development of something like a game engine. Lots of them. The time spent actually writing code is only a very small part of the total development cycle. So while for instance a language with a garbage collector like C# allows you to write code a little faster by not having to worry about memory management all the time, it doesn't actually save you from all memory related issues. You might end up having to learn how the garbage collector works to get the behavior you expected.
I'm not saying this means you should write everything in C++ instead. On the contrary. You should learn C++, and then you'll be able to determine which language is best for the job (could be C++ itself). By understanding memory management you'll be able to fully appreciate the benefits of garbage collection, while also understanding the limitations. Knowing C++ gives you the insight necessary to make the right design choices.
It's like manual versus automatic transmissions in a car. If you plan to become a rally pilot, you're better off learning to drive a stick shift in your very first driver's lesson. It's a little harder at first, but will give you a much better insight into how things work at the mechanical level so it will be easier to become an advanced driver. If you learn to drive in a car with an automatic transmission, manual transmission will seem very awkward (since you learned there's an 'easier' way first) and to become a rally pilot you won't only have to learn normal driving with a stick, but also advanced driving. I hope you can see in this analogy that C# is more advanced in the sense that it takes work out of your hands, but if you actually want to do advanced things, you're better off with C++ which allows more manual control of all aspects.
Just my two cents.