I've been learning Unity3D and managed to grab these...guess I should have mentioned something.

It's a pretty awesome toolset and I don't feel restricted in the free version, sure I lack things like their advance AI, Nav Mesh, LOD, fullscreen shaders, shadows and so on, but they're not a big deal.

Plus, in the asset store you can buy a working stencil shadow shader prepped for Unity3D Free & Pro...so if you wanted non-blob shadows and not pay ~£1000, there's an option there.
I've also found it's not that difficult to migrate from DBP commands, although yesterday I spent a lot of time trying to figure out how to get a second character to follow my main character, but then I didn't think of using the 'translate' command...so I ended up doing trigonometry.
//Point character[1] at character[2]
character[1].transform.LookAt(character[0].transform);
//Move character[1] forward by 10*timer (for timer-base movement)
character[1].transform.Translate(0, 0, 10 * Time.deltaTime);
Also migrated my 'Check Within Distance' function)
From DBP:
function CheckWithinDist(Object1, object2, distance)
`Set the default to '0', the check variable is what we'll be returning - if the object is in the right area, a value will be returned
check = 0
`Get the First Object's position - I named the variables 'NPC' and 'Player', but that don't matter, it's just what I called them when
`coding
NPCx = Object position x(Object1)
NPCy = Object position y(Object1)
NPCz = object position z(Object1)
`Get the second object's position
PlayerX = Object position x(Object2)
PlayerY = object position y(Object2)
PlayerZ = object position z(Object2)
`Calculate the distance between points by removing the second object's position variables from the the first
`So is Object 2 is at X = 100 and Object 1 is at X = 30, then the returned 'x' value overall will be '70', thus the distance
`on the 'x' axis
Posx = NPCx - PlayerX
Posy = NPCy - PlayerY
Posz = NPCz - PlayerZ
`getting the distance
dis = distance
`This will check if the objects are close enough. Basically if you choose a distance value of '25', it'll check
`if the object distance is between -25 and 25 for all axis' If you're in that zone, then the check value returned will be '1'
if posx < dis and posx > -dis and posy < dis and posy > -dis and posz < dis and posz > -dis then check = 1
` text 100,100,"You may be able to talk"
`endif
endfunction check
To C#:
bool CheckWithinDist(float dist, CharacterController con1, CharacterController con2)
{
var pos1 = con1.transform.position;
var pos2 = con2.transform.position;
var posx = pos1.x - pos2.x;
var posy = pos1.y - pos2.y;
var posz = pos1.z - pos2.z;
if (posx < dist && posx > -dist && posy < dist && posy > -dist && posz < dist && posz > -dist)
{
return true;
}
else
return false;
}
So as I've said, not that difficult to figure out.

Not that I'd want people to move away from AppGameKit or DBP, because they are both amazing tools, but obviously, if people want to use Unity3D, if you're previously a DBP user I wouldn't say it's that difficult to learn - plenty of new concepts to learn, but it all makes sense.