Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improving loading protocol and efficiency for web-browser run games . . #1697

Closed
jasperbrooks79 opened this issue Oct 21, 2020 · 2 comments
Closed

Comments

@jasperbrooks79
Copy link

jasperbrooks79 commented Oct 21, 2020

Describe the project you are working on:
A Tomb Raider game . .

Describe the problem or limitation you are having in your project:
Been talking to some cool coders, and engine devs, real amazing people, about making web-browser games more fun, and I think one thing that is currently lacking is, one has to download the entire .wasm, before it runs, or so . . I think, if we had a more intelligent system, where one would load the core game assets, in low LOD, and basic game mechanic code, FIRST, and then intelligently back-ground load high LOD models, high res versions, of the textures, and replace what is in the game with those, as the game progresses, one could run a massive, open world 3D game, in the browser, even . . we were talking VR, and I think, if we had a sort of, ' loading priority ' system, so one could assign a value, for back-ground uploading priority, so for instance, suppose in a game, character must follow a trail, of paint, left by an enemy, one could set load priority to 20 ( 1 - 20 scale ), and that would get loaded FIRST, so the game WORKS, right away, ie. the game play crucial stuff is loaded, first . . . Then, the game would load LOD, of meshes, in the background, replacing the stuff in the game, over time, with higher-poly stuff, again if one had a SETTING, for back-ground load priority, that would handle almost everything, suppose I have 20 rocks, LQ LOD, MQ LOD and, HQ LOD, but I have made the level, by using say 3 - 4 of those, OVER AND OVER, and the rest, are more for added detail, with a background load priority system, one could set the most used rocks, to HIGH priority . . this would allow one, to decide what things were loaded FIRST, in a level, and would really help web-based games run nicer, or so . .

For stuff, like MASSIVE open worlds, one could do the same, and if one could DOWNLOAD the assets, to ones computer, WHILE playing, then the NEXT time one loads the same game, in a browser, it just works, faster, no need, to re-download . . Imo, having a ' download priority ' system, that one could apply even, to LOD levels, on meshes, could help really nice games load, and still boot fast, in a browser, also . . And, such a system would be almost necessary, when we get WebGPU, not just WebGL . .

The same feature might even be used, in non-browser games, to load levels as fast, as possible, for instance one could load all the assets, in the FIRST viewport area or, so, the player is in, and THEN start the game, and then background load, the rest, so one doesn't have to load an entire level, FIRST, but can LOAD assets, into memory, in the background . . this could decrease level load times, if done well . . for instance, there could be a setting, say LP, MP, HP, EHP, SHP, low priority, medium priority, high priority, extra high priority, super high priority . . then, if one places the stuff, that is one screen, in the first frame, of game-play, in SHP, super high, then one is guaranteed, that will be loaded FIRST . . suppose the level is 200 m long, and 200 m wide, and player can only see 20 x 20 m, in the game camera, at first frame, anyway for this to work, we need some sort of background loader system, where one can set priority, since this would allow one, to almost decide the load order, or so . . this could decrease loading times, especially in web-based games, I want to make LARGE, impressive open world 3D games, in web browser, so I need some optimized hard-code nerdy goodness, for that to even happen . . . Right now, the LOAD everything first, then play, really limits what can be done, in web-games, or so . .

Describe the feature / enhancement and how it helps to overcome the problem or limitation:
It's mostly for web-based games, where I want, to make something like Skyrim, but which boots, in like 10 - 12 seconds, with low LOD, low q textures, or texture LOD's, also . . then, the game begins background loading, based on a priority system, or so . . . :O :O . .

Describe how your proposal will work, with code, pseudocode, mockups, and/or diagrams:
Like, we have a collision cull mask, or so . . Have a setting, where one can set background load priority, to increase how fast, levels load, especially for web-based games, also with ability to set LOD's, to have a priority . . and, where one can set, say for a 2K texture, to first load a 50 % size 1K, or 25 % 0.5 K texture ( 512x512 ), basically, mip maps, starting from maybe 12.5 %, then 25 %, then 50 %, so on . . with an efficient background loading system, especially web-based games could explode, and become more massive, especially if one had an option, to save stuff, on the computer playing it, also, for faster load times, bigger games . . . however, they might need to be saved in a file-format, that is semi-copyright protected, ie. the downloader can't just ' edit ' the files, ie. there's mild encryption, or so, not sure . . .

If this enhancement will not be used often, can it be worked around with a few lines of script?:
Again, this needs to be done, at engine level, it could also benefit load times, on hard-drive games, not just web-games, or so . .

Is there a reason why this should be core and not an add-on in the asset library?:
Bec. as many people like web-deving, and it could make normal PC-run, local games load faster, it makes sense, to have something like this, maybe where some threads are set aside, for loading, not sure, what is the best way, to do this, etc etc . . . Or, one could have a setting, in project settings, for how many threads one wants to set aside, for background loading, if one wants this feature, at all <3

Thx . . <3

@jasperbrooks79
Copy link
Author

For, a massive open world game, one would also need to sort of, be able to load things, based on where the player is, in the world and, also which direction, they are looking . . It's mostly for web-based games, where I'm tired of waiting a long time, for games to load . .

@Calinou
Copy link
Member

Calinou commented Oct 21, 2020

Duplicate of godotengine/godot#41118. There's not much we can do about this issue for now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants