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 ปีที่แล้ว +153

    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 9 หลายเดือนก่อน +3

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

  • @magictrickdev
    @magictrickdev 3 ปีที่แล้ว +39

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

  • @Martinnn
    @Martinnn 3 ปีที่แล้ว +105

    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 ปีที่แล้ว +50

    Title: EnTT
    Means: Entity
    My brain: EnTEETEE

    • @supersquare
      @supersquare 3 ปีที่แล้ว +8

      big TT goth ecs

  • @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! :)

  • @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....♥️

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

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

  • @doctorwin64
    @doctorwin64 2 ปีที่แล้ว

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

  • @herrdingenz6295
    @herrdingenz6295 3 ปีที่แล้ว +9

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

  • @nitinbindal5308
    @nitinbindal5308 3 ปีที่แล้ว

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

  • @manai2683
    @manai2683 ปีที่แล้ว

    I cannot live without this when working with c++

  • @workflowinmind
    @workflowinmind 3 ปีที่แล้ว

    Very good one chernito

  • @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!

  • @AmeshaSpentaArmaiti
    @AmeshaSpentaArmaiti 3 ปีที่แล้ว

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

  • @_lapys
    @_lapys 3 ปีที่แล้ว

    Yayy, another video! XD

  • @Shack263
    @Shack263 8 หลายเดือนก่อน +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!

  • @rendoirs
    @rendoirs 3 ปีที่แล้ว +5

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

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

  • @sam_is_people1170
    @sam_is_people1170 2 ปีที่แล้ว

    thanks!

  • @catinwall4256
    @catinwall4256 3 ปีที่แล้ว

    yesss ! ! !!!

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

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

  • @hamdaman3593
    @hamdaman3593 3 ปีที่แล้ว +3

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

  • @PrinceGupta-jo8lo
    @PrinceGupta-jo8lo 3 ปีที่แล้ว +1

    A week is a long time.

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

    • @lunarthicclipse8219
      @lunarthicclipse8219 5 หลายเดือนก่อน

      Its been 3 years, how far along have u been in c++ :)

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

  • @edgine1
    @edgine1 3 ปีที่แล้ว

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

  • @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 :)

  • @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?

  • @sakuraema914
    @sakuraema914 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 2 ปีที่แล้ว +1

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

  • @DimuDesigns
    @DimuDesigns 3 ปีที่แล้ว

    2:48 EnTT Intro

  • @user-bl8zs7ic6d
    @user-bl8zs7ic6d 3 ปีที่แล้ว +1

    终于等到了

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

  • @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?

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

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

  • @perfectionbox
    @perfectionbox 3 ปีที่แล้ว

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

  • @chrismclp583
    @chrismclp583 3 ปีที่แล้ว

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

    • @oonmm
      @oonmm ปีที่แล้ว

      I call them casting operators.

  • @Moonix7
    @Moonix7 10 หลายเดือนก่อน +1

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

    • @kumu2024
      @kumu2024 3 หลายเดือนก่อน

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

  • @nextlifeonearth
    @nextlifeonearth 3 ปีที่แล้ว +2

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

  • @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?

  • @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 3 ปีที่แล้ว

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

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

    • @TheCherno
      @TheCherno  3 ปีที่แล้ว +9

      Yes! Planning to do some soon...

    • @catinwall4256
      @catinwall4256 3 ปีที่แล้ว +1

      @@TheCherno Yayy :D

  • @TriNity-GER
    @TriNity-GER 3 ปีที่แล้ว +2

    Cherno, please, please do a custom ECS!

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

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

  • @anujv2909
    @anujv2909 3 ปีที่แล้ว +1

    Am I first?

  • @Red-di7zb
    @Red-di7zb 3 ปีที่แล้ว +1

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

  • @beProsto
    @beProsto 3 ปีที่แล้ว +2

    Haha titie

  • @skeleton_craftGaming
    @skeleton_craftGaming หลายเดือนก่อน

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

  • @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 😂😂😂

  • @kumu2024
    @kumu2024 3 หลายเดือนก่อน

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

  • @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.... ;-)