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
    -----------------------------------------------------------------------------------------------------------
  • Наука та технологія

КОМЕНТАРІ • 67

  • @gamefromscratch
    @gamefromscratch  3 роки тому +5

    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
    -----------------------------------------------------------------------------------------------------------

  • @dreamsComeTruePL
    @dreamsComeTruePL 3 роки тому +36

    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

    • @roiiam
      @roiiam 3 роки тому +2

      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.

  • @dot32
    @dot32 3 роки тому +33

    he has a really relaxing voice

    • @santi5655
      @santi5655 3 роки тому

      initially I thought you were talking about mike

  • @Flackon
    @Flackon 3 роки тому +40

    gamefromscratch diametrically pivoting to ASMR

  • @coodude25
    @coodude25 3 роки тому +7

    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.

  • @andrewl296
    @andrewl296 3 роки тому +10

    Awesome video XenoBrain! Thanks for sharing.

  • @safebox36
    @safebox36 3 роки тому

    I love EnTT, glad you're finally getting around to covering it :P

  • @SapphFire
    @SapphFire 3 роки тому +3

    XenoBrain is a really good presenter. Nice work.

  • @MrNotteNera
    @MrNotteNera 3 роки тому

    Great job and explanation on point

  • @ovutai363
    @ovutai363 3 роки тому

    I will give it a try!

  • @ilycode
    @ilycode 2 роки тому

    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

  • @pajeetsingh
    @pajeetsingh 3 роки тому

    It's cool to use libraries. It's fun to make one.

  • @karlstenator
    @karlstenator 3 роки тому +6

    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.

    • @xenobrain
      @xenobrain 3 роки тому +5

      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

    • @karlstenator
      @karlstenator 3 роки тому +3

      @@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.

  • @chonkusdonkus
    @chonkusdonkus 3 роки тому +10

    10 second crew, checking in!

  • @mupmuptv
    @mupmuptv 3 роки тому +1

    Would be nice if we have a deep tutorial about each feature about ecs library too (reflection...)

  • @092_deepak_kumar3
    @092_deepak_kumar3 3 роки тому +1

    XENO! XENO!

  • @itsME-dc4vm
    @itsME-dc4vm 3 роки тому +1

    nice ;D

  • @gaeshows1938
    @gaeshows1938 3 роки тому +2

    unintended asmr voice

  • @FinaISpartan
    @FinaISpartan 3 роки тому +3

    @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.

    • @gamefromscratch
      @gamefromscratch  3 роки тому +1

      I'm not sure there is a video there. It's mostly talking about Godot 4 stuff, nothing I can really demonstrate.

    • @roiiam
      @roiiam 3 роки тому

      It is worth checking Juan Lietnansky's Twitter, you will find it probably. (I probably botched the name, sorry)

  • @taddeustentakel8598
    @taddeustentakel8598 3 роки тому

    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?

    • @hydra1346
      @hydra1346 3 роки тому +2

      Minecraft bedrock uses entt, not Java edition

    • @taddeustentakel8598
      @taddeustentakel8598 3 роки тому +1

      @@hydra1346 ahh I see, its written in C++ this Bedrock edition, makes sense than. thx

    • @tantumDicoQuodCogito
      @tantumDicoQuodCogito 3 роки тому

      You can call functions compile on C++ since DLL files
      docs.oracle.com/database/121/ADFNS/adfns_externproc.htm#ADFNS1402

  • @SylvanFeanturi
    @SylvanFeanturi 3 роки тому

    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!

  • @hellogic1964
    @hellogic1964 3 роки тому +1

    Wow! You came a long way, Can you make videos on Linux game development tools and steam os

  • @arsnakehert
    @arsnakehert 2 роки тому

    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

  • @guywithknife
    @guywithknife 3 роки тому +2

    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.

    • @xenobrain
      @xenobrain 3 роки тому +1

      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!

  • @amitrana2756
    @amitrana2756 3 роки тому

    Beeflang has a discord?

  • @rendermanpro
    @rendermanpro 3 роки тому +1

    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"

  • @FM_GOBi
    @FM_GOBi 3 роки тому +1

    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. 😂

  • @leffdepeff4871
    @leffdepeff4871 3 роки тому +1

    Hi

  • @gaeshows1938
    @gaeshows1938 3 роки тому +5

    c++ doesn’t look like c++ anymore lol

  • @gladiumcaeli
    @gladiumcaeli 3 роки тому

    EnTT for haxe?

  • @weslleyalcoba
    @weslleyalcoba 3 роки тому

    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.

    • @jacksonlevine9236
      @jacksonlevine9236 11 місяців тому

      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!

  • @jobedabegum745
    @jobedabegum745 Рік тому

    EnttVSNul

  • @osogrande4999
    @osogrande4999 4 місяці тому

    fk youtube ads and fk the obnoxious advertisers and their obnoxious ugly ads.

  • @scififan698
    @scififan698 3 роки тому +3

    Object oriented is so ninetees :-)

  • @jimvonmoon
    @jimvonmoon 3 роки тому +1

    Not knowing what ECS is I think I got nothing out of this video.

  • @chickeninabox
    @chickeninabox 3 роки тому

    Why Mojang.

  • @ThaerRazeq
    @ThaerRazeq 3 роки тому +2

    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.

    • @xenobrain
      @xenobrain 3 роки тому +4

      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!

  • @morfy2581
    @morfy2581 3 роки тому +1

    NTT would have been more clever.

    • @gamefromscratch
      @gamefromscratch  3 роки тому +5

      NTT is the name of a major phone company though, so searchability would be awful.

    • @morfy2581
      @morfy2581 3 роки тому

      @@gamefromscratch oh didnt know that.

  • @erebosnyx7563
    @erebosnyx7563 3 роки тому +1

    The source is an over engineered mess imo.

    • @cfffba
      @cfffba 3 роки тому

      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)

    • @xenobrain
      @xenobrain 3 роки тому +1

      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

    • @erebosnyx7563
      @erebosnyx7563 3 роки тому +1

      @@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^^.

  • @sethwalker8284
    @sethwalker8284 3 роки тому

    Can we just destroy C++ and stick to Unreal blueprints? Thanks.

    • @jimvonmoon
      @jimvonmoon 3 роки тому +5

      C++ will be around long after Unreal turns to dust.

    • @oscarsmith-jones4108
      @oscarsmith-jones4108 3 роки тому +3

      blueprints are spaghetti as heck

  • @lucasmontec
    @lucasmontec 3 роки тому +1

    Oh, its c++. That is ugly.

    • @lucasmontec
      @lucasmontec 3 роки тому

      @DA git amazing. Use everyday.

    • @tantumDicoQuodCogito
      @tantumDicoQuodCogito 3 роки тому +3

      modern C++ is ugly, versions more known are C++11 and C++98