let me know if u guys think i should make videos without music or with music im trying out without music at the moment and i want to know ur thoughts about it.
I would recomend using a profiler to see what's actually tanking your fps before just giving up on for exaple quadtrees. Though I think spacial hashing would be a better fit for you in this case.
Doesn't really surprise me too much. DICE ran into a similar issue when designing one of the battlefield games. They realized later on that brute forcing the array was actually faster than the quad tree till they reached a certain threshold. Instead of implementing a quad tree, which they found out the speed loss was primarily pointer hopping. They did spatial hashing where entity data that could potentially collide were put into buckets that were just arrays What they found out was that processors have gotten a lot faster. But memory hasn't. And bouncing on pointers isn't good
@bipedpotato7610 I'm not 100% sure, but it seems the performance of the quadtree might be worse because of cpu cache misses, which occur more often on sparse datastructures. When you use arrays instead, the data is packed more tightly together which usually reduces the number os caches misses - one of the main aggressors for perfomance degradation on modern cpus. Just food for thought: you could get even better performance with quadtree using memory arenas or another memory allocation strategy to pack the quadtree nodes more tightly together - possibly reducing cache misses. I cant even imagine how painful it would be to implement it tho lol
re: spatial partitioning, I'm the author of bevy_spatial which uses kd-trees or r*-trees for spatial partitioning and lets you do efficient k-nearest-neighbour queries on your entities. I've mostly tested it with single/few queries on large amounts of entities, and in examples i'm able to reach 40K moving entities before dropping below 144hz, with it re-creating the kd-tree every frame. there's definitely some work to be done on the crate, for example detaching the calculations from bevy's main loop, but so far I'm happy with what it provides.
very nice, but i think you should lower their hp. music would help but the trick is to make it unnoticeable, most mistake ppl make is having them too loud
thx this was just me testing out if no music is better than my last few videos with music. I will try to make it unoticable but can u check them out and tell me if the audio is right?
Hey, great vid! How are you doing the target selection in this game? I'm trying to make some kind of RTS prototype in bevy myself but I'm already having trouble with translating the screen position of a click into a world position on the ground. I know I need to do raycasting, I've been looking into bevy_mod_picking and bevy_mod_raycast but the examples don't really show anything like this and the docs are not very helpful either.
Ive been using bevy_mod_raycast for this if i remember correctly one of the examples mouse_intersection? I think shows how you can enable the mouse to raycast onto objects. I used a plane to raycast giving me two points which i form into a square area which the objects that are inside will be selected/
How many entities can you have max? I got custom ECS I made for unreal and it can handle 1 million entities with basic logic. Unity ECS not as optimized as it could be so I’m afraid bevy could be the same
Well i can only handle like 100000 at like 5 fps given i need to test for collision,attacks,flocking, and graphics take up lots of performance. Im sure you can run a benchmark on bevy without any graphics with only entities and just spawn like a shitton of them and test for fps. Bevy is really performant and can probably handle slightly more if you haven’t taken lots of time into optimizing your custom ecs.
bevy maintains 40fps WHILE generating a map with 6.5 millions tiles, where every single tile is an Entity with Components, on 5 years old i5. I think it is pretty impressive for 0.11 version Also I saw the guy that is making Rimworld clone, but with thousands of NPCs, on bevy. He said that the same implementation gave him 100fps with Godot and 900 fps with Bevy (and that's the reason behind going with it)
What is your editor theme and is it available for Neovim? Also awesome video, I've tinkered with Rust off and on but never really got too into it. I kinda wanna try this out for my next project though,
Oh man, those things look like evil furbies. What is the boids stuff doing now? It feels like you started out with that but apart from avoiding eachother they seem to all just beeline to the target. I know you asked about music: I feel like with your current microphone the sound quality of your voice isn't good enougd for a distraction like music. Another bit of feedback: when showing us what happens in the game: put it fullscreen, the outline of your editor isn't usefull, it's taking up space and the terminal scrolling is distracting.
So i’ve pretty much tuned down the boids system so much that the only really noticeable component of it is seperation. I might add it in again if i feel like it is worth it. Also im getting a new mic soon so the sound quality will be much better. I might go into fullscreen when i show things next time but i feel like seeing the code a bit is slightly interesting for programmers who can see how some things are done in fragments.
I tried Bevy ECS but I just couldn't get it, Rust overall has a rather strange syntax honestly, My biggest issue was being unable to directly pass parameters into functions like usual, Resources were also really weird to access. (Example: res_mut)
yeah ecs did seem a bit alien to me when i first tried it, although bevy wasn't the first ecs i used it felt a lot better than the other ones that i used previously which was a big part of why i use Bevy so much.
let me know if u guys think i should make videos without music or with music im trying out without music at the moment and i want to know ur thoughts about it.
No need for music. Voice quality could be better though!
No music please!
Low music
I think some quiet background music would be good
No music, for me at least the content speaks for itself 🙏
I would recomend using a profiler to see what's actually tanking your fps before just giving up on for exaple quadtrees. Though I think spacial hashing would be a better fit for you in this case.
ye i probably should have used a profiler because quadtrees in theory should be able to make it so much faster lol.
Doesn't really surprise me too much.
DICE ran into a similar issue when designing one of the battlefield games. They realized later on that brute forcing the array was actually faster than the quad tree till they reached a certain threshold.
Instead of implementing a quad tree, which they found out the speed loss was primarily pointer hopping. They did spatial hashing where entity data that could potentially collide were put into buckets that were just arrays
What they found out was that processors have gotten a lot faster. But memory hasn't. And bouncing on pointers isn't good
@bipedpotato7610 I'm not 100% sure, but it seems the performance of the quadtree might be worse because of cpu cache misses, which occur more often on sparse datastructures.
When you use arrays instead, the data is packed more tightly together which usually reduces the number os caches misses - one of the main aggressors for perfomance degradation on modern cpus.
Just food for thought: you could get even better performance with quadtree using memory arenas or another memory allocation strategy to pack the quadtree nodes more tightly together - possibly reducing cache misses. I cant even imagine how painful it would be to implement it tho lol
re: spatial partitioning, I'm the author of bevy_spatial which uses kd-trees or r*-trees for spatial partitioning and lets you do efficient k-nearest-neighbour queries on your entities. I've mostly tested it with single/few queries on large amounts of entities, and in examples i'm able to reach 40K moving entities before dropping below 144hz, with it re-creating the kd-tree every frame.
there's definitely some work to be done on the crate, for example detaching the calculations from bevy's main loop, but so far I'm happy with what it provides.
Never actually looked into bevy_spatial maybe i will integrate it into the game in the near future.
Nice work, really cool. There are almost no one making rts games in any framework, good luck !
Awesome! Cool work on the game
wow thank you very much for this video!! you motivated me
cheers from France
Keep it going my dude
very nice, but i think you should lower their hp. music would help but the trick is to make it unnoticeable, most mistake ppl make is having them too loud
thx this was just me testing out if no music is better than my last few videos with music. I will try to make it unoticable but can u check them out and tell me if the audio is right?
@@bipedpotato btw im an editor (u can check my yt) so im kind of experienced with that kind of stuff if u want some help lmk
"As I was concerned for their health"
Now I'm worried for _my_ health with how hard this made me laugh... xD
Earned a well deserved sub that joke did.
Very nice information Sir
Hey, great vid! How are you doing the target selection in this game? I'm trying to make some kind of RTS prototype in bevy myself but I'm already having trouble with translating the screen position of a click into a world position on the ground. I know I need to do raycasting, I've been looking into bevy_mod_picking and bevy_mod_raycast but the examples don't really show anything like this and the docs are not very helpful either.
Ive been using bevy_mod_raycast for this if i remember correctly one of the examples mouse_intersection? I think shows how you can enable the mouse to raycast onto objects. I used a plane to raycast giving me two points which i form into a square area which the objects that are inside will be selected/
@@bipedpotato thanks, I'll take a look at that, if I remember I'll give an update what worked so others can learn from it too
How many entities can you have max? I got custom ECS I made for unreal and it can handle 1 million entities with basic logic. Unity ECS not as optimized as it could be so I’m afraid bevy could be the same
Well i can only handle like 100000 at like 5 fps given i need to test for collision,attacks,flocking, and graphics take up lots of performance. Im sure you can run a benchmark on bevy without any graphics with only entities and just spawn like a shitton of them and test for fps. Bevy is really performant and can probably handle slightly more if you haven’t taken lots of time into optimizing your custom ecs.
bevy maintains 40fps WHILE generating a map with 6.5 millions tiles, where every single tile is an Entity with Components, on 5 years old i5. I think it is pretty impressive for 0.11 version
Also I saw the guy that is making Rimworld clone, but with thousands of NPCs, on bevy. He said that the same implementation gave him 100fps with Godot and 900 fps with Bevy (and that's the reason behind going with it)
@@alexandrbromles8658 thanks for sharing. That’s impressive. I’m keeping my eye on Bevy for sure.
What is your editor theme and is it available for Neovim?
Also awesome video, I've tinkered with Rust off and on but never really got too into it. I kinda wanna try this out for my next project though,
Its called the synthwave theme for vscode. I dont know if it is available for neo vim but if u use it for vscode it might corrupt rust analyzer.
Hey this would be a really cool video try rewriting your c++ game engine in rust with Bevy or OpenGL.
Bevy is a game engine
@@skidodleman6669 yes but his has a visual editor and bevy could still be used for making a game engine anyway.
@@Milk-yi9hg but why would you use a game engine to create another game engine??? That makes zero sense
@@skidodleman6669 What is the difference between an engine and a framework?
@@skidodleman6669 ok
U colorblind? That's not red.
Anyway good tutorial
Lol i forgot i changed the color theme
Oh man, those things look like evil furbies. What is the boids stuff doing now? It feels like you started out with that but apart from avoiding eachother they seem to all just beeline to the target.
I know you asked about music: I feel like with your current microphone the sound quality of your voice isn't good enougd for a distraction like music.
Another bit of feedback: when showing us what happens in the game: put it fullscreen, the outline of your editor isn't usefull, it's taking up space and the terminal scrolling is distracting.
So i’ve pretty much tuned down the boids system so much that the only really noticeable component of it is seperation. I might add it in again if i feel like it is worth it. Also im getting a new mic soon so the sound quality will be much better. I might go into fullscreen when i show things next time but i feel like seeing the code a bit is slightly interesting for programmers who can see how some things are done in fragments.
I tried Bevy ECS but I just couldn't get it, Rust overall has a rather strange syntax honestly, My biggest issue was being unable to directly pass parameters into functions like usual, Resources were also really weird to access. (Example: res_mut)
yeah ecs did seem a bit alien to me when i first tried it, although bevy wasn't the first ecs i used it felt a lot better than the other ones that i used previously which was a big part of why i use Bevy so much.
@@bipedpotato It wasn't so much ECS for me as much as it was actually trying to access values in the world itself.
i would argue that this within the bounds of ECS but i can totally understand the difficulties that you encountered.
Awesome
this man said they are red and blue... I see red and Grey.. Are you colorblind, or am I?
Typo!
Out of topic sorry but what is that Windows theme?
dude you're fucking smart
Did you finish the remake?
Noice m8
danke mi man
хороший видос
In the setup, appreciate the videos! Maybe a dumb question but is there a way to export content in mono in soft20?
How long does it take to learn soft?
Projects that change technologies tend to fail, stick with something, implementation is way more important than programming language.