Two's Complement - Video Games and Other Diversions

Episode Date: July 17, 2023

Matt and Ben talk about what they would do if they founded a game studio. And ASICs. And testing because why not. Join our hosts as they speculate on whether anyone has made a successful open source v...ideo game instead of just taking 5 minutes to Google it.

Transcript
Discussion (0)
Starting point is 00:00:00 I'm Matt Godbolt. And I'm Ben Rady. And this is Two's Compliment, a programming podcast. Hey, Matt. Hey, Ben. Hey, I got an idea for a topic. Isn't, hang on, I'm the one who says, hey, Ben, first. This is confusing me.
Starting point is 00:00:29 We're flipping the script today. All right. All right. And I don't even know what this topic is. What's the topic? It's a really general topic. I want to talk about video games. What's not to like about video games?
Starting point is 00:00:38 I know. This is the thing. So I want to talk about the games that we play. I want to talk about the games that we play. I want to talk about how these games are made. I want to talk about the evolution of video games from the days when one person could build a video game to now where it's like a multi-million dollar movie production type thing. There are still games that one person produces. Yes. juices yes and how it's sort of been reborn in other forms you know like steam and mobile games and all these other things that sort of like have recreated that world where it's like one person
Starting point is 00:01:10 can make a game so i want to talk about all those things i love this topic let's do it so where do you want to start well what what even are a video game what even are a video game well that's yeah what is what is the definition are we going to talk about like console-based stuff are we going to talk about you know handheld are we going to talk all the above or what are you thinking specifically i think it's the whole world it's the whole world of video games so here's here's uh okay so let's talk about a quite i'm going to ask you a question okay because you just made an assertion that says an individual person can make a video game right and that's true can an individual person make a console game is that a reasonable thing to expect that anyone could do i think so
Starting point is 00:01:52 still i mean the example that immediately springs to mind is stardew valley which is on steam and is on consoles and is on all the things as far as i can tell and my understanding is that one person concerned ape made that game as a kind of like i just wanted to make a game and then eventually he was like hey this game's pretty good his girlfriend's like what are you doing and like oh i'm just you know enjoying doing some coding so i made a video game and he and as far as i'm aware and now this is where this is huge speculation he did the art and the sound and the game and everything and then put it together and i think so you can do that but i also don't know if it was a success on steam first and then he got like the dev kits and things that would allow you to port it to that or whatever so
Starting point is 00:02:40 i don't know if someone could sit down and make a video game on a console without voiding the warranty on the current console in the first place and installing all sorts of open source development tools because they don't generally let you do that. So maybe that's a thing. Whereas the accessibility...
Starting point is 00:02:59 That is still a path though, right? If your dream was to I want to make an xbox game right xbox might be a little easier to do this but um you could get there by first making a game and publishing it on steam and then building a market for an engine that is somewhat portable anyway now i don't know what um stardew valley is written, but in the back of my mind when I'm playing it and it sort of does one of those little glitches where it takes a little while suddenly
Starting point is 00:03:30 and you're walking along otherwise smoothly and it's like, oh, and then carries on again. In my mind, I'm thinking, I wonder if this is some kind of garbage collected runtime thing going on. Is this mono? Is this running in C sharp? Yeah, something like that. And is that why it's been able to be ported reasonably easily? I't know i know nothing about it and i'm sure we could easily google it
Starting point is 00:03:48 but let's you know we let's talk more generally about things but you know there are engines that are available there's the unreal engine there is the oh gosh uh what's the unity thank you good grief i was only talking with somebody about it earlier today there's unity and a whole bunch of things like that that you can get and and there are commercial licenses, obviously, but there's also, I mean, you sign up for Unreal Engine and they give you access to it, so you can just... So it is more accessible than it's ever been to get, like, a world-class engine to write your game on
Starting point is 00:04:19 and then maybe be able to port it from platform to platform more straightforwardly. But I don't know how, whether that's really an exception you know is it is starting valued by its very nature and from the the the kind of game that you you could reasonably do this because even like the pokemons of this world that you know have a similar flavor it's just a top-down thing it's only a few sprites really um obviously there's millions of permutations and combinations of pokemon but they're just ignoring that but that kind of genre top-down scrolly walk aroundy thing um even two decades ago that would have been a team of five people yeah maybe one programmer
Starting point is 00:04:58 an artist musician type person who's on part-time maybe you know so three maybe four for a tools person or whatever so you know you could easily see how it could be um a multi-person game even back then so yeah i don't know i think it's exceptional for an individual to make a fully featured game and i but i love the idea that people can yeah you know my complaint about the games industry when i left it was that nobody was taking any risks anymore right all the publishers it was so expensive to make a video game and i can't really blame them they wanted a surefire hit so it would be franchise after franchise it would be movie game you know it would be another swat game right it would be another you know of a um sequel to an already existing game but not like a new ip or new new idea or new out there idea um and i think probably when nintendo came they've always sort of danced to the tune of their own drum to an
Starting point is 00:06:03 extent when they came along with the switch and kind of blew everyone out the order of the world with all these really random weird different games they only did it because they knew that they could sell mario to people like me so as well as your weird wii sports thing it's like i'm going to be buying that no matter what because yeah yeah zelda game on it it will have a new mario game on it so there is they're using zelda to pay the bills and then using that money to do all the cool experimental stuff that they want exactly yeah exactly but the eas of this world uh that are churning out sports game after sports game or whatever and the you know the other other places that have good franchises this is not that much of an incentive to experiment because it's so expensive if you get it wrong but if you're one
Starting point is 00:06:43 person in a bedroom somewhere, and you're investing your life, then sure, go for it. Give it a try. I feel like there's something with that, with the sort of desire by game publishers to do version 2, version 3, version 4. I mean, how many civilizations are there right now?
Starting point is 00:07:02 Like 85, 86? Something like that. At least. And I love civilization. It's a great game, but it's like, you guys have got a cash cow and you're just milking it, right? But I feel like the sort of realization
Starting point is 00:07:17 of that in the early days was you just make more versions of the game and the same effect underlies it but i think the sort of more modern version of that is the like um like in-game purchases and cosmetics and dlcs where it's like you you when you make a game if it's you know even a remotely decent game you're going to find some core group of people that really really really like it and they're going to spend absurd amounts of money on it they're going to spend just to change the color or a hundred times yes they're going to spend way
Starting point is 00:07:56 more than what your average or your median really your median player is going to spend right yeah and so you don't like one way to do that is to just release version two three four five of the game and they'll buy it because they're fanatics but another way to to take advantage of that is to give them things in the existing game sort of let them you know kind of revel in this thing that they love right yeah um to the extent even that some of those games are given away for free exactly right and all the money comes from the the loot chests yes you buy or whatever right yeah the median revenue per player is zero yeah and the average is actually quite good right yeah so it really has changed i mean just the other just the the fact that you can have dlcs and the fact that you can even only patch uh games after they've come out i mean like who
Starting point is 00:08:52 hasn't bought a game close to the day of opening put it into their console and it goes wait a second we've just got two and a half terabytes of patches to apply to it before you can play and you're explaining to your crying child why they still can't play the game yet. So I had this, I actually had this yesterday. I had this yesterday with, so I'm a huge Diablo player. I love Diablo. It is a mindless game.
Starting point is 00:09:21 It's like mostly mindless. There's like a little bit of like, you know, planning strategy stuff to it. But it is mostly just a click on things and watch pretty pictures and things be destroyed kind of game. And it's a guilty pleasure of mine. But I've been playing it ever since I was a teenager, essentially, in my early 20s. And Diablo 4 is coming out this summer. And there is a beta this weekend, a closed beta.
Starting point is 00:09:47 So if you pre-order the game, you can play it this weekend for a few days. And this is, you know, I actually love the way that they're doing this. So it's sort of like, there's the closed beta this weekend if you pre-order it, which is clearly the like, all right, this is our first world test. And then there is an open beta next weekend where you don't even have to have paid for the game, which is our first world test. And then there is an open beta next weekend where you don't even have to have paid for the game, which is clearly their load test. It's like, we make no guarantees that any of this is going to work. In fact,
Starting point is 00:10:14 we might even break some things on purpose just to see how our failover mechanisms work. But I pre-ordered this and I also got a copy of it for my son because his birthday is next week and I thought it'd be cool if we could play together this weekend, right? Pre-order the game. It sends
Starting point is 00:10:30 him a gift, like a confirmation link. He clicks the confirmation link. No pointer exception. No! And he's in a panic. I came home from work yesterday and he's in a panic of like, ah, thank you for the game, but I can't get it to work.
Starting point is 00:10:46 And this is the thing. What am I going to do? And it's like, you know, the beta is like this weekend, right? It's like today, basically. So it's sort of like, oh my God, what are we going to do? And it's like, yep, that is how these things are, right? You put the disc in there and it's like, you know, it wasn't really baked when they shipped this, right?
Starting point is 00:11:04 It wasn't really done. That's not how it, yeah. Which, you know, to me is interesting. The amount of effort that we used to put into our discs and the care and the terror, actually. Right, yeah. Of being there with the guy in the motorbike leathers uh from the the shipping from from the the courier company is standing in reception looking at his watch and you are around the the 12 disc cd burner telling people not to jump around because these things were so sensitive to vibration
Starting point is 00:11:38 while the last 12 of the gold masters were being made and then writing on them really carefully not getting your fingers on them and then handing them to this person going like i hope to heaven that's good because that's it now there's no comeback from here right right and if i don't know if i've ever told the story but uh twice games that i not that i worked on but friends of mine at the same company i've worked on have had um there's the kind of terrifying glitches that happen that only when you like finally build the disk ship it and then people put it into their un non-developer consoles and run it for the first time and uninitialized variables come to light should we say in the hardware yeah but variables
Starting point is 00:12:23 that were initialized by the debug console that pops up and says, you know, welcome to Sega Saturn. This is, you know, a 32X. Here's a memory you've got and you can do whatever. But they aren't initialized from a cold start on a machine that doesn't have that operating system like ROM in it. It just boots the disk. And then you get like a dinosaur with his head inside out
Starting point is 00:12:44 that looks terrifying to children um because you can see his teeth and eyeballs in the inside of his head so um yeah so you don't get that so much anymore but you get no pointer exception you get no pointer exception right yeah oh my god uh okay i have another question. Here's more of a hypothetical scenario for discussion. Let's say you and I were going to found a game company. And let's say that we were going to found this company with a few other people. But we needed to come up with some way to sort of coalesce all of our ideas about games into a cohesive vision for this group. What kind of games do we want to make?
Starting point is 00:13:28 How do we even establish a common language about games and make sure that if we're talking to each other about our ideas, that those ideas make sense to the other people that are hearing them? Here's my thought experiment on how you do this. Everyone in the group picks a game, and every other person in the group picks a game and every other person in the group plays the game that everyone else picked so if there's five people we're going to all play
Starting point is 00:13:51 five games and the intent of what the game that you pick is to represent sort of the the platonic ideal of the game that you want to make right it's like i would love to make a game like this yeah what game do you pick oh man so the nearest thing to the kind of vision that i have oh you see can i pick two no i'm not allowed to pick two because what i would love to make is kind of a hybrid between two games and i'd love to sort of so let me explain to you my knee-jerk reaction about the game that is modern and would most clearly represent the aesthetic and the the vibe that i would want out of a game and in fact the mechanics to some extent and just everything and that would be breath of the wild zelda breath of the wild right it's just an accomplished beautiful beautiful, beautiful game. It's staggering how amazing the graphics are,
Starting point is 00:14:47 given that it's running on just a Switch that is pretty pedestrian, even when it was first made. Nintendo have never made any bones about putting the most whiz-bang features in their rendering system, or they make money on their consoles, which nobody else does. Everyone else sells their consoles at a loss so that they can get them in your house and they make money on the games nintendo just make money on everything they do with you and mugs like me that will buy every incarnation of every mario
Starting point is 00:15:12 zelda and everything game even though i've already got it right but anyway um so the aesthetic of that the way that it the the pacing of it and everything is beautiful and i love it and the fact that it's open world um that is what i like i like the idea of there is a plot if i want it and if there's not i can happily wander around and just hit trees and stare at the things that the the beautiful sunsets that happen and and just hang out in a game that's just like i'd like to live here if it wasn't for the nasty monsters right you know but i can avoid them largely it feels so that is my kind of game i'm much more of a casual gamer than i ever used to be and so the idea of a game that you can pick up and put down and give or take you know a big screen
Starting point is 00:15:56 that can show you here's what you're supposed to be doing um i can pretty much go i don't i don't care i'm gonna what's that over there oh hang on a second those three things look like ah and then find a cork or whatever you know that kind of thing so that's that's my ideal the second part of that is the game exile from the bbc micro which was one of the first open world 2d games okay yeah spaceman flying around in like caves looking for stuff and i feel that there is morally a way of taking a sort of metroidy feel um in terms of like space faring suited person in a like a hostile environment and marrying it in 3d with um something more open worldy like uh legend of zelda so that's kind of like broadly what i would like to engender upon the team, as it were, and say something that draws from the palette of these things is what I want. Right, right.
Starting point is 00:16:51 What would you do then? What would be your choice or choices now as I've had to? Yeah, I mean, so I have thought about this a little bit and I think for me it's x-com i i really liked the x-com world uh you know aliens and and you know sort of proto-military and all these other things and i actually like it's not even like one of the x-com games it's the whole franchise right the whole progression from you know you're starting out where it's like oh no this is the u.s government and there's these tiny little alien invasions all the way into the modern incarnation. Aliens have taken over the world.
Starting point is 00:17:29 And now you're basically fighting a guerrilla war. Right. And everything in between there. And the whole world, I think, is just really kind of interesting and immersive. And it just sort of locks you in. And I really like tactical games in general um i like the sort of like both the ultimate like the squad optimization that you do where you're sort of like you know maximizing resources and building up the doing research and building the best you know equipment that you can get and all the things
Starting point is 00:17:56 and then the actual like tactics of of the combat right where you're like you know trying to move and you know do things efficiently because that's sort of, well, at least it was in my day, isometric turn-based, move your squad around here and then you kind of click, click, click, click, and then you go, go, and then everyone moves and then you kind of, the screen scrolls around and you get these hints of aliens
Starting point is 00:18:15 running across your field of vision. You know, oh my gosh, oh, I didn't realize there was one hiding behind the bin or whatever. Yeah, that kind of thing. Exactly, exactly. And part of this is because I'm a huge D&D player and I like D&D. And those mechanics are literally like, I mean, the slightly different rule set, of course, but it's like those tactical combat mechanics are exactly what you're doing when you're
Starting point is 00:18:34 rolling D20s in Dungeons & Dragons, right? Like, you know, you've got however many actions per turn and you sort of can do these different things and you have different equipment that you use and so x-com for me sort of blends together you know all of those different elements into something that has like a very cohesive world and tells like a just a great story like the story really sort of pulls you in right part of the thing um and i think that is that is probably what it is and it's it's the nearest thing to a board game you can play on a computer as well, right? It's as turn-based as it is. Right, yes.
Starting point is 00:19:09 It's a game that you can play with a baby resting on your shoulder, which I certainly did when my kids were young. It's sort of like it's turn-based, so you can just walk away at any time. Yeah, you don't have to be twitchy. Yeah, you don't have to be twitchy. You don't have to have the fastest reflexes in the world.
Starting point is 00:19:24 You just have to sort of sit. Don't have to have two hands uh for a little bit exactly yeah exactly so yeah so that would be mine but i feel like if you if you did this it would be a way for people to sort of like um start out with their with their preconceptions just laid out on the table right because if you brought a bunch of people together like this would be like everyone is there for if they've got that thing in their head oh wouldn't it be great if i did this and they're going to be different right yeah and then you sort of get all that out you get it out on the table you're like this is my perfect game this is my perfect game this is my perfect game and you're going to see all the differences and then hopefully you like start to triangulate a little bit you sort of find like a
Starting point is 00:20:04 middle point. Or you'd be like, look, I don't want to make the Homer car here and make a game that is just a mix of all these five things. Because that's going to be terrible. But I really like your idea. So I'm going to give up my dream a little bit because I like your dream too. And we're going to just go in that direction because I think that's better. No, it's an interesting thought experiment. Definitely. If the games industry wasn't quite so miserable yeah the only problem is we would actually have to make and publish a video game which sounds
Starting point is 00:20:34 which is yeah sounds awful right but maybe when we will retire from our day jobs we can yeah we can sit down and have like cozy afternoon coffee chats where we hypothetically come up with stuff before it becomes too difficult. We have to get like a team of 50 people to do the artwork for it and all that kind of stuff, which is of course the problem, right? You know, it's like a modern, any modern game, again, Stardew Valley and similar things
Starting point is 00:20:59 and the little indie shops notwithstanding, requires a huge amount of effort. And here's an example, another one that again theoretically would be straightforward so one of my favorite games growing up was a game called wonder boy 3 the dragon's trap which was a sega master system which never really made it over in the in the states again but it was a sort of contemporary of the nes the original 8-bit it was sega's equivalent of that and if you've known the wonder boy games if you've ever seen them like the coin-op game it's just a sideways scroller jumpy thing and it's all twitch based and you're kind of like getting on escape or whatever wonder boy 3 was not like that it was
Starting point is 00:21:39 like an rpg but sideways scrolling so uh in in a way a little bit more like the second legend of zelda which went for a sideways scrolling uh rpg it was it was much more like that so um and you know it was still platformy in in feel but it was a great game i really enjoyed it and it's one of the reasons why i ended up writing an emulator for the master system so that i could play it and complete it again on my uh on my archimedes and then it's why i wrote another version of the emulator so i could play it and complete it in my web browser so i've played i completed it three times one on the original and then two and two emulators i wrote myself and the reason i love that by complete it you mean
Starting point is 00:22:18 make an emulator for it and then complete and then complete it yeah that's right i mean there's no way to complete the game. That's an achievement that most people don't get in the video game achievements world. I'm going to tell you right now. That's right. That achievement unlock is like, yeah, you beat it again. But I've beaten it a fourth time now because a professional remake by Lizard Cube, a relatively small company, was made of it and the really cool thing about it is that
Starting point is 00:22:47 they kept the original uh emulator effectively running the original game which they had to modify quite heavily to make it work but you at any time you could tap a button and the game would flick back into retro graphics and you could see oh my gosh this is how it used to be but the the graphics were absolutely beautiful they had artists doing these wonderful cartoon style animations that were gorgeous. And then they had a full, I'm still, I've had the music stuck in my head ever since. But even like today, I was humming it. They redid all of the music with a full like orchestra. It was a full orchestra, a small orchestra of, you know, a half dozen.
Starting point is 00:23:23 And so you're thinking like even something where you had effectively the code to start with and the artwork to start with took a small team of people to make it as polished and beautiful as it is but it's still possible it's still plausible right so maybe a group of us the problem is anyone we know doesn't know how to draw i know i know or maybe some people can do music uh um i have i have a kid but that's well that's helpful that's a whole other thing but it's it's a it's a it's a real skill to be able to generate the assets for right video games and the way that they're put together and the way that yeah um you know economies of scale have to be done and like well this is how we conform everyone does the same thing the same way and then our textures will map up at the edges match up at the edges this is the one and only
Starting point is 00:24:13 skeleton of the human-like character and it's got basically the superset of every kind of animatable part of of a mannequin you might ever want and then we animate things in terms of that and then you can attach any of your t-pose um models to this and then they will animate in the same way so we don't have to like animate every single monster individually or whatever for for the base start point so there's a ton of stuff like that and i mean obviously it's been two decades really since i've been fully involved in this kind of stuff. But I wonder how much we would have to relearn ourselves. I'll tell you what, we'd have great tests. You know, so that is actually an area, because we talked about this before,
Starting point is 00:24:57 testing is a skill, learning how to test different languages has different skills. Learning how to test different aspects of different programs in different languages has different skills. Learning how to test different aspects of different programs in different languages is different skills. Testing a web app in Python is different than testing a data processing pipeline in Python is different than all these things. I've never had the opportunity to try to take my testing skills and apply them video games i did a little bit that's sort of adjacent to it when
Starting point is 00:25:26 like my first you know few years out of school the company that i worked for did a lot of data visualization most of that was 2d and i think i maybe even told you once about the thing that i built that did the sort of um vectorization of rasterized uh graphics as a way to test them right and that was more of an integration style test but it was like but it's a test it was a test right like we're just gonna take these 2d graphics and re-vectorize them and then compare them to the original vectors with some epsilon and make sure that they're correct right yeah um but like outside of that i've never had a chance to flex those muscles no so so i can't you weren't in my presentation at work on thursday were you i know i never see them because i have the lunch on thursday i know but like literally i was talking
Starting point is 00:26:12 about my experiences developing swat uh global strike team which i one of the slides is it started out as an x-com like game funnily enough right there you go called cleaners with a k oh yeah you remember i see you i think you've seen this you've seen the presentation before but i just wondered if this was brought top of mind to you because of that presentation but one of the slides that i that was just reminded i was just reminded of is the the line count so i still have a some amount of the code around and i was able to like do some primitive statistics on it like 130 000 lines of code um if i remember right yeah and a few thousand lines of um i think it was 200 lines of x86 assembly about 6 000 lines of shaders which was xbox uh 7 000 lines of playstation 2
Starting point is 00:27:00 assembly code which is to say far too much but it was a miserable processor anyway um and then the bottom the funny thing was why and 1300 lines of tests like the whole thing it's like you know and yeah i think i know that all those tests were for the math library which which was like well this is foundational and frankly it's easy to test and more importantly we could test it on the x86 host because there was no there wasn't too much that was special case at least for the sort of general and then obviously you start doing like the intrinsics to say all right we're going to use this crazy multiply that's only on this process or whatever but then that was essentially untested because there wasn't an easy way back then to get the feedback from the consoles it would have to be back to the uh the the like ci system not that we
Starting point is 00:27:53 had a ci system am i kidding um but it would be really interesting to see whether the the world has moved on i sincerely hope it has but if it hasn't to see your take on it would be fascinating i i would be i'm very interested in doing something like that i feel like the the sort of meta answer there is as long as you go into it with the philosophy of like we are going to have we are going to have a way to validate all these things that we want to be confident that our system does we're not gonna we're gonna use unit tests where we can we're gonna expand our mind beyond that and and and look at the broader goal which is just be confident that it works yeah how do you create intersubjective confidence that it
Starting point is 00:28:36 works how do you create confidence that i can create and you can share yeah right yeah you don't you don't have to read through every line of my code to be confident that it works you can look at the test you can look at the the tool that i use or whatever whatever it is is you can share in the confidence that i created that it's going to work yeah yeah and so if you think of it in those broader terms i'm sure that you could find a way to get there right now look like a suite of unit tests or a complete suite anyway but it would be something and i think more so more to the point nowadays a lot more of the code would be written in a language or languages that have decent implementations on multiple machines and you're testing the logic at that point right which actually this is a complete non-secretary and this is going to be
Starting point is 00:29:21 the weirdest episode ever but i was discussing with some hardware folks last night we're in the pub and i was chatting with them and i was talking about people who do asic design and make asics for a living right so this is actual silicon chips that get made and they were saying how um even if they are making a new chip using old code so like you know maybe they've got the process has changed it's no longer 130 nanometer process they said hey we're going to try we're going to target an 80 nanometer process and so there's a different tooling from the the vendor that that makes the fab sort of the fab or whatever um but effectively we're going to keep the same code right it's just the same chip but we can shrink it down and reduce the power because of the process and they said we just don't want to touch the code at all and i was like but surely you want
Starting point is 00:30:08 to like fix things tweak it around like no no we we look at it and we go this code has been has passed the test and then it's an exhaustive set of tests you can imagine right over this is you're going to spend millions of dollars to go to make the masks and stuff it's like a hundred thousand dollars per layer of a mask which is like insane so they they want to not touch the um uh the the the code because obviously humans write the code and humans are fallible but the argument i said to them is like well but the thing is that code is not really representative of what actually goes on to the silicon right you take that and then you um turn it into a cell library of little off-the-shelf lego bricks that are then put together by a computer program that puts them together in theory and in the same so it has the same logical output of the code that you created
Starting point is 00:30:57 that's then placed and rooted onto a silicon wafer and then um you build up these mask layers and then at some point you actually have to run all this kind of like physics based simulations of has this particular layout got pathological capacitance problems um cross talk um do you have to worry about you know cosmic rays hitting this particular bit and knocking things out seriously right at the lower end of this stuff right how do you build in that resilience you're like so why is it that you don't you know that bit's fine apparently you know all those eight layers of other things where people are like um fitting and placing and routing is it because that's mostly automated although he was describing me to me that some of it is not um you know i would imagine that like if if you've
Starting point is 00:31:45 got like seven things all of which can go horribly wrong because of uh things that are don't work adding one more and actually changing the functionality seems like that's the easy that's an easy bit because i could reason about that and what it made me think was is that like it's easy to test that part easier because at that point you're running a simulation that is like almost like um um like having the this compiling the c code in my case for for my target for my host computer and saying well okay i can test the functionality of my math library because i can build it for x86 and i can run math test.exe on my computer which is essentially what we were doing um but if i had to target it with a different compiler and a different architecture and then
Starting point is 00:32:32 squirt it down a cable to a different computer and run it on that different computer i'm like how many other things potentials are there for things to go wrong in that so i don't understand why that was like well why the the tests were you know it just feels like it feels like a similar thing it's not like you test what you can but sometimes um i mean i'm guilty of this you know you test the things that are easy to test and then you kind of go oh but this bit's a bit difficult to test so i'm going to leave it alone you're like well that's where the problems are going to be i mean first of all because you're not looking for them and secondly because it's probably complicated and that means that it's going to have mistakes.
Starting point is 00:33:05 You don't have a test for people jumping near the CD burner while you're burning the golden disk. Nice. Yes. Yeah. No, that's true, man. That's true. It's hard. It's hard.
Starting point is 00:33:19 You got to be real creative. And I suppose to your point, if you go into it with a mindset of not unit tests or integration tests or whatever but like the mindset is whatever we make i want to have the highest confidence and as you say intersubjectively that this is going to work and that may mean and i've seen actually somebody uh we work work with tends to put in their PRs the test plan that they used when they were working on a change. So obviously there are unit tests in our code as well. But like, you know, you want to kick the tires a bit yourself. And so this person will go, this is what I did as well. All the tests pass.
Starting point is 00:33:59 I ran this thing and I copied it to a temporary directory and I poked around with them a bit. And I'm like, cool, because if i really wanted to i could follow your instructions do the same thing exactly yeah and that's the intersubjectivity yes that we're talking about the intersubjectivity has to come first the automation comes later right like all the unit testing stuff started with people who would just make like a little main function and kind of hack some code in there almost like a repl to just be like oh i'm gonna call, I'm going to call this function that I just wrote or this class I just wrote and make sure that it worked. And they're like, oh, well, what if we kept that? And then, oh, what if we just ran that every time?
Starting point is 00:34:32 But if you don't start with the sort of intersubjectivity of like, here are the things that I did to gain confidence that this works as I expected it to, anything beyond that doesn't matter, right? Yeah. It starts with the intersubjectivity. Yeah. Well, you say that. I mean, that was certainly the beginnings of my career was certainly not intersubjective. It would be like you ran something,
Starting point is 00:34:53 you poked around with it yourself, and you went, oh, it seems good enough to me, and you CBS put it or whatever into it, and you're done. And then there was no build server to be like, even the build wasn't intersubjective. Right. Which I think we've all got behind now. It's like the whole works build server to be like, even the build wasn't intersubjective. Right. Which I think, you know, I think we've all got behind now.
Starting point is 00:35:06 It's like, you know, the whole works on my computer. We're like, well, that's not good enough anymore. Right. We can't just have Barry's computer in the corner. You can't ship his computer. Yeah. Yeah. That's why, that's why Docker was invented.
Starting point is 00:35:18 Oh, yes. That's exactly what, yeah, I think we've made that point before. But yeah, it's like, you know, that, when you don't have that, when you don't have inner subjectivity, what you're forced to rely on is essentially heroism. Right? Like, oh, Matt's a fantastic programmer, he would never make a mistake. Did he write this code? Well,
Starting point is 00:35:36 then it must be fine. It's like appeal, it's like the you know, the logical fallacy of appeal to authority. Right? There's no way for me to authority. Right? Yeah. There's no way for me to validate that this is right. So I just have to go on faith. I have to trust.
Starting point is 00:35:50 That this hero programmer did it right. Yeah. Right? And that's, yeah. Well, we've come a long way from a game studio. I just want to point that out. Right? We've got back onto old topics.
Starting point is 00:36:00 You know, as much as I'd love to talk about. We did. We did. Games as well. I got one more. Yeah, yeah yeah yeah let's get time for it and it's a follow-on to what we were saying before which is talking about like you know sort of this like you know can a single person make a game and it's like you can hard but
Starting point is 00:36:15 you can have you seen maybe this exists already have you seen a commercially successful for some definition commercially successful open source game because i could imagine a world where you have a small group of of core devs i mean there's no way to do that i don't think there's any way to do this without that that creates an open source game that they then also publish on steam so it's sort of like you know you can download this code and compile it yourself and do all those things. I'm betting $20, though, that you won't. Yeah, literally $20.
Starting point is 00:36:52 You'll just click the button in Steam and install it. If you want to go build it yourself, go nuts, man. But I bet what you're going to do is you're going to crack open Steam and you're going to click a button. That is fascinating. That is... No, I don't know i mean there's obviously the the shareware games of doom and id software which were not open source but are now
Starting point is 00:37:11 publicly sourced the source is public um there was some what the heck was the game called there was a game we used to play at university that was has like a lisp engine in it and it was like some side scroller thing with some really clever lighting effects and i'm wondering if that was i know that was we built it from source but i want to say that it was no i don't know if it was published as a as a playful game no that's really interesting i don't know of anything off the top of my head no because i have to imagine because because i even think it's resilient to the idea of like oh well then someone's gonna steal my game it's like no they're not gonna do that either right it's like if you don't have that core group of devs that know how it all works i mean how many
Starting point is 00:37:54 times have you seen this where you're just sort of like there's this code base that these other people wrote and i have no idea how it works and you know what there's probably like only 10 people on the earth within our industry which is famously protective of its intellectual property i used to make the gag and i would like to for any lawyers listening i never did this but when people whenever people were worried about whether or not uh code or ip was was gonna leak leaked out and the effect that it might have i said i am 100 confident i could take the lead programmer of a similar desk from like jump trading or whomever uh hrt whatever and and invite them over to our current company and sit them down and walk through the code with a whole day right in the office whiteboarding everything and then at the end present them with a usb thumbstick with the source code on it and wave them goodbye shake them by the hand and i'm confident i would set them back five years because anything that i gave them
Starting point is 00:38:53 is is is gonna hold them back right it's not that the ip is not the code and it's not the approach in very rare cases there are little tricks that you're like, oh, that's really unobvious. Okay, I see why that might be a thing. But mostly the IP is a group of people who have worked on a project for a long time together and there's the expanse of the development process and the edge of the envelope of expanding of that kind of like the frontier of new stuff comes from those people who are well-versed in the system
Starting point is 00:39:29 and understanding where the bodies are buried and understanding what things need to go back and be replaced and all that kind of stuff, none of which you pick up from just being handed, even with like the pointers I gave you, the source code to it, right? Right, right. And that's actually a problem for open source in general, right? this problem with people come and say can i just add this thing to compiler explorer and i'm like oh gosh that means you're gonna have to look at the code which means that
Starting point is 00:39:53 oh gosh you're gonna go no i don't want to touch this with a right right right yeah that's the whole thing is that if this were actually a problem open source would be so much more effective right correct it would be so much more useful and people would be able to contribute and all these other things it doesn't as you very well know it doesn't really work that way right like you have that sort of core group of people that really understand the system and have taken the time and effort to come in and do it and of course exactly right hallelujah for those folks who are listening thank you everyone yeah um and then you have then you have this whole satellite of other people that are sort of like tourists essentially right they come in they might
Starting point is 00:40:30 do one or two things they add a little bit of value here sometimes it's like the the one thing that really annoys them and they kind of like dig into it or whatever it might be thoughtful project maintainers have like tagged issues it's like good early first option and they've put enough information to help people in and then that's kind of like you know the sort of the drug dealer or thing like right make a change oh look at the rush of endorphins you've got for fixing a typo yes in this readme how about this one oh and then before you know it you're like knee deep in converting things to typescript the hero's journey backlog right right that's right exactly um but yeah so i i actually i mean this is why i think it's like you could make a game like this and yeah
Starting point is 00:41:06 someone's gonna steal someone gonna fork your code well they're definitely gonna do that are they gonna like steal your idea no the hard part there is probably getting the steam thing set up yeah and it's like and honestly if someone does take it and understand it and makes a whole new game out of it like does that
Starting point is 00:41:22 really hurt you doesn't really it's an interesting one right it's a really interesting um observation i mean assets are a different yeah that's another one that you have to think a little bit about like there isn't really an open source asset system that i'm aware of that is like hackable license the assets and the codes separately that's i think probably i mean ultimately that that path leads to stuff like the unreal engine like um whatever where you're like hey this is a game engine that makes games of this type and there's some like basic sprites or whatever basic 3d models or whatever to just so that you can type make and move your little creature around or whatever but like we used it
Starting point is 00:42:00 to make this other game and it's like you that's like, people have been doing that for a while. But open sourcing the whole thing, I don't know if people have done. Yeah. I mean, I guess there's things like FreeSiv. That's a thing. But, like, I don't think it's, I don't think they sell it. I think it is, the model is literally, like, you download it and file it. Or maybe you just download it. I mean, obviously, there are a load of games that have like a plug-in architecture that obviously publish enough or people reverse engineer enough to be able to add
Starting point is 00:42:28 plugins and modding so yeah it's i mean yeah i feel like people went crazy with that with like starcraft like there's so many different starcraft mods and like different things there it's like i don't know that they published anything there that was more like people revving it whereas like Minecraft as I call well maybe Minecraft being Java was a bit easier to like pull bits out at least in the beginning I don't I don't know no what an interesting idea though what a fascinating idea a completely open source
Starting point is 00:42:56 yeah but like a game open source but commercial and you just you know you take the money that you get from selling the game and you use it to pay for the time of the core devs so they can you know kind of have day jobs but also sort of have... I was going to say, it sounds like a perfect retirement job for us all as we get on in years. Give us another 10 years, we might be able to do that.
Starting point is 00:43:15 But I don't know what on earth gaming will look like in 10 years' time and whether or not there's any hope for us then. It will be VR. Yeah, yeah. Or something. Or AR, maybe. Or AR, or it'll be written by GPT-4 or 5 or 6, whatever's around by then.
Starting point is 00:43:30 Yes, totally. Cool, well what an interesting question, and we've managed to explore some familiar territory along the way. We talked about ASICs, we talked about testing, we talked about games and our favourite sort of games.
Starting point is 00:43:47 And then open sourcing a game. So, I mean, everyone's going to expect the next podcast episode to announce our quitting our day jobs to make some turn-based open world man in a space suit game. Yeah. Elza. Right.
Starting point is 00:44:12 Cool. Well, I guess we should call it a day. That sounds like a good way to end it. you've been listening to two's compliment a programming podcast by ben rady and matt godbolt find the show transcript and notes at www.twoscompliment.org
Starting point is 00:44:32 contact us on mastodon we are at twos compliment at hackyderm.io phase. Find out more at inversephase.com

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.