@@ThePrimeagen James, the name, Primeagen it is. it'll work out great in future apocalyptic scenarios where in the absence of Duke Nukem, James Primeagen will have to step in to kick some ass and chew bubble gum.
Prime is doing everything in his power to become a game dev without having to claim that he's doing game development. He will fail, Thor will corrupt him. A game jam is getting ever closer, prepare for ligma.
6:00 If you start throwing away bits from color information, always keep most bits for green because human eye is the most sensitive to lightness levels of green color. Always sacrifice blue color bits first, then red and only finally green.
@@arcaneminded if this is how you treat words then there's no utility in having a word called "always", which is why I think this kind of thinking isn't very useful
@@kneesnap1041 Because we misuse language _all the time_ 😉. "Always" here is being used to describe a general instance of something happening, so you are bound to find special instances where the rule can't apply.
I don't normally make comments but man this video is beyond amazing. The production quality, all the engineering information and how it is put out even someone never programmed his life could easily follow plus Prime being an amazing entertainer as always apart from being a kick-ass-do-it-yourself-hands-on coder/engineer. And joy in his eyes through it all. Man is living his best life.
Totally, even for someone like myself hovering around the "FizzBuzz" / "Leap Year Calculation" level of programming, this was a really interesting video.
Echoing this, he definitely has a talent for taking low level concepts and showing how they can be applied in practical ways, while keeping things super entertaining and informative!
Doom was using 13h VGA mode which is a 256 colours palette mode. You could use this pallet directly instead of your own conversion to 1 byte. This way you don't lose any colours. Also if you Huffman encode blocks longer than 1 byte you could target patterns of colours from textures and potentially achieve greater compression.
@@test-rj2vl most software companies love stuff like this. "I cloned twitter" will get little to no response from an interviewer as they know you could have just followed a tutorial.
Mustache man… I gotta say you really are the reason I stay inspired to code and continue to pursue the deeper understandings of development. The combination of pure unadulterated knowledge & passion for what you do is so inspiring. I’m already 2 months in using NeoVim becoming blazingly fast, finally able to sit still at my computer for 5+ hours & I now wake up everyday giddy knowing I GIT(😅) to learn more. I’m sure you hear this all the time, but you’ve truly saved my life. Thank you.
Yeah, I was like, what's the point or how'd it compress shit? But then if the xor'd frame can construct the 2nd frame because it is mostly similar to it (repetitive pixel colors between frames for example!) and thus it mostly produces zeroes except the changed pixels... whao, it all clicked.
I think that's the best audio-visual explanation of an XOR operation I've seen. Great project and video. Thanks for sharing! Also, I loved the Yugioh lifepoint sound/animation you did for the counts.
This confused me as well, especially because prime specifically states that the same characters can never have different values, and yet on the screen that's *exactly* what's happening. I had to go back and rewind and figure it out and rewatch to learn.
DOOM renders into a 320x200 8-color bitmap. This means the colors DOOM actually renders already fit into 8 bits. It would be super easy to compile DOOM and make this framebuffer available to your compression stage.
That XOR frame compression technique is so cool! Really made me to start thinking about more good use cases for XOR. Good content as always, you are one of the biggest inspirations in my programming journey.
You gave me a blast from the past here. I used to program muds on the 90s and 2000s and my main bottle neck was bandwidth for hosting my game. I had to compress streams and use a lot of terminal hacks to get my ASCIi maps to work fast. I could even play videos on the terminal in ASCIi all with low bandwidth and gzip compression.
Hi Prime, I wanted to say Iam so incredibly proud f you for accomplishing this with twitch. Making the plunge into content creation I'm sure was crazy and scary, but you deserve all of the accolades validation for all of your hard work. We love you and your content so much! please don't stop!
Gotta admit, it was today that I finally fully understood XOR lol Also thanks for this... really helped me come to a breakthrough with reverse engineering some stuff. Basically been trying to figure out the cause of some corrupted frames in TH-cam videos and now I can see why it's happening but now I need to figure out why it's only on certain videos, and only when using certain phones. New phone doesn't get the corrupt frames, but three previous phones I had do get them. One of the new and one of the old are the exact same device model, under different carriers. And the corrupt frames, they only occur on the three old ones when on WiFi. I tried a different wifi router, and it doesn't happen. I had a compromised router! [ISP redacted] might have an announcement to make soon..
IMO the best video I saw from you mate, well done. I really enjoy watching all your videos, but this one and the ones you made with this journey was really amazing! keep up the good work.
Turned out great Prime. Only a small percentage of your Twitch followers understood how hard this was. One of the best streaming devs on Twitch/YT no doubt.
Bro! This video resonates with me as an engineer so much! I love reinventing the wheel because it's just fun sometimes. Great stuff brother keep it coming!👍🏻
Oh man, I just love this new format Prime! Keep going, you're being a great mentor and a rolemodel because you are always on the path of learning new things, you couldn't even imagine how I feel man :) Keep going, all respects from Turkey
The "I've done it before but I didn't know the name" experience is such a powerful programming vibe. Encounter algo named wave function collapse; discover I had implemented it before by accident. Run-length encoding vs "Just count how many times things show up". Great vid
This is super work all round and the perfect TH-cam content. Fascinating computer science, history, and project planning. Lovely editing. Superbly presented. Everything else today is going to suffer in comparison.
It's the best creative video!!! DOOM was a great journey and a big challenge, duplicate characters, xor, huffman first try, and a lot of golang content!! Congratulations, this was a new step in your creation content!!! LET'S GOOOOOOO BABY!!!
I finally understand the XOR encoding. your explanations of the compressions you used are really clear. thank you for the help. the actual application really cemented it for me
An encode/decode stack is one of those things I just gotta implement sometime. So useful! For a second I didn't understand what was going on with the min-heap but it all came together in the end. Great way to make a fun video educational too, thanks Primeagen.
0:09:07 thank you for re-explaining how XOR has memory; I didn't get it the first few times you mentioned that but this video really helped solidify that concept!
This is the perfect kind of video for this channel! Larger and super interesting projects that you enjoy. You also can create these naturally as a byproduct of building the project anyways, so you don't have to feel forced to create a video for no reason. Great job man!
At first I thought they'll play against each other and we'll have a 1000 different renders. But nope! It's a swarm decision. This guy accidentally created an incredible social experiment!
I am watching you from time to time. I have very little understanding in coding, I aspire to become a gamedev using Godot, but I am disorganized and have bunch of fears and doubts, lazy. You ported Doom in a way I could not comprehend for chat to play on stream. You are nuts, that seems like magic to me. Pretty entertaining stuff. Anyways, love your content, I will try following more tutorials till I face my fears and start my own project.
YOU were the one that did this?? Holy, I remember hearing about this a while back (I'm not a programmer), but that's awesome man, you made internet history!!
Best video so far of the primeagen, the amount of optimization put on the project no wonder the dude worked successfully for 10 years at netflix as backend engineer this is so motivational
The best explanation ive seen for what actually gets done to make efficient code along with the process. Two things im curious on your take: 1) using edge detection and morphological operations for further efficiency since theres a lot of patterns that can be known of neighboring bits 2) client side prediction using player input to process known data on the client side. When youre walking towards a dark step on the stairs, it coming more into vision and getting brighter can happen client side. Server side, you're only looking for deltas that cant be assumed by the client.
Just amazing, greatly edited and also, great explanations of the topics along the way. Great editing, great explanations, great video. Nice! Keep it rolling! Thats a rare programming topic video explanation I literally watched like magically hypnotized to not even look away for a second. amazing.
The funny thing about what you did is you basically simulated the same thing as a brain. It’s sifts and weighs the options but uses the data from the sensory tools to construct understanding and that leads to guidance. Wild that maybe the way the worlds pressures form our habits and guides us might be able to be understood by just experiments like this. Good work. What i mean is that the brain uses the data to think like how your people can send in actions and stuff and the ai does what it does. Haven’t watched fully yet but your beginning 0:49 got me thinking.
Loved the video, genuinely learnt a lot. Did laugh out loud at all that random techniques to increase compression ratio, finishing with just straight up Huffman encoding to completely blow the rest out the water. ofc effects are accumulative, but just funny
I can't lie - TwitchPlaysPokemon was a revolutionary thing in late 2013/early 2014 (in my old age of almost 30, I'm forgetting exactly when that happened) - but this is fantastical.
Hey. First video going full time. I hope you liked it. Part of me always feels I could do better :)
But seriously name your first kid after me
@@ThePrimeagenOkay I’ll change Cedric’s name to The
But seriously, fantastic work! This was very entertaining to watch, and great editing too!
@@ThePrimeagen James, the name, Primeagen it is. it'll work out great in future apocalyptic scenarios where in the absence of Duke Nukem, James Primeagen will have to step in to kick some ass and chew bubble gum.
ah!! that was what was different! I love it!!
Prime is doing everything in his power to become a game dev without having to claim that he's doing game development.
He will fail, Thor will corrupt him.
A game jam is getting ever closer, prepare for ligma.
I have been so thoroughly ligma'd that I can no longer tell the difference between web dev and game Dev
Mostly due to balls of course, on the face
@@ThePrimeagenascii doom using js confirmed?
whats ligma?
@@xregularxjohnx steve jobs
@@xregularxjohnx ligma balls
Flip went crazy with the editing 11/10 video
Not as good as yours though. Yours are spectacular
Except for the 1 that goes to the A instead of the B and took me 5 second to think why A is 01 and B is 0 😂🩵
Hey, it's the flip, things might flip...
@@hussein-alemam Yup, saw that too :D
flip is flipping out, this video was amazing :D
what a weird dougdoug video
Yh this guy has hair
yeah
he's oddly not BALD
- not bald
- can code
- doesn't have chatters in his basement
this might be the long lost ougdoug
Damn, dougdoug changed
6:00 If you start throwing away bits from color information, always keep most bits for green because human eye is the most sensitive to lightness levels of green color. Always sacrifice blue color bits first, then red and only finally green.
Ohhh I always wondered why I've seen RGB565 encoding but never RGB655 or RGB556. Thanks!
The thing about "Always" is that there are always exceptions to the Always. Even this sentence.
@@arcaneminded if this is how you treat words then there's no utility in having a word called "always", which is why I think this kind of thinking isn't very useful
Even better, doom uses a limited set of 8 bit color palettes so you can get perfect color encoding in 1 byte per pixel.
@@kneesnap1041 Because we misuse language _all the time_ 😉. "Always" here is being used to describe a general instance of something happening, so you are bound to find special instances where the rule can't apply.
F for the grass that wasn't touched during this project 🫡
The best engineers never see a blade. Big beard, no tan, sporks only.
Only quiche eaters touch grass
I don't normally make comments but man this video is beyond amazing. The production quality, all the engineering information and how it is put out even someone never programmed his life could easily follow plus Prime being an amazing entertainer as always apart from being a kick-ass-do-it-yourself-hands-on coder/engineer. And joy in his eyes through it all. Man is living his best life.
I fee the same!
Totally, even for someone like myself hovering around the "FizzBuzz" / "Leap Year Calculation" level of programming, this was a really interesting video.
It's my ambition to be as cracked as Prime one day.
Programming is really easy to follow, what is hard is getting creative with algorithm. Crafting solutions it's hard af.
Echoing this, he definitely has a talent for taking low level concepts and showing how they can be applied in practical ways, while keeping things super entertaining and informative!
Quitting your job was definitely the right move. This video would not have gotten made otherwise
Doom was using 13h VGA mode which is a 256 colours palette mode. You could use this pallet directly instead of your own conversion to 1 byte. This way you don't lose any colours.
Also if you Huffman encode blocks longer than 1 byte you could target patterns of colours from textures and potentially achieve greater compression.
Or use LZ4 as compression
This is what Prime means when he says "go build fun projects" lol.
right, he sure did 'go build' a lot during that time
But how do you write this on your CV without getting laughed at on job interview.....
@@test-rj2vl most software companies love stuff like this. "I cloned twitter" will get little to no response from an interviewer as they know you could have just followed a tutorial.
@@test-rj2vl who laughs at this, srsly are you crazy, try building it
@@test-rj2vl yes, they will laugh at you for saving them $$$gigabytes/minute
Netflix lost an employee so we could gain a legend - truly top tier content sir.
Mustache man… I gotta say you really are the reason I stay inspired to code and continue to pursue the deeper understandings of development.
The combination of pure unadulterated knowledge & passion for what you do is so inspiring. I’m already 2 months in using NeoVim becoming blazingly fast, finally able to sit still at my computer for 5+ hours & I now wake up everyday giddy knowing I GIT(😅) to learn more.
I’m sure you hear this all the time, but you’ve truly saved my life. Thank you.
The work put into this video is astounding. So happy to see Primeagen closer to where he wanted to be so long ago.
Prime: GigaChad SWE
Flip: GigaChad Editor
Team: GigaChad
Chat: Degenerates
The point of doing fucking XOR operations is mind-blowing for compression
Amazing
Yeah, I was like, what's the point or how'd it compress shit? But then if the xor'd frame can construct the 2nd frame because it is mostly similar to it (repetitive pixel colors between frames for example!) and thus it mostly produces zeroes except the changed pixels... whao, it all clicked.
Hope the $EDITOR got payed handsomely cause that shit looks gud
I think that's the best audio-visual explanation of an XOR operation I've seen.
Great project and video. Thanks for sharing!
Also, I loved the Yugioh lifepoint sound/animation you did for the counts.
What an incredibly informative and entertaining video! This is exactly what I was hoping for when you became a full time streamer :D
I think the next will be better
If this is the quality of stuff we're going to get moving forward, this channel is gonna get huge.
Amazing editing, amazing pacing and amazing explanation. Another pristine jewel from the development side of youtube.
12:12 The first bit for B went to previous A
It also confused me and i did a rewind. I believe it’s for 8 bits per line to look nice.
Came here to say this as well. Since your message is already here, I'll like instead.
I think the 1 on the end of the first line is supposed to be before it, it's even animated like it should be there.
This confused me as well, especially because prime specifically states that the same characters can never have different values, and yet on the screen that's *exactly* what's happening. I had to go back and rewind and figure it out and rewatch to learn.
Came to point out the same.. cool to see Huffman tree encoding in use
DOOM renders into a 320x200 8-color bitmap. This means the colors DOOM actually renders already fit into 8 bits. It would be super easy to compile DOOM and make this framebuffer available to your compression stage.
4:52 yeah i see that `uuwwUU`
😂
This is rad. I love the walkthrough of it all. 1000% need more of this.
That XOR frame compression technique is so cool! Really made me to start thinking about more good use cases for XOR. Good content as always, you are one of the biggest inspirations in my programming journey.
the quality of this video is unlike anything you've made before! Amazing!
this is peak programming content, Flip did something amazing in this ones
The compression part is pretty interesting
4:55 "Does anything stand out to you"
uuwwUU - oh god mistakes were made
You gave me a blast from the past here. I used to program muds on the 90s and 2000s and my main bottle neck was bandwidth for hosting my game. I had to compress streams and use a lot of terminal hacks to get my ASCIi maps to work fast. I could even play videos on the terminal in ASCIi all with low bandwidth and gzip compression.
This was an amazing video really liked the graph showing the data saved when using different compression methods!
Insane how digestible you made this for someone who has 0 coding experience. (I have years and still loved this). Great job!
This is so awesome. I'm really glad you can spend more time on projects like this!
Hi Prime, I wanted to say Iam so incredibly proud f you for accomplishing this with twitch. Making the plunge into content creation I'm sure was crazy and scary, but you deserve all of the accolades validation for all of your hard work. We love you and your content so much! please don't stop!
Gotta admit, it was today that I finally fully understood XOR lol
Also thanks for this... really helped me come to a breakthrough with reverse engineering some stuff. Basically been trying to figure out the cause of some corrupted frames in TH-cam videos and now I can see why it's happening but now I need to figure out why it's only on certain videos, and only when using certain phones. New phone doesn't get the corrupt frames, but three previous phones I had do get them. One of the new and one of the old are the exact same device model, under different carriers. And the corrupt frames, they only occur on the three old ones when on WiFi. I tried a different wifi router, and it doesn't happen.
I had a compromised router! [ISP redacted] might have an announcement to make soon..
IMO the best video I saw from you mate, well done. I really enjoy watching all your videos, but this one and the ones you made with this journey was really amazing! keep up the good work.
Turned out great Prime.
Only a small percentage of your Twitch followers understood how hard this was.
One of the best streaming devs on Twitch/YT no doubt.
This style of video is awesome! Thanks for this
Bro! This video resonates with me as an engineer so much! I love reinventing the wheel because it's just fun sometimes. Great stuff brother keep it coming!👍🏻
Oh man, I just love this new format Prime! Keep going, you're being a great mentor and a rolemodel because you are always on the path of learning new things, you couldn't even imagine how I feel man :) Keep going, all respects from Turkey
The "I've done it before but I didn't know the name" experience is such a powerful programming vibe. Encounter algo named wave function collapse; discover I had implemented it before by accident. Run-length encoding vs "Just count how many times things show up". Great vid
That was brilliant! Thanks for sharing your madness!!! :)
This is super work all round and the perfect TH-cam content. Fascinating computer science, history, and project planning. Lovely editing. Superbly presented. Everything else today is going to suffer in comparison.
It's the best creative video!!! DOOM was a great journey and a big challenge, duplicate characters, xor, huffman first try, and a lot of golang content!!
Congratulations, this was a new step in your creation content!!!
LET'S GOOOOOOO BABY!!!
great editing and explanation, makes me excited to program again
This was a fantastic vid man. What a fun project. I remember writing Huffman and RLE in college and this was really nostalgic.
This is amazing, thanks for going full time to produce this sort of content :)
In-depth, yet quick and snappy
this is the kind of programming content I like: not learning about new react ecosystem shit, learning REAL, USEFUL STUFF that makes my brain work
I finally understand the XOR encoding. your explanations of the compressions you used are really clear. thank you for the help. the actual application really cemented it for me
This was such a great video! Props to Flip on the editing.
I love how this guy's brain work
This is absolutely freaking incredible.
this is why we listen to Primagen and not Theo
This is applied computer science
@@TheStickofWar and it doesn’t make it any less incredible
An encode/decode stack is one of those things I just gotta implement sometime. So useful! For a second I didn't understand what was going on with the min-heap but it all came together in the end. Great way to make a fun video educational too, thanks Primeagen.
0:09:07 thank you for re-explaining how XOR has memory; I didn't get it the first few times you mentioned that but this video really helped solidify that concept!
Thank you for the summary. Watching the stream only gives me a glimpse of the extensive work you do.
This is the evil version of dougdoug where he actually codes what he says he’s going to code
the quality of the video is insane the narrative, the edition, the composition. So this is how a full time video feels like, awesome job 👍
This is the perfect kind of video for this channel! Larger and super interesting projects that you enjoy. You also can create these naturally as a byproduct of building the project anyways, so you don't have to feel forced to create a video for no reason. Great job man!
You actually Explained huffman encoding pretty well. Good work.
Prime loves to act like he doesn't know what he's doin then comes out with this 1 month into gamedev journey
At first I thought they'll play against each other and we'll have a 1000 different renders. But nope! It's a swarm decision. This guy accidentally created an incredible social experiment!
I am watching you from time to time. I have very little understanding in coding, I aspire to become a gamedev using Godot, but I am disorganized and have bunch of fears and doubts, lazy.
You ported Doom in a way I could not comprehend for chat to play on stream. You are nuts, that seems like magic to me. Pretty entertaining stuff.
Anyways, love your content, I will try following more tutorials till I face my fears and start my own project.
YOU were the one that did this?? Holy, I remember hearing about this a while back (I'm not a programmer), but that's awesome man, you made internet history!!
Very well edited video 👍 well done Flip.
editing went crazy, absolutely love it
The graphics and animations in this video were really a step up. Nice work!
This is why I became the engineer! Got me goosebumps just by watching the video and how every iteration lowers the line on the graph.
If DougDoug and Dr Disrespect had a child. Who also happened to work at Netflix at one point btw.
I demand at least 2 more videos on the code journey of this project
Learnt more in 15 mins than in any other coding video ever.
I love this format!
The guideline, the editing, the explanations m, everything was absolutely great.
Loved that video, please make more of that kind of content !
One of the best tech TH-cam videos I’ve watched in a long time.
Best video so far of the primeagen, the amount of optimization put on the project no wonder the dude worked successfully for 10 years at netflix as backend engineer this is so motivational
Flip went in on this! Great video 👏
I have to say this video was very high quality, educational and entertaining too.
It looks like you had a lot of fun working on this.
Prime, you truly reanimated my passion for programing with your streams and this kind of videos! Thank you so much! God bless you!
The best explanation ive seen for what actually gets done to make efficient code along with the process.
Two things im curious on your take:
1) using edge detection and morphological operations for further efficiency since theres a lot of patterns that can be known of neighboring bits
2) client side prediction using player input to process known data on the client side. When youre walking towards a dark step on the stairs, it coming more into vision and getting brighter can happen client side. Server side, you're only looking for deltas that cant be assumed by the client.
Damn, editing is so goooood. Give editor man a raise!
Sure, your content was great before, but this is a whole new level. Keep rockin'
i love your other formats but this is the best video on your channel so far. learned a lot and it was fun, please more like this
massively undersold this video absolute banger
Love this style of video! Great job Prime!
I think when you were in Netflix you didn't think about this stuff, now you are free to make cool stuff!
Learned from this what Forward Error Correction is, the XOR trick to recover a single missing message out of many is brilliant
The production value of this video is nuts! Nice work, Primeagen! :)
it is always fun to watch how developers struggled and finally overcome difficulties
What great quality in this video. I enjoy your reaction style videos, but these structured one are my favorite. Hope to see more soon!
Now I want Primeagen to react to this video on livestream 🎉
Just amazing, greatly edited and also, great explanations of the topics along the way. Great editing, great explanations, great video. Nice! Keep it rolling!
Thats a rare programming topic video explanation I literally watched like magically hypnotized to not even look away for a second. amazing.
So much knowledge compressed into a single video and it was very captivating and entertaining, I love it!
Twitch chat only missed the stairs repeatedly for the glute gains.
Well, there you have it, pursuing full time content creation paid off. Excited to see what you'll do next. Amazing work!
this is amazing. should have a lot more views tbh
This was actually insane in terms of optimisation. Learned a lot. THX
The funny thing about what you did is you basically simulated the same thing as a brain. It’s sifts and weighs the options but uses the data from the sensory tools to construct understanding and that leads to guidance. Wild that maybe the way the worlds pressures form our habits and guides us might be able to be understood by just experiments like this. Good work. What i mean is that the brain uses the data to think like how your people can send in actions and stuff and the ai does what it does. Haven’t watched fully yet but your beginning 0:49 got me thinking.
He made it surprisingly simple to understand❤
Absolutely enjoyed this vid.
Loved the video, genuinely learnt a lot. Did laugh out loud at all that random techniques to increase compression ratio, finishing with just straight up Huffman encoding to completely blow the rest out the water. ofc effects are accumulative, but just funny
12:15
Here, the value for 2nd A gets mixed up with that of 2nd B.
threw me for a loop
yeah it's getting mixed up so the bits add up to a byte
i thought it was an error at first as well but nah, it was on purpose
This was absolutely great. Love to see more videos like these!
I can't lie - TwitchPlaysPokemon was a revolutionary thing in late 2013/early 2014 (in my old age of almost 30, I'm forgetting exactly when that happened) - but this is fantastical.