Some people will say the final result is weird.... They are right. To try everything Brilliant has to offer-free-for a full 30 days, visit brilliant.org/Fredyy . You’ll also get 20% off an annual premium subscription.
@salysPRO2 ай бұрын
Let's see, if we consider... - New to Rust, which requires you to do some things differently - New to Bevy and ECS, which is a paradigm shift - Bevy changing quickly so information may already be outdated - Bevy not having an official editor (yet! It's being worked on... ) so it's hard to quickly see what's happening - No use of video tutorials Yeah, you did great! ... Crotch bullets~!
@FredyyDev2 ай бұрын
@@salysPRO thanks! Yeah, I found a few outdated pages and posts, but the compiler does a good job telling you something is deprecated. I also looked at multiple pages every time I needed something, so I would compare one page to another and see what changed...
@zoeherriot2 ай бұрын
@@FredyyDevI can tell you from experience it’s a recipe for disaster learning all those things at once. Once I got over the rust hurdle and came back to Bevy, learning about the Plugin paradigm it encourages, a lot of things clicked into place. (And I’m a AAA game engine dev - getting my head around this humbled me for a short minute).
@ZILtoid19912 ай бұрын
IMHO, editors are often what makes or break the engine for a casual user. My game engine has a tilemap and sprite layout editor, and many don't like the fact that tiles are displayed by name+tileID rather than the tiles themselves (and so are sprites), and in the next editor version I'll be revisiting that, but first I need to solve some dumb build issues, and get libevdev (RawInput for Linux) working.
@outis24932 ай бұрын
@@FredyyDev im new to programming and love to see people doing stuff like this, no i don't need cryptolike guys who tell they were ex faang programmers and talk about all they stuff they know without ever record them aktual doing some coding. coding sucks in a way you will never master it, it always changes and seing someone trying something knew and show a more realistic site of the job is always fun to watch -and hearing your thoughtprocess is more worth than watching the 10. python tutorial and copying it 1 to 1.
@moffichu9150Ай бұрын
genuinely though what tomfoolery is the "ECS" ... you have "components" inside of your "entities" ... sooo just properties inside of an object? How is this a "completely different" paradigm, and not just OOP
@justanotheruser78432 ай бұрын
hey, making a game in bevy while being new to bevy AND rust at the same time is insanety. good job nonetheless, it really impressive given the context. also, props to you for your methods of gathering info
@FredyyDev2 ай бұрын
@@justanotheruser7843 thanks, that's motivating!
@Alex50001482 ай бұрын
Imagine being new to Rust, Bevy, ECS and game development in general 😂
@FredyyDev2 ай бұрын
@@Alex5000148 that would be torture
@KnightMirkoYoАй бұрын
The video turned out to be a good intro to Bevy. Thanks! :3
@soanvigАй бұрын
I actually did that. The only advantage I had was long programming experience. So no Rust knowledge, no game dev knowledge (me trying to achieve some rendering effect in Bevy was a torture because I knew nothing about shaders et al). Honestly, the Rust was and after many months still is a killer for me. I envision some architecture, then I cannot simply implement it because of millions of rust caveats that all make sense, but are very hard to circumvent, leading to a clusterfuck of code instead mostly declarative style. That being said I quite enjoyed bevy itself.
@SensyProductions2 ай бұрын
Quick note about 22:52 It's not that rust won't let you declare uninitialized variables, but rather the compiler can't guarantee that the variable will be initialized before access. For example if there are no player components, the for loop will never execute and the variable will be undefined. A way to simplify a lot of code for getting the player would be to use the .single() (or the non panicking version .get_single()) to declare and instantiate the variables in one line.
@ctleans632616 күн бұрын
While query.single() is idiomatic, The code he wrote would be closest to something like query.iter().next().unwrap_or_default()
@delphicdescant2 ай бұрын
FYI, ECS has been an idea in development since 2002, if not earlier. It was implemented for Dungeon Siege and described in a 2002 GDC talk by Scott Bilas, which you can find on KZbin. It didn't get the name "ECS" until later, around 2007 or so, as more and more articles and implementations of the idea started to emerge. But it's been a thing for decades. I don't bring this up just to be pedantic, but rather because "Wow look at our new ECS idea" has been used in the marketing for things like Unity, and the fact that ECS is older than Unity, not to mention all these younger engines, should be more widely known so that people aren't susceptible to that kind of marketing.
@FredyyDev2 ай бұрын
@@delphicdescant That's interesting... Good to know! Indeed I see people pitching ECS as the ultimate paradigm. I don't know, maybe it didn't click for me yet...
@delphicdescant2 ай бұрын
@@FredyyDev To be fair, I do actually like ECS, so I'm not saying that people or engine creators *shouldn't* tout it as a good thing. I just don't like it when companies or groups try to take credit for "inventing" it, if that makes sense. I think the thing that usually makes the value of ECS "click" for people is having previously tried to write a game using a bunch of inheritance structures or other object-oriented programming practices that let them paint themselves into a corner, in some way or other. So when they later read about ECS, they think "wow all those problems just don't exist if I do things this way instead."
@carafe5762 ай бұрын
@@FredyyDev ECS is great when you start to share concept between entities. Let's say you make a "Lootable" component. Which basically create a "looting" feature in your game. Whenever you spawn a entity, you can attach a Lootable, and voila, you can loot every mobs you create. It's also easily extendable, let's say you want different UI for corpse/chest/containers looting, Just make a "loot" systems with differents queries for Corpse, Chest or Container. It's that simple. In a more "object oriented" SDK, you would have to inherit from Lootable, which also inherit from something else, etc, you'll ends up with a "tower" of inheriance. Each layers adding feature, and complexity.. and worse thing, would be that a childs mutate a protected attributs of a parents, and your on for weeks of debugging. However, ECS are not the magic recipe for making games. As an example, I think it's actually terrible when making small game, like tetris/flappy bird/etc this sort of small things. Because the "component" have no real meaning here. It's also terrible for voxels, because you cannot spawn an entity per voxel, or it will just clutter the whole engine. But when it comes to Open world /RPG/ city building or RTS games. There is shine like a beacon. Because adding generic feature to the entire game will just be about adding more component to the entities. As every plugin make its own house keeping, it's also more simple to debug, just enabling/disabling entire part of the game is just matters of commenting out a plugin. Want to loot corpse/chest/container ? Add a "Lootable" component Want to make building produce mobs ? Add a "MobProducer" component Want to make enemy shoot at you ? Add a Mob component and a "shoot_at_player" system which spawn Bullet. Want to make mobs shoot at each other ? Add a shoot_at_nearby system and Friend/Foe component. It's really organic in the way the dev will improve the game by adding more system/component, and I personnally really like it.
@diadetediotedio69182 ай бұрын
@@delphicdescant And they indeed don't exist if you do things this way. You have other problems, you just need to find if the paradigm is what you want or not.
@anonymousalexander60052 ай бұрын
@@carafe576It’s Composition and DoD (Data-oriented design) fundamentally (as opposed to Object-oriented design), it’s just that ECS is how that’s manifested in gamdev, it’ll have other names and other concepts in other industries. ECS itself is just an easy way to get general DoD in a general way for most games, but nothing stops you from applying the same DoD or Composition principles to non-ECS games 👍
@angelo17162 ай бұрын
when i saw that you hadn’t installed rust yet i knew it was going to be interesting. i really like the way that you learn stuff. thinking of doing it myself
@JacobNaxАй бұрын
"ECS" has been the standard for game development before it got it's name. It was kinda different back then since you had to do all the stuff manually but under the hood the principle was the same. A lot of console games had fixed arrays of structs and specific functions that accessed these arrays. The premise was that consoles back then had a limited amount of memory so developers were forced to utilize a fixed amount of memory to declare all their game properties in these arrays for all possible entities in the world.
@TheNoirKamuiАй бұрын
First minute "I don't know about rust, lets try to make a game in bevy" - I know exactly how this will end XD
@TheNoirKamuiАй бұрын
After watching 15min, I have to correct myself. Considering he never learned anything about rust, he moved forward quite allot! The duplicate code in setup and main had me screaming at the display but everything considered, it shows that he has allot of experience of similar practices and also that the bevy docs and examples are very well done.
@Endelin2 ай бұрын
"I don't know if this is good practice but..." That's me all the time with Bevy. It's a very interesting experience with Rust being so strict but Bevy being so loosey goosey at the same time.
@pacifico499923 күн бұрын
You just put in words why I don't really like Bevy
@IrregularFish2 ай бұрын
"it's always my fault isn't it?" Debugging in a nutshell
@ollllj2 ай бұрын
because the part in computing that gets faster at the slowest rate over time is "copying data from ram to cpu/gpu", that then gets slower and slower over time (relatively), and your programming style+language needs t optimize for that slowest-speed-bottleneck. object oriented programming does not optimize for this. it is going to become a relict. data oriented programming (with entity component systems) does optimize for this. it is becoming the default. data oriented means, all modifiable data is in long uniform lists, to optimize for the process of copying to cpu-cache. entities (anything that moves by modyfying data, like a sim in a sims game, have "components" that point at "data" of such lists. data oriented programming shines where ever you have large populations of very similar moving/changing objects. with data oriented programming you may have 100x to 10.000x as many of the same sims/projectiles on the same hardware. data oriented programming may not be worth the overhead-extra-cost on simpler games with less moving parts.
@jamesross1003Ай бұрын
Manage your stack and heap directly in whatever language or engine that you are using if possible at all. Then optimizing is not such a pain. Getting to the point that you can do so is a pain however. It is what made it so difficult to make a game or program for an early console so difficult when you have to scramble for every bit that you need. Coders today would have a heck of a hard time doing so. That is why in my opinion programmers and coders differ. Learn to do backend programming the hard way first then move to coding for your shortcuts after first mastering it on said hardware. Don't like the pedantic of a particular language or engine, then make your own from the ground up or modify it. It is very difficult to do so, but with work and patience it can be done. Just a thought, object oriented is an end goal and not a starting point for good overhead optimization. It can be easier. It can be faster to write. That does not mean that it is (pardon the pun) objectively better for overhead.
@estranhokonsta26 күн бұрын
I liked the attitude of inwardly swearing and doubting life, the framework/engine/programming in general and all the while going through until seing the end and realizing that it is about our ignorance as usual. You looked just like a real old school programmer there. Kudos to you.
@griffinmartin63562 ай бұрын
actually a very good look at bevy. This also makes me wonder how they do a lot of it in the backend as I'm newer to rust
@thisguy.-.2 ай бұрын
theres a lot of shenanigans under the hood for sure. If you want to isolate the core of how bevy works, start with the bevy_ecs crate since everything else is practically built around it, like how a pc build is centered around the cpu/gpu. Ask for help as well, there is a lot of seemingly contrived design choices unless youve used it in depth, and understand how a lot of it works.
@griffinmartin63562 ай бұрын
@@thisguy.-. well I also mean on how exactly it's handling dynamically calling those functions that are put into the update and everything. I guess it just takes a Fn with any amount of arguments?
@noxmore2 ай бұрын
@@griffinmartin6356 It uses some pattern matching trait magic, you can find it at the Bevy repo at path crates/bevy_ecs/system/function_system,rs (youtube moderation doesn't like links atm iirc) at the bottom of the file if you're interested, though it's sorta hidden behind a macro I don't think you can take a Fn with any amount of arguments in rust, you have to use traits for this kind of thing
@thegoldenatlas753Ай бұрын
@@griffinmartin6356systems work off set theory and there's a lot of parallelization going on. Ie: unless you explicitly say a system has to run before another system it'll run them in parallel, this works so well because of rusts memory rules (all those &s and muts)
@tomfooleryjohn6176Ай бұрын
@@thegoldenatlas753Well also too if they don’t share mutable dependencies too they can also be safely parallelized.
@Matt2348827 күн бұрын
The fact you were even able to limp through this without properly learning the fundamentals of Rust is a feat in and of itself. Though I will say, had you learned Rust first, you would have avoided much frustration trying to get your player rotation code correct. Actually, a Rust install comes with documentation. You can open a terminal/command prompt and type `rustup docs --book` to open the official Rust book. I strongly recommend reading this if you are interested in continuing to learn bevy.
@WondaMegaponАй бұрын
The thumbnail got me, but holy frick what an honest video. I’ve been trying to learn Rust on it’s own over the past few months. Even with some basic Rust knowledge, moving to Bevy is exactly this video.
@redrjАй бұрын
ah, rust the language that has more game engines then actual games using them
@andrieskruger98262 ай бұрын
Dude... HOW did you grasp all those concepts so quickly!? I had such a tough time getting started (I also didn't/don't know rust), what you did in a mere couple of hours took me days. I would you LOVE to see you continue this or even make it into a series!
@FredyyDev2 ай бұрын
I learned many libraries and frameworks so I know I should Google 90% of my questions lol
@jacques-dev16 күн бұрын
You did a great job going in without any Rust or Bevy experience!
@SomeRandomPiggo6 күн бұрын
This isn't a game engine, this is a framework
@The_WookieeАй бұрын
This is EXACTLY my experience as well but with a rogue like game. Good luck with RUST and Bevy! Also your keyboard sounds good.
@josephsmith51102 ай бұрын
By the way, if you check out the repository, it includes dozens of examples that show how to use the engine. Each example is a single file so you can easily play around with them and grab what you need.
@paholgАй бұрын
Really great video! I'm a software engineer with Rust experience and basically no gamedev experience working on a game in Bevy, so it's really interesting seeing someone come at it from the opposite direction.
@chrisu_XDАй бұрын
Impressive result for one day of working with a new engine and new langauge. 👍
@kresb23 сағат бұрын
It's shocking that you made it so far without knowing rust at all
@jaysistar2711Ай бұрын
22:36 You don't have to initialize with default. You can either use the transform from within the loop body (because you could actually have more than 1 player, even though you probably wouldn't, but think of the cherries in Super Mario 3D World), or you could use `break` as a `return` from the loop, which would give you the 1st transform. Rust is easier and most efficient when you think in dataflow where everything is an expression, even `if` "statements" and loops.
@RogerValor2 ай бұрын
Now I learned most of rust by interacting with gpt for my dumb questions, but I have to say, you mastered this brilliantly.
@kanaverumАй бұрын
Interesting content, great mic, and lovely, thonk-tastic keyboard. **Subscribed**
@sudsy39 күн бұрын
I actually made up ECS all on my own when I was playing around with making a game engine in college. I even called it an Entity Component System even though I'd never heard of such a thing before.
@chanku182 ай бұрын
You know this video was actually rather interesting, especially since I actually use bevy a bit on my own as a hobbyist. I'll say you did a rather good job considering the restrictions you put on yourself, plus a lack of knowledge about Rust. There are a few things I would do differently, but broadly you did what most people would do for their first ECS project, especially with your experience with a more 'traditional' OOP approach.
@hacktor_9225 күн бұрын
congrats! you did a game in bevy in 6 hours with no knowledge of rust nor bevy, while i struggled 24 hours to make a multiplayer pong replica knowing rust basics and no game dev knowledge. you did better than me
@aoeuable3 күн бұрын
You don't want two move systems containing duplicate code, that's an ECS smell. Have a velocity component, a move system acting on Velocity+Transform, and add/remove the Velocity component of the player in the key handler. Or change its value. Looking at bevyroids' code might be valuable, also t-machine's I guess classic by now article on designing bomberman. Actually re-wiring your brain to think like that will take some time but it's worth it and so much easier when you have good examples.
@Mint25pop2 ай бұрын
For being new to Bevy and Rust your project was pretty awesome! I have been watching lots of basic bevy tutorials on yt very nice to see The Freddy himself tackle bevy! Your fn shoot I would make a singe change, a Query Might have your entities or might not depending have any entities that match the query components , The code isn't wrong but will still run with zero players, by changing player_transform to be just the query transform value. for player_transform in &player{ "the rest of your code" } This way only if a player exists it runs, and if any players doesn't exist the query will be empty thus the for loop will not run! Any extra players will also run the loop! Now the player can control a firing squad!!
@FredyyDev2 ай бұрын
@@Mint25pop thank you, it's still very confusing for me but I'll get the hang of it.
@johnforeverrulesАй бұрын
my dear friend, you made this without knowing rust or bevy. you are amazing my man.
@Ankh.of.GamingАй бұрын
Very well done, given that you were new to Rust. Bevy is a departure from what we're used to these days with things like Godot/Unity/Unreal, i.e. a graphical editor where you lay out your game that lets you write a bit of your own code to control the logic. Bevy is, in fact, a return to the roots where you have to program everything by yourself, and only gives common building blocks like the main program loop, rendering pipeline and ECS, while you have 100% control of what your game does. I would argue that Bevy will never really need a graphical editor, although there is one supposedly in the works.
@jaysistar2711Ай бұрын
23:32 John Carmack calls the misery "newby brain", but it goes away, and it's replaced with euphoria once you've learned what you need for your project. It's best to go for it, and not avoid it. Like physical excercise, "If you ain't dyin', it ain't workin'!".
@catcatcatcatnip2 ай бұрын
I've watched this entire thing verbally saying "huuuuuuuuuuuuuuuuuuhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh" pretty good video my brain melted!
@solmateusbraga2 ай бұрын
Rust is a beginner monster on itself, so you did great!
@rranftАй бұрын
I have not used Bevy. I have reviewed the FAQ and the features. I can't see a purchase link. Given this, I don't know if "scam" can be applied here. Yes, it appears you had more difficulty than the face of the Bevy site would imply, so perhaps "deceptive" might be a better word. Brand new to Rust seems to be a large part of the difficulty described here. Also, I don't know if I'd say Bevy is a "pioneer" in using ECS as many, many game engines over the last 20 years have used components in one form or another and to various degrees. Face-bullets are indeed very cool. All of that said, your video is informative and interesting so thanks for your time and effort bringing your editorial commentary to us so we can learn from your experiences.
@FiosQuest29 күн бұрын
Wow, you did incredibly well to get that done in such a short time! As someone who's used Rust for years, and even teaches it, I've bounced off Bevy a few times. Rust is an unusual language too (I try not to say "hard" as all programming is hard but as you've shown we can learn it). I will get back to Bevy at some point for the same reason, it's not "hard" just unusual, though I too am currently more of a Godot person 😅
@xardiodrack1798Ай бұрын
Bevy is a very much work in progress but after following the engine for quite a while i can tell that the people behind really care about making a good engine and they constantly added meaningful addition to every update and im quite optimiste about the future of bevy
@bluebukkitdev806926 күн бұрын
If you build a game without an engine this would make alot more sense. You seemed to get hung up on the "Update" thing. The update function does in fact update everything, but it has to get called in a while loop (while running{ update() }) so that it is called each tick. The game loop that was added with the default plugins allows the update function to be called within that loop, making the game function.
@TheDannyMcGeeАй бұрын
@5:30 You might get there later in the video, but the `Entity` type can come in handy because 1) you can `Query` for `Entity` just like a component, and 2) you can use an `Entity` like a hashmap key to get the results for a specific entity from another `Query`. For example: ``` fn my_system(query: Query, mut transforms: Query) { for (entity, some, other, components) in query.iter() { if some_predicate(entity, some, other, components) { if let Ok(mut xform) = transforms.get_mut(entity) { update_transform(xform); } } } } ```
@InfernaltoastGamedev29 күн бұрын
If you are coming from javascript and new to rust, realize that everything in javascript by default is an Option and &mut but in rust you have to specifically declare them as such . Also & means borrow
@thisguy.-.2 ай бұрын
bevy is... a challenge, for sure. I prefer ggez for rust since its a lot easier to hit the ground running, and has much easier canvas drawing without directly forcing ECS upon you while still leaving the option open. I wouldnt reccomend bevy until someone uses an engine that gives complete control flow to the user, so they can figure out the patterns that actually make ECS and modularity so useful. Otherwise, it will just seem like inserting complexity for complexities sake, and I would rather people at least know why using App's and System's and Bundle's helps in the not-very-visible long run
@lucascamelo3079Ай бұрын
Indeed, begins with the simple and procedural game loop. Then moves to object oriented programming, with data and logic tied together. Then do a little of event oriented stuff do take a grasp of it as it's useful in everything real time related. So you can appreciate the beautiful of ECS.
@oihandeshayes67512 ай бұрын
hey, love your videos! keep doing them plz
@FredyyDev2 ай бұрын
@@oihandeshayes6751 thanks!
@eyz-4Ай бұрын
i've been a software engineer for over a decade and i know rust, yet i'm still terrified of game development and bevy/ecs. i've made a couple browser games, but learning how to use a game engine is too much. it was fun to make browser games but whenever i've tried to build a 3d game it takes all joy out of it for me.
@TannerJ0713 күн бұрын
I was so confused about update running once as well, I wish the mentioned that earlier.
@winnie8614Ай бұрын
Noce. You have very plesant and relaxing voice. And you learned it quickly, I think. I mean beavy.
@quelfth4413Ай бұрын
You almost never actually need to write f32 at the end of your numeric literals in Rust. As long as the literal contains a decimal point, it should be able to infer the type. So for an integer, you can just add a dot at the end, like " 100. "
@jenspflock14 күн бұрын
Can we please stop click baiting people by calling free software scams?
@dirtyleon7 күн бұрын
Never heard of Bevy and it looks pretty cool! I guess for my next game project I will use Unity.
@btarg1Ай бұрын
immutable by default seems like a hard concept to grasp when starting out in rust. this was a super informative video! also that keyboard sounds amazing what is it
@FredyyDevАй бұрын
Thanks bro! Keyboard is Ajazz ak820
@LubosMudrak24 күн бұрын
"I don't know what an ampersand means" ok, now I know that this guy did not do any C/C++ and I'm watching this to the end 😀
@FredyyDev24 күн бұрын
@@LubosMudrak lol, I have used pointers before but I had no idea how it works in Rust! Confusing fr
@gabrielkwong18782 ай бұрын
Amazing first try with you being new to a lot of things. I am sure there are alot of explaination videos about Rust and ECS. If you would like to know the history of the rise in popularity and where ECS principles stems from, I recommend watching Mike Acton's talk about Data Oriented Design and C++ and he was the VP for unity engine architecture and spear headed Unity DOTS at some point. Anyway just a interesting mention ifnyou'd like to check it out would like to see a video what you think about it if not another video about you leveling up your bevy and rust skills. Good luck and enjoy the journey.
@devwckd2 ай бұрын
really good video I hope you continue to learn rust/bevy if you liked it
@mehmeh88832 ай бұрын
I'm using bevy next
@Mint25pop2 ай бұрын
Freddy bevy?
@pietraderdetective89532 ай бұрын
how long was the cycle of rebuilding the program? Gamedev is something with lots of trial and error, i've seen people livestream Bevy and the long build times stopped me into trying it.
@FredyyDev2 ай бұрын
@@pietraderdetective8953 usually around 10 seconds for me. I didn't do all the steps for optimizing this recommended in the "getting started" section tho
@thisguy.-.2 ай бұрын
even if the compile times are fast, you still have to account for the fact that your development speed is gonna be floored by the insane learning curve, so only try it if you have the commitment to go the distance. otherwise, just keep a minimal amount of extra libraries that dont serve a massively important role, and your compile times will be fine enough.
@whtiequillBjАй бұрын
Isn't Bevy considered a framework not an engine? @20:03, I get the feeling this framework isn't designed for 2D work.
@VincentNeemieАй бұрын
Every 3D framework is 2D if you ignore one axis
@LubosMudrak24 күн бұрын
I think they will be adding a bacis GUI next year. There was an unoficial Blender plugin as a placeholder for game engine GUI, but I think it's not maintained anymore.
@tempname826313 күн бұрын
Try doing something similar in BeefLang using built-in SDL2
@sechmascmАй бұрын
I presume that they add an update function either way because that's its purpose. If you don't have an engine, you should probably code that yourself, so it does make sense that there's a module that adds that in. Stuff only happens if there's code for it. We're just spoiled and treat an update function with a time step variable for granted
@sufficient48342 ай бұрын
I appreciate that there are developers out there that still care about optimization and see the benefits of ECS, but I don't see a reason for anyone to try to make fully fleshed out games in it. If you have to build everything from the ground up, why use a game engine at all?
@FredyyDev2 ай бұрын
Definetly has it's place
@SirRichard942 ай бұрын
Performance isn't the only benefit. Composition is another big advantage. About the engine, yeah, it's a very low-level framework, but doing it from scratch is a whole other beast.
@Bloxd.io-Bros2 ай бұрын
Game engines started out without UI, so I wouldn't say its the future. Game engines with UI like Godot are much easier and make the process faster, no UI is definitely not an advancement, or the future. My first language was Python and I coded games in it for 4 years, and even published a game on steam made in Python, and I never knew what I was missing until I tried Godot. Regardless, great video, you did an amazing job!
@FredyyDev2 ай бұрын
@@Bloxd.io-Bros ECS is the part people say will be the future tho! Bevy is getting UI some time in the near future. Thanks for the compliment!
@Bloxd.io-Bros2 ай бұрын
@@FredyyDev Oh I see. I might check it out then
@EverRustingАй бұрын
I like no UI, except you'd need a level editor, you can code one yourself but that's a bunch of extra work.
@Bloxd.io-BrosАй бұрын
@@EverRusting exactly, i prefer UI though, because it is so much easier to navigate assets in my project.
@winnie8614Ай бұрын
Also you need aset management, and preprocessing textures into GPU format from PNG.
@TannerJ0713 күн бұрын
18:29 he went on another tangent
@NitrosS10 күн бұрын
This language looks harder than C++
@stormyplayswastakenАй бұрын
watching this made my brain melt, very confusing. 10/10, somehow made this entertaining
@liz2k2 ай бұрын
The best thing about Rust for me is that you can easily refactor your program. This really helps me in learning Rust. For example, when I used one concept and then learned another, I have no problem reworking the code because the compiler shows me where I need to fix it. This also works great with adding new features.
@lucascamelo3079Ай бұрын
Rust is a well desingned language and the trait system makes you program great scalable and easy to refractor. The one thing that i don't like is the async implementation. It's require to rewrite the whole program from bottom to top if you declare one single async function. Golang is much better at this regard.
@btarg1Ай бұрын
I'd love to see bevy along with Lua/Luau/AngelScript as a scripting language for a game engine, the ECS seems super helpful but compilation times would be annoying for iteration.
@laundmoАй бұрын
With the right setup, compilation times can actually be really fast. On Windows i used to get 4-7 seconds per change, but on Linux with bevys dynamic_linking feature enabled and the Mold linker installed, both of which are described in bevys setup guide, i get less than a second of compile time after the first time building the dependencies.
@Cinarbayramic23 күн бұрын
this is why s&box added scene system to the source 2 engine, entity system is not that good in some cases.
@madness..3449Ай бұрын
8:27 Literally me,watching every tutorial...😅🤌
@totallynothyper964Ай бұрын
Não esperava que falasse português, sua pronúnciação é muito boa
@FredyyDevАй бұрын
Valeu cara tmj!
@metamud8686Ай бұрын
Your keyboardclicks sound really nice and .. comfortable / ergonomic! What keyboard are you using in this video?
@FredyyDevАй бұрын
@@metamud8686 Ajazz ak820
@thanatos45424 күн бұрын
I'd be interested to know the sizes of the exe's between Godot, Raylib, and Bevy.
@FredyyDev24 күн бұрын
@@thanatos454 of the final game? Me too! I consider that very important
@thanatos45424 күн бұрын
@@FredyyDev For best comparison it should be with each game having the exact same features compiled for the same platforms. So for the Godot project I would remove the flashing and Godot icons. I am not sure about the Raylib version. I couldn't find a video on your channel about it(or the Godot version).
@InfernaltoastGamedev29 күн бұрын
You dont have to initialize everything .. declare it as an option and initialize it as None !
@simonrazer8303Ай бұрын
cheesus i hate this, thx for going through that pain so I didnt have too
@NoenD_io25 күн бұрын
Just give me camera position and drawing polygons in 3D
@davidbipolar890Ай бұрын
Try Nau Engine next
@autismspirit26 күн бұрын
dude I already knew from your profile pic that you'd like it, you look like the target audience. also don't trust rust users, ECS actually kinda sucks unless you build proper tooling around it, and no I don't mean attributes and code stuff, I mean it has to be designer friendly.
@rodolfolorote90592 ай бұрын
I think ECS existed decades before Bevy was even a thing, i wouldn't call it a pioneer
@thegoldenatlas753Ай бұрын
Ecs is only about 10 years old (before that was a more database approach that ecs evolved out of) bevy is around 4 years old. Bevy pushes ecs pretty far as is and there's a lot of stuff we wanna push even farther. But the biggest push is how bevy uses rust in such a unique way.
@adamodimattiaАй бұрын
I actually liked Bevy a lot, but I stopped using it, because it changes a lot too and frequently.
@antonsimkin2 ай бұрын
I like bevy's library but compiling for up to 1 minute after adding println!(...) kills it for me. also rust analyzer takes 700mb of my ram, no one ever mentions that.
@laundmoАй бұрын
Rust compile times are very CPU dependent. Have you tried bevys dynamic_linking feature and the other compile time improvements describe in bevys setup docs?
@antonsimkinАй бұрын
@@laundmo yes i did
@sunofabeach9424Ай бұрын
rust-analyzer is optional (although very helpful) for development. every IDE out there runs a language server for supported language which indeed does take up a lot of memory. on my machine rust-analyzer can eat up to 2 gbs at times
@RogueWolf_Dev2 ай бұрын
lmao this was very enjoyable to watch and relatable
@AndrasBuzas19082 ай бұрын
What keyboard are you using?
@FredyyDev2 ай бұрын
@@AndrasBuzas1908 Ajazz AK820.
@no.bits.absolutelyfake25 күн бұрын
Game engine without ui and editors Bro you just opened sfml+OGL for rust
@FredyyDev25 күн бұрын
thats how they call themselves
@resistan-y1hАй бұрын
Choosing a game engine without a graphical editor is like throwing away development efficiency. It is just a framework. I don't see the benefit of using it unless you want to make a very small game in your favorite language, or if you are a genius.
@Awesomer56962 ай бұрын
I gave it a go too, its just a waste of time compared to using godot or raylib, for composing behaviour just use a fat entity system, for performance just use smaller structs and batch simulate.
@danser_theplayer012 ай бұрын
I'd regret learning a rust hame engine before learning Rust just as Rust. That's the problem with low level languages and games. I'm pretty sure at one point or another indie game devs think "man, I wish I just wrote this game in scripts instead of using all this". You know like lua or javascript or whatever.
@thisguy.-.2 ай бұрын
i mean kinda, for me I just studied the Rust Book and *then* just dived into game dev, because thats what I like to do. And the thing is that there is more than just bevy. I started with Coffee, drppped it because its depreciated, and picked up ggez. And I still use it today in conjunction with MonoGame, with ggez being used as a tool for building custom specific mesh data. And I dont exactly regret not learning Rust more, since it was really easy to pick up the rest along the way. I suppose if you havent read the book, then youre going to struggle, but the book is so quintessential to anyone who learned to code in rust, and is so easy to find and access that Id wager not going through it and at least picking up the core concepts is just being ignorant of what makes Rust its own language and just trying it, expecting success when that very success depends on you being able to tough out the stupidly difficult learning curve. which is why I dont reccomend bevy or ggez to anyone who hasnt at least shown interest in reading about how to code in rust.
@w花bАй бұрын
JavaScript is a wild take
@lucascamelo3079Ай бұрын
If the game is simple, then sure. For complex things you will be grateful to be using a strong typed non-procedural language.
@skadoosh67062 ай бұрын
❤
@DevJeremiАй бұрын
I hate c++ like syntax
@CompanionCube2 ай бұрын
ecs is pretty good
@morganp72382 ай бұрын
masochist
@__________Troll__________Ай бұрын
Pygame clone 😂
@vardАй бұрын
people without chatgpt be like:
@guliverjham81482 ай бұрын
What i don't like about rust and bevy is that it seems to think you are both a genius and have infinite time. The compiler is super strict and at times VERY criptic. Option inflates the length of the code just like mut before even optimizing the thing. Systems like this iterate over a big list and waste more memory to internally optimize, you might as well make your OWN system and use this one just for rendering which wastes more time. Static variables are restricted and using the intended workarounds makes your code very ugly. I know it's to prevent the pre-initialization order nightmare but I only use it for lonely individual CORE objects so it never bothered me and it never will.
@lucascamelo3079Ай бұрын
For tiny projects just don't use Rust. No worth the overhead.
@thegoldenatlas753Ай бұрын
Ecs is very efficient and isn't just a "iterate over big list" its only refered to that way to make it easier to understand.
@danser_theplayer012 ай бұрын
Eeey Cey Ess sounds a bit long. How about ecis? I would call it ecis, or essys.
@Riael2 ай бұрын
Ey boss for the future can you please switch to redot?
@FredyyDev2 ай бұрын
@@Riael I might check it out but I don't see a point... I don't like politics but Godot (the engine itself) is still good
@2tired2sleep22 ай бұрын
@@FredyyDevcongratulations wokie, you will now go brokie.
@Jetway-Yefan2 ай бұрын
@@FredyyDevredot is uselss
@split9872 ай бұрын
who tf actually cares about the drama lol 💀💀
@Riael2 ай бұрын
@@split987 Since you don't feel free to be quiet about it ^^
@RichardLofty2 ай бұрын
Using rust for gamedev 🤮 You have been psyoped into thinking rust is good.
@FredyyDev2 ай бұрын
@@RichardLofty well I like it for now
@triducal2 ай бұрын
and why don't you like rust? are you just saying this becuase everyone else says this?
@thisguy.-.2 ай бұрын
rust has huuge boons that are never going to be found in another engine. need a mesh editor that can handle all of the fuckiest shenanigans you can physically cram into cpu time? how about a game with several complex systems that need to be run in particular orders? want to develop without the bloat of unnecessary editor ui and instead have access to egui, which is much more customizable and useful? even if you may get by with other particular engines, (monogame my beloved, never gonna take my control flow away) you will never find success as easily without running into a load of crap that makes you wish youd rather had gone cold turkey while you had the chance and are now stuck with a node tree which just will not work for what you want, or a game that is bug ridden or just flat and relies entirely on the non-coding related aspects to take it to success.
@Capewearer2 ай бұрын
@@triducal the "safe" language doesn't have strict specification, unlike Ada. It only has one compiler with no guarantees to backwards compatibility in the future. The whole "unsafe" thing can and *WILL* be exploited in practical applications. Rust is also infamous for its long compilation times, much worse than C/C++. In fact, NASA, SpaceX and automobile manufacturers still use C/C++ for dangerous tasks, because in fact language "safety" doesn't matter as much as performance, reliable testing process and having alternative tech stack (and, well, C/C++ do that perfectly). I do agree that safety matters, but Ada and many functional language do it much better than Rust. Whole "niche" of Rust is fanatism-driven.
@Capewearer2 ай бұрын
This "engine" lacks: 1). Scene editor 2). Occlusion culling 3). It's own global illumination system (except baked lighting exported from Blender). 4). Even it's virtual geometry is still in beta and requires tedious preprocessing with manual adding methods in your own code. That's the future you like? But it's written in *Rust* ! You don't understand! It's very *safe* , the borrow checker for game is more neccessary than first class features everyone uses! Rust evangelists are always like this. Just take a look for their leaders and how they look like.
@chanku182 ай бұрын
I mean, the Bevy is very open about being under development (it's not even at 1.0) and is actively working on those things.
@Capewearer2 ай бұрын
@@chanku18 Godot is also very open about development, yet it still can't compete even with Unity. 3D part still being unfinished for 10 years, especially about performance. I believe only in what has happened, not what was promised, because I have very bitter experience with such declamations.
@FredyyDev2 ай бұрын
Bro those are valid points but calm down. It's just a video testing an engine, I'm clearly not preaching bevy or anything, and bevy seems harmless so far, let them cook. We will see how this engine evolves over time! Right now it isn't complete enough to be used in production, I agree. And Godot is also a good project, with a bright future. Cheers bro!
@n3y2 ай бұрын
@@Capewearer why are you comparing bevy to godot when it's barely 4 years old and rapidly improving
@LOC-Ness2 ай бұрын
@@FredyyDevand yet the the title and thumbnail…
@cvabds2 ай бұрын
I bet you can't code
@cvabds2 ай бұрын
Vrasil
@FredyyDev2 ай бұрын
@@cvabds ué mano kkkkkk
@FredyyDev2 ай бұрын
@@diadetediotedio6918 sim, esse cara também pelo visto kkkkk
@lucascamelo3079Ай бұрын
@@FredyyDevué, nem notei que tu era BR, inglês tá bão mermo