Entry two on my experiences with UDK and Unreal Script:
With a sensible coding environment set up, the basics didn't take long to implement. But basics mean very little: player controls and camera. It's a good step forwards which took a bit of research, copy-paste and tweaking, but the experience showed me I'll need a solid foundation if I'm hoping to do anything complex with the Unreal Engine.
At this point in time I believe that foundation has to be a set of abstracted classes. In its simplest form, my idea revolves around 'core' classes which extend the Unreal Engine's native code as needed to implement whatever will later appear ingame. Those abstracted classes are then extended by the 'ingame' classes - which would ideally be split into a second package to keep abstract and game objects separate.
The idea behind this structure? Extendability. The abstract base allows any designer to later inherit and extend to suit whatever needs he has - while maintaining all common functions in a sigle place. I'm not certain at this time if this concept will work as I hope but it will be put to the test soon enough.
Another component essential to this design are config files. Assuming the abstraction works as well as I expect, the abstract and all inherited classes should posses configs which can be used to tweak values. That might be an unnecessary step when seen from a programming perspective - changing a few variables in the default block doesn't take long - it simplifies things for non-coders trying to implement objects ingame. Prior experience shows me most people don't like (or simply don't know how) to read code. And, honestly, a programmer doesn't really want to be fiddling with his code either - unless he actually needs to. So implementing config files seems to be the way to go.
If all the concepts above work as envisioned, the next step will be drawing up a conceptional object model of some kind. But I'm already thinking too many steps ahead. So far experience has shown that focusing on one thing at a time for as long as it takes yields less confusion and better results. I doubt I'll be able to continue implementing in 'little steps' indefinitely. None the less, it serves the purpose of familiarization and understanding. It also reduces risk of becoming overwhelmed by several tasks at once and wasting time later debugging all the problems caused by an unfocused mind.
And that's enough of my ramblings for one day. Off to see how weapons work in Unreal Engine...