Intro to EnTT (ECS) | Game Engine series

Поділитися
Вставка
  • Опубліковано 13 лип 2020
  • Patreon ► / thecherno
    Instagram ► / thecherno
    EnTT ► github.com/skypjack/entt
    Twitter ► / thecherno
    Discord ► thecherno.com/discord
    Series Playlist ► thecherno.com/engine

КОМЕНТАРІ • 91

  • @herrdingenz6295
    @herrdingenz6295 3 роки тому +151

    28:08 ENTT - really powerful
    28:09 ENTT - really fast
    28:12 ENTT - really good

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

      MEME

    • @acatisfinetoo3018
      @acatisfinetoo3018 Рік тому +4

      That's what she said.

    • @mjthebest7294
      @mjthebest7294 8 місяців тому +3

      28:06 ENTT - really simple
      28:08 ENTT - really powerful
      28:09 ENTT - really fast
      28:12 ENTT - really good

  • @magictrickdev
    @magictrickdev 3 роки тому +38

    "When I write code, I do it in American." - Yan, 2020

  • @Martinnn
    @Martinnn 3 роки тому +104

    Would love to see a standalone series on making an ECS!

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

      I too, would love to see a pure ECS from scratch.

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

      Me too, would be great

    • @user-hx4nz7bf4m
      @user-hx4nz7bf4m 3 роки тому

      yeyeyeye, but probably not a very deep dive cause people have done a entt thing and going too deep would probably be less eficient then using smth like entt

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

      @@user-hx4nz7bf4m That being said, entt is actually really well documented by the author.. And he even has some blog poster about different decisions he made while making entt.. So wouldn't be too difficult for Cherno to recreate entt and show us how he did it.. also pretty sure the author would appreciate the coverage :)

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

      Well i took a look at the ECS source...it's probably more lines of code than the game engine it's self. So good look with that.

  • @AgentM124
    @AgentM124 3 роки тому +49

    Title: EnTT
    Means: Entity
    My brain: EnTEETEE

  • @beaucooper5602
    @beaucooper5602 3 роки тому +15

    I really like how you split this topic into theory on a whiteboard in the first video and then actually looking at and implementing it in practice in the 2nd video. Made it much easier to understand! Thanks! Keep up the great videos, I'm loving this series! :)

  • @goshisanniichi
    @goshisanniichi 3 роки тому +8

    I think a series about writing an ECS would be cool, but I'd also be okay with you just taking an episode or two to dive into EnTT and discuss how it works and possibly why it does things the way it does them.

  • @241lolololol
    @241lolololol 3 роки тому

    Hey Cherno just wanted to really thank you for all the effort you put in your videos to help us become better developers. I've been working on a 3D physics engine for the past 2 months and this whole concept of ECS was foreign to me until I stumbled across your video and it opened up so many possibilities.
    Thanks man

  • @VineetNairhero
    @VineetNairhero 3 роки тому +12

    Ahh finally after a looooong time....♥️

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

    Nice! The engine is getting to a really nice place. Nice work Cherno!

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

    Finally after waiting for almost a week for a new video. I was starting to get worried. Thank you sooo much.

  • @carrout530
    @carrout530 Рік тому +2

    1. if someone made C2676 error, replace 0 with entt::null
    2. now .has for entt::registry no more support, replace with all_of or any_of

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

    Man, your videos are extremely useful. Thanks a ton

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

    Hey bro you are doing great work keep it up👍👍

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

    Yeah, good job! I'm really interested in, huge thank you!

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

    Very good one chernito

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

    I cannot live without this when working with c++

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

    Yayy, another video! XD

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

    Hey Cherno! Can you make a video talking a little more about the legal side of things? Like saving the license and how that is the right way to go about it and why. I am very ignorant to that whole side of coding, especially with noise algorithms lol

  • @herrdingenz6295
    @herrdingenz6295 3 роки тому +9

    27:00 .. let's just hit F5 and see what happens :D

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

    The video I didn't know I was waiting for. huh.

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

    All I want is a keyboard pov camera.. god damn this man is flighing through the keys!
    As always, nice video keep the great work

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

      I'd like that as well, to pick up a few shortcuts he uses

  • @dhkatz_
    @dhkatz_ 3 роки тому +9

    I'm actually so glad you've decided to opt for a third-party library like EnTT. I think it really shows that' you're serious because you're not trying to tackle literally everything on your own. You would never get a performant engine if you tried to do it all yourself. Love the videos though, keep it up!

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

    On your next ECS video can you talk about entity hierarchy in Entt?

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

    Hey dude, I would like if you upload more c++ but videos, they help me alot and are really interesting

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

    you don't need to provide any constructors (default or not) if the class or struct can be aggregate initialized, you're just adding more code at that point.

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

    thanks!

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

    yesss ! ! !!!

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

    As I good understand the ECS, we should not put into components any pointers. Because if we put a pointer into component then we need to access the data from ram, but that is slower than accessing it from cache. Am I right?

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

    I use Cereal, and couldn't figure out how to hook up EnTT to Cereal for serialization either. I asked Skypjack but the answer he gave was a bit over my head

  • @user-bl8zs7ic6d
    @user-bl8zs7ic6d 3 роки тому +1

    终于等到了

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

    You should do a reaction to the unreal engine next gen games unreal fest online 2020 video. It goes further in depth with the tech behind the unreal engine 5 tech demo.

  • @Moonix7
    @Moonix7 9 місяців тому +1

    If your running into the error where "has" doesn't exist it has been renamed to "all_of"

    • @kumu2024
      @kumu2024 2 місяці тому

      I read in the deprecated comment that you should use "contains" .. I think they changed even that. It is just so bad.

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

    Even visual studio struggles to load the code scrollbar thing on the right of the scree

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

    Personally I think "N.T.T." is much more intuitive missed opportunity.

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

      Plus, it's only one typo away from TNT, which I view as a positive thing.

  • @Shack263
    @Shack263 6 місяців тому +3

    I think pronouncing Entt as "en-two-T" is a good idea. It's common to replace repeated letters in acronyms with numbers, it sounds closer to the intent of whoever named Entt, and it's also not confused with entity!

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

    19:30 I remember Cherno also did this previously in timestep class and I wonder if its same as a function object. Because a function object would be like a normal operator overloading where you write the return type and then operator() and then another () for parameters but that seems strange to me. Could anyone please explain?

    • @JorgeAmengol
      @JorgeAmengol Рік тому +1

      That is an user-defined conversion function. Quite exoteric!

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

    will you provide an api (through jni/jna maybe?) for java developers to be able to use hazel?

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

      W4rd3nclyffe yeah JNI I also thought about that this would be awesome :)

  • @user-hx4nz7bf4m
    @user-hx4nz7bf4m 3 роки тому +1

    Okay so now i gotta know where this man learned c++ so well. Cause 5 years of uni doesnt seem like the time i have rn - i need to make a game and this man just did a few things that i would do a lot worse.

  • @PrinceGupta-jo8lo
    @PrinceGupta-jo8lo 3 роки тому +1

    A week is a long time.

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

    should something like Entt be in boost, or be nominated for inclusion into boost?

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

    Is it something applicable for geospatial data ?
    3d point cloud, vectors (linestring, polygons,...), multi-band images/rasters, terrain models, ....

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

      Hello from France! An ECS is just a way to separate data from code, you're not constrained to use it in the context of game dev. As an example, ArcGIS runtime SDK uses EnTT internally for its rendering engine.
      That being said, and although I'm not by any means an expert in your field, I'd say that an efficient representation of spatial data will make use of spatial partitioning in one form or another which is a completely orthogonal topic, not covered by the EnTT lib. Maybe have a look at quadtree / octree / k-D-tree implementations, I'd guess that's what you're after?

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

    Could you make a video about different kinds of ECS?
    Like with event driven and such.

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

    is that operator at 19:30 called a 'user defined conversion function'?

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

      I call them casting operators.

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

    If we're talking about something that's used so much in the program as an entity system, doesn't our custom wrapper make this a lot slower though?

    • @pxolqopt3597
      @pxolqopt3597 Рік тому +1

      Depending on how thin of a wrapper it is, there might even be zero overhead, but let's say there was, chances are the rest of the logic going on during the execution of a game (physics, rendering & lighting, etc) will completely overshadow any overhead the wrapper could have to the point of it being zero

  • @TiagoRodrigues-zp7ux
    @TiagoRodrigues-zp7ux 3 роки тому +1

    Hi Cherno. Just a quick suggestion.
    Use higher zoom in your browser and file system. It's a bit hard to read at 1080p.
    Cheers, mate.

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

    Writing your own (good) ECS would require also writing a memory management system. Allocators are fun to learn about though

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

    why don't you use cmake?

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

    2:48 EnTT Intro

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

    Hi Cherno, can you please upload more videos on C++ series, it has been a while :)

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

    Ah, finally. :D

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

    how the hell do I include this single header file in my project without getting 200 errors????

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

    Are you planning to make scripting language or use scripting language like lua? or use c++ hot reloading? I'm more intrigued how are you gonna add the component through what script language.

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

      What he told in prior videos, he's planning for C# scripting unless I'm mistaken.

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

      Ya i just see his latest video and he uses c# for scripting in physics. I am really looking forward how he implemented that and if he can add more.

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

    Have you planned to do public non-patreon livestreams on this channel at some point? You could be more productive since you had more time and would have a chat where we could get involved

  • @TriNity-GER
    @TriNity-GER 3 роки тому +2

    Cherno, please, please do a custom ECS!

  • @herrdingenz6295
    @herrdingenz6295 3 роки тому +9

    18:15 I am german so no worries about me going to sue you about using proper english ;)

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

    hello there

  • @Red-di7zb
    @Red-di7zb 3 роки тому +1

    Первый? Вроде третий

  • @kumu2024
    @kumu2024 2 місяці тому

    This is no longer the same api inside entt. for example .has is no longer available. It is so bad that API like that removes, without even mention it in the latest versions. So, since the game engine is not updated at the FREE version, this video is useless. You cannot use the information in the video (some part of it).

  • @skeleton_craftGaming
    @skeleton_craftGaming 11 днів тому

    Maths is actually more correct . Also this is what functors are for...

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

    Am I first?

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

    Haha titie

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

    come on Yan .. isn't that kinda contradicting your words about the "event system" (you said: i first want to have this done before we move on) and now you are like: who cares about an ECS - i just want to do graphics?!
    you know you will need an ECS to handle scene data and render it ;)

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

      @M. de k. oh wow .. you know Cherno better than he knows himself ... you must be some kind of mind reader :P

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

      @@herrdingenz6295 😂😂😂

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

    A prime illustration of the ‘not invented here’ syndrome .... ‘i read docs for 10 minutes, could not understand it... wrote my own” ... sorry dude, that makes u a bad programmer in my book.. and a dangerous one at that, because you can write a lot of ‘damn that doc, lets write my own’ code.... ;-)