MULTIPLAYER in Hazel - My Game Engine

Поделиться
HTML-код
  • Опубликовано: 25 ноя 2024

Комментарии • 92

  • @TheCherno
    @TheCherno  29 дней назад +13

    Thanks for watching! What did you think of the format compared to the Genesis 3D video? Let me know! 👇
    And definitely make sure you check out Hostinger’s Black Friday sale, they’ve got some great deals on right now! hostinger.com/cherno and use code CHERNO

    • @bakrtech7727
      @bakrtech7727 29 дней назад +1

      Hey , why is the hostinger server still up and pingable and also IP is visible

    • @quentinquadrat9389
      @quentinquadrat9389 27 дней назад

      Why not alterning between retrospectives and real code ? An idea of video: reviewing Cursor (VSCode fork) with its IA analysing Hazel code ? IA are now good enough to generate comments, unit tests, auto-completion but they lack understanding well the code ...

  • @m4rt_
    @m4rt_ 29 дней назад +60

    I like seeing the real development. Though a mix of that and a retrospective is nice too.
    For example, you showing parts of the highlights of developing it, and then doing a retrospective on top of that where you add in things you realized later on.
    (i.e. editor cherno commenting on developer cherno)

  • @atesztoth
    @atesztoth 28 дней назад +36

    This “rewriting the renderer” thing has evolved into a legit hobby 😂

  • @TheFreshMakerHD
    @TheFreshMakerHD 29 дней назад +23

    So, typically for client-server models, the client only sends input to the server and the server handles all the movement and collision- the client has no authority over anything. And if the client is only sending inputs every 30hz then you need to batch inputs into a buffer or else the server will miss many of the inputs. It might be better to have a server tick rate of 30hz to update the client , then you would have to implement server reconciliation- which involves labeling packets with a packet number and having the client keep a memory of inputs, the server labels its response with the last received packet number, then the client applies the server's update at the state corresponding to the updates packet num, then the client re-simulates all inputs from then to the current time.
    There's a really good article called "fast-paced multiplayer " by Gabriel gambetta that explains this stuff super clearly, I highly recommend

  • @nepp9574
    @nepp9574 28 дней назад +3

    Really liked this hybrid format of stream content and explanation/talks in between! Like it a lot more than the previous format.

  • @NOKIA5593
    @NOKIA5593 3 часа назад

    We would like both types of video.
    I personally would like the technical videos that show the actual dev of your tech.
    But both are fun

  • @TAMusic
    @TAMusic 29 дней назад +13

    I think there's definetely a sweet spot between retrospective and development livestreams - perhaps you could try showing some edited development livestreams with interjections from 'future you' every few minutes explaining the bigger picture - as I do think it's quite easy to get lost in the details in the dev livestreams.

  • @КонстантинСердюк-ь5ю
    @КонстантинСердюк-ь5ю 27 дней назад +1

    Live-like development format is awesome.
    It was 26 minutes and i want more! More!

  • @pfd_mark_taylor
    @pfd_mark_taylor 29 дней назад +34

    Retro over real-time code writing. If I wanted to see "the struggle", I'd put a mirror next to my monitors to really enhance the swear-laden experience.

    • @poleve5409
      @poleve5409 15 дней назад

      You even have a comment from 9 months ago complaining about code review. Get off the haterade bro

  • @RagBrokeHisThumb
    @RagBrokeHisThumb 29 дней назад +42

    I’d like to note this game engine has taken around 1/3 of his life

    • @tiredcaffeine
      @tiredcaffeine 29 дней назад

      How? The game engine series was started 6 years ago.

    • @RagBrokeHisThumb
      @RagBrokeHisThumb 29 дней назад +5

      @@tiredcaffeine 10 last I checked

    • @tiredcaffeine
      @tiredcaffeine 29 дней назад

      @@RagBrokeHisThumb So he was already working on the engine 4 years before he started the RUclips series? That's fun to know.

    • @RoboGameOfficial
      @RoboGameOfficial 29 дней назад +1

      @@RagBrokeHisThumb It was definitely 6 years. He's been developing Hazel for around 4

    • @mazazaza11
      @mazazaza11 29 дней назад +2

      ​@@RagBrokeHisThumb not 10 lol he made sparky first though 10-9 years ago

  • @xLoxLoLex
    @xLoxLoLex 29 дней назад +3

    Hello Cherno! I don't usually leave comments but I just wanted to give feedback on this style of videos. I personally really enjoy the "live" process instead of just a voiceover explanation of how you accomplished something. It may be just me because I'm a programmer too and I really enjoy watching the process unfold. Anyways, great video and I can't wait for the next one!

  • @pyyrr
    @pyyrr 29 дней назад +127

    hi, my name is cherno and im an alcoho... wait that's not right

    • @BboyKeny
      @BboyKeny 29 дней назад +5

      Both consume your life 😲

    • @hampus23
      @hampus23 28 дней назад

      🤣🤣

    • @TheWolfProd
      @TheWolfProd 25 дней назад

      Wow that's totally the same thing he said at the beggining of the video 😯

  • @aliyavarguluzada6123
    @aliyavarguluzada6123 29 дней назад +21

    Love the editing

  • @NextGenNetGames
    @NextGenNetGames 29 дней назад +1

    Ah, finally a topic I can relate to, integrating any sort of networking or replication is a big undertaking, good luck :)

  • @ImBubblie
    @ImBubblie 28 дней назад +1

    "my name is cherno and i'm an alcho-" reminds me of the scene where klaus says that in The Umbrella Academy season 2.

  • @jerrymaldonado6829
    @jerrymaldonado6829 29 дней назад

    As far as being able to understand what you did and the features you implemented/how to use them, this content is the best. If people want to see you code and understand the process of developing software in detail, I think that is a different type of content. I think those videos accomplish different goals.

  • @hamzaabdelal2305
    @hamzaabdelal2305 29 дней назад +1

    nice Work! Love the new format too...

  • @RobertSmith-wj7zf
    @RobertSmith-wj7zf 28 дней назад +3

    I would prefer the retrospective approach because you have already worked out most problems. A real-time approach feels like it would be incomplete because you may run into issues that need further thought beyond the video. Though, admittedly, I do like watching how you solve problems.

  • @komakaze1
    @komakaze1 26 дней назад

    I had to click this video just to say, Great thumbnail!

  • @xxgunnery
    @xxgunnery 29 дней назад +2

    I definitely prefer watching the real development
    I will say that the retrospective is more digestable and immediately entertaining, but this is a better learning experience for me and more interesting overall for that reason
    I love hearing the decision making about how you wanted to implement multiplayer especially from a game engine's perspective, I was quite offended by Unreal's multiplayer decisions but I realized from this that it makes a lot of sense for engine developers to tie in their engine into the server. I think it's really important for engines to get this right, the server that you get with the assistance from your engine should be a good balance of not re writing code you've already done and giving you control as a game dev.
    Ultimately I feel bad for engines trying to implement multiplayer, that is not an easy task. I have headaches thinking about how to provide a nice system to get a GUI (on top of a client-first codebase with rendering) to facilitate developers to create co-op, PvP, MMO experiences, lobbies, portable server hosting... it's really so much hahah

  • @G3neric_art
    @G3neric_art 29 дней назад +4

    Upvote for Real Development !! :D

  • @vimdiesel
    @vimdiesel 28 дней назад

    Thumbnail looks straight outta control (the game).

  • @Burgo361
    @Burgo361 28 дней назад

    It's way out of scope but having a renderer on the server would be kind of cool being able to watch how things move and get corrected in an overhead view.

  • @AndyPipkinOfficial
    @AndyPipkinOfficial 29 дней назад

    this is a better format for episodes

  • @TheMisterNebo
    @TheMisterNebo 27 дней назад

    Make sure you integrate anti-cheat directly into your engine and ESPECIALLY the multiplayer networking components - this is what will set your engine apart from the rest. You want as much as possible done client-side (otherwise you end up with the Throne and Liberty rubberbanding issues) but a few things you want to do server-side (otherwise you end up with Escape from Tarkov cheat issues). Doing anti-cheat features properly right into the engine is key to your engine actually being used in the real world.

    • @deltaghostprofessionalgame875
      @deltaghostprofessionalgame875 27 дней назад

      That would be a ton of work that he developer should do but, not a bad idea idk just giving my opinion 😃 having that in the engine architecture would be awesome like check if a value changed drastically a lot if did jump engine launch protection... I get it I guess 😮

  • @marek_ryn
    @marek_ryn 29 дней назад +8

    It would by much easier task if you assume that single player is actually multiplayer with one client and server running locally. Than you build whole engine around this concept. Adding multiplayer mode to engine that was not build around client/server architecture will be very difficult.

    • @GiantTree
      @GiantTree 28 дней назад +3

      This is like Minecraft is actually running. Makes it very easy to enable local multiplayer as well.

  • @nicodemogawronski2052
    @nicodemogawronski2052 28 дней назад

    My 4 year old son has those magnetic tiles as well :D Fun game

  • @FruchtcocktailUndCo
    @FruchtcocktailUndCo 28 дней назад

    Watching you in the process is quite entertaining for sure, but I personally follow you more for learning and that is harder this way. Maybe it is because I don't know Walnut, but I feel I can't really grasp what you are doing. Also it's harder for me to pay attention that long in unstructured talking.
    I think it's a totally fine format and hope it's not that much work for you. And I'd really enjoy a summary or an overview of some sort, maybe architecturally, with the socket stuff and then into what you did.

  • @arrowsdev
    @arrowsdev 28 дней назад

    that was unexpected am alcho... i laughed so loud

  • @Rijads
    @Rijads 27 дней назад

    You should have dedicated streaming / recording pc so it doesn't lag like that when you start building, or it doesn't go offline when something blows up.

  • @alpizzayer
    @alpizzayer 23 дня назад

    I love every one of your videos ❤❤

  • @diwakar_tsn
    @diwakar_tsn 29 дней назад

    Another boost for brain❤

  • @dmnkb
    @dmnkb 29 дней назад

    I liked the video just as it is really

  • @realishak
    @realishak 29 дней назад

    Multiplayer is crazy

  • @astinazarafza8360
    @astinazarafza8360 28 дней назад

    Cherno you are not alcoholic you are rederonic

  • @chris52000
    @chris52000 28 дней назад

    I’m also building an MMO and not knowing what I’m doing. It’s great!

  • @AntonellaDeciantis
    @AntonellaDeciantis 28 дней назад +1

    stress level zero shirt???? BONELAB REFERENCE WHAT IS B-SIDE!!!!!!!!!!

  • @an1n-dya
    @an1n-dya 29 дней назад +2

    Could we please return to the ray tracing series? 🙏

  • @leshommesdupilly
    @leshommesdupilly 29 дней назад

    Today, I dreamt that network was standardized

  • @landspide
    @landspide 29 дней назад

    succinct is good!!

  • @animanaut
    @animanaut 29 дней назад +1

    q: so if one of those figures/npc are actual players and the cube falls behind them or occluded by something else, does the client still have the cube in memory? this is something i dont understand for online games, bc this is how all the online cheats are working, right? they just access what is in the clients memory and make it more 'accessible'. makes me wonder if multiplayer games require a completely different architecture to begin with.

    • @dealloc
      @dealloc 28 дней назад +1

      Depends on the implementation and use-case. In a lot of cases for games with small levels, packets will be received by the client. The client can decide to not do simulations of occluded objects at all and rely completely on the position received from the server, or at least simulate with a limited physics time, compared to when it is visible and needs to be rendered for a smooth experience.
      The problem is how you balance throughput between server and client, and where you make the separation of things. For example, it's much easier to detect cheats that rely on server-side, like changing the speed/velocity, position, etc. on the server than it is with client-side cheats like wallhacks. A lot of multiplayer games today rely on a few things; limiting data sent to the client based on their position (e.g. the map could have information for visibility and use that to determine what data to send), obfuscation of the client binary and memory, and anti-cheat that runs on the client often at kernel level.

  • @emomaxd2462
    @emomaxd2462 29 дней назад

    Hey cherno please put your twitch streams onto your Cherno UnPlugged that would be awesome

  • @deltaghostprofessionalgame875
    @deltaghostprofessionalgame875 27 дней назад

    Hey nice video, I wonder what if you make it that it has already prediction in mind like there is gotta be an architecture for the engine to do that the client already replicates a variable across network with prediction in mind like a check box bhastopredict 😮 and if it's true attach a prediction function..... That would return the value predicting... Idk ideas 💡

  • @kenzo3477
    @kenzo3477 29 дней назад

    The intro 😂

  • @loweffortname9444
    @loweffortname9444 28 дней назад

    I'd probably prefer retrospective storytelling. I am not super deep into coding (i can somewhat code) so a nice narrative is way more entertaining than specific code writing.

  • @deutschWallah
    @deutschWallah 29 дней назад

    cool :)

  • @Andrei-AlexandruDIACONESCU
    @Andrei-AlexandruDIACONESCU 28 дней назад

    show us the real development so we know what we in for

  • @stephenkamenar
    @stephenkamenar 29 дней назад +1

    10:37 "Good latency 292 ms" hello? a round trip around the entire world is less ms than that

    • @QWERTIOX
      @QWERTIOX 29 дней назад +2

      I have that latency from my home in a village to city 50km away

  • @informagico6331
    @informagico6331 28 дней назад

    I don't know... Cherno's c++ code syntax looks so CSharpy that it just doesn't feel right...

  • @TheLateral18
    @TheLateral18 29 дней назад

    Hey Cherno.
    Is making destructable surfaces impossible?
    Or having foliage to bounce off the characters is it too taxing.?
    Or adding animations to interact more with the environment.
    Lately games look pretty. But less and less interactions

  • @Aragubas
    @Aragubas 29 дней назад

    yoo multiplayer :3

  • @KimAlmighty1
    @KimAlmighty1 29 дней назад

    those characters reminds me off jimmy neutron

  • @adamrushford
    @adamrushford 28 дней назад

    The C H_azel E_ngine R_untime (Walnut) N_etworking Optimization pass next??? Or buy an Orangutang?

  • @bharathn1720
    @bharathn1720 29 дней назад

    Which microphone is that ?

  • @code_871
    @code_871 29 дней назад

    I really did not understand that -> are you developing a game using Hazel which have multiplayer feature or are you adding a feature in your game engine to support make a game multiplayer???

  • @valentoMundrov
    @valentoMundrov 28 дней назад

    Synchronize Client Game with server vs Game actually playing on the server?
    The World and the Game should be on Server I”d guess… cuz somebody on the network might change it. Then only you->player should be on you->client and update it on server

  • @michaplucinski142
    @michaplucinski142 29 дней назад +4

    Hi, I'm also an alco...
    I mean- game enigne developer

  • @kilrain_dev
    @kilrain_dev 29 дней назад

    Definitely not a fan of autmatic networking. Unreals networking , imo, makes it more difficult to extend.

  • @alexdefoc6919
    @alexdefoc6919 29 дней назад

    Just a simple question. Why server scripting in c#. Just curious.

  • @ИванИванов-я5э9к
    @ИванИванов-я5э9к 26 дней назад

    16:24 зачем тебе русская раскладка клавиатуры? Судя по всему ты собирался напечатать bool Is, но почему-то транслитом на русском. Или это болгарский?

  • @z1qqurat
    @z1qqurat 29 дней назад

    Но реально, почему С# ?

    • @mazazaza11
      @mazazaza11 29 дней назад +1

      because it's suitable as the most popular language for scripting

    • @mazazaza11
      @mazazaza11 18 дней назад

      @@MuhammadHosny0 i prefer c++/c and rust more personally

  • @stonefreak5763
    @stonefreak5763 28 дней назад

    More real and less retrospective please
    Retrospective might be a bit more entertaining but I find it more informative and interesting to "be part of the journey"

  • @z1qqurat
    @z1qqurat 29 дней назад

    Хорош🦾🦾🦾

  • @georgijs.klavins
    @georgijs.klavins 29 дней назад

    Real time coding ples

  • @kotofyt
    @kotofyt 29 дней назад +1

    alcohol increases programmer's productivity by 50%, continue drinking

  • @firdodev
    @firdodev 29 дней назад +1

    first

  • @christ01011994
    @christ01011994 29 дней назад

    Third

  • @alimctavish998
    @alimctavish998 29 дней назад

    second