Jump to content

Low level workflow of the engine


photo

Recommended Posts

Hi the questions I have cover a few domains and might seem weird, but i'm an indie that aspires to do harder genres such as large scale RTS or openworld crafting genres.  Basically games that mechanically push the hardware to the limits.  Not so much graphically though excluding things like draw counts.  But anyway here's my list of questions.

*How extensive is mod support?: Can I load in meshes and textures/materials and txt files at runtime without much hassle?

*How much is the abstraction set in stone?:  UE4's abstraction is so intense that breaking out of their UObject system is an absolute nightmare.  Setting mesh positions is very difficult do to in an optimized way, the engine just can't handle the kind of scale I was looking for.  I'm a very DOD kind of programmer with a fetish for C style code in some places.  I'd very very very much appreciate the ability to work in this fashion and work around engine abstractions when desired.

*How fast is compile times and load times?:  Specifically I dislike UE4's requirement that when changing data in a header file, you basically have to NOT ONLY recompile code (that problem is manageable) but also relaunch the entire level editor which takes a good while, then launch the game.  I'd like to be able to just launch the game directly and skip this hassle entirely.

*How much support do we have for low level work like loading in instanced static meshes manually?:  UE4 "supposedly" automatically does all the work for the end user, except i tested this to be false.  I had to build a custom HISM system where each Actor (game object) had an index into a HISM manager, since each grass and tree needed to be it's own entity in some way, and be destructible or such.  It was really hard to do this as the engine isn't really open enough for that kind of low level work, it kept crashing when the game ended for some reason that's still unsolved  The typical approach to this was using the foliage tool and doing custom code based on mesh type but this is not ideal for large scale games with lots of sandbox mechanics.  Overall i feel the community was way too content with inefficient plugins and ways of working, the devs doing serious scale often are hard to find and talk to.  And these issues are never brought to light.

 

I apologize for the...  Large set of weird questions and complaints about UE4.  I shouldn't be bashing them, they have their niche.  I'm trying to find an engine that fills my low level niches while hopefully not being as hard to set up as something like magnum.  And seriously, the video I've seen advertising this engine seems pretty epic.

Edited by paul.abrams
Link to comment

Hi Paul,

We have discord server: https://discord.gg/gFN7w9b

Regarding your initial question  - we have built-in EC pattern realization (not ECS), so there might be some confusion about it. We've already fixed descriptions on our website and documentation (as well as in the upcoming 2.11 hotfix update). For some hardcore stuff you can check C++ sample with CPUShader: SDK Browser -> Samples -> C++ -> Systems -> CPUShader. It updates 282k objects on CPU in parallel way.image.png

 

Quote

*How extensive is mod support?: Can I load in meshes and textures/materials and txt files at runtime without much hassle?

Yes, you can it relatively easy.

 

Quote

*How fast is compile times and load times?: 

As for C++, you can launch application directly from IDE. The loading times mostly depends on the amount of assets in data. If you have SSD and large project (50+GB and 200k+ files) you may wait a minute or so at the cold start. Compile times are also depends on amount of headers, third party libraries and other stuff, so it's not possible to say any valid number here.

 

Quote

*How much support do we have for low level work like loading in instanced static meshes manually?

Not sure if I understand the question right, but engine automatically batches fully identical meshes with fully identical materials. For omptimizations you can also use mesh clutters / mesh clusters objects: https://developer.unigine.com/en/docs/2.11/content/optimization/geometry/cluster_clutter/?rlang=cs

Thanks!

How to submit a good bug report
---
FTP server for test scenes and user uploads:

Link to comment

Appreciate the response.  Now i've gotten to play with the source some it does seem somewhat open ended at least.  Hopefully I can directly draw meshes where desired.  Mesh instancing is a technique where one can have multiple copies of the same mesh at different locations and rotations and such, maybe even with fancy animations, but to have it all done with one or a few draw calls.  Which sounds like what you'd call mesh clusters hopefully.  In ue4 "HISM"s (hierarchical static meshes) are static meshes which swap lod individually but are still part of a kind of instanced static mesh system.  As long as I can manually make instances myself I can create my own HISM probably.  See to be honest one of my projects would require 10k plus moving units for an rts game, at 60FPS.  Or 20k at 30FPS.  I've done this with a custom 2D physics engine that's just AABB with a spatial hash table.  I'd like to be able to import this physics engine, and merely use this engine to render the 3D meshes where I specify instead of letting it bother with attaching it's own physics.  The component system i've seen demonstrated in the examples looks interesting (really cool actually).  Though it seems to use callback functions that run for every individual entity of a type, though that's miles better than vtables.  I'll take a look at the project you mentioned though i'm not the best at shaders.  Even if the component system can't do what i want, seems likely I can just use my own ECS framework and get the ball rolling.  Again appreciate all the feedback.  Loving the design of this engine so far.

Edited by paul.abrams
Link to comment
×
×
  • Create New...