I started a postgrad degree in software design just after finishing my physics degree in 2012.
I mainly use Unity myself, but I have used the UDK, XNA and LWJGL (Lightweight Java Game Library) as well. I found XNA to be a good introduction to game development, but I wouldn’t use it for anything more than that, because it does involve coding everything. As for LWJGL, I’ve only made one thing with it, and pretty much dropped it.
I’m going to compare the UDK and Unity, because I’m way more familiar with them. Out of the box, the UDK had better graphics and a much larger codebase. You can also create and edit scenery models on the fly. That said, I got the impression at the time that the UDK is geared more towards making first/third-person shooters, whereas Unity has less stuff available out of the box (and certainly in the Free version) but is more flexibile.
Granted, I haven’t done anything with Unreal for over a year. Since I learned how to implement path-finding and finite-state machines in Unity, it’s all I’ve been using. I guess I like being able to implement things myself from scratch :)