EnTT -- C++ ECS Gaming Library
Вставка
- Опубліковано 2 лют 2021
- Today we have a guest speaker, XenoBrain from the GFS discord. He will be taking you through the excellent open source EnTT C++ entity component system gaming library.
Links:
gamefromscratch.com/entt-enti...
-----------------------------------------------------------------------------------------------------------
Support : / gamefromscratch
GameDev News : gamefromscratch.com
GameDev Tutorials : devga.me
Discord : / discord
Twitter : / gamefromscratch
----------------------------------------------------------------------------------------------------------- - Наука та технологія
Links:
gamefromscratch.com/entt-entity-component-system-gaming-library/
-----------------------------------------------------------------------------------------------------------
*Support* : www.patreon.com/gamefromscratch
*GameDev News* : gamefromscratch.com
*GameDev Tutorials* : devga.me
*Discord* : discord.com/invite/R7tUVbD
*Twitter* : twitter.com/gamefromscratch
-----------------------------------------------------------------------------------------------------------
underrated channel
Mike, I don't want to discredit you, but - THOSE are the kind of videos, we are waiting for!!! More technology, more in-depth analysis, if the video would last even 20 minutes of more - it's 20 minutes worth spending! XenoBrain - great job man! Keep up good work, and we surely want more of you in the future ;D
But his brand is short demonstrations of various APIs, Frameworks and DCC software in general. That's what we expect. I'm not saying to not do that, but In depth technical stuff should be another channel, bcs of dividing viewer base( much like clip channels for podcasts do it) and if Mike has time to do both(judging by this vid, not sure 😂) I would like it too.
he has a really relaxing voice
initially I thought you were talking about mike
gamefromscratch diametrically pivoting to ASMR
the reason i scrolled down was to see this
i do not complain tho
Really cool seeing so many modern c++ techniques used in such a practical way. I have been using Qt for all types of signal-slot style code (not game related) even when the whole qt library is unnecessary, I think I will look into how much of it I can replace.
Awesome video XenoBrain! Thanks for sharing.
I love EnTT, glad you're finally getting around to covering it :P
XenoBrain is a really good presenter. Nice work.
Great job and explanation on point
I will give it a try!
Hey ! Big thanks for the explicative content ! Now I struggle understanting the extents of ECS , is it limited to game design or could it be a good architecture for broader engines that just deal with any kind of signals like MaxMSP or TouchDesigner for instance ? I'm not sur if I need to go the ECS route .... thx
It's cool to use libraries. It's fun to make one.
Is there more of an entry level video available to watch that discusses EnTT and these concepts? A lot of this went -whooosh- over my head.
The Cherno's Game Engine Series covers EnTT ua-cam.com/video/D4hz0wEB978/v-deo.html that may be what you're looking for.
This was my first video like this I ever made so I know it's a bit rough.
I had to decide what "level" I was going to work at. Like, how far do I go explaining what an ECS is? Should I explain what CRTP is about? Should I give talk more about how structured bindings work? That kind of thing.
Ultimately I decided that the people who would most likely be using this library are probably familiar with this stuff, and trying to do an overview of the library while also explaining C++ would just make for a convoluted, muddled mess. Maybe I misjudged, I dunno.
But definitely check out Cherno's channel
@@xenobrain your video was great and well put together. As GFS has a verrry broad community, you'll definitely spark interest from other newbs such as myself - which is hopefully a good thing. Would be good to have a starting point that we can check out. Usually a demonstration of what the end goal makes it easier to understand.
10 second crew, checking in!
You bet! ;-)
Would be nice if we have a deep tutorial about each feature about ecs library too (reflection...)
XENO! XENO!
nice ;D
unintended asmr voice
@Gamefromscratch Can you do an overview on the latest Godot blog post? There has supposedly been a massive increase in 3d performance and it would be nice to see the improvements visually.
I'm not sure there is a video there. It's mostly talking about Godot 4 stuff, nothing I can really demonstrate.
It is worth checking Juan Lietnansky's Twitter, you will find it probably. (I probably botched the name, sorry)
Can I for instance, also make use of that library in Pascal?? Since I see that the MineCraft guy has done the same, noting that MineCraft was written in Java, so not any language can call actually C++ code, so how is that possible?
Minecraft bedrock uses entt, not Java edition
@@hydra1346 ahh I see, its written in C++ this Bedrock edition, makes sense than. thx
You can call functions compile on C++ since DLL files
docs.oracle.com/database/121/ADFNS/adfns_externproc.htm#ADFNS1402
I've noticed a mistake. The only correct colour to fill up a new texture is magic pink.
Aside from that It was amazing vid, very well done!
Wow! You came a long way, Can you make videos on Linux game development tools and steam os
LOL, I had implemented a lot of these features on my own because I failed to read the EnTT documentation beyond the parts talking about components, views and registries
Question about the code at 11:23:
auto const& dst_rect{SDL_Rect{transform_component.x, trasnform_component.y, texture.height, texture.width}};
First, why an a reference? (ie why "auto const&" instead of "auto const")? Constant reference to a temporary local, doesn't buy anything.
Second, this seems odd, why are you calling a list-initializer with another one inside it? Seems weird gymnastics to avoid specifying the type on the right. Eg, I would use this instead:
const SDL_Rect dst_rect{transform_component.x, trasnform_component.y, texture.height, texture.width};
Personally, I don't see the point of using auto here. You have to specify the type name anyway, and this way removes an extra set of braces.
Just part a personal code style. auto const& and uniform initialization by default where possible (informed by specific items the books Effective Modern C++ and C++ High Performance in particular though not strict recommendations). While these choices don’t always make sense on a given line, and such a small sample doesn’t have many lines, I do use them with consistency across my larger codebases. I’m definitely not prescribing any particular code style to others!
Beeflang has a discord?
You should make not overviews, but video tutorials. Unreal, Unity....
And call it "old-school Extreme Speed Learning" - "In our courses you can learn everything in 1 hours instead of 40 hours with the same volume of information"
Death by a thousand engines.
I've been learning Unity since 2016 I've almost learned it. In the meantime I've learned the basics of Godot. Maybe another year or so and I'll finally make a commercial game. 😂
Hi
c++ doesn’t look like c++ anymore lol
it is not C++98, modern C++ is ugly
EnTT for haxe?
It is unfortunate ( or fortunate, depending on your case ), that it is header-only library. It is fun do play around, but more often than not, the amount of time required to get something done with it doesn't justify the performance gain. I really like ECS, even disregarding the performance. My brain just works better with it than with OOP, but I wish there were a higher level implementation of it. Unity's one is kinda messy right now.
I strongly disagree, it's insanely easy to get started with imo and made my game more organized. I'm not sure I understand what you mean by it being unfortunately header-only, that doesn't imply a lack of functionality, that's just how c++ works is some libraries are only headers. I found it immediately useful and beneficial!
EnttVSNul
fk youtube ads and fk the obnoxious advertisers and their obnoxious ugly ads.
Object oriented is so ninetees :-)
Not knowing what ECS is I think I got nothing out of this video.
Why Mojang.
I was interested to watch, but the fonts are too small. Come on.. hit "CTRL +" at least 5 times before making a video.Even when I watch this on big TV I see just lines that resembles English. On another note, I watched a video 2 days ago on how to use ENTT and ECS, check out that C++ channel 'The Cherno' Entity Component System - Game Engine Series.
I did actually zoom in, 130% I think it was in Firefox, and it looked fine on my iPad, but definitely noted to make thing BIGGER if possible. Also, The Cherno's series is great. The EnTT Wiki actually mentions it, I mentioned it in another comment and actually my first take recording the video mentioned it too. Dunno why I forgot the second time around. Making vids is hard!
NTT would have been more clever.
NTT is the name of a major phone company though, so searchability would be awful.
@@gamefromscratch oh didnt know that.
The source is an over engineered mess imo.
haven't seen the source yet but entt is very widely used, among others by Mojang in Minecraft. So I guess it can't be that bad (at least the API)
The source can definitely be hard to read but it's written how it is because it has a lot of performance optimizations and other crazy stuff to achieve the API it was aiming for, under the often byzantine rules of C++. Better to hide this stuff in a library and present a clean API than make the user deal with it themselves, IMO. It's a true miracle when we get it both ways
@@xenobrain I'd take a clear code base over a lean/fancy API personally. I'd be more inclined to use it as well if there was only an ECS, and that all the extra features would be plugins. I wonder about the build times/binary size as well.
Anyways I use unreal which has built-in reflection so making an ECS for that is much easier^^.
Can we just destroy C++ and stick to Unreal blueprints? Thanks.
C++ will be around long after Unreal turns to dust.
blueprints are spaghetti as heck
Oh, its c++. That is ugly.
@DA git amazing. Use everyday.
modern C++ is ugly, versions more known are C++11 and C++98