It depends what is “complicated file” for you.
I started reading source code not based on some difficulty, but based on relevance.
there is a lot of code irrelevant for learning the engine or for building games, consisting of complicated files or not doesn’t matter, because it’s irrelevant…
Therefore what you want is to start study most commonly used classes, such as:
Step one is to study about these classes from online documentaion first, and also by completing online tutorials covering these classes.
then once you have an overview what these classes are, start reading source code line by line, try to understand out of the code as much as possible.
google out everything you do not understand in the code.
Second approach is to give yourself a topic on what you want to learn.
- How does UBT work? read documentation and source code related to UBT until you completely understand as much details.
- How does reflection works? read documentation and source code related to reflection until you completely understand as much details.
the third approach is useful if you do not have the capacity to “parse” the code into your head.
Watch online programming videos on youtube, there are plenty of videos for UE.
Google out some good sites for tutorials and start not just completing them, but also learning details of every symbol from tutorial you find.
that is the golden rule, don’ miss any details from anything you learn (tuts, videos, code, samples…). you want to know details, details, details… because overall or practical understanding is not the way to go details are.
of course it only applies to relevant code, (ie. not low level engine code which you will use in very extreme cases only)