Jump to content

Load on Demand resurrection


TheUnamusedFox

Recommended Posts

Popped over here to ask someone to take up http://forum.kerbalspaceprogram.com/threads/73236-WIP-Loading-textures-only-as-required It was an awesome mod, sadly, however, it was abandoned. If someone could take this up, and improve it, maybe get it to work with Opengl, you would be my, and many others, Hero. As Squad adds in more assets, and doesn't add dynamic loading, large part mods and graphic enhancements are hitting the 4gb limit, and seeing as how stock is fine without dynamic loading, I doubt we'll ever get it. These mod needs to live.

Link to comment
Share on other sites

I have to say, I do not understand at all why KSP is so RAM dependent. In contrast to other games, it doesn't even use that much in the way of textures. I suppose there must be some good reason that it is done the way it is, or that it would take a major re-write to change - why else would it not have been by now?

If there is a good reason, I can live with it, there is still [some] hope for a 64bit build - but when games like the latest Wolfenstein use upwards of 30gigs of texture resource and run as smooth as silk, it is hard to understand.

Link to comment
Share on other sites

I have to say, I do not understand at all why KSP is so RAM dependent. In contrast to other games, it doesn't even use that much in the way of textures. I suppose there must be some good reason that it is done the way it is, or that it would take a major re-write to change - why else would it not have been by now?

If there is a good reason, I can live with it, there is still [some] hope for a 64bit build - but when games like the latest Wolfenstein use upwards of 30gigs of texture resource and run as smooth as silk, it is hard to understand.

There are several reasons. Squad took the approach of loading everything because games that load on demand use loading screens (well more than KSP does anyway). Loading textures takes time to do, regardless of where you do it. Loading textures on demand means you will be waiting on a load screen or lag while it loads in-game, loading them ahead of time prevents that but then everything must be stored in RAM. Wolfenstein has a load screen for every level if I recall while KSP you can fly from Kerbin to Eve to Duna, to Jool without a load screen. It is a design choice, plain and simple.

That said, there are areas that Squad could improve. All of the textures are separate objects because of the way they were added in phases by multiple artists. Ven's Stock Part Revamp on the other had re-uses textures, making for less textures. In fact his pack adds around 30 new parts that do not have associated textures at all, they just re-use textures from the other parts that he 'revamped'. So there is room for improvement, but it's not as simple as just "Load on Demand". Load on Demand users might have machines capable of reducing load lag to minimal amounts, but not everyone does so if Squad were to implement it then many people could be excluded even from the Stock game.

Link to comment
Share on other sites

Its a fair reason, the continuity of the kerbol system is part of the charm. It does seem though, that when cruising in between planets, that there are a lot of parts living in the RAM that will not be of any use until back in the VAB/SPH. However, I dont know much about coding or game creation and I certainly dont want to second-guess any of the devs decisions, nobody wants to wait minutes every time you re-enter the VAB/SPH.

I was of the impression that parts that "re-use" textures still must load a separate copy of said textures. Is this not so? Re-used textures save RAM?

Link to comment
Share on other sites

The WWW class can be used for asynchronous asset loading (textures etc.). It shouldn't be too difficult to implement deferred loading mechanism; you'd just have a plain material serving as a placeholder meanwhile. Even with a wireframe shader for extra-cool effect! Even LOD could be implemented; as you approach planets, higher resolution textures are loaded asynchronously and swapped in when done.

Link to comment
Share on other sites

If there is a good reason, I can live with it, there is still [some] hope for a 64bit build - but when games like the latest Wolfenstein use upwards of 30gigs of texture resource and run as smooth as silk, it is hard to understand.

In Wolfenstein you don't jump from one planet to another, from the VAB (where every part texture might be needed) to vessels in flight, which may have hundreds of parts, to rovers with a completely different set of parts and textures, and back again, all in the space of several seconds. A given area has a set of textures, and the game has a good idea of when you're going to be moving from one area to another, and can proactively load textures as needed. It's a little harder in KSP where, from one second to the next, the game might need literally ANY texture. It's certainly not impossible, but you'd end up trading longer loading times for more free memory.

Link to comment
Share on other sites

Async loading may become a real possibility when we have Multi-core support. Time will tell.

In any case, back to the topic, I wouldn't want to start on resurrecting Load on Demand right before a major engine change. We need to see just how much it affects the game before doing things like that.

Link to comment
Share on other sites

Loading was like skyrim's level of detail pop-in, when flipping pages or loading craft, it simply loaded a much lower resolution texture in place of the real one, and as you needed them, loaded the full textures. Also, dynamic loading like this can be done very well - In skyrim, with 30gb of mods (Textures mods, model replacers) I rarely ever got above 2.6-2.7 gb used, sprinting with a heavily sped up horse across the map, and texture pop-in wasn't too noticeable. This is on a $30 250gb hard drive. I don't expect that kind of quality from Squad, nor from a mod - that would be totally unreasonable. But just getting LoD back to working would be awesome, especially with Opengl. Oh, I wasn't really hoping for someone to update it before the upcoming update - I was just hoping that a modder might find it an interesting project to eventually resurrect. LoD in a year is better than LoD never.

Edit -

In Wolfenstein you don't jump from one planet to another, from the VAB (where every part texture might be needed) to vessels in flight, which may have hundreds of parts, to rovers with a completely different set of parts and textures, and back again, all in the space of several seconds. A given area has a set of textures, and the game has a good idea of when you're going to be moving from one area to another, and can proactively load textures as needed. It's a little harder in KSP where, from one second to the next, the game might need literally ANY texture. It's certainly not impossible, but you'd end up trading longer loading times for more free memory.

This isn't too terribly accurate. KSP scene changes often take a while - not at all second-to-second, and there is no need at all to load a hundred+ parts into RAM when your vessel has, say, 30 unique parts. Like LoD does - just load a thumbnail image, when another ship gets within, say, 100km, load the parts it uses. Simple, effective. KSP , in timewarp, uses an on-rail system - it's simple to predict what you need to load. If your trajectory goes near a ship, do as I said last sentence - if it goes within visual range of a planet, load it. The only reason KSP really has the system it does is that it is low effort, and somewhat performance saving, and was implemented in Alpha. Stock KSP does not need a dynamic loading system at all - it goes nowhere near the limit, so I doubt Squad will ever implement dynamic loading, sadly. Unless some miracle happens and Unity 5 has some arcane -make-it-easier-to-load-dynamically magic that I as a non game dev don't understand, I think heavy mod users are up a creek without a paddle, unless LoD gets resurrected, or someone else makes a similar project as time goes on.

Edited by lagcity613
Link to comment
Share on other sites

To quote mid-message, use [​quote=username;PostNumber]Quote goes here[​/quote] with username replaced by the person you're quoting's username, and PostNumber as the actual post number. So your post above is [​quote=lagcity613;2150705]. You can leave out the username and/or post number, but the quote box won't contain the link to the original post.

Link to comment
Share on other sites

This thread is quite old. Please consider starting a new thread rather than reviving this one.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...