- Видео 46
- Просмотров 36 252
turing code
Добавлен 26 апр 2022
Hello, my name is Rohith. I create things to quench my curiosity.
MegaGrid UE5 | 320x320 Tiles Stress Test
Hello, all back with another progress report. I've finally fixed the lag issue stated in the last two videos. The ISMs are now split into chunks and the tiles are updated via each chunk. This reduces the CPU overhead of updating every instance in the grid. As you can see, even with the max limit of 320x320 tiles, roughly 102,000 instances, we're getting a somewhat stable framerate.
Now I'm not going to sit here and claim I have the perfect performance, you can clearly see some dips below 60fps (which is unacceptable in modern game standards). But this is the most extreme scenario, 320^2 is a lot of tiles and most games realistically wouldn't need that much. In my performance testing eithe...
Now I'm not going to sit here and claim I have the perfect performance, you can clearly see some dips below 60fps (which is unacceptable in modern game standards). But this is the most extreme scenario, 320^2 is a lot of tiles and most games realistically wouldn't need that much. In my performance testing eithe...
Просмотров: 53
Видео
Updating 102,400 Instances at 60fps | UE5
Просмотров 4714 дней назад
Hello! While diving deeper into my last log's performance issue, I discovered that Unreal Engine's Instanced Static Mesh Component struggles with dynamic custom data updates at high instance counts. For example, at 40,000 instances. Now, let me be very clear-ISMC can handle even larger instances without any issues, but the problem arises when you constantly update these instances. Take a look a...
100x100 Grid Hex Pathfinding
Просмотров 8721 день назад
While wrapping up my refactoring, I discovered how inefficient my pathfinding was at high tile counts. Even though I have async for fps stability the pathfinding itself was very slow, so I reworked the pathfinding and now its pretty quick end to end. You might notice frame drops but that isn't a pathfinding issue, its more about switching states of hundreds of tiles. I'll have to optimize that ...
Grid Plugin - Multi-Level Support | UE5 Cook
Просмотров 4221 день назад
Hello all, back with my compulsory update on the Grid Plugin. I haven't thought of a name yet, so help me in the comments. This time I've implemented a multi-level save system. Each level has a save handler that loads and saves to a user-specified save name. The data is then written to a GameSave class of the same name. P.S: couldn't find an MLM pun 😅 #unrealengine #grid #pathfinding #gamedevel...
Zero Aliasing Grid - Hex Update! UE5
Просмотров 31828 дней назад
Hello everyone! After two months, the Zero Aliasing Grid received a much-needed Hex Update for Unreal Engine. The asset now supports Unreal Engine 5.0.3 to 5.5. Update Notes: - Added procedurally generated Hexagon Grid. - Added two new Anti-Aliasing controls. - Changed GridSize to accept X and Y. Now available on: www.fab.com/listings/10431a22-59a3-4702-866a-63c5fd2a432f #unrealengine #unrealen...
Terrain Grid Realtime Pathfinding Stress Test | UE5
Просмотров 51Месяц назад
Hello all, has it not been a while? I'm still grinding my balls to the grid plugin I started working on in July. It's still going on but luckily I can confidently say that most of the plugin's main features are complete! Currently, I'm going back into the code base and refactoring a whole lot of things and I'm also taking this time to stress the features. One feature is real-time pathfinding (w...
Pathfinding Editor Mode | UE5 Cook
Просмотров 582 месяца назад
Oh boy back with an update on my plugin. This time I spent 2 whole weeks figuring out a way to implement a custom editor mode. As far as I can tell it's totally worth it! The Tile Editor lets you set tile types before the game begins so pretty much a dev utility. Currently, there's only a function for one type - obstacle. In this footage, you can see how the pathfinder adapts to the red squares...
Large A* Async Pathfinding w Terrain Costs | UE5 Cook
Просмотров 2223 месяца назад
Well, I am back with a progress report. It took me three days to figure out a working async method. I first used the easiest one, Async Task, but that proved to have limited controllability, especially when calling every frame (path under cursor). So, I decided to switch to FRunnables. I simply created a thread class to manage async functionality while calling the original PathFinding function....
Large Scale A* Pathfinding 100,000 tiles | UE5 Cook
Просмотров 7333 месяца назад
Hello all, it's been a while but I'm back at it... experimenting. This one is a pathfinding algorithm specifically A* but it's not at all optimized just fresh out of C . Many people wonder when to use C and Blueprints, this is a great example. I initially followed AlexQuevillon's blueprint implementation but that quickly proved to be inefficient when dealing with large grids. It gave out at a p...
A Procedural Grid with No Aliasing?
Просмотров 5183 месяца назад
Textures are the norm when it comes to creating grid materials. However, they pose various limitations, most notably the lack of grid parameters like line width. The solution is to create a procedural material that comes at the cost of bad aliasing. Even with Unreal Engine's best anti-aliasing TSR, there is flickering and jittering in the distance. This can be an eyesore to gamers and even a he...
Zero Aliasing Grid | Demo
Просмотров 1033 месяца назад
Zero Aliasing Grid is a procedural grid material for Unreal Engine. It takes aliasing into account during the calculation of the lines to essentially serve as mipmaps, reducing aliasing in small line widths and limiting moire patterns. The material has reduced aliasing in almost all Anti-Aliasing settings that Unreal provides. However, TSR is recommended for the best visual fidelity. Get Now: w...
Zero Aliasing Grid | Full Anti-Aliasing Comparison
Просмотров 633 месяца назад
Zero Aliasing Grid is a procedural grid for Unreal Engine that takes aliasing into account. It reduces aliasing in all AA settings and down to none in TSR. Best for large landscapes where quality and control are important. This video compares a regular procedural grid with the Zero Aliasing Grid. The test criteria are to show general use cases of grid material, including fast movement, distant ...
Decal Actors vs Fake Decals | UE5
Просмотров 1735 месяцев назад
Another test. While working on the grid, I had a good concern - what if a better solution existed? Rather than doing all this why not just use UE's decal actors? Well, I tried just that I put 40,000 decal actors and 40,000 fake decals to the test. And the result is as expected. In any normal situation, Decal Actors would be the optimal solution (working with a reasonable amount of actors - less...
40,000 Selectable Tiles | Grid Test 2 - UE5
Просмотров 1295 месяцев назад
Been a while since the last test, that experiment ended in failure. The maximum number of selectable tiles it could handle was about 1000 in runtime. This new approach although not perfect can handle 40,000 (200x200) selectable tiles. Remember I'm working on a system so that each tile can have up to x number of selectable tiles. That means a selected tile can have up to 40,000 tiles in path fin...
a grid test
Просмотров 595 месяцев назад
Experimenting with a scalable, performant, and deformable grid system.
Ultimate Dice Mechanic | Unreal Marketplace
Просмотров 2016 месяцев назад
Ultimate Dice Mechanic | Unreal Marketplace
Monsters, Actions and More! | devlog pt. 3
Просмотров 396 месяцев назад
Monsters, Actions and More! | devlog pt. 3
unscripted devlog pt. 2 | Projecting onto Grid
Просмотров 347 месяцев назад
unscripted devlog pt. 2 | Projecting onto Grid
a long unscripted devlog about making my first game pt.1
Просмотров 1157 месяцев назад
a long unscripted devlog about making my first game pt.1
npc helps me discover a new plant species
Просмотров 409 месяцев назад
npc helps me discover a new plant species
Coding a Flocking Simulation (Boids) | Ep - 2
Просмотров 22210 месяцев назад
Coding a Flocking Simulation (Boids) | Ep - 2
Coding a Flocking Algorithm (Boids) | EP - 1
Просмотров 49010 месяцев назад
Coding a Flocking Algorithm (Boids) | EP - 1
Coding a Ray Tracer in C++ | Lights!
Просмотров 33611 месяцев назад
Coding a Ray Tracer in C | Lights!
Coding a Ray Tracer in C++ | Glass Monke!
Просмотров 17911 месяцев назад
Coding a Ray Tracer in C | Glass Monke!
Coing a Ray Tracer in C++ | Metallic Objects
Просмотров 15911 месяцев назад
Coing a Ray Tracer in C | Metallic Objects
Coding a Ray Tracer in C++ | Ep [4] Anti-Aliasing
Просмотров 25411 месяцев назад
Coding a Ray Tracer in C | Ep [4] Anti-Aliasing
Coding a Ray Tracer in C++ | Ep [3] - Ball Trouble
Просмотров 40011 месяцев назад
Coding a Ray Tracer in C | Ep [3] - Ball Trouble
👌🏻
Also the timings I put are just eyeballed numbers, I was just looking at the fps on the detailed view. Here's the histogram for a similar session, with same parameters: imgur.com/a/RFwDWDH
👍🏻
theorically that's how lightning works
Now I see it, haha. But if you're interested in modeling more realistic lightning, I suggest Patterns in Nature.
👌🏼
👌🏻
Bot jk. Do you have any names for this plugin?
👍🏻
nice!
Hey, great video!! I'm trying to use streamlink library in Unreal but things getting complicated. If an end user needs to install Python to run the application, it's not worth to try obviously. So as the question below before 6 months, will end user need to install Python also? And for a simple python code from streamlink, do I need to implement PyBind or will CPython be enough? Thanks!!
👌🏻
Cool!
I've always been interested in compressing large collections of data into the simplest form. Cool.
The Library of Babel is only a sample of the real thing, as like any other library, there are things that actually aren’t in it. That’s why if you use the search tool, there are not infinite results.
Yes, anything related to infinity is computationally impossible. Or is it 🤔
So it just contains every possible book with less that 210 pages and you can only search up 3200 characters? Quite useless. Otherwise this could have been the best algorithm for compressing data. Imagine all the books, pictures, films and music you could store on a phone with this algorithm, but 3200 are about 3,2kb of data you can compress, basically nothing.
Haha, you're not wrong. This project was more about how we can bring something as fictional as the Library of Babel to reality using the powers of programming. As others mentioned there's a certain magic to it when you look past just the algorithm. I never claimed anything about creating a new compression algorithm either, I think the ones we have are already quite optimized. If anything the principles here can be used in seeded procedural generation for games like No Man's Sky, Minecraft, etc.
🤚🏻
Hi! Is there a way to use it with d20 system?
@huseyinustem6667 Hi, currently the system only supports a 6 sided die. I've gotten requests for adding more dice, so in the future I might do so. Thanks!
😁👍🏻
nice, but how did you endup having 100,000 tiles? sqrt(100,000)=316.2277 !! you probably have 1,000,000!!! 1,000 x 1,000
Hi, yes this footage uses 315x315 (I rounded to 100k for the algorithm 😅). It looks like 1000x1000 since the tile size is 500 so it covers a vast area.
WOAH! that is fast!
Yes, but more optimizations needed. When I added terrain costs, the algorithm constantly crashes 😆
pretty cool! you can add a sparse grid, precalculate paths between its nodes, then only calculate dynamic paths to and from those sparse nodes, and get a massive performance boost over longer distances
Hi, thanks! How would a sparse grid be implemented in practice? Will the precalculation take place between Points of Interest specified by the dev? Is this like hierarchies? Where the grid is split into subgrids and dynamic paths are only calculated for its children. Thanks!
@@turingcode Yea that's pretty much it. The dev wouldn't have to manually specify anything though. If you have a 100x100 base grid, you can add a second 10x10 sparse grid (where each sparse cell represents the 10x10 smaller cells in the base grid). Each sparse node could be in the center of the 10x10 base cells, or in one of the corners, or wherever really. Then at world creation time, calculate paths from each sparse node to their neighboring 8 sparse nodes. So each sparse node will be storing up to 8 paths (except for corner and edge nodes). Then, when you need to calculate a dynamic path, check if its longer than 10-20 cells or so, and if it is then do 2 A* searches from your start and points to their nearest sparse nodes, then do a 3rd A* between those sparse nodes, then take all the stored paths from the involved sparse nodes and combine them all together to get your final path. Something along those lines. It is sort of like a hierarchy but its only used for long distance pathfinding. You could add as many levels to the hierarchy as you want, or manually specify where they go, or even generate them as smaller paths are calculated. That depends on your needs though. Hope that helps!
@@turingcode Yea that's pretty much it. The dev wouldn't have to manually specify anything though. If you have a 100x100 base grid, you can add a second 10x10 grid (where each cell represents the 10x10 smaller cells in the base grid). Each sparse node could be in the center of the 10x10 base cells, or in one of the corners, or wherever really. Then at world creation time, calculate paths from each sparse node to their neighboring 8 sparse nodes. So each sparse node will be storing up to 8 paths (except for corner and edge nodes). Then, when you need to calculate a dynamic path, check if its longer than 10-20 cells or so, and if it is then do 2 A* searches from your start and points to their nearest sparse nodes, then do a 3rd A* between those sparse nodes, then take all the stored paths from the involved sparse nodes and combine them all together to get your final path. Something along those lines. It is sort of like a hierarchy but its only used for long distance pathfinding. You could add as many levels to the hierarchy as you want, or manually specify where they go, or even generate them as smaller paths are calculated. That depends on your needs though. Hope that helps!
@@turingcode Yea that's pretty much it. The dev wouldn't have to manually specify anything though. If you have a 100x100 base grid, you can add a second 5x5 grid (where each cell represents the 20x20 smaller cells in the base grid). Each sparse node could be in the center of the 20x20 base cells, or in one of the corners, or wherever really. Then at world creation time, calculate paths from each sparse node to their neighboring 8 sparse nodes. So each sparse node will be storing up to 8 paths (except for corner and edge nodes).
@@turingcode Then, when you need to calculate a dynamic path, check if its longer than 20 cells or so, and if it is then do 2 A-star searches from your start and end points to their nearest sparse nodes, then do a 3rd A-star search between those sparse nodes over just the sparse grid, then take all the stored paths from the involved sparse nodes and combine them all together to get your final path. Something along those lines.
why no background music and subtitles?
This is simply a recording bro. Just for saving I uploaded 😌
👌🏻
I promise this is the last one
that's sad to hear.
@SaR0135 I meant my promo
Just realized how bad the RUclips compression is. If you want to see the uncompressed version go here: mega.nz/file/EM4yGRTD#xghtdf_j2Yn6wy3wjD8xByPjQafGepKJqWEWomThT5U
Just realized how bad the RUclips compression is. If you want to watch the uncompressed version: mega.nz/file/FNZkDBRI#HocCNB4hLq--vf56Ce-OvG1m4aUO_OE6Su7YU0g89vc
Hi On my side unreal engine gives error that cannaot open python312.lib I have added paths in directories, build.cs and also set environment variables but error still continue to appear even when i run pybind this error appears
Hi, I was able to reproduce the error. Try adding the path to the .lib file like this: "PublicAdditionalLibraries.Add("D:\\Software\\Python\\libs\\python312.lib");" to your build.cs file.
Thank you again for a wonderful video! :)
Literally exactly what I was looking for!! Amazing video!
Thank you, hope you find it useful.
cool
👌🏻
Yo bro ,This video is different, nice and beautiful.😇
Thanks brutha!
Hope you find it useful. Also, please read the guide to get started, I say this because you'll need to create a new trace channel and set the die faces to block that channel. I could've made it a project type but I wanted this solution to be integratable with your existing projects. So a small sacrifice.
👌🏻
Watching very late, what's this bro
Sorry bro , appreciate your effort…
@@SaR0135 Bruh 😂
keep up the good work this is so cool
Thank you very much!
Nice video. Will the users who install the final packaged game need to install python also? I'm curious how additional python packages can be installed also. I'm checking the cpython docs, but interested to know if you've tried this.
Hi, that's a neat question. Even I didn't bother to go this far with CPython and I'm not sure how that would work either😅. But my guesses are since CPython and PyBind both use the Python interpreter, the end user will have to have Python installed. But it seems you can embed Python with your application as you ship it (a good example would be how Blender ships with a Python interpreter). As for the installing of libraries, you still have to run it through the console 'pip install' but you can do it all inside the C script: py::module sys = py::module::import("sys"); py::module subprocess = py::module::import("subprocess"); // Execute the pip install command subprocess.attr("run")("pip install numpy", py::arg("shell")=true); --> [opens a console and writes code pretty much. You could technically call an exe with the same code.] The above is from GPT, so do double-check. As I mentioned in the video, what I covered was not even scratching the surface. Embedding stuff is pretty hardcore stuff, haha.
Hi On my side unreal engine gives error that cannaot open python312.lib I have added paths in directories, build.cs and also set environment variables but error still continue to appear even when i run pybind this error appears
👌🏻
U asked for the video, here it is 🙃
❤❤nice video bro
Thanks my g!
Thanks for passing it forward!
I created my own particle system and many other experiments 20 years ago in Processing when it was just around and mostly Java based. I'm really happy redescovering p5(.js) and having some fun again. Unbelievable how much the whole ecosystem evolved and the ease of use improved. Anyway, happy coding :)
Note: Add a UPROPERTY(EditAnywhere) to see collision in blueprint editor :)
Cool one ✌️
Wow amazing bro 👌🏻
Awesome, great work! I'm currently doing something similar
Hey, thanks! Are you working with Gemini or GPT?
Yoo bro long time no see…🤡
This is really cool, needs more views!
Hey, thanks!
You can now get the project on Gumroad! tinyturingmachine.gumroad.com/l/raytracercpu
You can now get the project on Gumroad! tinyturingmachine.gumroad.com/l/raytracercpu
You can now get the project on Gumroad! tinyturingmachine.gumroad.com/l/raytracercpu
You can now get the project on Gumroad! tinyturingmachine.gumroad.com/l/raytracercpu
You can now get the project on Gumroad! tinyturingmachine.gumroad.com/l/raytracercpu
You can now get the project on Gumroad! tinyturingmachine.gumroad.com/l/raytracercpu