Fixing Hazel // Office Dev Log
Key Takeaways
The video discusses fixing Hazel, a game engine feature, and improving its quality through testing and version control, using tools like Git and Hazel, and also touches on CPU troubleshooting and hardware replacement.
Full Transcript
hazel is broken finally happened no thanks to tim hazel is hazel's broken so a couple of weeks ago i made a video called just a chill devlog and to my surprise a lot of you seemed to like it it was just a very very chill video i just hit record and that's something that honestly i have vowed to do more of um so hopefully this is kind of a continuation of that format i'm just going to put in more of an effort to document the kind of work we do here at like studio channel so in that chill devlog video i mentioned that hazel is kind of a little bit broken right now the quality of like the main release kind of branch is not very good and i wanted to make an effort to try and improve that quality and make it a little bit better so rather than just doing it magically behind the scenes i'm going to show you all of the work that goes into doing something like that like what do i mean by how am i going to improve the quality what are the processes that we're going to implement as part of our development cycle and like literally what is going to happen so that's what we're here for today we're going to fix hazel together um i'm going to document the process of doing this i'm probably not going to do this in like one sitting i'm just going to film you know throughout the week and hopefully it's what this will be like more of a devlog kind of devlog where i kind of check in maybe every day and show you kind of what's changed as well as probably i'll try and include some of the work obviously can't include all of it because it's going to be just too much but i'm going to try to include some of the work here and there so you see some real work not just you know updates of me being like yeah so i've done this and you know like whatever i don't know devlogs are weird so over here in our master branch we've kind of got like a master branch and then a dev branch a dev branch is where all the other feature branches get merged into and then master kind of acts as like a release branch and it's a default it's a default branch of the repository i'm really contemplating kind of renaming maybe master to release because that would make more sense but anyway the last commit there was 15th of june which is like almost a month ago today's the 11th of july so and the reason for that is because in that previous chill devlog i mentioned that i locked master like no one can push to master except for me uh and i obviously haven't pushed anything to mass and the idea is this our release branch is kind of locked in uh you know no more features no more weird code going in there it's all kind of tightly controlled so that we can make sure that master kind of represents like a fully qa tested final product if that makes sense you know of a given version of hazel and so we have another branch called dev which as i mentioned is where all of the other people that work on the team they merge their feature branches into dev and if there are like small fixes or small little features you can just add them directly into dev that's fine which is how master was treated before which as you can imagine is a bit of a problem since master was that first branch that everyone sees and so if someone just pushes some code that maybe isn't fully tested it could break the just everyone's version of hazel basically as soon as they pull so i want to i want to have that master be a little bit more control so because master is quite old at this point in times like a month old and also like dev i mean dev is like the version i've more or less been using so like in the previous version of my ray tracing series which i'll leave up there i actually used hazel to visualize like rey's being shot out from the camera to explain how like ray casting and ray tracing works and that was that was off of depth right so it is stable the idea is it should be fairly stable but it's just not as fully tested because obviously you know in a game engine there's a lot of features and testing every single one of those features every time is a little bit of a pain and so whilst dev is is more or less stable it's still not like we can't guarantee that everything works that's what master is for um so what i want to do as like step one here is basically just merge dev into master but i don't really like i'm so normally the way we would do this is a little bit more stable than that like we don't want to merge dev into master because if we do that then whilst i whilst qa kind of goes in and tries to make sure everything is good and qa is just us you know we don't really have a dedicated qa team or anything like that but anyway once the qa pass kind of happens while it's going on obviously you've just pushed a commit to master that is untested and so therefore master is now unstable so instead of doing that you probably want to make another branch called like master release or master temp or whatever you want to call it maybe devmaster i i don't know i don't want to get too confusing with names here but basically the idea is you make another branch which kind of will will be your like qa testing branch and as that gets tested and as potential fixes get pushed into that branch you know you keep master at its previous release so that it's all still stable and then once that's done you just basically replace the master branch with that branch so you can just like fast forward or just merge whatever now the reason why you can't simply have have qa test dev is because obviously other people on the team are going to continue committing to dev right if you have a team and you're not just a solo developer then there's going to be other people merging their feature branches in other people adding little features to dev you know dev is like the main kind of working branch and so we don't we can't just get qa to test that because i mean we could get qa to test a particular commit in the dev branch but that complicates the fix process because we need to apply fixes to just that commit because obviously any any more kind of new commits that have come in they're not tested anymore and so it's just easier to just make a make a branch so i'll probably make a branch called release for now um and that's going to act as like our kind of the branch that we send to qa they will test that fixes will be implemented into release release will be branched off of dev so that way any fixes that go into release they'll simply be pulled back into dev as well so dev will get them and then master will essentially be replaced by the final kind of everything's fixed and tested version of the release branch and then you could just delete release i mean i might call it something like release pending or something uh maybe that would make more sense because the idea is obviously like it does get published into that master branch which i might rename to release anyway lots of names lots of lots of release lots of mars lots of dev going on not enough work so let's get let's get into it so tim's been working on on a scene actually in hazel now what branch are you off uh this is dev this is dev okay cool so this is the dev branch right it's pretty uh stable um can you play that again and show that duck that's cute so yeah we've we've been doing some animation work um and there'll probably be a devlog specifically about that a little bit later so tim has been putting together this scene that highlights animation um but the trees are moving and everything's kind of yeah kind of cool um but yeah so but in general tim what would you say has been your experience working with hazel in terms of like stability and stuff um honest answer yeah it's been a bit of a give-and-take to say the least like yeah sometimes there's been stuff that has been working for months and then just all of a sudden just stops working yeah which usually those features get back up and running within a day or so but yeah like it's sometimes like you're very used to something working and then you know that workflow and then you you kind of have to invent a new workflow because all of a sudden that doesn't work that's what tim does instead of telling the rest of the team hey this is broken tim like invents new workflow no no i tell the team like hey this doesn't work anymore and then i'm like well can i actually work on what i was working without waiting for this feature to get fixed yeah yeah by sweden or stockholm tweeted by stockholm yeah we don't call peter peter anymore we just call him sweden sweden the sweden branch of hazel development i guess the other thing is that like as hazel grows obviously people might not even be aware of all of the features there and so tim's primary job is to use hazel and he's he should be fairly aware of all of the features and obviously he uses hazel to a much greater extent than any of the other developers on the team and so someone can come along and commit something and you know their stuff might work and their understanding of hazel might work but tim might be using a feature that they're not even aware of and that's where the breakage can happen as well yeah but i also feel like a lot of this stuff is like on repositories that people have access to on the team so like i feel like a lot of the time that they just don't open up like space invaders for example yes yeah and that's why like i open it up because i might need something or need to double check something like and then it's like hey this doesn't actually work all these crashes on playable or something yeah that's a good point i might ask how how many people on the team actually test hazel with the games that we've made yeah because that's obviously important well and it's also just a good use case of like a bunch of different systems come into play in a finished product so i think it's just a good idea to run those at least yeah i agree we've got this dev master directory which is the master branch and then we have dev dev i used to prefix uh all the kind of branches of hazel with dev just in my local directories because we used to have hazel dev right there was hazel which was which is now hazel 2d and then real big boy hazel which is which used to be called hazel def that's why it's a bit confusing now should rename that but anyway devmaster is master you can see it's the master branch um and yeah as i was saying it's uh 15th of june right so 15th of june uh is quite a while ago and then we have 11th of july actually which is today and that is the dev branch and you can see there's been quite a lot of work if we just scroll down through this i'm regretting my facecam placement but this should be visible so if we scroll down from 11th of july you can get an idea as to how much work uh you know goes into hazel so 15th of june is all the way back here this is basically all the stuff that all the way down to here is what needs to be merged into master and if we clear like the filter of branches because that that was just the dev branch right um you can see people have other branches as well we need to take all this new stuff and merge it into master or an intermediate branch before it actually hits master the problem with that and one of the complications to consider is like what is the divergence between master and dev and the answer is there should be none if everything is done correctly there should be none and i believe there is none because if we take a look at this so master is red it can be a little bit difficult to read these kinds of maybe make it bigger it can be a little bit difficult to read these kinds of um uh you know trees and all these diagrams that you get when using git so i'll hopefully kind of explain that a little bit here and maybe that will help you out but basically you can see there's a dot here and this dot is kind of on this red path and red is kind of master now this red is also a branch but it's the sound graph branch so i don't know sometimes it picks with weird colors i don't entirely understand why that's the case um but basically these colors represent branches so you can see if i scroll up all the way up to the top we have uh this dev branch for example we have this like ragdolls branch which is um yellow right this one's orange and then the master was red so if we go down and we find a master we can see that you know this commit here because this is shown kind of in uh like a linear fashion it's shown in order of like the timestamp it's sorted by time and so that's why you have to be like okay well what branches for example this commit on and you can see it's on the master branch because there's a little dot here on this red thing so this commit only applies to master so that's why i like to usually filter by active branch in fork because otherwise as you can imagine it's very difficult to see what actually like makes it into what branch and especially when people diverge and stuff like that the reason why this is even shown here though is because this actually eventually this commit gets merged as you can see into this orange branch so orange is dev and you can see this kind of red line here it goes into here and this is the merge branch master into scripting supposedly but really it's also going into dev so this was kind of the merge uh master into scripting as it was back then because you can also see this is a scripting branch but it's because like scripting was then merged kind of into dev dev was renamed there's been a bunch of stuff that's happened and so dev is kind of now the scripting branch so yeah this stuff can be very complicated my point here is that master you can see has been merged into what is now the dev branch that's why like all of these commits are also relevant to dev but otherwise if we take a look at the rest of master and you can see that kind of terminates here so here in this one this is the one with master actually checked out you can see it only if i clear the filter it's kind of red here now uh and it's it's the active kind of commit and that's all that's happened and if i kind of filter back to branch you can see this now shows you what the repository is like based on this branch but anyway so back here the reason why this is important and we want to look at this stuff is because we need to have an understanding of everything that's gone into this branch and if it differs from dev so the fact that this has been merged into dev is good that's kind of the correct procedure and then now what i'm hoping for is no more commits into master and we know that there are no more commits because if i fetch uh you can see we have this little gitlab logo which tells us what is on the origin so we can talk about remotes as well there's going to be a get tutorial but uh remotes basically are the remote copies of the repositories so it's basically like servers that are hosting your repository you can have multiple obviously like you might push your repository to github and gitlab if you wanted to you could partially push certain branches to certain repositories you can keep other branches private and not push them into like a public repository but if we just edit this for example you can see that this origin the origin is just a name i don't know why it's it's called origin i guess because it's kind of like the host but uh you can see that it's pointing towards um the main kind of hazeldub repository which is the one that's accessible by patrons so anyway because i've just fetched to make sure that i actually have everything downloaded from the server all the information and the fact that we have this origin master here it tells me that the version on the server is this kind of 086190c checkout and then also locally i'm also like my master branch is on this as well so i don't have any local commits or anything like that so this is the final kind of master uh version and that's really important because again it got merged into dev the reason why this is important is because it tells me that there haven't been any additional fixes that might have gone into master this could have happened if there were like some emergency things that are like oh no this like crashes or whatever let's quickly patch that up and maybe those fixes haven't been pulled back into dev and that's important because i'm about to go through a different kind of release workflow here so as i mentioned earlier this is kind of the stage where i want to be able to test everything that we have in dev i've now made sure that we don't have anything extra in master everything that is in master is also in dev now now that's important to make sure because we don't want to lose work and also we want to make sure that everything is tested so now the thing to avoid is other people pushing to death so i've decided that this kind of commit over here is the one that we're essentially going to publish and so this is going to go into our release thing so there's a few ways we could deal with this uh i think what i'm going to do is probably just like create a new branch out of this and i'm going to call this release pending as i mentioned earlier because i think a master will be eventually called release so i can create and check out make sure it's on this and then if i want to i can push just to create this kind of release pending tracking reference on the actual origin like server so that this is now like an official branch that people can access so now release pending is a real branch you can see that it is in fact like in the gitlab and that's obviously important because we want everyone to be able to access this and really all it is at the moment is just like a little pointer into this specific commit on dev but that obviously means that now the rest of the team can continue committing to dev merging their features in fixing stuff adding little features doing whatever they would do on the dev branch and meanwhile qa can kind of focus on release pending so as a little side note um you may have noticed all of this like clutter that's just chilling like behind me in the videos for like the last month and i know some people were were being like what's going on with with this like why is this here and it's a funny story that i thought i should tell so basically i had the great idea of setting up a nas in the office um because a nasa is like a basically it's a hard drive that hooks that's hooked up to like the network or a series of hard drives so we wanted some storage that was network attached uh the reason being that obviously tim and i work here he wants to share assets with me we've been kind of just uh dropping it onto each other's computers just using like the normal windows 10 like you know network sharing whatever system which is not bad but then we also kind of wanted peter to be able to access it from sweden and so it made sense to kind of set up a little server that would basically be like a nas that we could just access from anywhere and i was going to buy an ass but then linus tech tips is like no don't buy a nuts you can build your own for for less and that was a a good suggestion um i mean honestly it was a good suggestion uh you can see how it worked out though but anyway it was a good suggestion if i bought an ass we'd probably have a nap so let's be honest be honest anyway it was a good suggestion uh because like the for the price way cheaper you know and better i guess to build your own because you could just select much higher quality components um you know you can have way more ram you can upgrade it as you see fit and it comes out to being like almost the same price as like a higher end kind of nas and so not like a an enterprise nas but like a higher end like normal kind of small scale mass and so uh the problem though here is uh it worked for like a week and everything was great yeah i was just like putting files on i only bought like a single eight terabyte drive for now i was gonna upgrade it maybe run it in like raid zero or five or whatever um but then it stopped working it just didn't like boot up and uh it was a bit weird but luckily the cpu i had selected was ryzen 5 5600 g that's going to be important later um so this has a this has a graphics processor like it's got integrated graphics built into it and the reason why i wanted that is because obviously like you know we're not putting a gpu into this um but i wanted to be able to like you know hook up a monitor to the system to like set up truenas which is what we ended up using as the operating system and just you know debug it and do whatever right anyway long story short we connected the display like nothing works it doesn't post it seems it doesn't get any video output so like huh maybe something's broken i thought it was the motherboard um i don't know why i just thought maybe it's the motherboard you know we tried obviously removing ram and doing all this stuff then we put the cpu into tim's computer uh i just took tim's computer apart and i was like okay let's just chuck in the the 5600 g you know into there to see if we get anything and meanwhile we got the i don't know what tim what cpu do you have all right so tim actually has a 5600 x so it's the same as this but the g is the graphics version so this is this one has an integrated graphics chips chip that one does not so we chucked tim's 5600x into this motherboard and then also took it out of the case so that we could connect like a gpu to it to get like some kind of video output and yeah it worked uh meanwhile this guy the the 5600g inside tim's computer does not post with the gpu without the gpu i mean it's got integrated so it should work but yeah this does not work what are the answers cpu died same symptoms but it could be just the graphical side of the cpu yeah yeah okay uh gp is going back in then will it be able to pick a gpu on the flower though well what do you mean the video output is plugged directly into this yeah sure okay nothing damn young look at that you were wrong what do you mean you went with motherboard yeah but so did you that's true so that motherboard's fine let's try let's chuck my cpu into this motherboard all right now the other fury on because it did not follow all the necessary checks you could have fried the cpu you just sent because you didn't have a cooler attached yeah likely very we're gonna start your cpu without a cooler and see what oh young please don't you fried the cpu young wait it's there okay it's that way because it's like what are you doing you're cooking me a lot sure now i want to see the temp but he's gonna run this for a while 80 degrees yes yes look 83 yeah it heats up like this it's cool that is quick a minute and it's cooking not 84 i can't believe you said 10 minutes without it no well 84 105 is like the max recommended temperature yeah but you're also not doing anything well yeah he's not doing well i'm not saying let's like run the house without a call i'm just saying oop 85 or i'm killing it that was like genuinely that was that was a few minutes yeah that was less than 60 seconds that was quick here we go he has a 90 degree cpu be careful it's hard genuinely as we found out yeah see this one wasn't when i unplugged it for the record it was warm yeah but not as hot as that yeah but also it never actually ran i guess well exactly because it's a pile of garbage holy smokes actually so far i don't know the top's found out the red that young cpu without a cool abusing cpus yep wax all right guess it's not the motherboard cyan what's what's going on what is actually first of all the cpu fan is in fact working and your cpu is just 33 degrees well anyway turns out that the amd 5600g cpu does not work and it looks like the bios supports it oh we can verify the bios f15 yeah that's why i flashed it to yesterday actually yeah f15 and it's there which is supported which does support the 5600 g and yet the cpu is broken don't know why it worked fine for like a week or two and then suddenly boom when you decided to copy one terabyte of data it was like hold up body how did you're an eight core cpu or six cores if you had to late at a terabyte of data that's just too much and decompress it on the fly so conclusion to this very long story is this cpu does not work anymore but it worked for like a week so i have been trying to contact amd to get like this fixed uh and that's a story in and of itself because what happened was uh i contacted them and then like two days later got sick with covert so i had to stay at home and meanwhile amd were like oh yeah hey we're happy to help just send like absolutely like a photo from every angle of the cpu i want it i want it installed in the motherboard i want it installed not in the motherboard i want basically they just wanted like does it have scratches is it and i'm like no guys like it just doesn't post anymore and it's been sitting there it's clearly like brand new it's like a week old but anyway whatever so i didn't send any of those photos because i was at home and uh they only gave like i think a week or ten days or something for um you know until they auto closed the ticket so that that support ticket got got closed and we're stuck here again so i'm gonna have to open another one and provide them with like some kind of 3d photo scan of this cpu so they can see that it's not damaged and then maybe we'll get a replacement or something and i'll have to mail this to them i guess and then we'll have a nas so that is the road to nass story so most people thought that would be a bad idea may 12. see that's how that's how long ago this whole debacle was yeah yeah hashtag narnasslive
Original Description
Support Hazel on Patreon ► https://patreon.com/thecherno
Cherno Unplugged ► https://youtube.com/ChernoUnplugged
Instagram ► https://instagram.com/thecherno
Twitter ► https://twitter.com/thecherno
Discord ► https://discord.gg/thecherno
CHAPTERS
0:00 - Hazel is broken
6:25 - Tim's experience
9:16 - Making a release branch for testing
16:44 - The NAS story
#Hazel
Watch on YouTube ↗
(saves to browser)
Sign in to unlock AI tutor explanation · ⚡30
Playlist
Uploads from The Cherno · The Cherno · 0 of 60
← Previous
Next →
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
3D Game Programming - Episode 1 - Window
The Cherno
3D Game Programming - Episode 2 - Game Loop
The Cherno
3D Game Programming - Episode 3 - Arrays
The Cherno
3D Game Programming - Episode 4 - Drawing Pixels!
The Cherno
3D Game Programming - Episode 4.5 - How Rendering Works
The Cherno
3D Game Programming - Episode 5 - Playing with Pixels!
The Cherno
3D Game Programming - Episode 6 - Performance Boosting
The Cherno
3D Game Programming - Episode 7 - FPS Counter
The Cherno
3D Game Programming - Episode 8 - Alpha Support and More
The Cherno
3D Game Programming - Episode 9 - Beginning 3D
The Cherno
3D Game Programming - Episode 10 - Floors and Animation
The Cherno
3D Game Programming - Episode 11 - Rotation
The Cherno
3D Game Programming - Episode 12 - User Input
The Cherno
3D Game Programming - Episode 13 - Render Distance Limiter!
The Cherno
3D Game Programming - Episode 14 - Basic Mouse Movement
The Cherno
3D Game Programming - Episode 15 - Textures + More!
The Cherno
3D Game Programming - Episode 16 - Walking, Crouching, Sprinting + More
The Cherno
3D Game Programming - Episode 16.5 - Exporting Runnable Jars
The Cherno
3D Game Programming - Episode 17 - Small Adjustments + Birthday!
The Cherno
3D Game Programming - Episode 17.5 - Creating an Applet
The Cherno
3D Game Programming - Episode 18 - The Beginning of Walls
The Cherno
3D Game Programming - Episode 18.1 - A Few More Things
The Cherno
Episode 18.5 - Creating an EXE File in Java
The Cherno
3D Game Programming - Episode 19 - Rendering Walls
The Cherno
3D Game Programming - Episode 20 - Continuing Walls, Fixing Bugs, and Managing Crashes
The Cherno
3D Game Programming - Episode 21 - Texturing Walls, Fixing Clipping, and Fixing the Mouse
The Cherno
3D Game Programming - Episode 22 - Random Level Generator + Properly Fixing Clipping
The Cherno
3D Game Programming - Episode 23 - Graphical User Interface (GUI) Launcher
The Cherno
3D Game Programming - Episode 24 - Making Our Launcher Work
The Cherno
3D Game Programming - Episode 25 - Writing and Reading Files
The Cherno
3D Game Programming - Episode 26 - Custom Resolutions
The Cherno
3D Game Programming - Episode 27 - Decorating the Launcher
The Cherno
3D Game Programming - Episode 28 - Continuing our Custom Launcher!
The Cherno
3D Game Programming - Episode 29 - Launching The Game
The Cherno
3D Game Programming - Episode 30 - Colour Processing In-Depth
The Cherno
3D Game Programming - Episode 31 - Sprites!
The Cherno
3D Game Programming - Episode 32 - Sprite Mapping
The Cherno
3D Game Programming - Episode 33 - High Resolution Rendering
The Cherno
3D Game Programming - Episode 34 - Entities
The Cherno
Genesis - My Game for Ludum Dare 24
The Cherno
Vlog + Ludum Dare Results
The Cherno
Game Programming - Episode 1 - Resolution
The Cherno
Game Programming - Episode 2 - Threads
The Cherno
Game Programming - Episode 3 - Game Loop
The Cherno
Game Programming - Episode 4 - Window
The Cherno
Episode 5 - Buffer Strategy
The Cherno
Game Programming - Episode 6 - Graphics Initialized
The Cherno
Game Programming - Episode 7 - Buffered Image and Rasters
The Cherno
Game Programming - Episode 8 - The Screen Class
The Cherno
Game Programming - Episode 9 - Rendering Pixels
The Cherno
Game Programming - Episode 10 - Clearing the Screen
The Cherno
Game Programming - Episode 11 - "Out of Bounds, Baby!"
The Cherno
Game Programming - Episode 12 - Negative Bounds
The Cherno
Game Programming - Episode 13 - Timer
The Cherno
Game Programming - Episode 14 - FPS Counter
The Cherno
Episode 15 - Tiles
The Cherno
Game Programming - Episode 16 - The Map
The Cherno
The Walls 2 - Minecraft PvP Survival Map
The Cherno
Game Programming - Episode 17 - Key Input
The Cherno
Game Programming - Episode 18 - Controlling The Map
The Cherno
Related Reads
📰
📰
📰
📰
Only10 Vol.26.01 | 10 AI Projects Worth Watching This Week
Medium · ChatGPT
Top 10 AI Development Companies in the USA (2026 Edition)
Medium · AI
Kimi K3 is so popular Moonshot ran out of GPUs and paused new sign-ups
The Next Web AI
What smart people are saying about IBM’s AI warning and SaaSpocalypse fears
Dev.to AI
Chapters (4)
Hazel is broken
6:25
Tim's experience
9:16
Making a release branch for testing
16:44
The NAS story
🎓
Tutor Explanation
DeepCamp AI