I am listening to a panel discussion where a person mentions their 'engine' is not 1.3 but now is 1.7 million lines of code. That frightens me. I can't imagine that number of lines, the amount of modules, etc. I always felt that C++ doesn't handle modules as well as other languages can. I felt large projects are harder to manage and preferred to reasonably keep lines of code down. I feel discomfort when I hit 10k lines. I can't imagine how 20k, 50k, 500k or 1 million would feel like.
What practices do you have while developing and maintaining projects of this size?
One million lines of code is past the point that most mortals can keep it all in their heads. That means that team members will each be carrying around incomplete mental maps of the system, which can make design discussions difficult.
To mitigate multiple, incomplete understandings, you need maps, in the form of an appropriate set of architectural diagrams. These will usually include a very high-level block diagram of the system's architecture, with more detailed lower-level diagrams for key parts, and possibly sequence diagrams for describing key interactions at an appropriate level of detail. Having such diagrams within reach help the team be "on the same page" when discussing the system.
'Dependencies between subsystems' diagrams can also point out areas of messiness (of the "Wuh? Why is that bit of the persistence framework dependent on the UI?!?" type) that need to be cleaned up. Best if if you can figure out a way to automate the generation of these diagrams. Graphviz can be your friend.