[MOD] Trees Of Daggerfall

A curated forum for compatible and maintained mods. Users are unable to create new topics in this forum but can reply to existing topics. Please message a moderator to have your mod moved into this forum area.
User avatar
BadLuckBurt
Posts: 568
Joined: Sun Nov 05, 2017 8:30 pm

Re: [MOD] Trees Of Daggerfall

Post by BadLuckBurt »

Allerka wrote: Sat Jun 13, 2020 12:33 am I mean, if VMBlast has optimized it as much as possible, then I suspect it's more due to limitations with Unity. Like I said above, even with all the mods enabled, DFU isn't fully utilizing my GPU and CPU, but the framerate sucks anyway when I'm using Trees of Daggerfall or Realtime Reflections, even with nothing else on, and no amount of option-tweaking helps. Meanwhile I can run a game like Doom Eternal, which I'm fairly certain is far more graphically intensive than DFU :lol:, at max settings, where it's using 100% of my GPU the whole time and still giving me 80-100 FPS. Simply put, I seriously doubt the problem is hardware-related (at least in my case, anyway).
You can't compare a game like DOOM Eternal to Daggerfall / DFU. Whereas all the game data in DOOM is ready for use, that's not the case in DFU, the terrain is generated on the fly, once that is done, the nature stuff gets added (placement is also generated on the fly) and the heavier those models are (3d models vs flat billboard meshes), the slower the whole process gets. Add to that, the fact that DFU is still in Alpha so there's a lot of optimisation waiting to be done in the Beta phase.

Apart from that, DOOM was made by a team of professionals who get to spend at least 8 hours a day on stuff and optimise it to high hell. They worked extensively on their rendering pipeline to make certain things possible.

If you have enough RAM, you can try creating a RAM disk in memory and putting all of DFU + mods on it. RAM disks are faster than SSDs so that way you can minimise the time DFU spends loading in stuff but other than that, I think you'll have to wait until optimisations are made. The amount of nature flats that gets loaded in is ridiculous.

The newer version of Unity that DFU will switch to later this year might improve things too but that remains to be seen. Otherwise it might help to look at DFU as a new Crysis-like benchmark ;)
Daggerfall Unity on UESP: https://en.uesp.net/w/index.php?title=T ... fall_Unity
Daggerfall Unity on Nexus Mods: https://www.nexusmods.com/daggerfallunity
My github repositories with mostly DFU related stuff: https://github.com/BadLuckBurt

enderandrew
Posts: 19
Joined: Tue Mar 05, 2019 8:06 pm

Re: [MOD] Trees Of Daggerfall

Post by enderandrew »

BadLuckBurt wrote: Sat Jun 13, 2020 9:06 am You can't compare a game like DOOM Eternal to Daggerfall / DFU. Whereas all the game data in DOOM is ready for use, that's not the case in DFU, the terrain is generated on the fly, once that is done, the nature stuff gets added (placement is also generated on the fly) and the heavier those models are (3d models vs flat billboard meshes), the slower the whole process gets. Add to that, the fact that DFU is still in Alpha so there's a lot of optimisation waiting to be done in the Beta phase.

Apart from that, DOOM was made by a team of professionals who get to spend at least 8 hours a day on stuff and optimise it to high hell. They worked extensively on their rendering pipeline to make certain things possible.

If you have enough RAM, you can try creating a RAM disk in memory and putting all of DFU + mods on it. RAM disks are faster than SSDs so that way you can minimise the time DFU spends loading in stuff but other than that, I think you'll have to wait until optimisations are made. The amount of nature flats that gets loaded in is ridiculous.

The newer version of Unity that DFU will switch to later this year might improve things too but that remains to be seen. Otherwise it might help to look at DFU as a new Crysis-like benchmark ;)
If you're saying the hold-up is game logic of where to place assets, you might say there is a CPU bottleneck. But when DFU is neither taxing the CPU nor the GPU and is still having performance issues, that is where we can fairly point the finger at Unity.

We've just seen it time and time again with a bunch of Unity games and projects. It is simply not an efficient engine.

User avatar
BadLuckBurt
Posts: 568
Joined: Sun Nov 05, 2017 8:30 pm

Re: [MOD] Trees Of Daggerfall

Post by BadLuckBurt »

enderandrew wrote: Sat Jun 13, 2020 4:00 pm If you're saying the hold-up is game logic of where to place assets, you might say there is a CPU bottleneck. But when DFU is neither taxing the CPU nor the GPU and is still having performance issues, that is where we can fairly point the finger at Unity.

We've just seen it time and time again with a bunch of Unity games and projects. It is simply not an efficient engine.
Unity is multi-purpose 'general' engine, it does a lot of things but does not excel at any of those things. Comparing it to things like DOOM and how that uses GPU - CPU is just comparing apples to oranges. That's the only point I tried to make, the message being don't compare it to how finished games run and utilize your hardware. I'm not going to debate Unity and derail this thread though so this will be the last I post on the matter. We're all free to have our opinions and I doubt the trees will ever perform well through modding. That's not putting down VMBlast's work because it's awesome but just technical reality.
Daggerfall Unity on UESP: https://en.uesp.net/w/index.php?title=T ... fall_Unity
Daggerfall Unity on Nexus Mods: https://www.nexusmods.com/daggerfallunity
My github repositories with mostly DFU related stuff: https://github.com/BadLuckBurt

User avatar
Allerka
Posts: 65
Joined: Fri Apr 24, 2020 11:07 pm

Re: [MOD] Trees Of Daggerfall

Post by Allerka »

Alright, fine, it's not fair to compare DFU to finished and professionally polished games. But my point still stands that the performance issues with this mod and others is probably due to limitations in Unity (which is a game engine at its heart that's been adapted to other uses over the years). I'll remain hopeful the upcoming version upgrade helps.

enderandrew
Posts: 19
Joined: Tue Mar 05, 2019 8:06 pm

Re: [MOD] Trees Of Daggerfall

Post by enderandrew »

BadLuckBurt wrote: Sat Jun 13, 2020 4:14 pm Unity is multi-purpose 'general' engine, it does a lot of things but does not excel at any of those things. Comparing it to things like DOOM and how that uses GPU - CPU is just comparing apples to oranges. That's the only point I tried to make, the message being don't compare it to how finished games run and utilize your hardware. I'm not going to debate Unity and derail this thread though so this will be the last I post on the matter. We're all free to have our opinions and I doubt the trees will ever perform well through modding. That's not putting down VMBlast's work because it's awesome but just technical reality.
I haven't made a comparison to Doom.

But if Unity games have performance issues consistently, even when not constrained by hardware, then it is a Unity problem. And that does happen consistently across a lot of Unity games and projects.

User avatar
pango
Posts: 2605
Joined: Wed Jul 18, 2018 6:14 pm
Location: France
Contact:

Re: [MOD] Trees Of Daggerfall

Post by pango »

VMblast wrote: Wed Mar 06, 2019 8:15 pm In my other Unity test scene (not DFU), trees run smoothly and flawlessly...really great number of them, just like in that link you've passed. So, my conclusion is Occam razor -if its not models, speedtree, shaders, LODs, anims, tweaks, than it must be something in DFU coding that is causing this nose dive. And Im sure its some small dubious thing to tweak lol.
Even if that's an old comment, that test seems sufficient to exonerate a lot of things including Unity.
When a measure becomes a target, it ceases to be a good measure.
-- Charles Goodhart

WeirdWizardDave
Posts: 2
Joined: Sun Jun 14, 2020 6:42 am

Re: [MOD] Trees Of Daggerfall

Post by WeirdWizardDave »

So the main performance impact of this mod seems to be on the CPU. Not sure if this has been looked into but one possibility is this is caused by continually checking distance to each tree in order to swap out between the different LOD levels. It's a problem I had to solve for my own massive terrain system in Unity.

User avatar
pango
Posts: 2605
Joined: Wed Jul 18, 2018 6:14 pm
Location: France
Contact:

Re: [MOD] Trees Of Daggerfall

Post by pango »

That's possible, that seems to be one of the problems DOTS solves (using a hierarchical scene), so that's something I was wondering myself after looking at the demos.
But I'm a total noob on many topics including this one, is really the issue at play (or one of them at least), should we wait for DFU to be based on a version of Unity that supports DOTS or roll a custom solution, etc, etc, I don't have an answer to those...
When a measure becomes a target, it ceases to be a good measure.
-- Charles Goodhart

WeirdWizardDave
Posts: 2
Joined: Sun Jun 14, 2020 6:42 am

Re: [MOD] Trees Of Daggerfall

Post by WeirdWizardDave »

I doubt Daggerfall Unity will ever be adapted to make use of Unitys Data-Oriented model, its a massive change to the way a project is put together. But its not needed to solve this sort of thing anyway, if I'm right then it's just getting bogged down doing distance calculations on thousands and thousands of trees every frame.

User avatar
MasonFace
Posts: 512
Joined: Tue Nov 27, 2018 7:28 pm
Location: Tennessee, USA
Contact:

Re: [MOD] Trees Of Daggerfall

Post by MasonFace »

I'm falling back on my theory that instantiating the 3D trees using DFU code breaks the built-in Speed Tree culling system.

Problem is, I don't know of any simple tests to prove this, so I really have no evidence.

Also, I don't know if this theory explains why the CPU and GPU loads are so low.

Edit: From the Speed Tree troubleshooting website:
Keep App Data SDK-Friendly: The entire streaming and culling system is based on organizing trees into evenly-spaced cells. It is important for performance reasons that the application can quickly populate the cells provided by the SDK. This mostly means not wasting cycles during a render loop determining which instances go into which cells. We provide the example class CMyInstancesContainer, defined in the reference application in MyPopulate.h/cpp. It shows how to quickly and easily organize an existing population of base trees and instances into cells so that they can be quickly passed into the SDK. Even without an example, it's not difficult to organize instances into evenly-spaced cells.

Post Reply