Jump to content

Runtime Assets Management ?


Guy Rabiller
 Share

Recommended Posts

I've never heard Josh talk about giving us more control over the scene graph, but he does plan on letting us load models on another thread. It would be another parameter to the LoadModel() method. We are hoping for some kind of callback then that let's us know when the model was fully loaded..

No such feature has been promised. I'll see how it works out, but I honestly think this kind of thing is overblown and would only benefit a very small number of people.

My job is to make tools you love, with the features you want, and performance you can't live without.

Link to comment
Share on other sites

No such feature has been promised. I'll see how it works out, but I honestly think this kind of thing is overblown and would only benefit a very small number of people.

 

Are you joking?!?! I might be wrong - but my guess would be that basically everyone here would _love_ to have a multithreaded LoadModel - command...

Link to comment
Share on other sites

How does this help you make games?

 

I think the idea is that it doesn't rule out making certain types of games like it does today. I know the talk will go to what's realistic for indies to make but it still does rule out certain types of games no matter if people thinks it realistic or not for an indie shop.

 

I also apologize as I was the one in another thread who said we were getting this. From some of the talks that happened around this area it seemed like you were making this feature. Again, I apologize for reading into that incorrectly.

Link to comment
Share on other sites

If the primary reason for this is to make very, very large streaming worlds, that's okay, but I need to know that because there's a lot more that goes into that than just loading models on a separate thread.

 

For example, I am using 64-bit floats on anything to do with matrices and positions, because the physics need it.

My job is to make tools you love, with the features you want, and performance you can't live without.

Link to comment
Share on other sites

How does this help you make games?

 

Hi Josh,

 

Albeit I'm not targeting game applications, even in the context of game applications this seems pretty obvious to me :

 

- How can you load a 'level' and displaying some kind of graphic animation to the user at the same time without background loading ? Does the application has to 'freeze' while loading the model/level/etc.. ?

 

- How can you implement infinite universes without a way to stream/load models on the fly in the background ? Or whenever a new model is loaded then the game would freeze while the player is waiting ?

 

Or are there some other mechanisms already available to do this I'm not aware of ?

 

Guy.

guy rabiller | radfac founder / ceo

Windows 7 / 64bits | Intel i7x980@3.33GHz | 12 GB RAM | NVidia GTX 480

Link to comment
Share on other sites

I agree. How nice would it be to be able to run a cut scene at the end of a level and have the next level load in the background. i.e. make LoadScene run in a background thread. I've no idea how complicated this would be given the current scene, or at least part of it, would still be resident but if there was a possible mechanism for doing this and simply swapping between the scenes it would represent the ideal from my point of view.

Intel Core i5 2.66 GHz, Asus P7P55D, 8Gb DDR3 RAM, GTX460 1Gb DDR5, Windows 7 (x64), LE Editor, GMax, 3DWS, UU3D Pro, Texture Maker Pro, Shader Map Pro. Development language: C/C++

Link to comment
Share on other sites

If the primary reason for this is to make very, very large streaming worlds, that's okay, but I need to know that because there's a lot more that goes into that than just loading models on a separate thread.

 

I think you can get away with just that though and leave it up to the programmers to handle the rest. Honestly LE's models are just another piece of data that describes "real" game objects. Nobody is going to make a big game like this without making their own game object objects that just have an LE model as another variable inside these objects. The behavior of the object belongs to the actual game object class and not on the model. The model is just a visual and nothing more. A model is not a game object like how LE seems to try to make it, it's just another piece that describes the game object. So the programmers can manage their own game objects and assign models to them if we have a way for LE to tell us what model has loaded and some properties tied to that model so we know what game object that model belongs to.

 

The models that don't have any functionality, then it doesn't matter either way with those.

 

Honestly if you just allow loading on another thread, and give us a callback to tell us when what model was loaded would give programmers what they need. You can leave it up to them to manage at that point then. Make us do null checks in our code to validate if a model gets released by the engine, that's fine. Maybe this is what phase 1 of this could be before you start worrying about how it all fits into the Lua stuff.

Link to comment
Share on other sites

I agree with that, having a threaded LoadModel function with a callback is the critical component. Anything else in terms of complexity could be built from that.

Intel Core i5 2.66 GHz, Asus P7P55D, 8Gb DDR3 RAM, GTX460 1Gb DDR5, Windows 7 (x64), LE Editor, GMax, 3DWS, UU3D Pro, Texture Maker Pro, Shader Map Pro. Development language: C/C++

Link to comment
Share on other sites

How does this help you make games?

It helps Indies A LOT to make games, because no Indie can make or affort assets like in Crysis (I think the player model alone costs like $20000), so they have to compensate for the visual quality with technological advancement, like infinite streaming worlds. MineCraft is a good example how Indies can make good games with very low asset budget, but technological superiority. Also Leadwerks Engine's realtime lighting is good to compensate lower asset quality.

Ryzen 9 RX 6800M ■ 16GB XF8 Windows 11 ■
Ultra ■ LE 2.53DWS 5.6  Reaper ■ C/C++ C# ■ Fortran 2008 ■ Story ■
■ Homepage: https://canardia.com ■

Link to comment
Share on other sites

I agree with that, having a threaded LoadModel function with a callback is the critical component. Anything else in terms of complexity could be built from that.

It has to be built into the system, from the start. That's why I ask for specifics about what people intend to do.

My job is to make tools you love, with the features you want, and performance you can't live without.

Link to comment
Share on other sites

../..That's why I ask for specifics about what people intend to do.

 

For games I can think about another use :

 

Imagine a space ( or whatever ) online game where each player has his own area where he can build things ( space station, or facilities on a planet ground, etc.. ).

 

When a player arrive in the 'area' of another player, there must be a way to load the custom assets of the area player ( because perhaps this player has built things with third-parties 'add-ons' and assets that are not ont the other player hard-drive - can't be preloaded ).

 

If the game must freeze while loading all the other player assets, then it would not be a pleasant experience.

 

This is an exemple of situations with *collaborative* games or applications.

 

If you go beyond games you can think of 3d applications where peoples are connected together, either in a P2P way or a Client/Server way. If someone is adding an asset into the 'universe' or the 'scene', it would be a shame to see the application freezing on every networked computer just to load the new asset.

 

Guy.

guy rabiller | radfac founder / ceo

Windows 7 / 64bits | Intel i7x980@3.33GHz | 12 GB RAM | NVidia GTX 480

Link to comment
Share on other sites

Putting it simple:

 

I want to be able to stream everything without having to wait for the engine.

 

When the engine is lame in loading models (because the model is damn detailled) I can come up with something.

When the engine has low FPS (because the world is too big or complex) I can come up with something.

 

If the engine stalls because it has to do *something* I can't come up with something.

 

So, simply put: please let's just not stall the engine.

Stream everything or make small parts of it or load it in in another thread.

Whatever you (the engine) do: Don't stall.

Link to comment
Share on other sites

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.

 Share

×
×
  • Create New...