TLDR: To summarize this in a list:
-Keep up your programming and math courses
-Practice your shaders and graphics pipelining
-Study the UE4 source code, perhaps with a friend, to understand how a game engine works
-Learn source control (VERY IMPORTANT)
-Practice working with a team (ALSO VERY IMPORTANT)
I’m still a student, but I’ll share what I know from my experiences.
If you’re a programmer, you’ll need strong programming and math skills. Video games use a lot of math. I don’t know how far you are in your program, but I’d suggest classes like Data Structures and Algorithms, some AI courses, Discrete Mathematics, Linear Algebra, Vector Calculus, and physics. If you’re in a Computer Science program, then you’ll probably have these classes covered. In fact, if you are going to be a programmer, a CS degree would probably be fine. I’m assuming that you’re already studying shaders and graphics APIs on your own.
To supplement your experience, I’d suggest analyzing the source code for UE4 to understand how the game state manager and update loops work. If you’re feeling ambitious, you can try building an engine of your own using what you learned from the Unreal Engine. If you’re concerned about the EULA, you are allowed to do this as long as you don’t copy the code.
Something very important you’ll need to learn how to use is source control like Git or SVN. Most, if not all, developers use a form of source control. It’s very easy to learn, but if you get hired without any knowledge of source control, your team will be disappointed in you. I’ve heard the sigh of disappointment many times
If at all possible, try working on projects with groups. The best possible learning experience for you would be to make a game with a team. Not as just a hobby, but with dedicated work times and a set deadline. Teamwork is a very important skill in game development. You need to be able to work with a team through the good times and the bad, and to learn how to deal with drama. The more experience you have working with teams, the more valuable you’ll be to employers. My professors told me about genius programmers who weren’t hired on their teams because they lacked team skills.
Something you might want to consider is a summer project. Plan out a “game” or some other project that you think you can finish by the end of summer, and then work on it. If you work on a game, you’ll find out what parts of development you really like and what ones you don’t. That will help you focus your talents. Also, this will help get you used to project milestones and deadlines.
Finally, don’t worry too much about trying to be a jack-of-all-trades. You only have so much time to get good at something, so it’s better to invest your time in a specialization. If you spread your talents too thinly, you might just end up being so-so at everything. A lot of development teams usually consist of individuals with highly specialized skill sets.
Good luck with achieving your goals.