The Reality of Making Indie Games | The Standup
1137 segments
Welcome to the standup. Today is a
extremely special episode. We have Adam
Ununice. We have Nolan Eie, EIO, and of
course, we have the master vibe coder,
Tee. What up?
Yeah. Yeah.
Uh anyways, sorry.
>> You guys mentioned offline not part you
know before we recorded just null and
some of how like you got in introduced
to making games and part of that was
through Adam which is part of the fun of
like we wanted to have you both on at
the same time. So I thought maybe you
could talk about that a little bit and
just uh give a little bit of that
backstory and just uh so you know so the
listeners out there could hear that side
too. Uh yeah, like back story to like
how I started making games or like and
any complaints about Adam and how he
teaches a sprite. You can throw that in
there if you need.
>> Both of those.
>> Uh let's see. So I started making games
maybe like three three years ago, almost
exactly three years ago. Um and uh
originally like this was not really a
thing that I was planning to do for
particularly long. Um it was mostly a
way to get back to coding. I love games.
I played tons of games my whole life,
right? Used to write about games. um and
started making games like really small
games in like GDAU. I think like one bit
of advice that you see a ton on the
internet. I think it's really hard to
give good advice about about game
development. But one I think very
broadly applicable often repeated bit of
advice is just make a ton of games,
right? Like make you know don't like the
classic mistake is that somebody makes
an MMO that takes them four years and
nobody plays it and you know they learn
so much along the way. Um, so I was
making these tiny little games in GDAU
and found Adam stuff because I was try I
like made all this pixel art and it all
looks terrible and I was like so like
there's this weird thing when you're
you're bad at something where you don't
understand why like you don't even have
the the like faculties to understand why
it's bad. You're just kind of like
looking at it and you're like this is
this is terrible and I don't know the
first step towards fixing it. Um, and I
never got I never got good at at pixel
art. I ended up kind of moving away from
making more more typical games into the
weird stuff that I do now. Um, but one
thing that I remember really enjoying
about Adam's channel, uh, and sorry Adam
to to compliment you live, is I think a
lot of the stuff that you see on YouTube
about making games is super
edutainmenty, right? like the audience
of people that kind of want to imagine
themselves as game developers is much
larger than the set of people that
actually have the time to sink into
making a lot of games. And I think also
probably the audience of people that
wants to talk about games is larger than
the audience of people that actually
makes games and can talk about those in
a compelling way.
>> Um, and so I think early on I was
watching all this other content, right?
And I would watch this video and I'd be
feeling like I was learning a lot and
then I'd try to think about like what
did I actually learn from this? And the
answer is like nothing, right? like
nothing applicable to making stuff.
>> But when you watch people that are
actually doing the work and talking
about their decisions, I think you learn
a lot more there.
>> Um, so that is that is how I ended up
finding finding Adam's work and I made
slightly better pixel art. Learned
things like your pixels should be the
same size and to use a consistent color
palette and other dead simple things
that I think are in literally my first
blog on the site. Um, but uh yeah,
that's that's that's the background. And
I think none no one played any of the
games that I made in that era. Not
literally nobody, but like
>> like I got like a hundred players for my
second game and I was like, "Oh, this is
this is incredible."
>> Mhm.
>> Broadtown, what happened? I don't know.
Did you push on a Friday?
>> Never. How are we going to figure this
out? How are we going to figure this
out? Did
>> I hear Broadtown? Do you guys need the
wheel?
Nev config.
>> That makes sense.
>> I'm going to spend a couple hours
refactoring. I'll leave the plugins.
>> Don't guess where your issues are. You
can see exactly where they are happening
with Century. Get all the context you
need to debug any problem because code
breaks. So fix it faster with Sentry.
It's funny because that's also basically
the way that I found Adam was I was just
playing around with making some games.
Uh just like the concept of making a
game and then I found Adam's channel and
I also really liked the art and then me
and Prime somehow found ourselves in a
scenario where Cursor was like, "Yeah,
you guys can make a video game. Go ahead
do it in a water tower.
>> Um just put the game in the bag, bro."
And I was like, "Well, I don't know what
to do." And we were both like, "I don't
know. We should." And I was like, well,
the coolest person I know that makes art
for games and makes games is Adam. I
don't know him at all. I've only watched
his YouTube videos. And he happened to
be in the US. What? In the first time,
since when? Adam?
>> That That was a year ago today, by the
way. That was literally today. A year
ago.
>> No, one year.
>> Oh, yeah. Yeah. I was right in this
area. Oh, yeah.
>> Oh, that's crazy.
>> That's cool.
>> Yeah. I was in I was in San Francisco
for GDC. Um, and you just you guys just
reached out and I was like, "Oh, I'm
going to be around." And I hadn't Yeah.
I hadn't been in the US since 2011.
Yeah.
>> Yeah. And then it was like, "Okay, well,
do you want to fly down and make a game
in a water tower with us? We're doing a
24-hour stream." And
>> and uh and that's how the friendship
started, which was awesome. So, Ken
second to Adam being really good at
making YouTube videos. If you guys
aren't following him, you definitely
should. and he makes really good pixel
art. It's addictive to watch.
>> Yes. Very true. Very true. He's the
pixel king. Okay. So then Nolan, so you
were starting off, you found some stuff
there and then like how did you kind of
transition out of like making some more
like GDO based stuff into like making
crazier things?
>> Yeah. So uh do you all know what the
Rehearsse Center is? Feels like
something you might know about.
>> I don't think so.
>> No. Okay. This is going to sound like
almost like an ad. I swear it's not. Um,
so early like middle of that year, I
went to this place called the Recurse
Center, which is like a thing in
Brooklyn that's kind of like a writer's
retreat, but for programming.
>> Oh,
>> like you show up for like 6 or 12 weeks.
It's free. They like make money with
like placing people in jobs or
something. It doesn't really matter.
>> Uh, but the point is like you're in this
room with other people that think it
would be fun to program for 6 or 12
weeks on stuff that isn't for their job,
right?
>> And I'd known about it for a while. It's
like 20 minutes from me. Um, but I was
there and I started kind of
experimenting with like doing weirder
things. I remember the first thing that
I did uh that was stranger was um do you
know the open search spec?
>> No.
>> Um this is okay. So you know like in
Chrome if you type in like a website URL
and you hit tab.
>> Yeah. Yeah. Yeah.
>> And then it like lets you search that
website directly, right?
>> Yep.
>> Uh so like you need a spec for that.
Like the browser like how does the
browser know what endpoint to hit in
order to like search that website? Open
search is that spec. It's just an XML
document you throw uh you mention it
like the the head of your your index
file
>> and um yeah no I mean it's old right
there's also like 14 things called open
search but this is the open search spec
>> so I happen to know um or I kind of like
remembered that there's this extension
to the spec that lets you offer search
suggestions
>> uh so like you can offer an alternative
endpoint and you like hit that endpoint
and uh the endpoint returns back like
suggestions for what you might be
searching for which makes a lot of sense
right
>> did you make a dungeon dungeon crawler.
>> I didn't make a dungeon crawler. Um, but
I was like, you know what? Like all you
need for a game is like you're typing or
like you have some input mechanism and
some output mechanism and this works,
right? Like you type a character, it
hits this endpoint, the endpoint returns
suggestions. The suggestions are
automatically displayed in the browser.
Like you can make a game there. And so I
made Wordle
>> um which I called I called Wardle uh not
knowing that that is Josh Wardle who
created Wle's last name. Um,
and then like met him like a year later
and that that was funny. But um, so I
made that and I was like in this
environment where instead of just kind
of making it and shipping it off into
the void, there are all these like nerds
around who are like, "Wait, this is like
this is kind of funny. Uh, this is this
is compelling." Um, and someone posted
on Hacker News. It's the first time that
I got on HackerNews.
>> And I think like that is how I started
kind of narrowing in on like, oh, I like
like it's funny to make computers do
weird things. It's funny to make jokes.
Um, and so I started noticing like I
went back and I made some more
traditional games
>> um, while I was there and I remember the
last thing that I made it was like a a
tiny little uh, Vampire Survivors clone.
>> Oh, nice.
>> Um, like you know, people were like
doing all sorts of things like Right.
Cuz Vampire Survivors had just popped
off. Yeah.
>> And I was showing it at this gameplay
test and people were giving me feedback
and I could like feel myself cuz I had
made some more weird stuff by then. I
could feel myself like not like being
like I don't want your feedback. Not cuz
like it's not good feedback, but because
like I'm in I don't want to make games
like this and like you're giving me
advice on like a thing that like I wish
I hadn't made cuz like everyone around
me it was at this uh this the bar that
we were talking about earlier.
>> Yeah.
>> Um had all these like weird interesting
experimental things
>> and I'm just not like I'm much better at
that than I am at building like a
beautiful wellthoughtout you know kind
of within genre game. So, that's kind of
where I uh I think that that was the the
thing that really pushed me towards
getting weirder and weirder and weirder.
>> I do have to say I thought it was the
most programmer description of a game of
all time was well, you just have some
inputs and then you have outputs. So,
it's like that's a game. You know,
>> it is. So, this is I think about this a
lot with like the the stuff when I'm
making a game that is running in another
application. So, like that or like I
have like Flappy Bird running in Mac OS
Finder or whatever. Um that is how like
the terms that I'm thinking of you like
find like a surprising way that an
application gives you input and output
like for example in Macfinder I can
query to determine that you have clicked
on a file
>> um and like that is that is sufficient
input right and then output can be
renaming files
>> um this is a terrible way to think about
like real games that people want to play
but it's a great way to invent games
that you can write blog posts about that
people read
>> which hey if That's uh that's a whole
new genre of games, but it it does work
and they are funny, so it makes sense.
>> Yeah. I think I think if I made if
that's all I did, I would get a little
sick of it. But it's really fun
sometimes.
>> Yeah.
>> Is there like a do you ever have like a
like a a personal win condition for a
game? Like is it, oh, I need for the
player to feel this, or is it more like
a personal expression thing? Like how do
you when do you know when something's
finished?
>> Oo. Oh, that's a good question. Um, and
I would I would love to hear hear your
answer uh to to this as well. Um,
I think it depends a lot um for like the
bigger multiplayer experimental stuff
thing. I think it's kind of vibes like I
think a lot about like how are people
going to ruin this? And I want to be
really confident that it's hard for
people to ruin it, right? because that's
just like
>> you get kind of get one shot and if like
a bunch of people go to the website and
it's just like slurs and porn or
whatever, you know, depending on how
people want to ruin something, it's just
like not that's just not fun.
>> That's very typical internet, too.
>> Yeah.
>> And it's Yeah. And it just like it just
happens, right? Like this and this this
sucks, but um if you don't do something
about it is what people do for kind of
the smaller like
>> the way I think about this is that I
make games and then I also make things
that aren't really games. Like the the
Wordle thing, no one's going to play
that. that exists so that I can write
the blog about it, right? And teach
people something interesting in this
cart mechanism.
>> Um, and there
I think it's kind of when there are no
more problems left to solve. Like I get
to a point where I'm like this
technology is not meant to run again.
Like it's, you know, Mac OS I pushed Mac
OS Finder to four frames a second. I had
to add like double buffering to it. It
was a lot of work and like this is like
where we call it. um I can't make it any
any faster. And so that's normally what
I'll do. And sometimes I get to that
point and like the game just isn't
interesting enough and so I just don't I
don't post about it.
>> Do you have like a lot of like ideas
that you started that just didn't just
didn't go anywhere?
>> Uh not that many. Like I'd say like more
often than not I finish what I start.
But
>> that's great.
>> I think it's like close. You know, it's
probably like 6040 or something.
>> Wow. That's a much better ratio than
anybody I've ever met in my entire
lifetime.
>> I was gonna say though, Adam, you can't
get away from the reverse question
though because Nolan wanted to hear your
answer and I want to hear your answer
too. So,
>> yeah. I'm also I'm curious. I know like
you've both done like game jam game.
Like I remember you you placed really
well at a at a Ludum Dar a while ago and
then you also have these really long
running things.
Yeah, I mean I I am such a like a uh
boring case of a gamer because like I
literally just have that the exact story
everybody else has of like you know I
grew up and I had a Super Nintendo and I
was obsessed with that and then I got a
PlayStation and I was obsessed with that
and you know by the time I was maybe
like 11 or 12 I was like I want to make
games. This is what I want to do. So, I
think I just for the big game, it's
really just me trying to channel the
feelings that I got playing like Final
Fantasy 10 um into a project and wanting
other people to feel that. And so,
because it's such a conventional shaped
thing that I'm making, it's done when
it's finished, you know, when I can get
to the credits and you can, you know,
it's got 20 hours of content and side
content, blah blah blah. Um, for the
smaller games that I feel like comes a
lot more from
a more like I I studied design at
university, so the idea of like hacking
stuff together and prototyping and
wanting to explore a concept um that get
that itch gets scratched by the smaller
projects. And so yeah, I feel like they
are two very different modes. Uh, and
I've tried sort of in the middle as
well. I had like a couple of six-month
projects. Um, those can be fun too. I
think the the tough part is then like
when a project needs to become a product
and you have to like support it as a
piece of software or something like
that, it becomes there's like a
threshold there you have to cross over
uh when you release something and the
more time you spend on it, the more it
has to sort of justify the time you
spend. So yeah, I tend to stick to one
end of the spectrum at a time. Yeah.
>> Yeah. I mean, I think like game jams are
so nice for the like I'm just going to
express this one idea, right? And then
like maybe a lot of people find it
compelling and you do something else
with that, but like having the freedom
to do that without the like
>> I worked on this for six months and so I
feel like I should get something out of
it
>> type of thing. It's really Yeah.
>> Oh, speaking of just as a fun aside, our
buddy Cakes, we should link it prime in
the description of this video, just he's
a longtime Twitch streamer friend. He
just released his tower defense game.
He's working been working on it at
Twitch for like four years. We should
just give it a shout out. I I am giving
it a shout out right now. The link will
be in the description for other people.
This is not an ad. It is just he's a
friend of ours who raids us a lot on
Twitch and I want to make sure we're
shouting him out everywhere cuz he
finished a project odd stream after four
years. So, it's awesome. Uh so people
should go check that out. That just
reminded them.
>> Cupcakes.
>> Yeah, cupcakes.
>> Yeah. And yesterday I was uh I opened up
Steam to play uh a game that you may
have heard of, Slay the Spire 2. And
when I opened it up, me and my son are
doing a little co-run together. And when
I opened it up, it said it said, "Hey,
Tower Defense Mania or something like
that." And I was just like, "See more."
And it said, "Here's a bunch of games of
Tower Defense." And it was like
balloons. And then Tangy was number six.
>> Nice. That's sweet.
>> Yeah.
>> Yes.
>> Stoked. So anyways, that was just a
quick aside that I wanted to make sure
because I was thinking, "Oh, we have a
friends on who make games. We also have
to talk about our other friend who just
released a game. So, um, anyways, Adam,
the question I was going to ask you
though was from any of your like smaller
projects where you're working on like
Game Jam or something else, you take any
of those ideas, put them in Insignia,
like any good examples.
Uh, actually, there was one recently
that's not from a game jam at all. Uh,
we we had like an onstream game we used
to play uh called Well, we'd call it
just clinkers. It's like a there's a
food. It's like a candy in Australia
that is covered in chocolate and there's
only three there's like three kinds in a
packet but you don't know what you're
eating because until you eat it because
it's covered in chocolate.
>> Uh so we we just use it as like gambling
in the stream. So people redeem points
and I bite into one and they guess and
if they guess correctly I put an Easter
egg in the game and we've we've we've
decided that uh we're not doing it
anymore because um one I don't think I
think they're phasing it out but also
like I can't stand the taste of them
anymore. Like I
over like six years now it's like
killing me.
>> So um it's in the game now or at least
it will be. we're gonna we're going to
put like an in-game uh it's like a one
in three chance thing.
>> So that that happened. Uh there were
times when I would do a game jam like
we've thought about specifically working
on like an insignia in-game miniame
through a jam.
>> Mhm.
>> Certainly like yeah a few different
ideas have sort of crept in actually.
Yeah. Like one of the main mechanics in
the game came from a jam.
>> So
>> Oh nice.
>> Yeah.
>> Say more about that.
>> Yeah.
>> Okay.
uh a game I made called Trauma back in I
think it was 20 22 maybe or 2020. One of
those one of
>> I think my therapist told me about this.
>> Yeah. Yeah. That's what it's it's kind
of like it's a platformer where you play
as a a a girl who's in therapy and the
way that you play it is it's a
platformer and you get like um abilities
that send you off in different
directions in the screen.
>> Uh so like to clear a jump like she
can't jump on her own. she can only move
around and you have to touch these like
specific like trauma points to like read
about or like to like prompt
conversations and then once they're kind
of like little puzzles and once you
solve a puzzle
>> uh and you kind of like heal the trauma
>> um you get to like you get like a card
and then you play that card to use the
ability. So, like at first you'll look
over a little node and it'll like throw
you away, but then like after you've
solved the little puzzle, like you'll
use that node and the card you get from
it to like this is a jump card or this
card thrusts you forward or and by the
end you get like six or seven cards and
you can chain like a really long jump
sequence just you're just pressing space
to play the cards,
>> but you're starting at one point and
sort of like clearing this crazy like
Celeste style gap. Um, so yeah, that the
ability of like like the concept of
chaining like directional style
abilities into like one big platforming
leap. Uh, that's kind of like what
Insignia's um ability system
>> kind of Yeah, that's how it works. So,
>> all right, I got I got I got something
for you, Nolan. Uh, so I my favorite
blog that you wrote was the 1 million
checkboxes blog. And the reason being is
that as you started off, you started off
with this like really simple concept. I
want to send a million checkboxes down
that people can like look at and and
click and it's a very like approachable
and consumable idea. You're like, okay,
I I get everything you're about to say.
But then you start going, okay, well,
how do I send the data down? Okay, like
this is actually a really big problem
because a million of anything is a big
is a big number, right? Like it's just
it's just a big number to send down. And
so I can't just send down like a JSON
map or an array that's encoded in in
JSON because it's just going to be huge.
And so you start kind of going through
this process of like working through and
sending down the data through binary
stuff through, you know, I forget if it
was websockets that you sent it down via
or whatever it was. And you ended up
having to pack everything down into
bits. And then you talk about, okay,
well at first my infrastructure was in
Python and then that just was not going
well. So, I switched to Go and things
went way better for whatever reason.
Magic, I guess. The magic of compiled
>> language. I don't know. I don't know
why. Yeah,
>> it's crazy how compiled languages are
just so much better at that kind of
stuff. And so, I just I love that
process of going from I'm going to build
an idea to this is actually how an idea
can realistically execute.
>> Uh how how often at this point do you
still run into a situation where you've
learned as much as you did say on a
million checkboxes? Cuz now you've seen
a lot. You you've seen some [ __ ] And so
now it's like, okay, well, I'm not going
to start off in Python on a single box.
I'm going to, you know, you kind of like
you pre-plan for some things to come
down.
>> Yeah. So, I've been thinking about this
a lot like the firefighting like that,
right? Like I launch one million
checkboxes. It's like a single small VM.
It's running in Python. It's like, you
know, people are going cra you know,
there are hundreds of thousands of
people trying to check boxes.
Firefighting like that is just really
fun, right? like you also learn a lot
but like it's super motivating right
like you learn exactly what you need to
do
>> to keep the site up for the next like
two hours
>> whereas these days I'm you know just
thinking a lot more about like okay like
let's imagine a number of people like
for the snake game right
>> I made like a game that you play over
SSH it's like a massively multiplayer
snake for something like that I'm like
all right what's a number that's insane
you know 2500 people are not going to
concurrently play my stupid SSH snake
game so let's make sure that we support
that out of the box and then like I did
that and like it we could I could
support that. Uh but it might have been
more fun to like launch that game
without really thinking about
performance at all and then seeing what
what broke. Um so I think like I don't
I don't want to say I don't I don't
learn anymore or anything like that. Um
for for the chess game that I made last
year, I still I still learned a lot. Um
but it's harder, right? like
in a way I'm pre prematurely optimizing
right and it's like hard to say because
I am putting things out on the internet
there are a lot of scary thing like I
don't want like a massive bandwidth
build that I wake up to or something
like that so there are things that like
you actually do really have to think
about
>> but
I don't know I kind of feel like I
should be moving a little bit faster
especially since sometimes the things
that I'm preparing for just like truly
don't matter or like they are just
content right like I think the decisions
that I made for the snake game that I
made recently were primarily because I
just wanted to learn a lot about how to
write a super efficient terminal
application. But I had to like make that
choice. My users didn't make it for me.
>> It was very it was a very good blog by
the way the SSH stuff. I really enjoyed
>> how you put together especially the unic
codes and the vertical the vertical
movement classic first problem of any uh
terminal game.
>> Yeah. Yeah. Yeah.
>> I thought you were going to say you
really liked how we gave Terminal a
shout out. That's what I thought you
were going to say for that was why you
really liked the blog post.
>> It was a good shout out. It was It was
real.
>> It is It is funny though like cuz you
would think, you know, from just like,
"Oh, I'm going to make something that
runs in the terminal." You're like, "Oh,
it can't take a lot of bandwidth or it
can't take a lot of data." But we ran
into this too in some of the early stuff
for terminal shop. And we ended up not
having to fix it to the same extent
because it's not like updating as often.
It just updates when people take action
so we don't have to redraw.
>> Um
>> I think at one point we were sending
down like the first hour it was like 60
frames a second no matter who was
coming. The thing that we did initially
that made us send an insane amount of
data was we had a big a huge React Miami
logo and it was saying like coming soon
and so you SSH in and it was just like
you know coming soon react but then we
had something in there that was like
spinning or some something that made it
so we had to like send a refresh or no
you know
>> it might have been my coffee cuz I did
build a particle system.
>> Uh no pretty sure we never put that in
the application. Um, so, uh, I actually
think it wasn't even we didn't even
redraw it. It was just something with
bub, uh, with one of the like charm
things where we had a timer running
somewhere. So, it just forced a refresh
of like their framework. So, it was like
counting down the seconds until we said
we would release. And so every second it
would send down or like a bunch of times
a second. I think the default ticker
would send out this huge I don't know
because we made you have to zoom out to
look at it because we wanted the picture
to look
>> it was like 10,000 by 2,000 something
like that. It was like huge
>> and then and well we took a picture and
we did the like picture to Ansie thing
right. So we took a physical picture I'm
saying right and so it had like a
million terminal escape sequences in it.
Right. Cuz it was like every every
character had its own to like make it a
different color and make some of them
bold.
>> Slowly going from pink to more pink.
Like it was just it was the worst
possible case.
>> So every every character had probably
like at least you know 10 to 15
characters we were sending, right? And
then we made you zoom out to be like,
"Oh, we can't show this at, you know, 40
by 80 or something like that. You had to
be at like 100 by 800." And then we just
were sending that like 60 times a second
for no reason. It was a static image.
>> I just remember that like Dax comes out
like, "Guys, we sent like a 100
gigabytes in the last hour." And we're
just like,
>> "Huh, how do we do that?"
>> At that point, we were like, "Is the
whole selling coffee over SSH thing, are
we just screwed?" We were like, it's
like maybe we can't even build this as
an application.
>> It's the coffee that's the problem.
>> It's the coffee that's the problem. I
thought for sure the problem with our
margins was going to be trying to get
good coffee to people and physical
products, but it turns out it's just
bandwidth.
>> Bandwidth.
>> Just bandwidth. It's just egress cost
from our container. Um, we did
eventually figure out, oh, when the time
when there's a timer running, it resends
this. So, we fixed that eventually, but
I was cracking up about some of it
because you just can't even imagine that
you're going to have this bandwidth
problem over SSH because it seems
absurd.
>> It's text. It can't be that big.
>> It's text. Turns out it can be. So, I
don't know, Nolan, if you want to talk
about uh for people who didn't uh who
haven't yet yet read the blog post uh
some of the like fun stuff you did for
the the snake game.
>> Yeah. I mean, my favorite thing that I
did was that I like patched the Go SSH
library.
>> Uh which I wrote like a whole a whole
separate library or a whole separate
blog post about because this was so wild
to me. Yeah.
>> Um, but like the gist of that, right, is
I'm working on the game, working on the
game, doing all this profiling because I
want the game to be super fast. And I
like on
this change and my CPU usage drops by
like half and like at this point I'm
running like I have like a harness with
like 500 bots that are connecting,
sending moves. Um, and uh, yeah, so CPU
usage drops by half and I'm like
thrilled, right? Like I'm like, "Oh man,
like this changed like I've done
something awesome."
>> So I start I'm exploring that. And I'm
trying to figure out like why cuz this
was not a change that was supposed to
make things faster. Like why why did
that work? And I realized like actually
all I had done was I had broken my
harness. Like instead of my bots getting
data, um they just got a single message
that said your screen size is too small.
>> Um I had like broken cuz like SSH
there's like TTY like whatever. You
know, the details here don't really
matter. But I had broken my testing
harness and that's why performance
improved because I wasn't really testing
my game. But then I'm like thinking and
I'm like, wait, if my bots weren't
receiving any data for my game, why did
performance only drop by half,
>> right?
>> Like why did performance not drop by
99%.
That doesn't make any sense.
>> Mhm.
>> So I start capturing packets and like
looking at all of that and eventually
like see that if you're just SSH to a
box and you press a single key, SSH
sends, you know, like about 90 packets.
uh and what's going on there is that um
there's the the SSH is doing something
called keystroke obuscation. The basic
idea is that if I see what letter or
what keys sorry the timing at which you
are pressing keys but nothing else like
all I have is like key press key press
key press pause key press well that
pause maybe that means that you're
reaching for like uh you know the number
pad or something like that like you're
pressing something that's harder for you
to get to.
>> So SSH just sends junk data all the
time. um to like obfuscate the actual
key presses that you're making. But it
sends like if you the way it works is
that it perpetually sends this junk data
as long as you whenever you press like
one key.
>> And that's really bad for games because
you're pressing like one key a second.
The junk data gets sent for about one
second. And so it's like one key press
turns into 101 packets. Um and this is
not something that you're supposed to be
able to disable. And I just like I found
the patch and I like read through the
the SSH code and was like if I just
pretend if I like claim to the client
that I'm just running an old version of
SSH that doesn't know about or of SSHD
the the you know serverside component
>> that doesn't know about this feature
maybe they won't send these these junk
packets to me. And that totally works.
>> Um so I did that and then I posted about
it and a bunch of nerds got really mad
at me because I wrote this whole blog.
Yeah. And I didn't acknowledge like the
blog starts out with like I am working
on a high performance game over SSH.
>> And I just like deadpan say that without
acknowledging that that's deranged. Um
but it like broke and it like broke
containment like it made it to people on
like Hacker News or Reddit or whatever
who don't know the type of stuff that I
normally do.
>> So all the right comments are just
people being like this, you know, this
dumbass vibe coder has no idea what he's
doing. Like what stupid he is. Yeah,
because people are typing in their
passwords to very secure uh boxes over
your connection to the snake game.
>> I don't even know. I I don't know what
they were mad at me about.
>> Well, we Yeah, it's funny cuz we had the
same not Well, we had this problem and
we chose to keep it in because we were
worried about someone actually some
somehow finding something you could
exploit over that way. But we had a
bunch of people complaining too of like
>> they're they're harvesting people's
public keys which was the funniest. That
was a real complaint when we lost. Yes.
>> Yeah. It's like Yeah. I'm going to What
am I going to do? Public key.
>> I know. It was the funniest complaint
and like tons of votes and people like
this is this coffee site is a scam to
from big data to get all of your public
keys. And you're like, what am I going
to do with h with only the public key? I
don't, you know, it was like,
>> do do you know what the first word of
public key is?
>> I know. It was like it was so funny.
>> Yeah. So I similar similar thing of
people getting very upset uh about this
when you're like, I think it's okay,
guys. Like it's it's fine. Yeah. Yeah.
Also, it's not like you tried to
upstream it back to go and get them to
remove it or like it's you know.
>> No, but I did ping. So the recurse, the
place I mentioned earlier, Fippo, the go
one of the go crypto maintainers is also
a recurse alum. And so I pinged him on
like the recurse chat to be like, "Am I
like is this really stupid? Like
>> am I fired if I do this?" And he was
like, "For your game, it's fine. Don't
worry about it."
>> Right.
>> Thank you, Fippo.
>> Had the official author's approval just
reply with a screenshot to all people
getting upset like, "I've got receipts.
I got receipts."
>> By the way, I do I can I make a quick
shout out for your SSH blog? So, if you
haven't checked it out, you should go
check it out. But this was my favorite
joke of the entire thing, which is why
does the snake game render strangely for
me? Snake snake snakes.Run makes use of
uni block unicode block elements. Since
these were added in 1991, your terminal
may not fully support them yet. For
example, Mac OS's terminal app renders
them poorly. Try using a different
terminal. It's like my favorite thing in
the universe is this thing right here.
This was I cannot tell you how many
issues I got in Neoim from people using
terminal app and being like Neoim's
broken. It can't do colors. And you're
like, I don't understand how. And then
turns out, oh, this the default terminal
Mac can't figure out how to update.
>> No, you can't update it. The technology
the the the private key to the repo was
lost and so they just have the same
thing since 1989.
>> It's so frustrating.
It's actually stuck in 1989. It's
>> It's old.
>> Prime that uh that site uh that that you
had up, I just want to note that um in
keeping with the SSH aesthetic, the
whole site uses tables for layout and
only HTML that was available in 1995
with no CSS.
>> Oh,
>> which I was very proud of. Um that was
tables for layout actually kind of sick.
Like kind of
>> tables for layout actually really good.
It's actually
>> it was like honestly you know what
really easy to think about.
You guys heard it here first. It's
coming back after this podcast. You're
going to start seeing tables for layout.
The Google search trends big. It's going
>> What about frames? Remember frames.
Bring those back.
>> Like first off, I frames are all over
the place. You go to any news. Okay.
Okay. Now we're Now you got me. Now
you're going to ruin my life and now I'm
going to be very upset. You go to any of
the news outlets we're talking about. It
doesn't matter what it is. Techrunch.
>> The only news outlet I go to is the
prime time. Okay.
>> Prime Time. Well, I synthesize this for
you, but if you go up on your tabs and
uh you you look at you can highlight and
hold something over and it'll tell you
how many megabytes. Like Twitter right
here, while having an actual video right
here of Doom being loaded and being
played is taking up about 211 megabytes.
It says it right there. If you go to any
news place, it will be 1.5 gigs every
single time. And then you go and you
start perusing their code and it's all
just these big videos being pushed into
iframes and it's just insanity going on
in the website. I frames the devil. I
just want to throw that out there.
>> But they're very fun to play with. You
could totally do that. I made an entire
business
>> game on uh Facebook, the old uh Facebook
apps they used to have way back in the
day. I'd load an iframe, do
authentication through an iframe and
through uh
>> the URL.
>> Quick uh quick proposal for a game. I
don't know what it needs to be, but we
need something about eye frames, but
it's like both the eye frame and the
internet way, but also the Dark Souls
way.
>> The Yeah. Yeah. Yeah.
>> Like both.
>> Oh, yeah.
>> You know what I'm saying? Something
about them makes you invincible. I don't
know how. I trust Nolan's brain to
figure that out in 6 months.
>> That's inputs and outputs right there,
Nolan.
>> That's inputs. Outputs. Inputs. Outputs.
>> Inputs. Outputs.
>> Input. Out. I frame. Output. I frame.
Think about it.
>> I had a friend, I don't know what
happened to this project, who was
working on a thing because Blue Sky
still has a fire hose, right? like you
can get all of the the data from Blue
Sky.
>> And so he had a site
>> um it's more than you'd think, right?
No. So it was he just made it was a site
that had an individual iframe for every
image and every video that anybody
posted to the site like scrolling like
as fast as it could.
>> It was like actually pretty sick. Like
it was fun to watch.
>> Yeah.
>> Um but I don't know. Maybe it's too
scary to put online. Spencer, if you're
listening,
>> there you go. New blog post as well.
>> Get that up.
>> Mhm. Well, there's definitely something
in uh like the game jam community. I
don't know why, but it's kind of like,
you know, that that thing about uh how
everything evolves into crabs. In game
jams, there's this thing where
guaranteed at least one entry in every
game jam is a game where the game is
being played across multiple like
viewports, like multiple windows or
multiple. It's like a platformer and you
your character jumps between the so
maybe there's an eye iframe idea there
where you have like multiple eye frames,
but it's one game being played across
them.
Oh, dragable eye frames to solve
puzzles.
>> That's something like that.
>> I was just
>> with eye frame souls like
>> it. It has to be. Yeah.
>> He's cooking.
>> Still pro. Yeah. Yeah. Yeah. All right.
No, he can't cook on stream. Can't cook
on stream. I have to think about that
one after.
>> That just reminded me.
>> You got Yeah, that like hit me. All
right.
>> It hit him. It hit him.
>> You just nerd snipe him. You just
changed his next six months, TJ.
>> Yeah. Yeah. Sorry. I apologize. I did
not mean to do that to you, but I am
excited for frame. I frame I frame
squared.
>> Yeah.
>> Hey guys, if you like this episode, you
can watch the rest of it on the Spotify.
And don't forget to like and subscribe.
Woo! See you later.
>> Boot up the day
five co errors on my screen.
Terminal coffee.
Ask follow-up questions or revisit key timestamps.
This video features a discussion with game developers Nolan Eie and Adam Ununice, focusing on their journeys into game development and their creative processes. Nolan shares how he initially got into game development to reconnect with coding, learned from Adam's tutorials, and eventually found inspiration at the Recurse Center. He highlights his experimental approach, including creating a game using the Open Search spec and the viral success of his Wordle-like game, 'Wardle'. Adam discusses his early passion for games stemming from his childhood console experiences and how he aims to evoke similar feelings in his own large-scale projects. The conversation also delves into the challenges of game development, such as managing scope, the importance of 'making a ton of games' early on, and the technical hurdles of creating performant applications, particularly in terminal environments. They touch upon unexpected issues like bandwidth limitations in SSH and the complexities of optimizing code, sometimes leading to surprising performance improvements. The developers also share insights on defining 'done' for a project, balancing creative expression with product development, and the unique culture of game jams.
Videos recently processed by our community