Jump to content

What are you working on :


YouGroove
 Share

Recommended Posts

I dont have any pics or videos ...BUT ...I am working on a streaming system ...

 

Basically it will "stream" every object in the whole scene depending on direction the camera is facing,distance from the camera,direction the character is walking etc ..etc.. everything behind or to the sides of the camera is unloaded to save memory..

 

Each scene will be small ...sort of like "modules" ...so if I have a scene with a space station for example ...with a few things like a nebula or debris field ... when I meet a certain point in will pre-load that scene ..then stream it in as im traveling in that scene..

 

If im traveling through space in a ship basically it will do the same thing ...each scene is loaded and streamed in as the ship flies through that scene..

I am not good at explaining things ...haha ...so if that doesnt make sense let me know..

 

Think streaming internet packets ...pretty much similar to that but the whole game will be installed on your hard drive or SSD..

 

Basically I am doing it this way to save resources ...should run better on every system ...even my low end laptop.

Threadripper 2920X Gen2 CPU(AMD 12-core 24 thread) | 32Gigs DDR4 RAM | MSI Nvidia GeForce RTX 2070 Stock OCed | ASRock X399 Professional Gaming Motherboard | Triple M.2 500Gig SSD's in Raid0

Windows 10 Pro | Blender | Paint.NetWorld Machine | Shader Map 4 | Substance Designer | Substance Painter | Inkscape | Universal Sound FX | ProBuilder | 3D World Studio | Spacescape | OpenSky | CubeMapGen | Ecrett Music | Godot Engine | Krita | Kumoworks | GDScript | Lua | Python | C# | Leadworks Engine | Unity Engine

 

Link to comment
Share on other sites

If he is using static models with simple textures, he could make his own model format, or make an obj loader, and on every cycle load some of the model into a surface untill its completely loaded. He can do the same thing with the texture. So now he has a deferred model loader and texture loading system. Split the world into sectors, and load all neighboring sectors and discard sectors farther than X sectors. This takes care of memory requirements and and allows for sudden u-turns.SOURCE: I use to make rpgs on graphing calculators.

Link to comment
Share on other sites

How are you getting around any sort of pausing when loading? Are you preloading 1 of everything required at the start?

 

Since the scenes will be so small I figured pre-load all or half of the scene ...but it will depend on the system specs of the person playing the game..

 

I am using LE2.5 currently with C# ... because I am already working with another engine that uses C# also ... and want to be able to use the same or similar code..

Threadripper 2920X Gen2 CPU(AMD 12-core 24 thread) | 32Gigs DDR4 RAM | MSI Nvidia GeForce RTX 2070 Stock OCed | ASRock X399 Professional Gaming Motherboard | Triple M.2 500Gig SSD's in Raid0

Windows 10 Pro | Blender | Paint.NetWorld Machine | Shader Map 4 | Substance Designer | Substance Painter | Inkscape | Universal Sound FX | ProBuilder | 3D World Studio | Spacescape | OpenSky | CubeMapGen | Ecrett Music | Godot Engine | Krita | Kumoworks | GDScript | Lua | Python | C# | Leadworks Engine | Unity Engine

 

Link to comment
Share on other sites

If he is using static models with simple textures, he could make his own model format, or make an obj loader, and on every cycle load some of the model into a surface untill its completely loaded.

 

Without threads this would still cause the main game thread to pause while loading. This is one of the things that I don't like about LE. I want to be able to load assets in another thread and move those assets to the main thread.

  • Upvote 1
Link to comment
Share on other sites

Yep, today Thread based is the way people go, while moving to some other region, next region assets are loaded in another thread. Wow game is a great very old example with vast world and no loading screens when travelling through regions.

Stop toying and make games

Link to comment
Share on other sites

Yeah .. even mobile devices are multi-threaded now ... so that should have been added to LE .. working on a way around that issue though..

 

In the other engine I am working on ... I have a C# script that enables multi-threading on the fly when streaming the scenes.. figure I can modify that to work with LE.

 

I will eventually switch the LE3 C++ since I doubt the .net wrapper works with the lua version that I have ...to be honest I havent tried to see if it would work though..

 

Maybe multi-threading will be added to LE 3 later (unless it has already and I didnt notice...)

Threadripper 2920X Gen2 CPU(AMD 12-core 24 thread) | 32Gigs DDR4 RAM | MSI Nvidia GeForce RTX 2070 Stock OCed | ASRock X399 Professional Gaming Motherboard | Triple M.2 500Gig SSD's in Raid0

Windows 10 Pro | Blender | Paint.NetWorld Machine | Shader Map 4 | Substance Designer | Substance Painter | Inkscape | Universal Sound FX | ProBuilder | 3D World Studio | Spacescape | OpenSky | CubeMapGen | Ecrett Music | Godot Engine | Krita | Kumoworks | GDScript | Lua | Python | C# | Leadworks Engine | Unity Engine

 

Link to comment
Share on other sites

You are not required to code in multi-threading to do streamed loading. (Could perhaps increase the performance, that all).

 

I think what BES want to achieve is loading progressively most the time but continue the execution of the application. Most frameworks (not sure for LE, but been asking for this in Irrlicht for years and they are not ready for it), do their loading once and then resume the application.

 

What is needed is a method to check if the application is loading (like IsLoading()) if true then update some kind of loader manager, at in the main loop of the application, so you can do other stuff in your application while you are loading.

 

The loader manager then will load pictures, and objects not entirely but build their buffers by steps at each update and they will have also a flag to be monitored like: MyModel->IsLoaded() to check if this model is completely loaded then be used in the scene. If the model have some textures, the same rules applies, until they are fully loaded it can't be displayed. (pointer will not be available to the renderer)

 

What this does, is that it allow to load progressively assets in your game. As BES was talking, loading models as the player is getting near of it then unload them when the player is far. If you take the standard approach, you need to load the entire level AT ONCE (So wait for the whole level to load), also you need to calculate a proper size for your level (for the memory you can use). Steamed loading of a level, is different as you can define for about any size for your level, then you define manually a proper distance to load/unload the assets. So you could define a bigger distance if your user have more ram in his system.

 

As I said multithreading can perhaps increase the performance (complicate also) but is not a requirement.

 

As for this kind of implementation being native of LE would require extensive modifications. If it's not done, Josh would have a lot of work to make this happen.

 

Another thing to note, is that using streamed loaders will only work well with relatively small objects. For example, a terrain would require a tiled/streamed loader. With thoses big objects, it get more complicated. Sometime, it's so big that you need to add LOD to the tiling system. (Planet rendering, very big terrains, etc)

Link to comment
Share on other sites

  • 2 weeks later...

Added a cool sanddust particle effect (prefab) to the Desert Pack on the Workshop. As you can see, it nicely blends (no cut off edges that might occur when particles and other 3D models contact) with the surroundings. Also working on another skybox, and models to add. smile.png

 

One thing that bothers me a bit, is that the particles rotate (face) towards the cam (for example, when they come from behind the cam. Having particles face the cam is good in most occasions, but for a sand dust (or fog/cloud) effect, it might be better if they stay at the same angles, no matter where the cam is. There are three options in the particle emitter, and i tried all three of them, but none gave me the effect i was looking for. Maybe a good suggestion to add it in a next update, Josh? wink.png

 

LE_SandDustFX_zps77b15d34.png

  • Upvote 4

 

ZBrush 4R7 64-bit - 3DCoat 4.5 BETA 12 - Fl Studio 12 64Bit - LE 3.2 Indie version - Truespace 7 - Blender 2.71 - iClone 5.51 Pro - iClone 3DXChange 5.51 pipeline - Kontakt 5 - Bryce 7 - UU3D Pro - Substance Designer/Painter - Shadermap 3 - PaintShop Photo Pro X7 - Hexagon - Audacity - Gimp 2.8 - Vue 2015 - Reaktor 5 - Guitar Rig 5 - Bitmap2Material 3

Link to comment
Share on other sites

@Shadmar : seems amazing

Could it be used to place any object type , i mean small objects assets, to houses , any number of variety ?

How to place them in the editor : manually or using some helper paint on perrain tool ? (maintain mouse button to continuously place objects as you drag the mouse)

Stop toying and make games

Link to comment
Share on other sites

@rick It's no shader, just lua. the objects displayed will steal fps, but search of wich objects to display is almost free.

 

@ygroove

If you have tens of thousands of objects placed in a map it will search .placed objects surrounding you in a radius R very fast and do entity:Show().

 

In that shot it displays all times around 1100 objects of 80000, so I will always have rocks and trees surrounding me, even if I walk for miles :)

However if you look from above you will see that objects visible is just surrounding the player in a defined radius.

  • Upvote 2

HP Omen - 16GB - i7 - Nvidia GTX 1060 6GB

Link to comment
Share on other sites

If you have tens of thousands of objects placed in a map it will search .placed objects surrounding you in a radius R very fast and do entity:Show().

Some grid based system could have been great also , map divided on some grid coordinates, each object position then would belong to a square of the grid, and you would display only the objects on the squares around and in front of the camera.

 

the objects displayed will steal fps, but search of wich objects to display is almost free.

So having some game option to choose how many objects to display in a radius around the player should be the way to choose the best performance possible.

 

If you would post some demo with non copyright trees and rocks, i would be interest to test it and see how performance goes.

Stop toying and make games

Link to comment
Share on other sites

@rick It's no shader, just lua. the objects displayed will steal fps, but search of wich objects to display is almost free.

 

So is this sort of like an LoD system then? If you are on a hill looking down I assume you might not see some stuff on the terrain in a distance? If there any difference than using the camera entity distance?

Link to comment
Share on other sites

So is this sort of like an LoD system then? If you are on a hill looking down I assume you might not see some stuff on the terrain in a distance?

Yes.

 

any difference than using the camera entity distance?

Abit, using camera distance would force me to check all 80000 objects every frame. Now I just check cells within my radius wich contains about 1000 objects, so number of checks would be about 80 instead of 80000.

HP Omen - 16GB - i7 - Nvidia GTX 1060 6GB

Link to comment
Share on other sites

Abit, using camera distance would force me to check all 80000 objects every frame.

 

Sorry, I meant using LE's built-in entity view distance setting.

 

 

 

 

So Lua with some 80000 table entity pointers works good ?

 

@YouGroove There really isn't any relation with how many of something and Lua when you have a system like this. At that point it becomes about memory mostly and Lua will use as much memory as you have available.

Link to comment
Share on other sites

Sorry, I meant using LE's built-in entity view distance setting.

Good point I havent tested, but I think you dependant on the in-house octree, and have predefined ranges like NEAR,FAR etc..

 

 

Edit: viewrange works quite ok, but MediumRange is really to close and FarRange is.. well too far.

If we could have custom ranges it would be perfect.

  • Upvote 1

HP Omen - 16GB - i7 - Nvidia GTX 1060 6GB

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...