From my experience, the ordering of objects in the mdl file can make a huge difference, and the more sub-sub-sub objects (ie take a close look at how badly things were linked in some_ux's ships. They break very easily due to all of the objects being linked to so many parents... meaning object z was a child of object y, which was a child of object x (ad infinitum) and all finally linked to the alpha node...
So parent child relationships can add bad side-effects in many ways.
I also found that the direct order of objects in the mdl also affects things... meaning start with a flat plain that is the ground, add a wall for a building, but only the front facing wall, then add the roof, then go back and add the side walls... the order that they load makes a difference.
Certainly, especially with more powerful cpus etc, the individual mdl may not cause a human noticeable issue, but things ALWAYS add up. Remember that Aurora only uses a SINGLE CPU, no matter how many you have in the box. IE having a quad core processor really does not help with Aurora, and if I remember correctly, even after setting which core should be used, beyond that, additional cores don't help... except that your OS always resides on core 0 (or 1 if you count that way) you should set the core value for Aurora to use the 2nd core to give as much power as you can to the engine but the 3rd. 4th ad-infinitum do NOT help you at all. So most you can gain is full power from Core 2, 3 or whichever you choose.
Anyway, the main point I am attempting to make, any order issues do add up, sure each hit may be slight, but every hit you can avoid you should. Back to what I had noticed with tiles, when objects were not ordered correctly, the processing hit(s) added up. I successfully modified individual mdls in such a way as to make things almost random in when they were loaded by the engine, and even after compiling the mdls (which DOES make a difference) the order of the objects being drawn made a difference. Again, small, but each hit counts.
The most problematic where objects attached to the alpha node, and when that alpha node itself is initially drawn. It should always be last, other than sub objects... so, static objects should ALL be loaded before you get to all objects affected by alpha status.
Most tile-sets are multiple copies of whatever the first dozen or so tiles were created. Meaning bits were typically copy-pasted into each new tile that was created. A huge number of these copy-paste operations totally screwed up load order of the individual objects. Again, small hits each time, but the more hits you get, the worse the lag gets.
Again, any ALPHA issues amplify the hits you get. The more alpha surfaces you have, the more lag. That doesn't mean you need to eliminate alpha, just that you need to pay attention to the individual objects load order. Compiling can almost eliminate the lag, but not quite, as I mentioned I deliberately screwed up the order of object in a tile that had alpha textures applied and also had ani-mesh objects... by adjusting the order to more logical fashion, it did cut down on the lag.
As mentioned above, shadows cause issues, as we all well know. The simpler the shape of a shadow casting object, the easier it is for the engine to handle all the math as MerricksDad mentions.
Does it make sense to go through a huge tile-set and attempt to clean up these issues.... only the alpha issues are truly important, including shadow issues, but correcting any object attached to the alpha node can make a huge difference. I would not attempt to go back through a large tileset, most especially TNO sized etc, but if I were already editing a given tile-set, most specifically editing the tiles via 3ds or gmax,, then by habit I also adjust the order things. However, the issue with Gmax and most especially with 3dsmax, is that max remembers the object by it's own internal number and can cause the exported mdl to become screwed up despite your efforts. I have been forced to do the clean up as best I can while inside max, export the mdl, and manually, using a text editor, re-order the objects, then once that mdl is re-imported, max will remember the NEW order and keep it etc... IE, this is not a single fix type of issue, as you edit and add/delete objects, the order it is used by the engine changes, and max does not keep things the way you want them. so you may have to do a final text edit, re-import and a final export, to force things into their respective proper order.
Believe me, I have skipped that step numerous times due to pressure/time constraints, and most times, the hits have been small, but whenever I had the luxury to re-order things, I would.
Remember, the engine attempts to compile on the fly, and the draw calls necessary are affected by everything of course. But say you have already drawn on screen, the entire building, and have shadows turned on etc, the engine attempts to calc what objects will generate a shadow and what objects will be affected by that shadow, mathematically if those objects are all ordered, it takes less effort to get the work done.
Other issues have been discussed in the past, and all, even the minor ones, do add to the overall lag buildup. The most egregious are almost always related to texture and shadow - meaning alpha related. Bad woks, too many, and wasted faces in woks, too many and wasted faces in objects etc. Bad visibility maps, bad path-node maps add to the general complexity, and should be addressed at time of creation. As mentioned way above, having every tile set with a bad "A" path-node and no specific visibility node selected cause various issues throughout the game play, from loading times to running times...
So, ALWAYS check alpha related issues... emitters, moving objects or animesh objects.
You briefly mentioned how the engine reacts to objects and sometimes coughs up objects in unexpected order etc... and yes, you are right, the engine naturally expects things to be ordered in a specific way, but WILL handle most of what you can throw at it. But why make it work harder than it needs too?
We also noticed how groups react differently, and were never able to directly figure out why. I think that the engine does an extra in memory compile on groups... and orders things how IT wants them ordered almost regardless of how the models were exported. And the engine pops the entire group onto the screen in as few draw calls as possible.
As to lighting, yeah, lighting effects everything as has been mentioned multiple times through this thread and others. More lights add to the math required to figure out not just shadows, but brightness, AND color rendition, all of which affect the time it takes to generate the scene.
Edit: Forgot to actually ANSWER the initial question!
Sooo, finally, which affects load times the most?
In reverse order, I would set it as Lights have the most impact as they affect EVERYTHING, then node order, then it would be a toss-up for the last place between visibility node and not combining meshes.
Modifié par Bannor Bloodfist, 18 février 2016 - 07:50 .