![]() in ECS instead, you'll query something like "drawable sprite" components, and draw them in OB, you have, say, players and enemies when you draw, you'll cycle the players, and enemies, and draw them. This makes the radical difference with a traditional object-based design example: The bulk of querying is performed on components, which, importantly are all global entities are typically retrieved starting from a component instance they own. In an ECS design, you'd create a player entity the main differences are that the Entity is just a reference, but most importantly, you access each field (called "component") separately. When you work on a player, you get the Player instances as a whole. You get a reference to player, and each Player instance has attributes. In an object-based design, objects are monoliths, with fields. > is a entity, and that entities have components, and the systems operate on entities (possibly based on their components) I'm not saying the best way to implement tables or just ECS is this approach, but it's common enough approach used to avoid memory bandwidth/allocations in games. Here's a few links on some of the stuff I mentioned: She acknowledges that there's probably better ways to do it. And it was kinda implied that it's fine (from what I remember) because it's no worse than what you end up doing in C++ or Java when implementing ECS, but at least it's safe in Rust. Aside: her ECS implementation is still safer than most C/C++ implementations used in published games, but that's a bit besides the point since that's the borrow checker doing its job.Īnyway, the irony is that she much better explains the pitfalls of her own implementation details that you do and she also explains why they're "fine" sometimes. I really encourage everyone to read up on Bevy's ECS and check out the unofficial Bevy cheatsheet book I'm certain at leat UE game devs will know how to appreciate how beautiful and ergonomic the design is, but others should as well). ![]() staircases (rather than steps) further with its own ECS. If you're interested in what a production-ish ECS implementation in Rust looks like, check out Amethyst's Legion or Bevy's ECS. So, I'm just bewildered why this is the bone you decided to pick. Did you expect a production ready ECS library you can copy off of slides and use them in your next game, lol? If anything, her implementation has too much passing resemblance with what a C++ implementation would look like (which is something she's very familiar with and her starting point) than a Rust one. So, yeah it's not great there's plenty of small issues with it, but none of them are with Rust, or with ECS itself. Well, it was made to fit inside a few slides for a 40-minute talk. Maybe I misunderstand what you mean, but it sounds to me like you're comparing working with `Option` as being the same failure mode as working with `void*`. More, what you call a custom allocator with tombstoning/generations are just things that exist with a lot of ECS implementations (regardless of language), and it's just become "tribal wisdom" at this point that this table-esque storage backend work really well with ECS (I dunno which one came first older game devs might know more about ECS history/evolution than I do).Īlso not sure what you mean by "that can fail in most of the typical ways and that she's gained nothing over the cpp implementation while wasting effort to force Rust into allowing her to do something really basic". ![]() Then she continues how Rust surfaces this bad design paradigm much earlier than it would've happened in other languages/ecosystems. The point was "OOO is probably not a good design paradigm for game dev". The point here was to illustrate the amount of coupling and "explosion" in size with this approach. Let's start.įirst you talk about "borrow checker issues" she's demonstrating in the OOO design. And then you somehow both managed to focused on irrelevant details and to talk out of your ass (like, at least be right about the details?), all to make a tangential point about how "sUpErIoRlY sMaRt CpP dEvs ArE" because they know this really basic shit.īut, I'll respond in case your misinformed comment manages to deter people from watching it. Like literally every one of them, and I'm not even exaggerating. You somehow managed to ignore all the points of the talk. I see you didn't even bother watching the video in full. ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |