Two's Complement - Video Games and Other Diversions
Episode Date: July 17, 2023Matt 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)
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.
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?
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
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
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
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...
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
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
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
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
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
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
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?
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
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
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
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.
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.
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,
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
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.
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?
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
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
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
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?
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
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,
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
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
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.
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.
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
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
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
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.
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.
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
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
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
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
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
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
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.
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
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,
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
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
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
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
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
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
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
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
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
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
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.
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.
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.
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?
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,
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.
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.
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,
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.
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.
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
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.
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
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
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
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
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
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
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
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
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
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
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
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.
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.
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.
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.
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
contact us on mastodon we are at twos compliment at hackyderm.io phase. Find out more at inversephase.com