Investigating Unreal 4 as possible alternative to unity3d. Questions.

Hello there.

I’m working on project in unity3d and I’m investigating unreal engine as possible alternative (due to various reasons).
I have questions about the engine, so I would appreciate if someone with time/knowledge could answer those.

Questions:

  1. As far as I can tell, Unreal does not have direct alternative to mecanim system present in unity. Did I overlook something? Mecanim in unity maps any humanoid skeleton to human body (most of the time, automatically) after that you can use animation from any character on any other character. The system also calculates character movement for “root motion” even if character has different limb sizes, and you can request say, “left finger” bone at runtime and receive object that is mapped to it. Unreal character animation system appears to be placing much more strict requirements on characters when you want to transfer animation. Am I right about that?
  2. I have impression that materials and shaders are entirely node based. Let’s say I want to stuff something unusual into lighting system, like raytraced or non-polygonal object. Can I do that by writing code instead of messing with nodes? What about custom lighting models?
  3. I tried to build a level using blueprints - by splitting it into parts (“wall”, “corner”, etc), putting them into blueprints and assembling level from those. I discovered that blueprinted objects do not participate in lightmap baking (they spawn as “Actors”, apparently), and in case of nested blueprints nested objects do not show up in blueprint editors. I also have impression that level building is mostly “copy and forget” or mesh based, and you aren’t even really supposed to use blueprints for level geometry? Did I miss anything there? Or is this workflow unsuitable for UE4 engine?
  4. During lighting tests I found out that character shadow properly blends with baked shadow (unity has long-standing bug, where baked lights do not cast shadows) and lighting baking process appears to be faster, however, when character gets close to light source, shadows occasionally disappear completely. Is that supposed to work like that or is it a known bug?
  5. How long does it take to get custom visualisation/data/beahvior added to an actor/object using code? In unity I can get debug visualisations and scripts running in seconds, however, unreal is C++ based, so I sorta expect lengthy process here?
  6. There ARE layers for object and physic systems, right? So I can set with a mask what objects collide with which.
  7. Is there a subroutine in physical system that allows to query random point with space for spherical collisions AND get contact points from that collisions (i.e. you call it with sphere position and radius, and get object list AND their contact points in return).
  8. How much of a bad idea is recompiling UE4 with exceptions enabled? Exceptions are core feature in C++, because RAII pattern relies on those, so throwing them away does not look like terribly good idea, although I understand why it was done.
  9. There are json serialization/deserialization facilities in the engine, correct?
  10. How much assistance can I expect with free version? Is community in general reliable source for getting answers for difficult questions or am I going to be on my own?
  11. Can occlusion data be queried from code? I.e. “Is point a visible from point b”.
  12. Can non-static transparent objects receive shadows?
  13. Does unreal engine navmesh support differently-sized actors?
  14. Let’s say I go nuts and make a scene with 300 constantly active ai-driven characters, with 30 or 40 of them visible at the same time. What kind of performance am I looking at here? Relatively low poly model per character (under 10k maybe 5k tris), shared set of meshes (clothing, hair, bodies, heads), simple ai, minimal usage of physics, building scene with indoors and outdoors.
  15. How much abuse can physics system and collision queries take? Let’s say I start spamming raycasts(iirc they’re called tracers in UE) and collision/overlap queries every frame, how many can I usually get away with?
  16. Is there built-in AI framework based on, say, behavior trees? Or are Blueprints/visual scripting supposed to be as ai framework?
  17. How suitable is the engine for non-photorealistic, cell-shaded or toon lighting? I know it is being used in Kingdom hearts (and I remember older UE based game XIII), but I had impression that their devs had to spent a bit of time getting the right look.

Answers would be appreciated.

1 - 9. Not sure, haven’t done much with lighting, I code.
10. There is ONLY a “free version” actually, and assistance is very good here on the forums. For DIFFICULT questions, you may need to bump your post once or twice, any other questions are usually answered fairly quickly. There are a few community members in particular that are on the forums constantly and answer tons of questions.
11. Umm, you could use a line trace to see whether or not there is a direct line of sight to point B, but I haven’t done much with occlusion.
12. Dynamic transparent objects receiving shadows? As far as I know, yes.
13. You can customize pretty much every aspect of navmesh generation, and AFAIK can generate nav-meshes with different “agents” (settings?) for things like different actors, etc.
14. Not sure
15. Spamming line traces? You can get away with thousands of them per frame and have the game still be playable.
16. Barebones simple AI can be done in blueprints, but you’ll want to use things like the UE4 behavior trees for more advanced AI, there are some great UE4 live streams up on YouTube for AI.
17. I haven’t done anything with this, but people have made PP shaders for things like cel-shaded games in UE4, and it is pretty easy to get setup AFAIK.

Unfortunately I haven’t dealt with a few of the things you asked about, but hopefully I helped.

As for 1, yes there is something like that inside unreal engine. it’s called (skeletal) retargetting. :slight_smile:

Skeleton Assets | v4.8 | Unreal Engine - YouTube ← list of official tutorials on that. (multipart series)

It’s different, but efficient as long as you follow some little rules. (e.g. skeleton type, naming)… but if you must, you could use a skeleton that is totally different. (it’s just a tiny bit more involved)

Thanks for the responses.

It is nice to know that behavior trees are built into the engine.

Judging by animation/skeleton retargeting videos, while retargeting can be done, it is partially manual and it copies retargeted animations instead of using the same clip for everybody. Which means it differs from how Mecanim works, but it should be still usable.

Would be nice if someone addressed points 2…9 from original question.

As for 1 again, I used unity and mecanim for a few years and am using unreal’s persona for maybe 7-8 months. Mecanim is great for quick and dirty stuff but persona is way bigger and more flexible. In mecanim you can only retarget the humanoid rig and otherwise retargeting is only possible if you have the same hierarchy and bone names. Persona allows you to create a custom rig and retarget any type of character. On top of that it gives you the option to choose how you want to retarget each bone because you might want to keep some bones (like ik bones) same as they are in the original animation.
The animations are duplicated because unreal makes them into two different animations but I believe that they still reference the same source fbx so changes are propagated to all retargeted animations. I might be wrong here, I didn’t test this as much as I should.
On top of that you have montages, aim spaces, you can add curves directly to your animation graph, simple ik setups… If you are a technical animator or have technical animators on your team you/them are going to love persona. It just has a steeper learning curve because there are more things going on inside of it.

That is true, weapon bones (or “prop bones”) gave me a lot of grief in Mecanim. It wasn’t immediately obvious from the video that it is possible to create custom rig, thanks for that hint.

I’m a programmer, although I can make a model/texture/animation and rig stuff at amateurish level in blender3d if I have to. I suppose copying animations might make sense (even if it turns out to be full copy, not a reference), depending on how system works.

I’m sorta concerned about disappearing dynamic shadows I had when I tested UE lighting (mentioned in #4), and was initerested in using blueprints and nested blueprints during level building (#3 - “blueprinted objects didn’t bake into lightmaps” and “nested blueprints don’t show children in editor”).

I’m also somewhat interested in possibility of getting custom stuff - shaders, lighting models into lighting system using code instead of using node-based material editor, though that one is low priority. (mentioned in #2)

Does anyone have info on that?