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
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 ...
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)
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
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.
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.
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!
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.
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.
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
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.
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.
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 😮
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.
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.
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.
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.
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.
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 💡
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.
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
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???
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
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"
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
Hey , why is the hostinger server still up and pingable and also IP is visible
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 ...
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)
This “rewriting the renderer” thing has evolved into a legit hobby 😂
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
Really liked this hybrid format of stream content and explanation/talks in between! Like it a lot more than the previous format.
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
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.
Live-like development format is awesome.
It was 26 minutes and i want more! More!
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.
You even have a comment from 9 months ago complaining about code review. Get off the haterade bro
I’d like to note this game engine has taken around 1/3 of his life
How? The game engine series was started 6 years ago.
@@tiredcaffeine 10 last I checked
@@RagBrokeHisThumb So he was already working on the engine 4 years before he started the RUclips series? That's fun to know.
@@RagBrokeHisThumb It was definitely 6 years. He's been developing Hazel for around 4
@@RagBrokeHisThumb not 10 lol he made sparky first though 10-9 years ago
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!
hi, my name is cherno and im an alcoho... wait that's not right
Both consume your life 😲
🤣🤣
Wow that's totally the same thing he said at the beggining of the video 😯
Love the editing
Ah, finally a topic I can relate to, integrating any sort of networking or replication is a big undertaking, good luck :)
"my name is cherno and i'm an alcho-" reminds me of the scene where klaus says that in The Umbrella Academy season 2.
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.
nice Work! Love the new format too...
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.
I had to click this video just to say, Great thumbnail!
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
Upvote for Real Development !! :D
Thumbnail looks straight outta control (the game).
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.
this is a better format for episodes
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.
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 😮
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.
This is like Minecraft is actually running. Makes it very easy to enable local multiplayer as well.
My 4 year old son has those magnetic tiles as well :D Fun game
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.
that was unexpected am alcho... i laughed so loud
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.
I love every one of your videos ❤❤
Another boost for brain❤
I liked the video just as it is really
Multiplayer is crazy
Cherno you are not alcoholic you are rederonic
I’m also building an MMO and not knowing what I’m doing. It’s great!
stress level zero shirt???? BONELAB REFERENCE WHAT IS B-SIDE!!!!!!!!!!
Could we please return to the ray tracing series? 🙏
Today, I dreamt that network was standardized
succinct is good!!
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.
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.
Hey cherno please put your twitch streams onto your Cherno UnPlugged that would be awesome
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 💡
The intro 😂
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.
cool :)
show us the real development so we know what we in for
10:37 "Good latency 292 ms" hello? a round trip around the entire world is less ms than that
I have that latency from my home in a village to city 50km away
I don't know... Cherno's c++ code syntax looks so CSharpy that it just doesn't feel right...
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
yoo multiplayer :3
those characters reminds me off jimmy neutron
The C H_azel E_ngine R_untime (Walnut) N_etworking Optimization pass next??? Or buy an Orangutang?
Which microphone is that ?
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???
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
Hi, I'm also an alco...
I mean- game enigne developer
Definitely not a fan of autmatic networking. Unreals networking , imo, makes it more difficult to extend.
Just a simple question. Why server scripting in c#. Just curious.
16:24 зачем тебе русская раскладка клавиатуры? Судя по всему ты собирался напечатать bool Is, но почему-то транслитом на русском. Или это болгарский?
Но реально, почему С# ?
because it's suitable as the most popular language for scripting
@@MuhammadHosny0 i prefer c++/c and rust more personally
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"
Хорош🦾🦾🦾
Real time coding ples
alcohol increases programmer's productivity by 50%, continue drinking
Says no one
fr
first
Third
second