@@monolith-zl4qt they're pretty decent games. I think neither carmack nor blow are god tier or anything. they're both pretty decent, carmack maybe a bit more so. they both have the benefit of putting in a lot of hard work over a long time, and thus getting good results. jblow does act a bit more annoyed than he should at ignorant questions, and quite a bit over the top with doomsaying. and it probably gets more people arguing with him than he would otherwise get, and thus perpetuates a cycle. : though jblow is not entirely wrong, either. there does need to be a forcing function to keep people from getting lazier and more ignorant over time, and there was a big rash of laziness and ignorance and false reverence masquerading as "wisdom". for example: compilers are great technology, but understanding them and outdoing them (in a focused area) is achievable in a reasonable amount of time. it's not always easy, but it is doable. but a lot of people (supposed experts) 10 years ago liked to pretend that wasn't the case, and liked to pretend no one should bother. our tech is made by humans, and genius only takes you so far. once you spend a decent amount of time peeking behind the covers, you find out that all the tech we have still is just scratching the surface of what's possible, and that there are still plenty of improvements to be made, just about anywhere you look. we should be teaching that to people, and not teaching helplessness, nor teaching blind reverence. anything carmack and jblow can do is something you and I can do, given enough time and effort. and there is a benefit to putting in that time and effort.
The sign is a subtle joke. The shop is called "Sneed's Feed & Seed", where feed and seed both end in the sound "-eed", thus rhyming with the name of the owner, Sneed. The sign says that the shop was "Formerly Chuck's", implying that the two words beginning with "F" and "S" would have ended with "-uck", rhyming with "Chuck". So, when Chuck owned the shop, it would have been called "I listen to all my code on vinyl".
Prime has a nice tactic where he repeats in his own words his understanding of what Casey taught him. This way he gives Casey feedback on whether he got the concept right and they can further refine the concept. This is really nice lesson: Instead of just saying "ok thanks" you repeat in your own words what you've been told and thus verify you got it right.
That's one of the fundamental concepts in good communication. When in doubt, ie, what was communicated was not "trivial and obvious", state your understanding of what was communicated. Any misunderstandings immediately show up, thus avoiding proceeding under wrong premises. In a way, it's no different from any decent communications protocol, where both ends cooperate to ensure the correctness of the transmitted data.
@@ErazerPT Yeah it sounds obvious but I didn't do it many times as not to seem like I didn't get it first time. I didn't want to seem like I need "more" to understand. But in order to truly learn one needs to be hones and let aside the ego in that situation. That's why I felt the need to put this idea into a comment.
@@tothespace2122 You totally nailed it, people don't do it because they don't want to "look dumb" and it harms their development A LOT. The irony is that, if you play it right, you get all you wanted and then some. For example, a simple "this is a bit over my current skills, but you've been doing it for a long time so I'm sure you can teach me the details". Now you have someone with a pumped ego that will go out of their way to help you. I wish I had read “How to Win Friends and Influence People" far sooner, it would have made life SO MUCH easier... Yeah, it's social engineering, but so what? As long as you keep an "ethical mindset" and you're hurting no one, no bad comes out of it.
This technique is very important when the participants have very different areas of expertise. For example your client might be working in finance, and you are a developer. Repeating each other’s statements in your own words brings these areas closer together.
Casey is such a wise and experienced programmer. Handmade hero, computer enhance, all his blogs on Molly rocket are all from the best learning places on the internet. Thanks for bringing him again Prime.
A good way I've heard of to pick between two things you like equally: Do a coin flip, than notice your gut reaction. If you are unhappy with the result, then pick the other one, if you are neutral or happy about the result, pick it. The same thing works for when you have to pick between two things you dislike equally.
@@TehIdiotOne sure. but to describe it as a "thing you *think* you like equally" requires you to have enough context to know you don't actually like it equally. the exercise might get you there.
This is actually something I tell my friends to do all the time! It works. We often have preferences that we are unaware of until we are confronted with the reality of a situation.
@@Kakerate2 fundamentals of how to make things fast on modern computers, starts with learning principles of assembly & how a cpu works by implementing a x86 disassembler and eventually a x86 simulator then goes into modern cpu design etc. with code examples for everything and coding exercises
I recently made a game just like the one Casey describes. It's a turn-based Sokoban puzzler (Mooselutions on Steam). It's exactly as he describes. You have to separate the turn-based logic from everything else so you can use a turn to go from Board State A --> Board State B. This makes it so much easier to implement nice things like rewind, which helps the player undo a mistake. People expect that kind of thing now.
I also follow the course. Yeah, he posts videos about performance-aware programming, and he even gives homework. For example you get to write a basic simulator for the 8086 processor by reading the CPU instructions spec. Essentially the goal is that if the thing you wrote is slow, at least you'll be aware that it is slow, how slow it is compared to a hypothetical best case estimate, and potentially why as well, so that you can at least be aware of where performance problems occur. (In that regard, literally the number one he talks about is waste, which he demonstrates by rewriting some Python code in C lol. But that's only the intro, I swear the whole content is worth it.)
I think the course itself is called "performance aware programming". "computer enhance" is the brand name the course lives under. would be like calling photoshop "adobe".
TLDR; *Summary of the Video: Key Takeaways* 1. *Introduction and Context*: - The video is an interview with Casey, focusing on game development. - Casey shares insights on building game engines and approaches to first-time game development. 2. *General Advice for Game Development*: - Keep the game logic simple and avoid over-engineering. - Separate game rules from display and animation logic for clarity. - Allow for flexible and straightforward augmentation of game state data to accommodate animation needs. 3. *Prototyping and Optimization*: - Begin with the simplest implementation for spatial queries and game mechanics. - Avoid premature optimization; focus on game design and functionality first. - Evaluate the types of operations frequently performed to inform later optimizations. 4. *Handling Entity Data*: - Store game state and render state in the same structure for simplicity. - Use stable IDs for entities (e.g., towers) to manage their state and animations effectively. - Consider "two-sided death" for entities: logical removal from the game state and gradual removal through animation. 5. *Animation and Game State*: - Maintain separate values for actual game state (e.g., health, ammo) and display state (e.g., display health, display ammo). - Implement gradual changes in display state to reflect game state changes smoothly. 6. *Practical Implementation Tips*: - Start with a brute-force approach for spatial queries and refine later if necessary. - Focus on the ease of experimentation and iteration during the initial stages. - Ensure your code is flexible enough to incorporate changes and optimizations based on observed gameplay needs. 7. *Scaling and Performance*: - Understand that performance requirements might evolve as the game design matures. - Be prepared to transition from prototyping to optimization, especially for large-scale projects. - Recognize the importance of early performance considerations to avoid structural inefficiencies. 8. *Real-World Application and Future Planning*: - Plan for potential expansions or increased complexity in your game (e.g., larger maps, more players). - Use the prototyping phase to identify common operations and optimize them later. - Maintain a balance between simplicity in the initial stages and readiness for future scalability. 9. *Summary of Key Points*: - Focus on game logic clarity and simplicity. - Separate game rules from display logic but keep them closely linked. - Avoid premature optimization; prototype and understand your game’s needs first. - Use practical, flexible approaches to entity data and state management. - Plan for scaling and performance improvements based on observed gameplay patterns.
The sign that someone knows what they are talking about. Casey is able to easily explain this stuff, that even someone like me who has no programming experience can follow what he is saying. Such a wealth of knowledge there that is invaluable.
Casey no one thought you were a boomer 😂 most of us I think were surprised you’re not a millennial. You have a young face and an even younger spirit. Cheers
@@imya_mujik_familiya_tajik I don't know, for someone who complains about the sad state of software, he seems to be making his own contributions to it.
@@androth1502 The project he's working on is not a game, its an education program. The game is a means to an end and something that's more for himself than anything.
As a game designer, I gotta say I really, really appreciated Casey explaining that he *isn't* good at game design and that that's a whole other discipline. I think there's nothing wrong with doing an experimental throw-away twitch experience, but my designer brain also itches to understand how we'd bake good decision making in here, what our actual skill expressions are, how we make sure that games are close (Prime's idea of "when a creep leaks you lose a random tower" is what we call a snow ball; once you start losing, you just lose more. That's probably the opposite of what you want here) etc. Lots of people who get into game making prioritize (correctly, at first) the HOW of making a game--how do you code it, what tools do you use etc, but game designers also care a lot about the WHAT (do you make) and the WHY (do you choose certain ideas over others).
This is my "problem" with making a game. I love programming. I love hacking. I love the software development feedback loop. Unfortunately, I was *never* a good "designer", as far as arts and crafts stuff. I'm particularly weak at that and that bothers me. Because that is what is holding me back at hacking at some minor game. So I envy game designer with cool game ideas, mechanics etc. But then again, they will lack things I probably don't. It's why collaboration is so important.
@@simonfarre4907 I have the opposite problem! I've been a professional (as in: paid ;P) game designer for 12 years now, done a whole lot of for fun game design in TTRPGs and mods on my own before that. I'm about to start my next position, but I was unemployed for a few months and tried to make a game on my own in that time, and dear God am I bad at learning a new environment (tried UE 5.3 this time; got half-way through something in Python and PyGame last time I tried) when I can't just walk over to an engineer and say "hey explain to me how I'd do XYZ". You're absolutely right! Teaming up is essential.
Hmm well I had also been making a video game, it started off real small at first but because i touch type that soon ballooned up to a size of 600k as I touch type so I could type up all this stuff very quickly.. Game has 10 party members travelling around in a spaceship of a crew of 103 in a galaxy of 20+ Expanses, 800+ Systems, 5,000+ Planets, 500+ different enemy types, over 40 different Races, over 80,000 lines of hilarious dialog and that's just the text form of it. When I put one of my homeworlds (Blackhell) into Unreal Engine to convert it into a 3d world, that level took up over 30,000 unreal engine asset files because that world alone had about 5,000 lines of dialog in it so its like Kotor with all the dialog......And that's just for one single world. So my game won't fit into unreal engine if I convert all of it into 3d. In the text version The game has got over 13,000+ variables in it that keep track of everything going on in all the dialog and stoylines in the game.. How would you guys program a game like this in 3d form? I remember back in the days on the c64 for big complex sized games they were spread out over 5-10-or more floppy discs.
I didn't have enough knowledge to put all my game into Unreal Engine asmost of my game is stored in a runnable text file (29 megs) in size. I only put one level of it in unreal engine that one level took up over 25,000 unreal engine asset files. My game was not small, its galaxy sized. 5000+ planets, 800+ systems, 500 different enemy types, and has over 80,000 lines of hilarious dialog going on in it, it has 10 party members in a crew of 103 travelling around in a spaceship exploring the quadrant. So because of crazy stuff going on the planet, I decided to script the rest of the game in text form until I can find a way to get it all in 3d form without it breaking my computer.
Oh man, I was looking forward to this one so much - Casey mentioned it was coming up in his substack. Sadly missed it live and have been waiting with baited breath since then.
Wowwww. That was so great. LIke, really good. I just started Casey's "Computer Enhance!" course(s) last week. Feeling even more fortunate for this person creating contents for us.
I agree, I think the big problem is if you aren't fully immersed and hooked in by a person's personality, or what they're doing in a specific stream, or just in general what streams are comprised of, you're much less likely to sit down and watch something like a vod because a lot of the time tends to be dead air and if your time is limited or precious then most people would prefer edited versions with just the highlights, overview, etc. (aka a video) because it fast-tracks the entertainment for a broader audience.
@@9hoot789 yeah. editing down streams is pretty necessary for my personal consumption habits. I rarely watch streams, vod or not, and usually only those that are a less condensed tech talk that would have a slide deck if it were more refined and rehearsed.
I think part of it as well is just Tsoding has the consistency of coding fun shit instead of doing one code thing and then calling it quits because the audience wasn't fostered to be interested in coding. Tsoding is doing that slow grind for a very tight core audience while prime is going for the quick gains; it's not an inherently bad choice, but it makes a pivot on serious things a lot harder from that lack of tight core
What is the meaning of sub count if max 20% will transfer to views for next video? Coding is just a bad visual storytelling: Tsoding and Prime both has same super user problem: If you make everything with CLi/shortcuts, then average viewer has no Idea what you are doing in screen. You leap trough file to file, line to line. Watcher cannot make any predictions of your next action. User story experience is similar to 'choose your adventure books', but this case you don't flip or chose your next page, or have idea what is size of book is, or is there a book?. UX is misserable. It is harder to drop in middle of stream and be like: "Nice, we are Doom slaying in here. " There is two instances when coding video VODS has been nice: 1st: When I and prime had same zero domain knowledge of ZIG when he tried it first time. It was many little learning test files, self contained, easy to follow and form my own oppinion. 2nd: When tsoding's video was closer to my own intrest of rendering, then it was easier to follow, but still file/line hopping is a issue and code details almost useless. At least Tsoding uses some tools to make experience better, like zooming in important infomation bits.
What Tsoding does is not easy to replicate cause he does not just plug his coding sessions to YT. His main project is super easy to brief into, basically with couple of words, if someone stumble upon his video for the first time, he also makes quick excursions to other projects which he's able to cut into digestable pieces, plus he's super consistent with uploads for a long time. He's also pretty skilled so his vids are not just about a guy who struggle with stuff, he actually makes fun stuff happen quick.
I love that @ThePrimeTime asks the same questions as many other people would, people that develop but not necessarily dedicated game developers. I really really appreciate this type of content as I really like knowing and listening to people talking about how things are done in a professional way and not in a 10-minutes youtube tutorial way that its worthless 3 days later.
1:16:25 - Interesting point regarding "let's do it simple because we can't in Unity" that worth pointing out is that you can do the same simple way in Unity (and likely other engines) too. You can code the simple "kernel" parts in code and then put that into Unity for rendering and such. It's not one or the other, you can use an engine and write simple code in it.
Just wanted to say, I absolutely love this banter on technical concepts. The x86 article review, and now this, both excellent! This applies even more so when someone approaches solutions from totally different perspectives. 😃
I can totally relate to the part around 1:15:00. Before I began my career as a software developer I could program snake or a gorilla clone on my TI83+ calculator in that shitty TI Basic in an afternoon. That was the most straight forward code I ever wrote.
It would be amazing if Casey could be a regular scheduled guest, like weekly or once every two weeks or something like that. You clearly fit great with each other and everybody benefits, so 🙏
I can't believe I just watched all this wisdom for free! Casey was throwing all these wisdom nuggets like it is nothing and I was in awe most of the time.
I absolutely love these streams with Casey. He is amazing at explaining his thoughts and the back and forth between you and Casey is amazing. It would be great to see a stream where you and Casey try to optimize the tower defense game when it is done
This is a talk that really resonated with me. A few months back I was experimenting with a game where you would take an action, then an animation would play to show a semi-complex update of the game state. When I wrote it originally, I went off of vibes and ended up writing all of the logic in the animation side, one update per frame. This would mean that how an animation resulted would be the culmination of ~100 tick() calls, each with a slightly different state underneath it trying to piece together what the hell it was supposed to do. It was terrible. I ended up rewriting the entire piece to, on an action, pre-compute all of the animations required to perform the action (storing start pos, end pos, and time to run). This allowed a single function to compute all of the underlying state transition and return a structure that the animation system could just play over the proceeding 100 frames. The way Casey explained how to structure this kind of game was already in the direction that I realized I needed to go on this, but gives a concrete end point that makes me feel like the fog has been lifted. Love the video and best of luck on the game! :D
I love stuff like his tower defence idea - I wanted to make the same thing but for chess. A simple app where every day you get to vote on a chess move. All of the apps players are playing a top of the line chess AI in co-op mode, and at the end of the day the most popular move with the most votes gets made. I made a similar (but completely different) chess game where it's a real time networked game of chess and there's just no concept of turns - you've got to make just moves as quickly as possible while your opponent does the same - if two pieces select the same square the one that lands on it first gets taken by the other one
This was great advice. I was honestly surprised, as I didn't know Casey. Gamedev is plagued by old principles that do not actually fit the use case yet are still taught, like MVC. There are game studios that encourage devs to write controller-type classes for gamedev, which is absolutely awful outside a few use cases (it's great when you want a singleton to deal with a single thing and have no output, like playing sound, but as soon as you start getting into player behavior and gameplay, it becomes immediately awful to make systems interact).
Most of this was over my head but there was some reall nuggets of info that I did understand that helped! Keep it simple to avoid over complicating things that are not needed.
Fantastic. I feel like it gave me some ideas for games. Also, using AI to discover whether/how your game has interesting structures in how its mechanics create a mix of equilibrium and non-equilibrium would help a lot when trying to create these crowdsourced games.
@ThePrimeTime, just fyi that World Of Tanks game, or any Wargaming game actually stores a whole play session of 15mins in a mere 4-5mb file. What they do is they store all the moves and when you want to replay, the file is loaded into the same game client on which you play game and it replays the whole session to very minute details, which completely deterministic. This represents the idea of scrubbing session said by Casey, but also compliments your idea of simulation testing.
Writing Black Jack w/ betting right now in Java and I've been literally thinking about the whole idea of over complexifying your code at the beginning. I do have some inherent structure obviously, but there are some abstractions that I've been thinking about, but I'd rather get off the ground first, especially to get out all the tedious, but usually trivial bugs.
Casey and Jonathan Blow are the two biggest and most important voices in software dev. Even though they might be harsh (Blow especially), they speak really important things which the next generation of devs must get. If you have had the bad fortune of looking at some of the code bases at Google or Facebook you can see how much waste there is. That stops products from getting better (just look at Google steadily dying) and because of runaway capitalism, these large companies take a long time to die so we are stuck with bad software. If the next gen devs get what Casey and Blow espouse and really try to follow those principles instead of Solid (which I think has taken our industry back by about 20 years), the next generation of software will be much better, faster, bug free.
I don't think either of them talk about approaches that will make things significantly more bug free. I think they both have important ideas to contribute. I think Casey has done a lot more concrete things towards making things accessible and understandable. I haven't seen JBlow do much in that respect, though he does contribute some useful philosophy. If JBlow open sources his game, and especially if he makes media that thoroughly covers the technology, it could be very useful. His programming language could, too. Besides that, he's mostly doing sci-fi/inspirational speeches. Quite useful as a north star, and a good counter-point to the learned ignorance the software industry had been practicing for a couple decades, but not super concrete progress on its own.
@@blarghblargh jblow's twitch streams and how he thinks about software is massive. casey might have done more implicit educational stuff but jblow through his work has also shown great examples. both talk about less indirection and thinking about how the computer actually works which I think is the primary way of reducing bugs.
I used to stream programming back then. Got between 20-50 viewers. But I figured out quickly that nobody cared about the software, they only cared about the music I had on in the background.
In defense of Unity and other game engines, they do teach you a lot of the concepts, especially once you start adding UI to the mix and want to animate the objects. Fantastic talk and a great guest nonetheless!
The problem with the all the more in-depth coding streams that I’m interested in is I feel like Prime is rarely coding. It’s 90% jumping between chat windows and messing around. Really what I want are just VODs of Prime working while talking to himself
For the tower/rendering/etc stuff, this is where I like inheritance. I have teammates who would reference things they shouldn't if it all existed in the same structure. So the "kernel" doesn't know about all that stuff. The code that can have access to the extra details just does a downcast.
True, I have been tuning out from the coding sessions even if I am interested in the langs you are using and the projects because I do not have the mental energies to keep up. I need context, I need requirements, heck I may need a daily with you every time you write code. It is a whole different mental energy from the light hearted one that pulls me in. Meanwhile I have books on the side with deep down in the tech that are more cogent to my actual life, if I have to switch that mental energy it makes more sense for me to dive in those. I hope to eventually follow a complete project of yours but it will be when my queue of those book has run out of priorities. And I will likely contribute if there is the chance at that point.
"It's very, very difficult to keep it up long term." THATS WHAT HE SAID! Jokes aside, I do watch these because they're ebertaining, but man you mention these little things in ever single video that I don't know about and I write them down in a note file to reference later and look up.
I'm only at the beginning of the video, but I find when my eyes have trouble focusing on something, palming really helps. Its free and it only takes a minute to try.
@@etodemerzel2627 you cover your eyes with your hands so you can't see any light leaking in around them and you just let your eyes relax trying to focus on nothing. There are better descriptions of it out there if you want to try.
@@etodemerzel2627 Its where you cover your eyes with your palms so no light leaks in and let your eyes relax while being warmed by your palms. There are better descriptions out there if you want to try it, but it works better than I expected.
@@etodemerzel2627 I somehow can't reply to this without it getting removed. Google 'eye palming' (if YT lets this one through whatever filter they have)
Considering that Prime is focused on using an ASCII Art type of Engine and that he's trying to build a Tower Defense game, perhaps as some advice towards inspiration would be to look into the history of the development of Drawf Fortress.
“You know who else we got raided by?” Then it cut to an ad and immediately I thought of Raid Shadow Legends… whatever it’s called. It wasn’t that ad though… it was Menulog
I hope prime knows this is our favorite guest. He should bring him more often I learned so much in both of his videos.
still waiting for the grumpy JBlow. Prime simps for him at every chance he gets.
@@3_smh_3 the guy who made one mid game but thinks he's Carmack reborn?
@@monolith-zl4qtis the mid game Braid or The Witness?
@@monolith-zl4qt they're pretty decent games.
I think neither carmack nor blow are god tier or anything. they're both pretty decent, carmack maybe a bit more so. they both have the benefit of putting in a lot of hard work over a long time, and thus getting good results.
jblow does act a bit more annoyed than he should at ignorant questions, and quite a bit over the top with doomsaying. and it probably gets more people arguing with him than he would otherwise get, and thus perpetuates a cycle.
:
though jblow is not entirely wrong, either. there does need to be a forcing function to keep people from getting lazier and more ignorant over time, and there was a big rash of laziness and ignorance and false reverence masquerading as "wisdom".
for example: compilers are great technology, but understanding them and outdoing them (in a focused area) is achievable in a reasonable amount of time. it's not always easy, but it is doable. but a lot of people (supposed experts) 10 years ago liked to pretend that wasn't the case, and liked to pretend no one should bother.
our tech is made by humans, and genius only takes you so far. once you spend a decent amount of time peeking behind the covers, you find out that all the tech we have still is just scratching the surface of what's possible, and that there are still plenty of improvements to be made, just about anywhere you look. we should be teaching that to people, and not teaching helplessness, nor teaching blind reverence.
anything carmack and jblow can do is something you and I can do, given enough time and effort. and there is a benefit to putting in that time and effort.
@@PileOPoop1yes
"I listen to all my code on vinyl" Underrated joke
as a geriatric millennial I 100% agree on this
The sign is a subtle joke. The shop is called "Sneed's Feed & Seed", where feed and seed both end in the sound "-eed", thus rhyming with the name of the owner, Sneed. The sign says that the shop was "Formerly Chuck's", implying that the two words beginning with "F" and "S" would have ended with "-uck", rhyming with "Chuck". So, when Chuck owned the shop, it would have been called "I listen to all my code on vinyl".
Made me laugh. it was a good one. :)
but did you know: a non-zero amount of code has been released on vinyl
@@blarghblargh I’m old enough to remember they tried to put everything on vinyl…
Prime has a nice tactic where he repeats in his own words his understanding of what Casey taught him. This way he gives Casey feedback on whether he got the concept right and they can further refine the concept. This is really nice lesson: Instead of just saying "ok thanks" you repeat in your own words what you've been told and thus verify you got it right.
That's one of the fundamental concepts in good communication. When in doubt, ie, what was communicated was not "trivial and obvious", state your understanding of what was communicated. Any misunderstandings immediately show up, thus avoiding proceeding under wrong premises. In a way, it's no different from any decent communications protocol, where both ends cooperate to ensure the correctness of the transmitted data.
@@ErazerPT Yeah it sounds obvious but I didn't do it many times as not to seem like I didn't get it first time. I didn't want to seem like I need "more" to understand. But in order to truly learn one needs to be hones and let aside the ego in that situation. That's why I felt the need to put this idea into a comment.
@@tothespace2122 You totally nailed it, people don't do it because they don't want to "look dumb" and it harms their development A LOT. The irony is that, if you play it right, you get all you wanted and then some. For example, a simple "this is a bit over my current skills, but you've been doing it for a long time so I'm sure you can teach me the details". Now you have someone with a pumped ego that will go out of their way to help you. I wish I had read “How to Win Friends and Influence People" far sooner, it would have made life SO MUCH easier... Yeah, it's social engineering, but so what? As long as you keep an "ethical mindset" and you're hurting no one, no bad comes out of it.
It also helps to have multiple perspectives on the idea that is trying to be expressed for the listener.
This technique is very important when the participants have very different areas of expertise. For example your client might be working in finance, and you are a developer. Repeating each other’s statements in your own words brings these areas closer together.
Casey is such a wise and experienced programmer. Handmade hero, computer enhance, all his blogs on Molly rocket are all from the best learning places on the internet. Thanks for bringing him again Prime.
A good way I've heard of to pick between two things you like equally:
Do a coin flip, than notice your gut reaction. If you are unhappy with the result, then pick the other one, if you are neutral or happy about the result, pick it.
The same thing works for when you have to pick between two things you dislike equally.
I guess a more correct statement to do that when you have two things you *think* you like equally.
@@TehIdiotOne sure. but to describe it as a "thing you *think* you like equally" requires you to have enough context to know you don't actually like it equally. the exercise might get you there.
This is actually something I tell my friends to do all the time! It works. We often have preferences that we are unaware of until we are confronted with the reality of a situation.
Pretty much what I do whenever I'm unsure about a decision.
I'm currently going through Casey's Computer Enhance course and I highly recommend it.
what is it about
Me too, its just so eye opening, Casey is a great teacher
@@Kakerate2 fundamentals of how to make things fast on modern computers, starts with learning principles of assembly & how a cpu works by implementing a x86 disassembler and eventually a x86 simulator then goes into modern cpu design etc. with code examples for everything and coding exercises
I love this pairing so much, been following Casey for like 10 years prime I’m new to, but I’m
loving you guys together such a funny combo
I recently made a game just like the one Casey describes. It's a turn-based Sokoban puzzler (Mooselutions on Steam). It's exactly as he describes. You have to separate the turn-based logic from everything else so you can use a turn to go from Board State A --> Board State B. This makes it so much easier to implement nice things like rewind, which helps the player undo a mistake. People expect that kind of thing now.
Looks like a great game! good job :)
People expect undo but it's kind of cool that Void Stranger bucked the trend by making it a puzzle game with lives/game over states.
You are a great man
i immediately thought of you and Mooselutions while watching this!
I’m currently working through Casey’s “computer enhance” course. So good! Always glad to hear his take on things.
I thought that was just what his substack was called. What's the course?
yeah now im also curious? is the course integrated into the substack somehow?
I also follow the course. Yeah, he posts videos about performance-aware programming, and he even gives homework. For example you get to write a basic simulator for the 8086 processor by reading the CPU instructions spec. Essentially the goal is that if the thing you wrote is slow, at least you'll be aware that it is slow, how slow it is compared to a hypothetical best case estimate, and potentially why as well, so that you can at least be aware of where performance problems occur. (In that regard, literally the number one he talks about is waste, which he demonstrates by rewriting some Python code in C lol. But that's only the intro, I swear the whole content is worth it.)
I think the course itself is called "performance aware programming".
"computer enhance" is the brand name the course lives under.
would be like calling photoshop "adobe".
Wow
Casey is like
Gangsta Programmer
Real L33T
The street smarts emanating from this dude is contageous
TLDR;
*Summary of the Video: Key Takeaways*
1. *Introduction and Context*:
- The video is an interview with Casey, focusing on game development.
- Casey shares insights on building game engines and approaches to first-time game development.
2. *General Advice for Game Development*:
- Keep the game logic simple and avoid over-engineering.
- Separate game rules from display and animation logic for clarity.
- Allow for flexible and straightforward augmentation of game state data to accommodate animation needs.
3. *Prototyping and Optimization*:
- Begin with the simplest implementation for spatial queries and game mechanics.
- Avoid premature optimization; focus on game design and functionality first.
- Evaluate the types of operations frequently performed to inform later optimizations.
4. *Handling Entity Data*:
- Store game state and render state in the same structure for simplicity.
- Use stable IDs for entities (e.g., towers) to manage their state and animations effectively.
- Consider "two-sided death" for entities: logical removal from the game state and gradual removal through animation.
5. *Animation and Game State*:
- Maintain separate values for actual game state (e.g., health, ammo) and display state (e.g., display health, display ammo).
- Implement gradual changes in display state to reflect game state changes smoothly.
6. *Practical Implementation Tips*:
- Start with a brute-force approach for spatial queries and refine later if necessary.
- Focus on the ease of experimentation and iteration during the initial stages.
- Ensure your code is flexible enough to incorporate changes and optimizations based on observed gameplay needs.
7. *Scaling and Performance*:
- Understand that performance requirements might evolve as the game design matures.
- Be prepared to transition from prototyping to optimization, especially for large-scale projects.
- Recognize the importance of early performance considerations to avoid structural inefficiencies.
8. *Real-World Application and Future Planning*:
- Plan for potential expansions or increased complexity in your game (e.g., larger maps, more players).
- Use the prototyping phase to identify common operations and optimize them later.
- Maintain a balance between simplicity in the initial stages and readiness for future scalability.
9. *Summary of Key Points*:
- Focus on game logic clarity and simplicity.
- Separate game rules from display logic but keep them closely linked.
- Avoid premature optimization; prototype and understand your game’s needs first.
- Use practical, flexible approaches to entity data and state management.
- Plan for scaling and performance improvements based on observed gameplay patterns.
The sign that someone knows what they are talking about. Casey is able to easily explain this stuff, that even someone like me who has no programming experience can follow what he is saying. Such a wealth of knowledge there that is invaluable.
I have never clicked on a video so fast in my life
Man, these streams with Casey are one of the best things ever.
Casey no one thought you were a boomer 😂 most of us I think were surprised you’re not a millennial. You have a young face and an even younger spirit. Cheers
I genuinely thought he and Prime were around the same age.
@@neruneri that's so funny. I knew of Casey since 2015, and back then I thought he was in his early 20s 😃
I'm 43 and I've always thought he's a little older than me.
Casey is like John Carmack, you can never get too much.
no homo
if only i could get a completed project from him.
@@androth1502 I'll choose Casey with "incomplete" projects rather than any TH-cam guy with complete projects any day.
@@imya_mujik_familiya_tajik I don't know, for someone who complains about the sad state of software, he seems to be making his own contributions to it.
@@androth1502 The project he's working on is not a game, its an education program. The game is a means to an end and something that's more for himself than anything.
As a game designer, I gotta say I really, really appreciated Casey explaining that he *isn't* good at game design and that that's a whole other discipline. I think there's nothing wrong with doing an experimental throw-away twitch experience, but my designer brain also itches to understand how we'd bake good decision making in here, what our actual skill expressions are, how we make sure that games are close (Prime's idea of "when a creep leaks you lose a random tower" is what we call a snow ball; once you start losing, you just lose more. That's probably the opposite of what you want here) etc. Lots of people who get into game making prioritize (correctly, at first) the HOW of making a game--how do you code it, what tools do you use etc, but game designers also care a lot about the WHAT (do you make) and the WHY (do you choose certain ideas over others).
This is my "problem" with making a game. I love programming. I love hacking. I love the software development feedback loop. Unfortunately, I was *never* a good "designer", as far as arts and crafts stuff. I'm particularly weak at that and that bothers me. Because that is what is holding me back at hacking at some minor game.
So I envy game designer with cool game ideas, mechanics etc. But then again, they will lack things I probably don't. It's why collaboration is so important.
@@simonfarre4907 I have the opposite problem! I've been a professional (as in: paid ;P) game designer for 12 years now, done a whole lot of for fun game design in TTRPGs and mods on my own before that. I'm about to start my next position, but I was unemployed for a few months and tried to make a game on my own in that time, and dear God am I bad at learning a new environment (tried UE 5.3 this time; got half-way through something in Python and PyGame last time I tried) when I can't just walk over to an engineer and say "hey explain to me how I'd do XYZ". You're absolutely right! Teaming up is essential.
Hmm well I had also been making a video game, it started off real small at first but because i touch type that soon ballooned up to a size of 600k as I touch type so I could type up all this stuff very quickly.. Game has 10 party members travelling around in a spaceship of a crew of 103 in a galaxy of 20+ Expanses, 800+ Systems, 5,000+ Planets, 500+ different enemy types, over 40 different Races, over 80,000 lines of hilarious dialog and that's just the text form of it.
When I put one of my homeworlds (Blackhell) into Unreal Engine to convert it into a 3d world, that level took up over 30,000 unreal engine asset files because that world alone had about 5,000 lines of dialog in it so its like Kotor with all the dialog......And that's just for one single world. So my game won't fit into unreal engine if I convert all of it into 3d. In the text version The game has got over 13,000+ variables in it that keep track of everything going on in all the dialog and stoylines in the game..
How would you guys program a game like this in 3d form? I remember back in the days on the c64 for big complex sized games they were
spread out over 5-10-or more floppy discs.
I didn't have enough knowledge to put all my game into Unreal Engine asmost of my game is stored in a runnable text file (29 megs) in size. I only put one level of it in unreal engine that one level took up over 25,000 unreal engine asset files. My game was not small, its galaxy sized. 5000+ planets, 800+ systems, 500 different enemy types, and has over 80,000 lines of hilarious dialog going on in it, it has 10 party members in a crew of 103 travelling around in a spaceship exploring the quadrant. So because of crazy stuff going on the planet, I decided to script the rest of the game in text form until I can find a way to get it all in 3d form without it breaking my computer.
Oh man, I was looking forward to this one so much - Casey mentioned it was coming up in his substack.
Sadly missed it live and have been waiting with baited breath since then.
Wowwww. That was so great. LIke, really good. I just started Casey's "Computer Enhance!" course(s) last week. Feeling even more fortunate for this person creating contents for us.
Tsoding uploads his VODs to TH-cam, and he's currently at around 113k subscribers.
It can work, but I do agree that it has a limited audience.
I agree, I think the big problem is if you aren't fully immersed and hooked in by a person's personality, or what they're doing in a specific stream, or just in general what streams are comprised of, you're much less likely to sit down and watch something like a vod because a lot of the time tends to be dead air and if your time is limited or precious then most people would prefer edited versions with just the highlights, overview, etc. (aka a video) because it fast-tracks the entertainment for a broader audience.
@@9hoot789 yeah. editing down streams is pretty necessary for my personal consumption habits. I rarely watch streams, vod or not, and usually only those that are a less condensed tech talk that would have a slide deck if it were more refined and rehearsed.
I think part of it as well is just Tsoding has the consistency of coding fun shit instead of doing one code thing and then calling it quits because the audience wasn't fostered to be interested in coding. Tsoding is doing that slow grind for a very tight core audience while prime is going for the quick gains; it's not an inherently bad choice, but it makes a pivot on serious things a lot harder from that lack of tight core
What is the meaning of sub count if max 20% will transfer to views for next video?
Coding is just a bad visual storytelling:
Tsoding and Prime both has same super user problem: If you make everything with CLi/shortcuts, then average viewer has no Idea what you are doing in screen. You leap trough file to file, line to line. Watcher cannot make any predictions of your next action.
User story experience is similar to 'choose your adventure books', but this case you don't flip or chose your next page, or have idea what is size of book is, or is there a book?. UX is misserable.
It is harder to drop in middle of stream and be like: "Nice, we are Doom slaying in here. "
There is two instances when coding video VODS has been nice:
1st: When I and prime had same zero domain knowledge of ZIG when he tried it first time. It was many little learning test files, self contained, easy to follow and form my own oppinion.
2nd: When tsoding's video was closer to my own intrest of rendering, then it was easier to follow, but still file/line hopping is a issue and code details almost useless.
At least Tsoding uses some tools to make experience better, like zooming in important infomation bits.
What Tsoding does is not easy to replicate cause he does not just plug his coding sessions to YT. His main project is super easy to brief into, basically with couple of words, if someone stumble upon his video for the first time, he also makes quick excursions to other projects which he's able to cut into digestable pieces, plus he's super consistent with uploads for a long time. He's also pretty skilled so his vids are not just about a guy who struggle with stuff, he actually makes fun stuff happen quick.
I love that @ThePrimeTime asks the same questions as many other people would, people that develop but not necessarily dedicated game developers. I really really appreciate this type of content as I really like knowing and listening to people talking about how things are done in a professional way and not in a 10-minutes youtube tutorial way that its worthless 3 days later.
1:16:25 - Interesting point regarding "let's do it simple because we can't in Unity" that worth pointing out is that you can do the same simple way in Unity (and likely other engines) too. You can code the simple "kernel" parts in code and then put that into Unity for rendering and such. It's not one or the other, you can use an engine and write simple code in it.
Just wanted to say, I absolutely love this banter on technical concepts. The x86 article review, and now this, both excellent!
This applies even more so when someone approaches solutions from totally different perspectives.
😃
Man, this is awesome. Also would like to see Jonathan Blow as guest.
I can totally relate to the part around 1:15:00. Before I began my career as a software developer I could program snake or a gorilla clone on my TI83+ calculator in that shitty TI Basic in an afternoon. That was the most straight forward code I ever wrote.
It would be amazing if Casey could be a regular scheduled guest, like weekly or once every two weeks or something like that. You clearly fit great with each other and everybody benefits, so 🙏
I can't believe I just watched all this wisdom for free! Casey was throwing all these wisdom nuggets like it is nothing and I was in awe most of the time.
The Wolfram roast session was my favorite. Mathematica almost convinced me that I wasn't meant to code
I absolutely love these streams with Casey. He is amazing at explaining his thoughts and the back and forth between you and Casey is amazing. It would be great to see a stream where you and Casey try to optimize the tower defense game when it is done
This is awesome advice. We need more interviews like this
36:16 Butt snake vpn, the back door of the internet! 😂
Casey and Prime are awesome to watch. We get to learn and be entertained at the same time
I really really want Casey to continue Handmade Hero Stream, It taught me more about programming than anyone else
Very insightful talk. Thank you very much for having Casey on the show!
This is a talk that really resonated with me. A few months back I was experimenting with a game where you would take an action, then an animation would play to show a semi-complex update of the game state. When I wrote it originally, I went off of vibes and ended up writing all of the logic in the animation side, one update per frame. This would mean that how an animation resulted would be the culmination of ~100 tick() calls, each with a slightly different state underneath it trying to piece together what the hell it was supposed to do. It was terrible. I ended up rewriting the entire piece to, on an action, pre-compute all of the animations required to perform the action (storing start pos, end pos, and time to run). This allowed a single function to compute all of the underlying state transition and return a structure that the animation system could just play over the proceeding 100 frames. The way Casey explained how to structure this kind of game was already in the direction that I realized I needed to go on this, but gives a concrete end point that makes me feel like the fog has been lifted. Love the video and best of luck on the game! :D
I love stuff like his tower defence idea - I wanted to make the same thing but for chess. A simple app where every day you get to vote on a chess move. All of the apps players are playing a top of the line chess AI in co-op mode, and at the end of the day the most popular move with the most votes gets made. I made a similar (but completely different) chess game where it's a real time networked game of chess and there's just no concept of turns - you've got to make just moves as quickly as possible while your opponent does the same - if two pieces select the same square the one that lands on it first gets taken by the other one
Cheers. Pouring whiskey to watch this wisdom enter my mind
This was great advice. I was honestly surprised, as I didn't know Casey.
Gamedev is plagued by old principles that do not actually fit the use case yet are still taught, like MVC.
There are game studios that encourage devs to write controller-type classes for gamedev, which is absolutely awful outside a few use cases (it's great when you want a singleton to deal with a single thing and have no output, like playing sound, but as soon as you start getting into player behavior and gameplay, it becomes immediately awful to make systems interact).
They're cracking each other up. I thought was awesome. I feel like they'd be friends in real life. I vote irl collab!
"It's very very difficult, to keep it up long term"
Preach brother
Casey is exceptionally articulate. Even if his message were wrong, it would be convincingly delivered. Thank god he happens to be right.
This interview is absolutely brilliant. You should consider doing more interviews, Prime, you are a real talent.
Priceless knowledge here. Would love to hear more of these engine related talks with you and Casey. Thanks a lot.
EJ_SA is a nice guy! So cool to see him raiding you hahaha, also nice talk, I'm still in the middle of it, so interesting!
Most of this was over my head but there was some reall nuggets of info that I did understand that helped! Keep it simple to avoid over complicating things that are not needed.
Fantastic. I feel like it gave me some ideas for games. Also, using AI to discover whether/how your game has interesting structures in how its mechanics create a mix of equilibrium and non-equilibrium would help a lot when trying to create these crowdsourced games.
Casey Muratori always brings the goods.
I built a game engine, and the hardest thing was just building all the tools to make the engine actually do what it needs to do
@ThePrimeTime, just fyi that World Of Tanks game, or any Wargaming game actually stores a whole play session of 15mins in a mere 4-5mb file. What they do is they store all the moves and when you want to replay, the file is loaded into the same game client on which you play game and it replays the whole session to very minute details, which completely deterministic. This represents the idea of scrubbing session said by Casey, but also compliments your idea of simulation testing.
my favourite video I've watched this year!!! Thank you so much for this interview
Fantastic!
The Prime AND The Caseytron... crushes all.
Writing Black Jack w/ betting right now in Java and I've been literally thinking about the whole idea of over complexifying your code at the beginning. I do have some inherent structure obviously, but there are some abstractions that I've been thinking about, but I'd rather get off the ground first, especially to get out all the tedious, but usually trivial bugs.
Casey and Jonathan Blow are the two biggest and most important voices in software dev. Even though they might be harsh (Blow especially), they speak really important things which the next generation of devs must get. If you have had the bad fortune of looking at some of the code bases at Google or Facebook you can see how much waste there is. That stops products from getting better (just look at Google steadily dying) and because of runaway capitalism, these large companies take a long time to die so we are stuck with bad software.
If the next gen devs get what Casey and Blow espouse and really try to follow those principles instead of Solid (which I think has taken our industry back by about 20 years), the next generation of software will be much better, faster, bug free.
I don't think either of them talk about approaches that will make things significantly more bug free.
I think they both have important ideas to contribute.
I think Casey has done a lot more concrete things towards making things accessible and understandable. I haven't seen JBlow do much in that respect, though he does contribute some useful philosophy.
If JBlow open sources his game, and especially if he makes media that thoroughly covers the technology, it could be very useful. His programming language could, too. Besides that, he's mostly doing sci-fi/inspirational speeches. Quite useful as a north star, and a good counter-point to the learned ignorance the software industry had been practicing for a couple decades, but not super concrete progress on its own.
@@blarghblargh jblow's twitch streams and how he thinks about software is massive. casey might have done more implicit educational stuff but jblow through his work has also shown great examples.
both talk about less indirection and thinking about how the computer actually works which I think is the primary way of reducing bugs.
I used to stream programming back then. Got between 20-50 viewers. But I figured out quickly that nobody cared about the software, they only cared about the music I had on in the background.
this dude is a goddamn god, how can he speak such well constructed statements all of the time?
Stop calling people that.
In defense of Unity and other game engines, they do teach you a lot of the concepts, especially once you start adding UI to the mix and want to animate the objects. Fantastic talk and a great guest nonetheless!
Great conversation, I really enjoy Casey's insights.
The problem with the all the more in-depth coding streams that I’m interested in is I feel like Prime is rarely coding. It’s 90% jumping between chat windows and messing around.
Really what I want are just VODs of Prime working while talking to himself
Vim battle royal is insane. I'd love that
We pretty much agree here that: more Casey = better
First laugh less than 1 minute in. 10/10 would watch again.
Listening to Casey rant about wolfram took me back to 2014 era Jeff and Casey show
Anything with Casey improves a lot.
Well said Prime: "It knows where it is because it knows where it isn't!"
For the tower/rendering/etc stuff, this is where I like inheritance. I have teammates who would reference things they shouldn't if it all existed in the same structure. So the "kernel" doesn't know about all that stuff.
The code that can have access to the extra details just does a downcast.
Ma boi Casey got that bravehart face on with the shadow
I won't be writing any games any time soon or ever but there are gems of advice here for anything with a GUI and likely any other code you write.
Casey's got really good advices.
I love how the size difference of the two correlates with ...
True, I have been tuning out from the coding sessions even if I am interested in the langs you are using and the projects because I do not have the mental energies to keep up. I need context, I need requirements, heck I may need a daily with you every time you write code. It is a whole different mental energy from the light hearted one that pulls me in. Meanwhile I have books on the side with deep down in the tech that are more cogent to my actual life, if I have to switch that mental energy it makes more sense for me to dive in those. I hope to eventually follow a complete project of yours but it will be when my queue of those book has run out of priorities. And I will likely contribute if there is the chance at that point.
"It's very, very difficult to keep it up long term."
THATS WHAT HE SAID!
Jokes aside, I do watch these because they're ebertaining, but man you mention these little things in ever single video that I don't know about and I write them down in a note file to reference later and look up.
I feel offended: I didn't know there was another channel focusing strictly on coding. How would i know?😑
What a pair of freaking legends
"Butt snake VPN, the backdoor of the internet" - Casey Muratori
This is the greatest bromance in tech.
"so...dont build a quadtree" had me rolling
3:35 Sad that people get bored with high quality material.
Great Dumb and Dumber reference there with the "Salmon of Capistrano"
I think you should get Mike Acton on the show.
Finally! Made me wait a while for this, Prime :D
(Couldn't catch the stream at the time)
he is so smart guy i can't' ask anything smarty. and i miss his stream on youtube
it's not always cutting a corner, sometimes it is hitting the apex
I'm only at the beginning of the video, but I find when my eyes have trouble focusing on something, palming really helps. Its free and it only takes a minute to try.
Palming?
@@etodemerzel2627 you cover your eyes with your hands so you can't see any light leaking in around them and you just let your eyes relax trying to focus on nothing. There are better descriptions of it out there if you want to try.
@@etodemerzel2627 Its where you cover your eyes with your palms so no light leaks in and let your eyes relax while being warmed by your palms. There are better descriptions out there if you want to try it, but it works better than I expected.
@@etodemerzel2627 I somehow can't reply to this without it getting removed. Google 'eye palming' (if YT lets this one through whatever filter they have)
Considering that Prime is focused on using an ASCII Art type of Engine and that he's trying to build a Tower Defense game, perhaps as some advice towards inspiration would be to look into the history of the development of Drawf Fortress.
Strong bromance
Try - generally does better when you say it twice
Ooooo yeah its Mr. Casey again, let's goooo
I FUCKING LOVE U CASEY
solid advice 55:00
Can we get a Casey and Prime podcast please?! That ended too soon!
TL;DR: Small man talks to Big Head
I love Casey, I love Prime, I love low level Game Development - Could my life be any better??
Thanks for the talk!
“You know who else we got raided by?”
Then it cut to an ad and immediately I thought of Raid Shadow Legends… whatever it’s called. It wasn’t that ad though… it was Menulog
"We are all John Connor" --- Good name for the game
Bring on Tim Cain for an interview!!
MORE Casey Muratori.
TH-cam programming legend javidx9 has made his "console game engine". Truly the best TH-cam programmer
based casey talks
I recently made a game in Unity called Pandarunium. And so much of this hits wayyy too close to home - especially around the 1:14:49 mark
Great stuff, greeeeeeeeat guest