Rick Posted June 3, 2014 Share Posted June 3, 2014 +1 tj! Quote Link to comment Share on other sites More sharing options...
Haydenmango Posted June 4, 2014 Share Posted June 4, 2014 That looks great tj! I really like the look of the world. Watching your progress is inspiring. Quote Check out my game Rogue Snowboarding- https://haydenmango.itch.io/roguesnowboarding Link to comment Share on other sites More sharing options...
tjheldna Posted June 4, 2014 Share Posted June 4, 2014 Thanks, each day brings something new to it, but still a long way to go! I'm actually starting to run out of coding things to do, so soon the focus will be characters, buildings, and GUI. 1 Quote Link to comment Share on other sites More sharing options...
BES Posted June 5, 2014 Share Posted June 5, 2014 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. Quote 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.Net | World 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 More sharing options...
Rick Posted June 5, 2014 Share Posted June 5, 2014 How are you getting around any sort of pausing when loading? Are you preloading 1 of everything required at the start? Quote Link to comment Share on other sites More sharing options...
Einlander Posted June 5, 2014 Share Posted June 5, 2014 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. Quote Link to comment Share on other sites More sharing options...
BES Posted June 5, 2014 Share Posted June 5, 2014 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.. Quote 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.Net | World 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 More sharing options...
Rick Posted June 5, 2014 Share Posted June 5, 2014 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. 1 Quote Link to comment Share on other sites More sharing options...
YouGroove Posted June 5, 2014 Author Share Posted June 5, 2014 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. Quote Stop toying and make games Link to comment Share on other sites More sharing options...
Einlander Posted June 5, 2014 Share Posted June 5, 2014 Threads are the way to go, but it would be a hard feat to in lua. I know in .net it's not that hard, but its not exactly simple. Quote Link to comment Share on other sites More sharing options...
BES Posted June 6, 2014 Share Posted June 6, 2014 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...) Quote 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.Net | World 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 More sharing options...
AggrorJorn Posted June 6, 2014 Share Posted June 6, 2014 like this? http://www.leadwerks.com/werkspace/page/documentation/_/command-reference/mutex/ 1 Quote Link to comment Share on other sites More sharing options...
Christian Clavet Posted June 7, 2014 Share Posted June 7, 2014 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) Quote Link to comment Share on other sites More sharing options...
Josh Posted June 7, 2014 Share Posted June 7, 2014 Deferred texture loading is an experimental feature that's in right now. It eliminates most of the level load times: http://www.leadwerks.com/werkspace/topic/9840-deferred-texture-loading/page__hl__managed 1 Quote 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 More sharing options...
ChrisV Posted June 18, 2014 Share Posted June 18, 2014 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. 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? 4 Quote My Artwork. 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 More sharing options...
shadmar Posted June 18, 2014 Share Posted June 18, 2014 A grid based scenemanager to handle a large number objects, this one holds 80.000 objects, trees and rocks, for a huge ground level. 9 Quote HP Omen - 16GB - i7 - Nvidia GTX 1060 6GB Link to comment Share on other sites More sharing options...
Rick Posted June 18, 2014 Share Posted June 18, 2014 @Shadmar Why is this better than LE managing the models? Just trying to gauge how you got such small fps drop with so many objects. Is this part of your shader? Quote Link to comment Share on other sites More sharing options...
YouGroove Posted June 19, 2014 Author Share Posted June 19, 2014 @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) Quote Stop toying and make games Link to comment Share on other sites More sharing options...
shadmar Posted June 19, 2014 Share Posted June 19, 2014 @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. 2 Quote HP Omen - 16GB - i7 - Nvidia GTX 1060 6GB Link to comment Share on other sites More sharing options...
YouGroove Posted June 19, 2014 Author Share Posted June 19, 2014 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. Quote Stop toying and make games Link to comment Share on other sites More sharing options...
Rick Posted June 19, 2014 Share Posted June 19, 2014 @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? Quote Link to comment Share on other sites More sharing options...
shadmar Posted June 19, 2014 Share Posted June 19, 2014 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. Quote HP Omen - 16GB - i7 - Nvidia GTX 1060 6GB Link to comment Share on other sites More sharing options...
YouGroove Posted June 19, 2014 Author Share Posted June 19, 2014 How do you attribute objects to a cell ? At game loading i presume ? depending on position put object in the right cell ? So Lua with some 80000 table entity pointers works good ? Quote Stop toying and make games Link to comment Share on other sites More sharing options...
Rick Posted June 19, 2014 Share Posted June 19, 2014 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. Quote Link to comment Share on other sites More sharing options...
shadmar Posted June 19, 2014 Share Posted June 19, 2014 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. 1 Quote HP Omen - 16GB - i7 - Nvidia GTX 1060 6GB Link to comment Share on other sites More sharing options...
Recommended Posts
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.