Is it OK to use UT's prediction code for my own game? How to learn to make my own?

I looked through UT’s code to see how some things are done that I was struggling with and it occurred to me how similar a lot of it is despite being a different type of game. Their code is significantly more complex and optimized, is there any issue if I use it with only minor adaptions for my own needs? Because it’s open source it’s a good resource to learn from, but is there anything either legally or morally wrong with using it or am I in the clear in both regards?

The other thing is that I can’t figure out where I’m meant to learn this stuff for myself. I started as a lowly 3D generalist and worked my way to a rigging/technical art specialization over the years then into programming for games and come a long way since, and I learned everything from rigging onwards on my own, however this stuff is so complex and there’s very very few resources, so how do you go from someone interested in this side of networking in games to someone who can create this system in UE4?

This is the first real wall I’ve encountered over the years. Can someone point me in the right direction? For once I have no idea what to learn.

How long did it take you to learn C/C++ programming?
How long did it take you to learn 3D graphics and math?
Networking is approximately the same complexity level, and thus will take approximately as long to learn well.

There’s a bunch of game networking-related resources in the GameDev.net networking forum FAQ: http://www.gamedev.net/topic/373524-get-instant-answers-to-your-questions/
However, some link rot has probably happened. If one link doesn’t work, move on to the next!
The book recommendations are all good.

Regarding using UT code: You should interpret the license that the UT source is released under, with the help of a legal professional licensed to practice in your locale.
Nobody on a forum can answer correctly what the right interpretation is for your particular situation.

I found the UT license and it is pretty much a big fat “no.” unfortunately

Well, that’s fine too. Would of saved me time but learning things properly would do me better in the long run…

I could make a multiplayer game right now, the part I can’t do adequately is the custom client-side prediction that they use for CharacterMovementComponent and that’s what I was hoping I could use from UT. It’s not even a case of learning networking in general - although that’s definitely a pre-requisite, it’s more learning how the engine does it and working with that. But with the lack of documentation it’s a real issue.

Thanks for the information and the link, I will go through it and think about where it leaves me. It might be best if I make a more basic version to get the game rolling, then if it nears release I’d contract someone to redo the prediction.

You have the source code for the engine. I’ve found that, when the documentation lacks, diving in and actually reading the source does make things clearer.

Of course, but this is a lot more complex (at least for me who has only been programming a few years now), I don’t know enough about it to know what’s going on to an extent that lets me build on it reliably. I have made my own custom version based on it, and I have added abilities, but when things don’t work quite right I’m unable to understand why or how to solve them.

Documentation would ideally explain each method and it’s purpose and connect the dots.

I’ve made my own version more than once, however for my current game it had some issue where everything would work fine for a while, then if I run for long enough it completely desyncs and corrects in every frame after until I stop and there’s no consistent duration or movement pattern causing it. And then I’m stuck going through my code hoping to spot some error because I can’t for the life of me figure out why or how that could happen. I removed everything so it was pretty much stock except with my own overrides and still didn’t go away. Then you start to wonder if you’ve got some setting somewhere wrong and the few minutes it would take if you understood it suddenly become hours of guessing.

I mean, this dilemma isn’t specific to what I’m doing, but that’s where the documentation would bridge the gap that I feel exists when going through the (astronomical amount of) source code. The topic is too advanced to rely on headers alone. Almost everything else - sure!