Note: Quoted from @Hal9007
Quite relevant, actually.
It demonstrates a lot of the new 'open-world' features of version 4.7+ for the engine; unfortunately, it appears to be severely bugged on my branch of the engine, so I'll have to update to UE4.8 before I check that out.
mikeprimm
wrote:
Hal - have you had a chance to take a peek at the new 'open world' stuff, in 4.7? I know you're current code has some issues with the lighting changes on newer stuff, but I was wondering if this was going to wind up being important for anything done here. Specifically, I know the multiplayer stuff has some issues with extended worlds - not sure if what you've been messing with is handling that, and whether the 'open world' stuff is relevant to dealing with that.
Lighting shouldn't be too much of a concern - ambient occlusion has been the primary issue with BrickGrid, though one of the newer features of the engine is
Distance Field Ambient Occlusion, which is a very good dynamic implementation (on that same note, I really want to merge in
Distance Field Soft Shadows).
Map size is one of the issues I'm more concerned about. Epic hasn't been altogether transparent about the capabilities of their own networking system. The map in the videos I linked above is about 16 x 16 km. From what I've collected, the suggested maximum map size is 2,000,000 x 2,000,000 Unreal units; in direct conversion to our units, that's 20 x 20 km, or about a third of our map. However, as you may know, the real issue has to do with floating point precision at those sizes - the PhysX collision system starts to get wonky when you go beyond that. So really, it depends on what kind of precision we want - we can, of course, redefine each Unreal unit as 10 cm instead of just 1 cm, which would be a tenth of the precision (but we'd end up with a working space of 200 x 200 km, which is more than enough).
Unreal already has a solution for singleplayer, something called world "rebasing"; basically, every so often, the engine resets the players coordinates and adds them to a vector offset that it stores in memory, allowing you to tile the world map to infinity. This presents obvious problems for multiplayer, so I'm hoping we can just get away with reduced precision. I don't expect we'd need as much for something the likes of Minecraft, but I can't be sure of what effects it might have down the line.
I'm still working with client authorization at this point - struggling quite a bit with the PHP -> MySQL interaction, which is something I'm mostly learning on the fly. I've set up a web domain which communicates with all of the Unreal-related files (both the launcher and client) at
http://westeroscraft.x10host.com; client login through the launcher should hopefully be up at least before this summer.
I'm making a few more advances on the combat front; finally figured out how to do proper blendspaces and bone-separated animations. Here's my current work-in-progress. There's only one swing animation at the moment, but I have well over 30 in stock: