Hey all! If you want your bullets to spawn the same way they do in the video thumbnail: In your PlayerSystem script: Use this line for your bulletTransform.Position: bulletTransform.Position = playerTransform.Position + playerTransform.Right() * 1.65f + bulletTransform.Up() * randomOffset - bulletTransform.Right() * math.abs(randomOffset);
Great job! Hope to see a full game with your ECS tutorial series. It's a new thing for many developers and I think you can feel free to explain even more of how each of the systems works or some other why`s. Like i would love to know more about the Burst compatibility concerns you mentioned at the end of the video :) Keep it up!
I adore the ECS, however I also severely dislike how every game prototype made with it completely lacks animations. The car flight game was a nice move by Unity team because cars don't need animation.
Interesting approach to teaching ECS. I feel like every other tutorial about ECS spends so much time on well.. ECS itself. But you're just going straight for it, how to make this thing. On one hand having already consumed a decent amount and basically understanding ECS already that makes this super easy to understand and consume, on the other hand I think for people who aren't all that well versed in ECS this might be a bit tough. We'll see. Good job.
I respect the awesome power of ECS and DOTS, but I'd be lying if I said this workflow and having to relearn all the syntax didn't make my brain and soul hurt.
Hey bro... it's a suggestion... how about building a complete course from beginner to intermediate. I think it will be very useful for everyone who wants to understand DOTS but didn't know where to start.
I agree, however in the meantime there is a TH-camr named Turbo Makes Games that has a lot of videos on Dots and ECS. Unsure how good they are because I have not went through them yet, but the videos seemed good on my initial impression.
I followed each step directly, but my Bullet System just doesn't get executed. With/Without Burst Compile, I also tried making the OnUpdate method public, nothing changes. Breakpoints in the BulletSystem are also never hit, even though they are hit in the PlayerSystem. Any ideas?
thx, It really good guide Systems basically GameObjects in OOP based Unity. Components are some kind of function collections? If I want control bullets with some triggers and change direction or pattern, still efficient for performances?
Hey do you think BulletLifeTimeComponent and BulletComponent could have been lumped together into a single component since you can't really have one without the other in most cases? Or is it somehow more efficient to keep them separate? Just trying to get a feel for the proper ECS philosophies.
Also, since the rotation and scale of a bullet is not really necessary (the rotation can be automatically derived from it's velocity instead), I wonder is there a way to give bullets a Position only component without using all of LocalTransform, which is slightly wasteful for the data cache in ECS if I'm not mistaken?
It really doesn’t showcase profiler and bottlenecks, as well as other ecs examples. For example DrawInstanced optimises GPU, and you don’t need ecs clunky apis for that. While it’s true for physics might benefit from ecs, there are pretty much algorithms for many use cases which will do pretty well without needing multithreaded jobs. For example trees or just culling. Also you can use jobs outside of ecs. Some platforms like webgl have limitation for just one thread even. All in all, all ecs vids look like misleading ads for me mostly. Nice tutorial, thank you for the content though.
May I ask a question because I don't quite understand? Like you, I want to create a system where bullets are fired massively at the end. Is it okay to use ECS (Entity Component System) only for bullet creation, and not for other systems? I'm not familiar with the concept of ECS, so it would be difficult to modify all systems, but I would like to implement just the bullet creation using ECS. You wrote all your code to suit ECS, but I want to use ECS only for bullets. Have I effectively leveraged the advantages of ECS? I apologize for the frustrating and basic question, but I would appreciate your response. In other words, is it effective to configure only some systems with ECS instead of using ECS for all systems?
yes but i think if you want to acces the position of the ship, so that you can set the direction for the bullets won't be possible anymore. Only if you would still store the ship as an entity it would be. Then you could controll it via Monobehaviour.
hmm... getting 15 fps while shooting... Testing the exact same code, but in a 3d scene and URP enabled. My player is just a simple sphere. So as the bullets... Will change it to 2d to see if there are any differences.... Legion 5 laptop - CPU: Ryzen 7 5800H - Graphics card: RTX 3050 Ti. RAM 32 Gb. [Edit]: after switching to 2d, I get 25 fps while shooting. Fps while not shooting ~80.
30 to 45 batches in drawcalls...not bad at all... But I think I will learn GODOT... BRACKEYS is back and got me motivated to learn open source again...I have a few ideas for new viral games!
Never blindly follow trends, mate. Follow your heart's desire. Both Godot and Unity are game engines, and at this stage, the distinction between open source and proprietary might not matter much. Currently, Unity offers features comparable to or even better than what you'd find in Godot. While you can't access Unity's engine code, ask yourself if it truly matters to understand what's happening behind the scenes. Ultimately, choose the engine that aligns best with your vision and goals.
Hey all! If you want your bullets to spawn the same way they do in the video thumbnail:
In your PlayerSystem script: Use this line for your bulletTransform.Position:
bulletTransform.Position = playerTransform.Position + playerTransform.Right() * 1.65f + bulletTransform.Up() * randomOffset - bulletTransform.Right() * math.abs(randomOffset);
Very concise and easy to follow. Thank you for the brief explanation. Looking forward to part 2!
Great job! Hope to see a full game with your ECS tutorial series.
It's a new thing for many developers and I think you can feel free to explain even more of how each of the systems works or some other why`s. Like i would love to know more about the Burst compatibility concerns you mentioned at the end of the video :)
Keep it up!
I adore the ECS, however I also severely dislike how every game prototype made with it completely lacks animations. The car flight game was a nice move by Unity team because cars don't need animation.
new Unity DOTS Framework is completely different than traditional MonoBehaviour,
thats make my brain hurt
I need more content like this
Interesting approach to teaching ECS. I feel like every other tutorial about ECS spends so much time on well.. ECS itself. But you're just going straight for it, how to make this thing. On one hand having already consumed a decent amount and basically understanding ECS already that makes this super easy to understand and consume, on the other hand I think for people who aren't all that well versed in ECS this might be a bit tough. We'll see. Good job.
WAAAAAYYYY beyond me. I'm a designer not developer... BUT have sent this to a client who it might be useful too. 😎👍
Can you design for me
I respect the awesome power of ECS and DOTS, but I'd be lying if I said this workflow and having to relearn all the syntax didn't make my brain and soul hurt.
Yea that's true but i think it's worth it but only if you have all the same functions as with gameobjects, collisions and so on
Hey bro...
it's a suggestion...
how about building a complete course from beginner to intermediate.
I think it will be very useful for everyone who wants to understand DOTS but didn't know where to start.
I agree, however in the meantime there is a TH-camr named Turbo Makes Games that has a lot of videos on Dots and ECS. Unsure how good they are because I have not went through them yet, but the videos seemed good on my initial impression.
@@ImmortalTimothyM Yeah I have watched him, but he is not beginner friendly.
I followed each step directly, but my Bullet System just doesn't get executed. With/Without Burst Compile, I also tried making the OnUpdate method public, nothing changes. Breakpoints in the BulletSystem are also never hit, even though they are hit in the PlayerSystem. Any ideas?
Keep up the good work!
Thank you.
thx, It really good guide
Systems basically GameObjects in OOP based Unity.
Components are some kind of function collections?
If I want control bullets with some triggers and change direction or pattern, still efficient for performances?
why does sprite renderer affect the player system? i mean if i delete sprite renderer, i get an error that local transform is not found
Time for simulated rain
As someone who wants to make shmups, I wish there were more tutorials like this for the Godot engine.
Hey do you think BulletLifeTimeComponent and BulletComponent could have been lumped together into a single component since you can't really have one without the other in most cases? Or is it somehow more efficient to keep them separate? Just trying to get a feel for the proper ECS philosophies.
Nice tutorial! i am new to all of this.
Can you cover jobs system as well please
Also, since the rotation and scale of a bullet is not really necessary (the rotation can be automatically derived from it's velocity instead), I wonder is there a way to give bullets a Position only component without using all of LocalTransform, which is slightly wasteful for the data cache in ECS if I'm not mistaken?
It really doesn’t showcase profiler and bottlenecks, as well as other ecs examples. For example DrawInstanced optimises GPU, and you don’t need ecs clunky apis for that. While it’s true for physics might benefit from ecs, there are pretty much algorithms for many use cases which will do pretty well without needing multithreaded jobs. For example trees or just culling. Also you can use jobs outside of ecs. Some platforms like webgl have limitation for just one thread even. All in all, all ecs vids look like misleading ads for me mostly. Nice tutorial, thank you for the content though.
Discord link seems inactive.
That frame drop from 1:03 makes me uncertain of this technology
that might be an editor thing, performance is normally better in build
May I ask a question because I don't quite understand? Like you, I want to create a system where bullets are fired massively at the end.
Is it okay to use ECS (Entity Component System) only for bullet creation, and not for other systems? I'm not familiar with the concept of ECS, so it would be difficult to modify all systems, but I would like to implement just the bullet creation using ECS. You wrote all your code to suit ECS, but I want to use ECS only for bullets.
Have I effectively leveraged the advantages of ECS?
I apologize for the frustrating and basic question, but I would appreciate your response.
In other words, is it effective to configure only some systems with ECS instead of using ECS for all systems?
You can have a mix of mono behaviors and ECS. So yes you can only do the bullets
@@iFAKEYx THX BRO!!!
yes but i think if you want to acces the position of the ship, so that you can set the direction for the bullets won't be possible anymore. Only if you would still store the ship as an entity it would be. Then you could controll it via Monobehaviour.
WOW
hmm... getting 15 fps while shooting... Testing the exact same code, but in a 3d scene and URP enabled. My player is just a simple sphere. So as the bullets... Will change it to 2d to see if there are any differences.... Legion 5 laptop - CPU: Ryzen 7 5800H - Graphics card: RTX 3050 Ti. RAM 32 Gb.
[Edit]: after switching to 2d, I get 25 fps while shooting. Fps while not shooting ~80.
Now make it multiplayer 😊
Another tutorial is required to explain this tutorial
So tis is DOTS hmm
Now i know i wont be using ESC 👍🏼 thanks for this tutorial anyway
30 to 45 batches in drawcalls...not bad at all... But I think I will learn GODOT...
BRACKEYS is back and got me motivated to learn open source again...I have a few ideas for new viral games!
If Godot finds out how to do ECS better than Unity, I'll never go back.
Never blindly follow trends, mate. Follow your heart's desire. Both Godot and Unity are game engines, and at this stage, the distinction between open source and proprietary might not matter much. Currently, Unity offers features comparable to or even better than what you'd find in Godot. While you can't access Unity's engine code, ask yourself if it truly matters to understand what's happening behind the scenes. Ultimately, choose the engine that aligns best with your vision and goals.
First