I always find Jonathan Blow and Casey Muratori to be great educators and advocates on the “simplicity” end of the spectrum. Jonathan can be super abrasive and comes with some political baggage, but does a good job advocating against what he perceives as unnecessary complexity in software. Opponents would suggest his domain and cherry-picked examples create the perfect environment for his positions and that he does take a long time to ship stuff. That said, he pulls off some compelling games with relatively minimal resources.
Blow and Muratori gained a following of engineers by bashing existing popular languages and engines, claiming they were all garbage.
They both started this after the Witness came out, 10 years ago.
Since then, guess how many games Muratori has shipped? 0. (He cancelled his announced game.)
Guess how many Blow has shipped? 0 so far, but it sounds close now.
These engineers spent their time ragging on other developers for slinging bad code and doing things horribly, meanwhile those developers were shipping games and apps and all sorts of other stuff.
That's kind of a rediculous assessment. "How many games have you shipped in the last 10 years" is the standard for how good your advice is.
John has made two games + one soon in the last 17 years. Braid started off the indie boom, and the witness was a blockbuster hit. Casey works on game engines and optimization, and has an entire video series about writing a game from scratch.
I agree that some authors don't ship any actual software and engineers should stray away from their advice, but this is not that case.
To be fair, I had not heard of the Witness until well after it came out.
Braid came out the same time XBox Indie Games.
I will say, I do not find a lot of their rhetoric convincing. Especially for people who have never attempted to write the software they are criticizing.
Blow only writes single player games that do not persist significant data to the machine. Nothing bad happens if your save file is corrupted. Nothing of value is lost if scene transitions have a bug.
But they're going to tell me that hyper-scaled multi-user real-time software is written poorly?
Also, I've been watching Muratori's Handmade Hero series. The deeper it gets into the game, the worse it gets. At one point, he's like "Ah, I dunno, we'll implement bubble sort because we don't have time to do any other sort." Followed by a diatribe about why bubble sort is a bad name. It's a fine name. Things bubble up.
Second, merge sort is just as quick to write and faster.
But in general, they alternate between speaking in platitudes and disparaging other software.
> Especially for people who have never attempted to write the software they are criticizing.
E.g. Casey and Blow often criticise the Visual Studio debugger. It's slow, has quite limited functionality. And it progressively gets worse over time (e.g. it can no longer update watched values at the same speed as you step through the program).
Do they both have to write a debugger to demonstrate how bad it is?
You don't have to write some software to criticise how bad it is. E.g. I cannot but make fun of Discord for implementing "we will intentionally kill our app if it consumes 4GB of memory and are very good at prioritising fixing memory issues seeing a whopping 5% improvement for p95 of users": https://www.reddit.com/r/discordapp/comments/1pej7l7/restart...
Doesn't mean I have to write Discord to criticise it. All I need is an understanding of rather basic performance and of general engineering practices.
> Especially for people who have never attempted to write the software they are criticizing.
Casey was criticizing new Windows Terminal got into an argument with Microsoft's project manager that said that it was impossible to implement optimizations that Casey talked about. Well, Casey reimplemented terminal, it was not that hard.
Part of the purpose of the series of Handmade Hero is to build a game from the ground up with no dependencies. So I don't think he's bringing in stdlib
So he could use that, but goal is to be someone who doesn't necessarily need to do that.
At some point I think he caved and just started using OpenGL. I don't know because he turned off all of the comments on his youtube channel. I think the only thing he's demonstrated is how bad an idea "building a AAA game entirely from first principles" is.
He says verbatim his goal is to be a stepping stone for serious engine programmers (not necessarily "general purpose", but definitely AAA-level), even though obviously we are not going to be making a AAA game for obvious reasons :)
So fair enough, but between that and his claim that he's showing people how to create a "professional quality" game I think the difference between a AAA game and a "AAA-level" game engine has no distinction, it's basically the same thing.
Is what he has done so far professional grade, capable of "AAA-level" games? I don't think so, but I concede that probably depends on what your parameters for "AAA" and "professional quality" are. It might be fine for indie games but it seems to me that Casey was selling an audience on revealing something deeper.
The point is that Blow has two blockbuster hits under his belt and can afford to take a decade to ship a single game. Most people would go broke never having shipped a game if they tried to do things Blow's way.
Soulja Boy never made any videos about Garry's Mod
This is kind of a joke and I know he was mostly poking fun at Braid but this does speak to how mainstream indie games got in that first wave that hit XBLA.
Casey hasn’t worked on game engine or engine tech in almost a decade. That’s not to say he doesn’t know what he’s talking about, but imho it’s important to be aware that he hasn’t worked on a real shipping product in a long time.
another POV is, business IT projects fail at a higher rate than video games do! the people who post about "shipping" are projecting: "at least my garbage is delivered frequently, which is key to being employed, not key to creating meaning."
He didn't need to finish it in order for it to have an impact. Makers of FilePilot and Animal Well both attribute Handmade as being big inspirations for them to go the way they did. They said, they got the most value from the first 50 eps or so. You'll hear lots of them on the Wookash podcast.
So for your opinion to carry any weight, please enlighten us as to the games you have shipped that qualify you to comment on their take on programming practices.
Not really. Let's reverse the situation on you - why should we take your opinion seriously, we have no idea how much you have shipped, if anything at all, so by your logic, your ragging on the other programmers practices is ridiculous.
I've shipped a few things over the years, but doubt I have strong takes in programming, besides 'the "properness" of a variables name is dependent on the amount of lines between it's definition and usage.' Doubt anyone will take my considerations seriously.
I'm not making any claims about programming practices
If someone comes out saying "you guys are all doing this wrong" and yet they can't finish their own project then why would I take their advice seriously?
If you suggest a way of doing software development and you can't even show it working out to completion, what does that say about your proposed methods?
I had a larger rant written, but this is the only part that had any value:
Yes, one can argue that lack of produces results does not give big plusses towards their work processes, but it does not necessarily negate the value of the concepts that they preach.
The value of a thing is not only defined by who is spouting it, one must evaluate the argument on it's own merits, not by evaluating of the people yelling about it.
There are plenty of concepts in this world that I cannot make work, that does not mean that the concepts are bad. It only means that the failure reflects on me and my in-capabilities.
And this might be something that you are not noticing: You are making claims about programming practices indirectly by stating that THEIR practices are not worth considering due to lack of shipping anything.
It's not really the same. Casey is suggesting people that don't spend 10 years crafting everything from scratch are somehow "lesser than." The user you're replying to is pointing out that Casey has set a completely arbitrary rule for game quality that conveniently leaves out his inability to ship something, and that's funny.
We're not saying games taking longer than a few years are failures, we're saying good games can encompass both approaches. But Casey, and his followers, are doing purity tests to feel good about themselves.
And this is assuming the games they ship are even good or noticeable to the user. I don't much care for Braid or The Witness, and I don't want my favorite dev studios to suddenly write everything from scratch every time. I would have a lot less fun things to play.
If you mean Computer, Enhance!'s Performance Aware Programming series, it's ongoing, but the pace is slower than about 1.5years ago. Given how good it is, and how fastidious and comprehensive Casey is, I imagine it doesn't really pay for itself, even with an impressive subscriber count.
I give Blow a little benefit of the doubt just because spending all of your money on your small business and seriously facing the risk of failure is pretty stressful. I'd be a lot meaner than he is if I were in his situation.
I think I'll judge that by looking at how convincing their arguments are (some are not, I think), not by raw output. After all they already output a lot.
He wrote this whole game in it. Apart from that, a couple dozen or hundreds of beta-testers. Not sure whether the language ever gets released, maybe he's too worried about having to maintain it and not being able to change it anymore.
> Since then, guess how many games Muratori has shipped? 0. (He cancelled his announced game.)
On one hand I'm sympathetic to this view point, on the other, he's done thousands of hours of YouTube videos and inspired a ton of programmers.
> Guess how many Blow has shipped? 0 so far, but it sounds close now.
Not going to lie, it's probably difficult being financially secure and still hustling like you're broke. I imagine it's more by choice (to do other things) than being unable to ship.
Why are they being criticized from the arbitrary metric of the last 10 years, when both had careers far longer than that? Jon's advice for software is the same advice he used when developing Braid and the Witness, which are both great games and for their time, technological feats, especially from an indie.
Jon's production from the last 10 year isn't even due to bad software methodology from what I observe, it's mainly seems to be because his company is creating a new programming language tailored to games. This doesn't seem to be done to make money, but rather, to try and fundamentally fixed issues that he perceives in game development. It's a lofty goal, and the compiler itself uses the same software methodolgy that he argues for, and it's quite good.
So I don't think this critism is fair. We should look at the arguments they present, and their multi-decade long careers as a measure of thir authority on this subject.
I broadly agree with the author’s point there, but disagree with the specific language he used. In my view, engineering includes those pesky non-technical considerations, like the business context and the human factors, which bring their own tradeoffs and priorities to the engineering decision-making.
That is, his “pure engineers” are not really doing engineering, at least under my understanding of the term, whereas (some of) the impure engineers actually are! :)
I don't much about casey, but jblow seems to have gotten popular partly because of the timing with live streaming becoming mainstream and also because people find his brash "tell-it-like-it-is" opinions refreshing. It's the same reason why people tend to gravitate towards guys like linus or stallman. Having opinions and not being a fence-sitter makes you interesting.
If there's anyone who I think deserves to be able to say "all existing languages/engines suck" it's someone who made his own language from scratch to make an engine with it from scratch to make a game with it from scratch to combat the problem.
What? Its about 3-5 years for a AAA game and you ideally pipeline things such that a studio is shipping somewhat frequently. Almost no one can front a decade worth of development without shipping anything.
Where are you getting a decade from? Consoles ship more often then that.
Square Enix: so so many but at least a few FF14 expansions, FF15, Nier: Automata, Dragon Quest XI, Octopath Traveler, Kingdom Hearts III, Final Fantasy 16, Final Fantasy VII Rebirth
Bethesda: The Elder Scrolls Online, Fallout 4, Fallout 76, Starfield
Epic: Robo Recall, Fornite.
Epic cancelled Paragon and Unreal Tournament and Fortnite is a live service game where they're constantly shipping content so its harder to define single releases but they have new money coming in from new content.
And these are only from the main studio, not the dozens of games published by these entities.
There's plenty of examples there of multiple games per studio. Hard to get public into per "team". Teams are mutable within a studio and devs roll off and onto other teams.
Arguably teams are tied to and only ever ship a single game so I'm not really sure what you're arguing at this point.
Someone can't honestly write this unless they aren't a fan of games to begin with. Are you saying the Clair Obscur devs don't care about their craft because they used Unreal Engine?
There is a massive gap between Handmade Hero and a bloated, unoptimized game. It's one thing to be a purist that wants to do everything Handmade Hero style. It's another thing entirely to claim people who don't do that are hacks who don't care about their craft. There is A LOT to game development other than writing things from scratch.
Casey has made great resources, but I understand OPs frustration. He's created a culture of devs that think people shipping games over 100mb are soulless profit chasers. Animal Well is awesome, but not everyone wants to spend 7 years making a platformer.
Probably a nuanced point in what's the purpose for espousing the virtues of performance if you don't have the output to show it is worth it?
If you want advice about making games would you rather learn from the person that routinely ships games or a person that shipped a game once 10 years ago?
Is that a trade off worth chasing? "Potential perfection" with nothing to show for it?
More like, shipped 2 hit games, which were both technological and artistic feats for their time. And developed a blazingly fast compiler. Casey also was a developer in RAD game tools developing animation tools. Their output is probably better than most industry developers. I understand if you don't like their attitudes and the way they attempt to teach/preach to other engineers, but IMO their work speaks for itself. I take their advice and try to apply it to my own work, because it seems to have work for them.
I'm not saying I don't like their attitudes but it's a viewpoint I am struggling with myself.
I'm starting to realize caring about all these minutia of details that don't really matter for my professional goals. I know my software isn't special, caring about pumping out as much performance as possible when I just sling JS professionally feels a tad myopic?
What is the point of it just continues the pattern of procrastination towards the actual goals I want to achieve? Does this also apply to them?
What is the point of espousing all these supposed virtues when the output isn't that special? I mean Braid is still good, but let's not act like greener devs haven't put out good games too without all the jackassery baggage.
Yea I largely agree with you on that point. I think when discussing Jon, Casey (and to add another, Mike Acton), there's actually a series of advice that they give that get lumped into a whole, and people don't really see the parts of what they're saying and instead focus on the part that sounds most critical to their work.
I do agree that if you take from their "teachings" that every dev needs to optimize every thing, and never use any other language than system languages, that advice is myopic for most devs. However, I don't really see them arguing for that, at least not entirely.
From following their teaching for a while, they mostly preech about the following things which I agree with, even when talking about higher-level languages, technologies.
- Get the clowns out of the car: Don't make things needlessly expensive. Write simple procedural code that maps cleanly to what the hardware is doing. This is essentially stating OOP, large message passing, and other paradigms that abstract the problem away from the simple computations that are happening on your computer is actually adding complexity that isn't needed. This isn't about tuning your program to get the highest amount of performance, but rather, just write basic code, that is easy to follow and debug, that acts as a data-pipeline as much as possible. Using simple constructs to do the things you want, e.g. an if-statement versus inheritence for dynamic dispatch.
- Understand your problem domain, including the hardware, so you can reason about it. Don't abstract away the hardware your code is actually running on too much where you lose vital information on how to make it work well. I've seen this many times in my professional career, where devs don't know what hardware the code will be running on, and this inevitably makes their code slower, less responsive to the user and often drives up cost. There are many times in my early career (backend engineering), that just simplifying the code, designing the code so it works well for the hardware we expect, greatly lowered cost. The hardware is the platform and it shouldn't be ignored. Similarly, limitations that are imposed by your solution should be documented and understood. If you don't expect a TPS greater than some value, write that down, check for it, profile and make sure you know what your specturm of hardware can handle, and how much software utilization of that hardware you're getting.
- Focus on writing code, and don't get bogged down my fad methodologies (TDD, OPP, etc). Writing simple code, understanding the problem more deeply as you write, and not placing artifical constraints on yourself.
Now each of these points can be debated, but their harder to argue against IMO then the strawmany idea of them proposing that you must optimize as much as possible. And they argue that you will actually be more productive this way, and produce better software.
FWIW, you may have some datapoints showing that they do propose what I called a strawmany version of their ideas, but I have seen them advocating for the above points more so than anything else.
---
I do want to add, for Jon Blow, I don't think he has a problem with people using engines. From what I've seen he's played, and loved games that used engines in the past, and had no problem with their output in terms of gameplay or performance. From his talk about civilization ending relating to game dev, he's more concern that if no one tries to develop without an engine, we as a civilization will lose that ability.
> I don't think he has a problem with people using engines. From what I've seen he's played, and loved games that used engines in the past
He's also said quite openly that if you're only starting, it's fine if you reach for a ready-made engine. It's that you should try and understand how things and systems work as you progress.
Yes, this is well put. I was heavily influenced by Casey back in 2014 and the advice I give juniors now is always that first point about "getting the clowns out of the car". There's a lot of crossover with the "grug brained developer" here too, which is much more aligned with the web/enterprise world.
I find it very hard to convince people though. It runs counter to a lot of other practices in the industry, and the resulting code seems less sophisticated than an abstraction pile.
Aha! I think I know my contention with this advice now. Who can actually disagree with this? Like I'm saying yes to everything, no one I know would say no to this. Never had a coworker say aloud: "I want to write code to make things worse."
These are the platitudes of our industry that no one disagrees with. Like you said, this is what Blow + Muratori teachings can be distilled into. But there is something worse it also assumes, coming from such people.
Both Blow + Muratori have extremely privilege dev careers that a good ~80% us will never achieve: they have autonomy. The rest of us are merely serfs in someone's fiefdom. Blow has his fief, Muratori his. They can control their fiefs but not the majority of us devs. We don't have autonomy in the direction of the company, we don't control the budgets, we don't even control who we interview or hire.
Assuming that this onus of organizational standards has to be placed on someone with no authority to dictate it isn't just. Also as someone who has consumed content from these two for about a good 8ish years as their videos pop into my feed: I've never see them advocate for workers to be empowered to make their environments better. They mostly just trash on devs that have no authority.
With that mindset I need to seriously decouple myself from these people. Plenty of other devs advocate for the same things in our craft while also advocating for better rights as workers.
Some people actually have mouths to feed. Some people don't have the luxury of preaching for whatever ideals they have without a need to release anything in 10 years; that doesn't make their products "garbage".
> Some people don't have the luxury of preaching for whatever ideals they have without a need to release anything in 10 years
Wait, how did they gain this "luxury"? Are they trust fund babies or something?
Or did they earn their big stash of money by producing "garbage" and now retroactively are preaching ideals that they themselves didn't follow or what?
This line of "criticism" doesn't make any sense whatsoever.
After all both in question live off money they've made and/or are making from their (arguably) uncompromised quality work.
That is to say their uncompromised quality work has directly resulted in them being able to not release anything for close to 10 years, and practice their ideals in software they ship even if the "shipping" takes 10 years to do.
It would be more fair to say, that most people don't have the craftmanship and skill (and not the luxury) to be able to produce high quality work and software that enables them the so called "luxury".
>Or did they earn their big stash of money by producing "garbage" and now retroactively are preaching ideals that they themselves didn't follow or what?
In the JBlow case - yes, he made his money using C++. So far, he hasn't shown that using Jai is particularly productive for software engineering.
> So far, he hasn't shown that using Jai is particularly productive for software engineering.
And how would he do that exactly to whatever ungodly standards you are setting for the man?
Many people have criticized C++ in past (which is very easy to do), yet he's practicing what he's preaching in the most direct way humanly possible, he's both (1) designed and implemented a new programming language (that has directly addressed most of the issues), whilst (2) also making a complete non-trivial game in the newly designed language at the same time.
His games have always taken long time to make, and now he's making game + engine + programming language. At the same frigging time!
The only "luxury" JBlow has is that he's an exceptional individual and you're not. He has rare combination of ability, perseverance and work ethic, and by all accounts most people are neither of those things at once.
Most criticisms 99% of time are either misrepresentitive, misinformed jealousy or something to do with politics.
I have no issue with personally acknowledging that some rare individuals are simply way better than me.
And to prevent sounding like a gushing-fanboy, I suspect that his newest game won't sell very well, because his first two games have atleast something to appeal to general public (either visuals of Witness or time travel mechanics (somewhat novel at the time) of Braid) while this game doesn't appear to have the same draw.
This game has too much of a generic-sokoban puzzler vibe to it to appeal to the general public who aren't already ardent puzzler fans (and are there enough of those and can he reach enough of them? etc). And the trailer doesn't help to change this perception.
>And how would he do that exactly to whatever ungodly standards you are setting for the man?
By providing a result in a way that will be superior to the current status quo. Maybe there will be results, but right now there are none.
I have no idea why you are so invested. I don't care about the man's personality or whatever qualities he has. I look at what he does, and so far, he spent 10 years making a game that you yourself admit won't be even that good.
Of course, you could say that changing the course of the industry not possible in one man's lifetime, so you'll need to gather round more people to get the action going, but this tone actually prevents you from starting a Jai revolution.
>I don't care about the man's personality or whatever qualities he has.
The only thing I'm addressing is the so called "luxuries" you alluded to, and the alleged "luxuries" he has is directly a result of his personality and his qualities.
The only reason you don't have those so called "luxuries" is because you're not even in the same ballpark as good. It really is as simple as that.
> By providing a result in a way that will be superior to the current status quo.
But he's done exactly that.
> I look at what he does, and so far, he spent 10 years making a game that you yourself admit won't be even that good.
I'm not saying that the game won't be good necessarily, I'm saying the game probably might not sell very well (atleast not to justify the amount of money spent from purely business perspective, etc)
He hasn't. He made a programming language that allows making a sokoban game in 10 years. That's probably not what people need. The industry can make similar games in a course of several months. It doesn't look like a groundbreaking achievement to me. A monumental amount of effort, sure, but the _result_ isn't there.
Plus, _in the past_, he made Braid, in C++, in a relatively practical way. He made money using the industry standards, now he loses money deviating from the industry standards. The question I'm interested in is: why would anyone listen to what the man _says_ if his own preaching makes him lose money?
But okay, you don't want to hear any of that. You keep fixating on the "luxury" part. The reason we talk about JBlow is because he made Braid back in 2008, and it was an awesome game, and it sold well. More importantly, the timing when it released - it was what kicked off the boom of the indie game development back then. He also made The Witness, and although it was also a good game, it was most likely not as groundbreaking as Braid, considering that he chose Braid instead of The Witness for a remaster. And then he complained that it, quote, "sold like dogs**", end of quote. Unfortunately, what was the jewel of the indie game development in 2008, doesn't really excite the audience that much in 2024. The world has moved on.
The music indsutry is well aware of a phenomenon of a "one-hit wonder". If the JBlow's qualities were the only reason he could make Braid and get rich enough to not release anything for a decade, then surely anybody with these qualities could make Braid 2 and do the same thing, correct? Well, nobody can do that. Not even JBlow himself. Not anymore. It's not 2008.
> The music indsutry is well aware of a phenomenon of a "one-hit wonder".
He made two hit games, Witness was released 7.5 years later.
> Within a week of release, Blow stated that sales of The Witness had nearly outpaced what Braid had done during its first year of release.
> The Witness is widely regarded as one of the best games of the 2010s. The game appeared on 'Best of the decade' features from IGN,[103] Polygon,[104] NME,[105] CNET,[106] and National Post.[107] Edge considered the game the 22nd-best game of all time in 2017
Calling him "one-hit wonder" simply has no basis in reality.
He's at minimum a two-hit wonder.
> it was most likely not as groundbreaking as Braid, considering that he chose Braid instead of The Witness for a remaster.
Now you're making shit up on the spot to make an argument.
Think for a second will you, how exactly would he remaster Witness? Braid Anniversary Edition was announced on 2020,
at which point Witness would merely have been ~4 year old game.
Braid was also made for a 720p console, the Xbox360 Xbox Live Arcade service, so remake atleast makes some sense.
> The question I'm interested in is: why would anyone listen to what the man _says_ if his own preaching makes him lose money?
What exactly is he _preaching_? Not what you have cooked up in your mind, but actually _preaching_?
Why would anyone pay attention to the man who has made TWO hit games in a row, and a third one in his own programming language (that has inspired countless other programming languages like Zig and Odin), yes, why indeed people would listen to an exceptional guy who has repeatedly demonstrated competency and delivered results, whilst always putting it all on the line?
Can you make atleast one hit, not two, just one? Or anything of note?
No you can't, you can do nothing, that's why you don't have the "luxuries" and people don't listen to you, but pay attention to him. You might not like it, but it is what it is.
And you like to comfort yourself with the thought that you don't have some sort of unearned "luxuries", because otherwise you would do great things.
But the reality is that he's exceptional and you're not.
That the game development industry requires a new programming language. So far, the evidence for that is slim. (I mean, metaprogramming with #run is cool, I'm also fed up with cmake. But surely we don't need to throw away all of our C++ tooling for that? Nah, we probably need something more incremental.)
> Calling him "one-hit wonder" simply has no basis in reality. He's at minimum a two-hit wonder.
Okay, I've been corrected. The Witness also sold really well. So he's a two-hit wonder, he clearly had developed a process to make great-selling indie games. I admit that, I admire that. (I only said good things about the guy anyway, why you would call me a "hater" is beyond me.) But now, he deviated from this process. His primary goal now is clearly not to create a good game, but to promote Jai.
> why indeed people would listen to an exceptional guy who has repeatedly demonstrated competency and delivered results, whilst always putting it all on the line?
Because there are limits to everyone's competence. It's like a generalized Peter's principle - being successful in one area doesn't mean you'll succeed in all others that you put your hand in. Even John Carmack didn't really succeed in rockets.
After all, the game dev industry is showbiz. Its ultimate goal is entertainment. JBlow is an entertainer, first and foremost. There are a lot of musicians and actors more influential than JBlow, does that mean I won't be a fool if I listen to their opinions on anything more important than what to eat for breakfast? No, not really. And in the same way, not a lot of people will choose Jai for programming, not in the next 20 years for sure.
> Can you make atleast one hit, not two, just one? Or anything of note?
No, absolutely not. I'm actually the most useless creature of all, good for nothing (other than keeping you engaged, apparently). You got me. And I'm not even trying. I'm not trying to preach for anything, develop new industry approaches or whatever. I'm just humbly making a point: but even if I weren't the most useless, I wouldn't be able to reach the JBlow's heights. Even if I had the same set of skills that JBlow had in 2008. For example, a notable part of the success of Braid was thanks to a contract with Xbox Live Arcade, and where is XLA now? The world has changed. The market has changed. The audience's needs have changed. Becoming an indie dev of such caliber now requires a different set of skills, one that a single person might not even physically have.
At some point, you'll have to admit that (1) it's not only the qualities and the hard work that brought JBlow to where he is, but also sheer luck, and therefore (2) yes, it's a luxury. If you don't believe in (1), well, okay then. But if you agree with (1), from that (2) trivially follows. If it doesn't for you, then it's purely semantics, I guess.
> That the game development industry requires a new programming language. So far, the evidence for that is slim.
I love how you one hand acknowledge your severe lack of ability and achievement. And yet at the same breath you confidently put forward to know better - than JBlow no less - what the game-dev-industry or world at large needs. Or that you'd even have the ability to gauge evidence for it(or lack of it).
What evidence would even qualify as proof that game-development-industry (or world at large) requires a new programming language?
What is the exact threshold of "suck" that you have to cross before you go "yup, we need something different"? Does such threshold even exist?
And how do you measure it?
> There are a lot of musicians and actors more influential than JBlow, does that mean I won't be a fool if I listen to their opinions on anything more important than what to eat for breakfast?
Is John Blow making bold opinionated statements about fine-dining or something?
No? Then what are you even talking about?
Why are you constantly making shit up to discredit the guy?
This is NOT rational behavior, its some sort of ego defense:
"like how dare he say bad things about C++, who does he think he is (just some one hit wonder game-designer, just got lucky!)? He has no idea what he's talking about!"
Except, he making statements about a language that he has used extensively for more than 25years at this point. And used it to ship large, intricate, largely succesfull hit-games all with their own engines where he has done bulk of the programming work.
That is to say, you can HARDLY find anyone more competent and suited to comment on deficiencies and shortcomings of C++, and how to improve them and fix them.
Now, just because he makes astute observations about various defects in C++ doesn't make him special, after all C++ is extremely badly designed mess, and it is very easy to do so, and thousands of people have done so.
What makes him special - is that he - has mostly delivered on this (stretching himself thin in the process), whilst also making a large game at the same time. This is very rare and exceptional.
> metaprogramming with #run is cool, I'm also fed up with cmake. But surely we don't need to throw away all of our C++ tooling for that? Nah, we probably need something more incremental.
Who is this council of "we" you're refering to? A council of average Joeys that haven't shipped anything of note and is more concerned with whats "cool"?
You have roughly zero idea what the actual painpoints of making and shipping large games are.
His latest game does full rebuilds in 2 seconds, so he can iterate and make changes quickly.
There are no "incremental improvements" that can be done to C++ to suddenly make builds not take MULTIPLE MINUTES.
> JBlow is an entertainer, first and foremost.
This is what you have got wrong, JBlow is an exceptional programmer first and foremost, who also happens to be a pretty good at thoughtful gamedesign, and pretty good at doing public speaking, among other things.
> a notable part of the success of Braid was thanks to a contract with Xbox Live Arcade
Notable part of success is that he made Braid interesting enough to win "innovation in game design" at IGF.
Winning IGF ment he got contract with XLA (interested in making money and promoting platform)
This is a deterministic process, there's no dice rolls or lottery draws involved here.
If you're exceptional and you make exceptional things you succeed sooner or later, statistically speaking.
The whole thought process that if you spawned another much younger JBlow in 2026, he would be attempting to make another verbatim Braid, instead of something completely different - way more attuned to current market conditions is not very bright. He (the young JBlow clone) might not even choose to do games in these market conditions, he might chose to do exceptional, highly influential work in a completely different domain.
What however is highly likely is that he'd be highly, highly successful at whatever it is. Because highly exceptional hardworking people just succeed (unless they are born in Mumbai or Karachi)
I mean, if you're born as an average Joey, instead of being born exceptional, it is _luck_.
After all, who would choose to be average when they can be exceptional and bright?
But it is important to acknowledge at which point luck materializes.
And the lucky event wasn't XLA at 2008, the lucky event is beign born exceptional.
Most people would call being born rich a luxury. And not - being born exceptional and applying the said talent and hard work to ever more ambitious projects.
> Even John Carmack didn't really succeed in rockets.
He was very successful at engineering aspects of rocketry considering his very small and completely self funded budget. Just not comfortable burning 1mil of his personal funds / retirment money per year (that was still considerable money to burn out of personal stash in 2007/2008)
Just to be clear, your comments are implying everyone who doesn't write everything from scratch is shipping garbage.
Ignoring how misinformed that opinion is, I would say The Witness is a very compromised game. Maybe if less focus went into the technical aspect, it could've been better.
Fact of the matter is that code quality is a pretty small part of whether a game is good or not. It can be notable when it's good and it can sink a game when it's really bad, but there's a huge gap in the middle where it doesn't really matter that much (especially to the player).
Jon can be really interesting to listen to, especially when he's talking about Jai. But he can also be such a fucking tool that I can never listen for long.
I've known plenty of people like him. Clearly smart, but have spent too much of their life being defined by it. And worse, not being told often enough when they're wrong.
Political? The most political I've seen him get was when he spoke out against the idea of accepting technical compromises for the sake of not hurting people's feelings and being PC.
As in, you get to be cranky as long as you're arguing for the highest quality solution
I think an important distinction has to be made between personal values and opinions, and politics, both in the confines of this discussion and generally in society.
I think the lack of this distinction has led to much, and very painful and bitter online discussion, whereas people in a tribalist political mindset try to pigeonhole others based on a throwaway statement into either a friendly or enemy camp.
I broadly agree with the value that competence is more important in politeness or vibes, especially in people who build critical infrastructure - in fact it is a very very welcome property of these people that they care about things on a level that seems unreasonable to me.
This is true basically of everything critically important in life. One example is security. Everyone enjoys the privilege of using a web browser to visit any website and not have their PC compromised thanks to a variety of measures created by people who care intensely about these things.
If the crash testing on my car was done by people who sought out some amicable middle ground so as to not upset engineers who have to redo the frame of the car after a test gone horribly wrong, and accounting, who gets the bill for it, I would be sweating bullets every time I had to drive anywhere.
Politics imo is the worst sort of tribalism - the idea that people must be sorted into totally disjunct groups who are the bitter enemies of each other - thankfully doesn't translate into practice. Two people might root for sports teams that are eternal rivals, one person's favorite food might be hated by the other, they might disagree on what the important issues are, or what should be done about them, but thankfully that doesn't necessarily stop them from being the best of friends.
That's why there's a blanket ban on discussing politics in every place where people are expected to maintain amicable civility towards each other - family dinners, the workplace, gatherings with friends and acquaintances etc., with everyone usually getting antsy whenever 'politics' is brought up.
You made the statement that Blow doesn’t get political in an attempt to refute someone else’s comment.
Other people have proven he does.
So either you must concede that your initial rebuke was based on insufficient information, in which case why try and act like he has said nothing of concern.
Or his world views fit within your own view and are thus deemed neutral.
His comments are not a matter of opinion. And opinion that extends to affecting the lives of others , including supporting those who affect the lives of others, is very much politics.
So your favourite food is not politics but if you try and affect change that affects someone else’s favourite food, it is inherently political. If you support someone who starts affecting my favourite food, that too is political.
No it's not. Politics is the negotiation between two or more people who want conflicting outcomes.
> they might disagree on what the important issues are, or what should be done about them, but thankfully that doesn't necessarily stop them from being the best of friends.
The Republicans are led by white supremacists and they hate me for being transgender. Please stop carrying water for them. Politics matters and shouldn't be dismissed as "sports" or "tribalism"
> competence is more important in politeness or vibes,
I've been a professional programmer for about fifteen years. You could stand to be more polite.
I am not from the US. I don't have a horse in this race. Please do not imply I am somehow 'carrying water' for the Republicans, whatever might that mean. I do not have any negative feelings toward you for who you are, and I assume you're a competent individual, although I would prefer if we were having a technical debate instead of whatever this is.
I apologize if I come across as impolite, but I assure you that has not been my intention. Please understand that that there is no hidden meaning behind my posts.
In fact I enjoy the fact that Blow can talk shop about things he disagrees with (such as enterprise software with call stacks 50 levels deep).
> Please do not imply I am somehow 'carrying water' for the Republicans, whatever might that mean.
The implication was pretty clear to me, in that by reducing politics down to being things reasonable people can always disagree over, you're giving actual bad actors in the space too much credit.
> The Republicans are led by white supremacists and they hate me for being transgender
This is utterly false. At best you can claim you’ve heard of a few homophobic racists who happen to be republican . I’ve met just as many who happen to be democrat
Just to easily refute one of your 2 claims. Non-white republicans demographics is growing, not shrinking
It's possible (and true) that non-white Republican demographics have been growing and that the Republicans are currently being led by white supremacists, with the latter being demonstrated by the words and actions of Trump, Miller, Noem, Hegseth, Musk, etc.
How is it not? Respect and how youre trying to influence someone to behave is exerting power. Telling someone how they should exert their power is political.
That's not what people are talking about when they're speaking of Jon Blow's politics. Most likely they are referring to his weird takes on COVID or his MAGA tweets.
I just wonder how readily people would defend this viewpoint if they belonged to any of those groups whose "feelings" are typically being "hurt".
I don't know about you, but there does not exist any amount of technical achievement that will make me brush off sexism, racism, homophobia, transphobia, or anything else. If you are going to be disrespectful to me or people I care about, we cannot work together, period.
By "political correctness" people often mean "the basic requirement to treat your fellow humans respectfully", and that's an incredibly low bar.
>By "political correctness" people often mean "the basic requirement to treat your fellow humans respectfully", and that's an incredibly low bar.
I've gotta disagree. By "political correctness" people generally mean to not saying or doing anything that could be perceived as offensive. Especially against collectives perceived to be vulnerable.
For example, in the tiny paragraph above I've absolutely respected my fellow humans, but it can be considered offensive because you can suppose I might be looking to justify prejudiced attitudes.
For an even more evident example, political correctness has to do with the political climate and identity (as you mention: sexism, racism, homophobia, transphobia, or anything else, as well as referring to "those groups"). That is very much detached from treating fellow humans respectfully.
Dear lord, yeah, this is why I completely tuned him out years ago. Somewhat ironically it's the Blow fans in this thread that are cherry picking his comments. He's way too online so says things like this all the time, and it's the fans that are in here demanding a smoking gun comment that somehow proves he's awful rather than telling him "sometimes it's ok to stfu" to comments like this that enable and echo chamber him.
And I say this as a fan of Braid and The Witness (at least of the first couple of layers of puzzles...as you go deeper, just like with Braid, you find more and more self-indulgent windbaggery that should have been on the cutting room floor).
Wow, what a nauseating subreddit. They are notorious for poisoning the well, bad faith cherrypicking to misrepresent positions, and blowing their positions completely out of proportion, all for the sole effort of smearing whoever or whatever they make a topic about.
And everything in that post are bad faith links to secondary reactionary sources.
I don't really know much about Jonathan Blow or Jai or really follow it but it's astonishing to me that anyone could possibly take anything from that toxic subreddit with any sort of seriousness.
The Reddit link didn’t load for some reason and the other day be didn’t include anything racist, homophobic or transphobic. What it did cover is definitely a simplistic view ignoring the cultural nuances that might lower women’s participation in stem, but I’m not sure I’d classify it as sexist.
curious what you mean. i dont actually take any side on the original question. i dont really know enough to have an informed opinion - and im a bit skeptical one could prove anything given the confounding variables
but the idea that you cant even a-politically pose a question about biology - i dont really get the logic there. seems antiscientific
Issue is when MAGA people (Like Blow) say "women are biologically inclined towards X", it doesn't come from a place of geniune scientific curiosity, but rather a way to advance their misogynistic agenda. There is nothing you could ever say that would change their "opinion" on the matter.
Truth is, programming was women-dominated in its inception, but was taken over by men when programming the computer became more prestigious. Whatever biological factors at play here, they're completely overridden by sociological factors.
I was just speaking generally, I also don't have a side there. But for clarity, what I meant is that templates to the tune of "[subset of people with X characteristic] are more / less prone to [Y characteristic]" can construct blatantly false sentences, and also sentences that, irrespective of whether they are true (or that they are falsifiable at all, as you add), have a heavy political penalty.
I also don't think that's bad - you can say blatantly racist things with that template, and I'm ok with those things not allowed to be said in lots of contexts.
The idea that there could be biological dispositions to using a computer, the least natural thing I could think off, is well and truly absurd. Anyone still "interested" in this topic is coming from a place of unsubstantiated vice signalling, and completely uninterested in hearing any actual biologist's take on the subject, in my experience.
Let's not forget that the first generation of programmers was mostly women, until the job became high-status enough that men could take over. Takeaway: it's all bullshit.
It's really quite funny too, because women were a huge population of programmers and computer science graduates all the way up to the mid 1980s, when the ratios began flipping in favor of men. The biological argument would assume that either something changed biologically from 1980s onwards to make women less predisposed to be programmers, or (the more usual argument I see) 'that they were just doing the gruntwork' which usually exposes them as who they are.
Not defending the guy, but he's possibly on the autistic spectrum, given he grinds solo on his projects for decades and stuff.
He may perceive his own appetite for programming as being linked to some form of autism. Because, well, computers are not people, so it's nice to avoid people.
Given that there is a proven gender discrepancy in the distribution of autistic disorders, it's not completely absurd to imagine that men could biologically be more attracted to working with computers than women.
Without wanting to go too far out of my depth, I have read a few times now that a lot of the perceived growth in autism rates could be attributed to our society pushing people into adopting behaviors previously attributed to "actual" autism. Spending time on the computer as a kid (playing video games, etc.) is still mostly a boy activity, because of societal reasons, and can certainly lead to adopting these behaviors later in life in some cases (not making any value judgment here). I would be willing to bet that, had programming stayed a women-dominated position, we'd have more women than men on the spectrum today.
I'm telling you: I'm out of my depth here. I don't need opinion on gay conversion therapy though, it's been shown repeatedly to be completely ineffective (and extremely cruel too). What's your point?
Careful though, I'm not telling you that playing video games as a kid makes you autistic, I'm telling you that doing so can make an individual adopt behaviors previously thought to define/be exclusive to autism.
Could there be a difference in the social reward centers of the brain, based on gender, possibly from the biological necessities of having children? We know reward centers are not the same, between the sexes, since heterosexual attraction is the norm (and why gay conversion therapy can't work). Some brain structure and function is hard coded.
Could these hormone influenced reward centers differ in social rewards, or for human interaction? Computers are not human. Maybe [1], but don't expect much research proving it one way or the other.
How would that explain the very basic fact that most programmers were women in the early days of computing? It can't. The most important factors deciding which gender is most represented in programming are sociological.
You need to look at the history of it all. There wasn't the freedom back then, that we have now, where women could choose their profession based on personal interest. Back then programmers were women. It wasn't considered a man's job [1].
When you look at the history of it all, it clearly shows that men have always been misogynistic bigots oppressing and driving women out of educational opportunities and professional careers, and they still all, even more so today than ten years ago, due to the rise of GamerGate, MAGA and Project 2025.
In case you are ignorant. This is about the "things vs. people" finding. You can e.g. find it linked on wikipedia in the "Sex differences in humans" article.
If it's biological or not is kind of hard to prove without unethical experiments.
I am not disputing that there exists differences in vocational choices between genders. Programming as a discipline is a textbook sociological example though: it was women's work when it was thought as "gruntwork", and then became men's work when it got prestigious enough, almost overnight (in historical scales). If ever there exists some biological predispositions towards programming, they are largely overriden by sociological factors, to the point that using biology to explain why programmers are mostly men today is truly ridiculous.
He gets political.. Just as an example, he claimed that it was obvious that COVID was a lab leak in 2021. This is not obvious at all if you read Michael Worobey's rigorous work instead of rely on Blow's arrogant intuitions.
I will still play Jonathan Blow's next game, but I think he is a bit of a hack outside of game design.
The lab leak theory was always credible. Here in Canada there was a big scandal with Chinese scientists who worked for one of our labs who secretly transferred specimens from Winnipeg to Wuhan in 2019 and the subsequent police investigation went public in 2020.
Its not credible: two viral lineages emerged from the market ~1 week apart before the world knew what covid was; they differ by 2 nucleotides; mutation rates are 1e-6 per base per passage; doubling time is about half a week. A group of sick animals better explains the phylogenetics w/ these constraints. Everything points against lab leak: location, timing, and genetics.
You should google the definition of credible since it seems you don't know it... (Hint, it doesn't mean 100% true)
It really boils down to: do you trust a brutal communist dictatorship that has been attacking the West asymmetrically and wants to invade its neighbours to be honest?
Multiple Western governments believe it was a lab leak and coincidentally I'm sure, relations with China have been quite bad since.
Any conclusion about a pathogen origin requires phylogenetic evidence. Everything else is secondary. You could write a trillion intelligence memos in the absence of genetic evidence and get no closer to the answer.
If you want to deny sequence data that predate worldwide recognition and controversy related to COVID-19, OK. But the origin question can never be answered with this denial.
Most of us are grossly unqualified to provide opinions on any domain save some hyper specialized domain we invest years of effort into. I always think about that when reading comments on the Internet :)
If only the tech gurus of the internet stayed in their lanes, or if people knew better than to take their beliefs from clueless entrepreneurs who got lucky once, the world would be a much better place. Alas, tis not the one we live in.
A lot of skills in say, running a business, really do transfer. It is possible to gain expertise on how to run a small business and translate that to other realms of running a business. But it is also important, perhaps critical, to recognize limitations. The less similar the situation and environment the less that will transfer. Some times enough transfers that the insights are useful. Some times it is actively harmful to apply previous approaches. Recognizing the differences and what transfers is much harder but also a skill. Becoming skilled enough to help up until your limitations is how you can continuously be successful in domains you have no right to be. The irony is even then you may still not really be able to offer helpful insight.
That particular tweet only says that he preferred Trump to Kamala which IMO is a reasonable opinion. It does not say that he likes Trump. Given the choice between a douche and a turd sandwich you pick one. Maybe post some other tweet?
> That particular tweet only says that he preferred Trump to Kamala which IMO is a reasonable opinion.
Maybe for you. For people like me, voting for Trump is completely unacceptable, in particular after the experiences with the first Trump administration.
I don’t know any of the context but how could hurting people’s feelings ever be relevant in the context of technical implementation of the game if that’s what we’re taking about?
He's a Trump fan. Is he stupid enough to believe Trump's illogical promises, or does he see through them and is OK with all the unconstitutional and immoral crap he's done? Either way he's political.
If you haven't seen much of his posts or opinions in the past five years maybe, but he's gone pretty far off the deep end recently (see: calling all men under the age of 40 supercucks). He's always been sort of a holier-than-thou asshole and that's driven him to increasingly dumb arguments.
Jonathan Blow is one of my personal heroes, but he does seem to be living 5 years behind politically (he spends a lot of time ranting at the woke crowd, who seem nowhere to be found anymore anyways). That's probably a good thing. I doubt he's as addicted to the internet as the rest of us. He's said some odd things in interviews in the last couple years though.
I wanted to substantiate this, but I couldn't find the clips (which do exist... I just want to get on with programming and close hn for the day.. not succeeding). I did find that Jonathan Blow tweeted "Nature is healing" after Trump won, so you can get an idea for where his politics are from that. (Still love the guy, even if politically he's your angry uncle.)
He is definitely "online". I saw him tweet about Hasan's dog which - you have to know about streaming political figures and the latest happenings at least a little bit. Maybe not addicted but he knows what is up and still has the views he has.
I wonder how people are able to stay functional while being online. I'm in 2 states. (1) Very productive and joyful. (2) Extreme dysfunctional and commenting on HN and Reddit.
I feel like "simplicity" is often fetishized to the point of counter-productivity.
Show me anything that either Blow or Muratori are doing that couldn't be done in an existing language or framework.
People laugh at games with thousand-case switch statements or if/else chains but they shipped and the end user doesn't care about logarithmic complexity. And most of the time it doesn't even matter. What fails with games more often than not is the design, not the code. What features in Jai make it superior to C++ for writing games specifically? Or does it, like Typescript for JS, only exist because of extreme antipathy towards C++?
Time is a resource too, and arguably a far more valuable one for developers than LOC or memory or what have you.
Right, if you look at say, Blue Prince, one of the most important "out of nowhere" type video game releases of 2025, the actual software engineering is trash. I'd fail code reviews for a lot of what was done, and there are cracks in the façade where a player will hurt themselves as a result - e.g. there's a bug where animations overwrite so you get short changed on the resources you were gathering when you go "too fast". Some of the intended features, especially in the 1.0 release, just don't work for reasons like somebody typo'd a variable name, or they forgot how a function worked.
But the game is amazing and that's what matters. Nobody wants to play six hours of carefully engineering tasteless crap, let alone (as many did with Blue Prince) six weeks. The 1.0 Blue Prince game was already excellent, unless you run into a nasty save corruption bug on PlayStation, whereas a game made Jon's way might be a soulless waste of your life even though perhaps the engineering is "better" in some sense.
The idea you have to pick between reasonable engineering and fun is a false dichotomy. Of course not every game will have the time budget to fix every unintended feature but your example game would have been more enjoyable (especially for the mentioned Playstation users) if the code had been written a bit better.
I think for games like Blue Prince, specifically, it’s not a false dichotomy.
Those are made in tiny teams. You can either spend more time tinkering with the gameplay mechanics and experimenting with the game parts; or you can put on your software engineer hat and make the code better (or, spend even more time to learn how to make the code better in the first place!).
This gets less true with scale of a team, and with 5000 people behemoths you probably should care _a lot_ more about the code; but ROI on improving the code in (relatively! Calling Blue Prince “small” is ridiculous.) small games is very dubious.
Of course programs will be worse when non-programmers are in charge of programming. That doesn't mean they shouldn't but lots of indie game attempts fail because the programmer (educated or not) doesn't have a clue about when to refactor and make sure the design of the system matches the intention of the game. You can only tinker until a certain point, after that you're just creating new bugs by fixing other bugs.
ID software once was a small team and they built complex games by writing tight code which was modular and very clear. Lots of their '3d era' contemporaries failed because their engines were sloppy, complicated, buggy and slow.
A lot of core game logic is presumably Tonda's work. He's a director, not a software engineer. He came into this, many years ago, wondering if the "easy" tools to make a video game meant he could just make the video game he was imagining, and of course the answer is "Yes, but..."
Blue Prince is (an extrapolation of) that first game, but it looks and sounds like competent people worked on it, not like something slapped together by a non-engineer in a week. However while you can hire experts to make "You know, like cool jazz for a mysterious underground area" or "Art that looks thematically like it was sketched, but also feels solid enough that you could lean on it" it's very difficult for software engineers to "just" fix the software to get rid of bugs because what's a bug? Only the puzzle designer knows for sure what they intended.
[[Spoilers! Do not read if you are still playing or might play]]
Is it a bug that "Swimming Trunks" don't let you swim? No! That's a Dad Joke. They're Trunks. Large locked wooden boxes. They're in the swimming pool, and if your pool has water in it, that means they're swimming.
When I picked a time from my near future in Shelter, it didn't work, that's a bug right? Nope. The Shelter cares about game time, not real world time. Make sure you know the date in game.
OK but is it a bug that being in Clock Tower at the Sacred Hour doesn't have any effect? Um, maybe? It seems as though the software doesn't believe clocks repeat, so only the first time will actually work. Or, maybe the second does too? It's hard to say. Try again?
I need food but somehow I keep digging up keys and money. That's a bug right? Nope, probably means you have made a Contraption which changed your dig probabilities.
OK, so that's also why my Door facings are weird even though I put my Compass-based Contraption in a Cloak Room? That one's probably a bug.
Still, "If you draft it quite late" ought to mean my Music Room has the key right? Well, maybe, what did you think "Quite late" meant?
"I thought after a few hours would do it". Huh. Well, maybe. "OK, what about Rank 7?". Rank Nine would be better, but it might be enough, depends. "I still get no key, are you sure this isn't a bug?". The most likely problem is that you've done Music Room. If so the most likely key to wrongly believe you did instead is Vault, although Station is also possible. Check the other locations.
It’s not a false dichotomy imo. If the creator of Blue Prince had concentrated on code quality it’s likely they’d never have shipped. The same would be true for the creator of Undertale.
That's true, a game like Blue Prince doesn't suffer from bad engineering because of the type of game it is. There are plenty of other games, like Cyberpunk 2077, where the lack of engineering made an otherwise good game unplayable and unenjoyable.
The fact remains that Blue Prince would have been more enjoyable for those people who did see those bugs had some time been spent on better engineering.
I think the question is whether Cyberpunk 2077 would ever have been made under the constraints that Blow and Muratori talk about. Like, Order of the Sinking Star looks pretty impressive, but from what I can tell it's basically just a bunch of Sokoban-style games operating on a fixed grid. You don't need anywhere near as complex an engine for that as you do for a game like Cyberpunk 2077.
My impression is that the Blow/Muratori style works well if you're the only person working on a game, or part of a very limited team, which is fair enough, but it naturally limits the scope of what you can achieve.
Having a 3D engine does not a AAA make. The Witness is a beautiful looking game, but the amount of state and interactions it has to deal with is orders of magnitude less than GTA: San Andreas. It is closer to the complexity a Myst remake would have.
It's not a lack of engineering, but a lack of time, no? 5 years later and Cyberpunk runs on the Switch 2, MacBook Air and Linux Gaming Handhelds. While also scaling beautifully to 64 core CPUs or $3000 Nvidia raytracing GPUs.
I'd add Dispatch as a more recent example of this. It's a buggy mess for such a simple game (I encountered multiple game breaking bugs in one play-through) but its reviews are overwhelmingly positive.
I think this is one of the first lessons independent developers quickly learn. I think we're initially geared to want to make beautiful, elegant, and technically pleasant code because it's our thing - it's like how e.g. a guitarist is going to want to play a song other guitarists would be impressed by. You spend a million hours perfecting Classical Gas, while Smoke On The Water goes down as one of the most iconic tracks and riffs in history.
I'm not endorsing slop, but rather advising against the equal but opposite.
>People laugh at games with thousand-case switch statements or if/else chains but they shipped and the end user doesn't care about logarithmic complexity.
This "not caring", from both coder and end user, is why the end user constantly gets buggy, slow, and resource hungry software, be it games, or other kinds.
> People laugh at games with thousand-case switch statements or if/else chains but they shipped and the end user doesn't care about logarithmic complexity.
Both Blow and Muratori would likely advocate for the this type of code to some degree.
I hate C++. It’s possibly my least favorite language. Slow compilation, awful mess of ideas scattered around, syntax soup, footguns galore. Typescript has become one of my favorite languages. It’s not perfect, but it’s surprisingly good and pragmatic. JS, on the other hand? No thanks. Static typing is something I never want to do without again.
I can’t find anything about Casey Muratori or Jon Blow discussing Yandere Simulator.
But even if they did comment on the quality of the code, when they talk about so simplicity they are generally talking about avoiding unnecessary abstractions (usually OOP abstractions), not any of what the OP is talking about.
> What features in Jai make it superior to C++ for writing games specifically?
Some examples that come to mind from my personal experience.
- Compile times. 1-2 seconds vs the typical build times in a C++/Rust game can be a game changer
- Massive compile time capabilities.. you can have an entire content pipeline executed at compile time, all written in Jai
- Builtin Type reflection.. another gamechanger in games for editors and such
- Very easy to debug, the minimalistic approach means the code is not heavily transformed by the compiler thus really easy for a debugger to follow and still performant. Example: loading the same gltf file in my engines in Rust and C++ debug mode is MUCH slower than debug mode in Jai.. again, game changer.. you hit build/run and you're back in the game in few seconds.
- Very easy to learn
- Very ergonomic in its minimalism
- A lot of small things you instantly miss when jumping to other language.. one thing on the top of my head.. the ability to have struct members "overlay" other specific locations.. so you could have a Matrix4 struct with Vector members "forward" "right" "up" etc
- The builtin "context" based "temp allocator".. perfect for games, anything that is needed for a frame goes in there with close to zero allocation time and it gets reset every frame at zero cost
Jai has a HUGE potential if it can survive Mr. Blow's ego.. which is a big big ask.
> What features in Jai make it superior to C++ for writing games specifically?
I know that Jonathan Blow can be abrasive and one-sided in his talks on programming, but I think we should be open-minded about Jai. Yes, he is making this language because he doesn't like C++, but you make it sound like he is hating on C++ just for the sake of it.
I mean, is it really so hard to imagine that someone might not like something about C++? There are plenty of people who think we could have a better systems language, which is why we have seen languages like Rust, Zig, and Odin pop up.
In Blow's case, he has said that he doesn't like Rust because he feels that satisfying the borrow-checker slows down iteration time[1], which is important especially in the early stages of game development when you are still experimenting with mechanics are where requirements and architecture are still very much subject to change.
As far as what Jai offers, it seems his focus is on making a simple but powerful language (contrary to C++'s ever-growing bag-of-tricks), with fast compile times (less than 3 seconds on a full build of his new game), better build and dependency management (no more cmake), and powerful meta-programming features.
In a talk on the language[2], he demos how he is able to use the language's meta-programming features to develop powerful code-analyzing and memory-analyzing tools.
These tools, in particular, hint at his philosophy: lots of ideas in programming like RAII, garbage collectors, and borrow-checking exist to save the programmer from themselves. He's not interested in this and believes that these features come with hidden costs. Instead of accepting those costs, he would rather have a language that gives him the tools to save himself.
Personally, I don't understand the hate. If Jai is a good language, then it will benefit all of us. If it's not, then his making it still hurts none of us.
I feel like a lot of people go after Jai because of what Jon Blow says about XYZ political issue. Jai seems perfectly reasonable for at least the narrow task of making games in an indie studio. The macro capabilities might be terrifying in a large enterprise, but if you're handrolling all your own code and don't have to worry about a software supply chain, who cares?
I go after Jai because I think the problems it is purported to solve are better and more readily solved with existing frameworks, libraries and engines, and I think the programming language itself is entirely too low a level for these things.
You don't need to design a specific language to implement structs of arrays, you can just... do that.
Jai hasn’t even had the whole array of structs to struct of arrays thing in years.
Also speeding up compilation time really does require a new language or at least a new compiler.
And why would you “go after” any language. If you don’t like it, don’t use it. The only thing going after it is going to do is to drive up the engagement metrics and make it more popular.
>And why would you “go after” any language. If you don’t like it, don’t use it.
We are on a discussion forum. One of the common use cases of a discussion forum is criticism and debate. Yes, we could all simply use the tools we want, and not use the tools we don't, and not waste time expressing an opinion either way, but again this is a discussion forum.
And it's not as if I posted "Jai delenda est" here, I think my opinions are mild compared to what people here have to say about javascript, or C++ or PHP or any other language. I just don't think that a gamedev specific language is a good idea, compared to implementing libraries and frameworks in an existing language. I don't like the bespoke languages used by frameworks like Godot or GameMaker either.
This reads as if the process and the finished work are somehow separable. If your code is a mess that you hate working on, it seeps through to your design and your design process. I too had a brief period where, for example, I thought dynamic typing lessens friction, but in reality it just causes massively more friction down the line. Many people never get to go down the line, so that is fine for them, but not me.
>This reads as if the process and the finished work are somehow separable. If your code is a mess that you hate working on, it seeps through to your design and your design process.
I didn't say anything about hating working on the code, but every example of game code I've seen has been a mess, even in games that are considered well designed. So I have to disagree - the process and finished work often are separable. What are ports if not an example of that?
There's a fair bit of survivorship bias in there. Few games are considered "great". Roughly half the games get canned during development. So while it may be impossible to make any game in a reasonable amount of time without creating some sort of mess, nobody would argue that a worse process isn't detrimental to the project. It could be the difference between a game being good-but-flawed and a masterpiece, or between "not salvageable" and "shippable".
Moreover, the "survivability" of the process goes beyond just one project. Jon got so burned out on the C++ language that he'd rather create his own language for the next project than use it again. If he didn't have to do that, he'd likely be working on the next title already.
Jai is designed for games, it aims to do a few things that can help game developers, as well as developers in general.
- Lower compilation times for debug builds.
- Better debug messages.
- A standard library that comes with a production ready graphics API, so gamedevs don't need to worry about the current state of graphics API and can just dig in.
- Standard input API for cross OS development.
- AOS to SOA automatic conversion to simplify code that needs to be performant, while retaining a clean syntax.
- A context system, which should help with simplifying functions definitions while keeping things strongly typed.
- The ability to rewrite ASTs, to do compile time programming. Ideally simplifying code, while keeping runtime speed performant, and keeping compilation speed fast.
This is just to name a few off the top of my head. The performance and API stuff is directly going to help game devs. I view it similar to Odin, something that is in production software right now, where you can have a clean langugae, with a strong standard library and primitives to help you develop quickly.
Note that of course Jai's tooling is also written in C++
As to why Rust, there's actual historical information about why Graydon wanted to make it and why Mozilla decided to fund that work after it was started.
Jon has said the intent was that Jai would allow him to make more games, because C++ held him back so much. So, yeah, it would need to be superior to C++ in at least this way, and by at least enough to justify the effort expended, writing C++, to develop Jai.
I mean, he's _allowed_. The Compiler Police aren't going to roll up to his house and take away his Jai compiler if there isn't a quorum of HN users blessing his efforts. But people can point out they don't feel the juice is worth the squeeze. Also, Blow is certainly an advocate for his position, which means this kind of public debate is germane to the question of if _other_ people should adopt Jai.
A syntax to mark structs to be stored as SOA in arrays is the only one I see that doesn't have a modern C++ analogue (besides things like no header files).
Const expressions, defer (but not sure its significantly different than using destructors), some smart pointer stuff...
I assume you need to compare it to C++ from more than a decade ago.
I think that document is no longer very close to Jai's current state, note that it wasn't edited for quite some time and Jon seems happy to just rip stuff out and replace it wholesale, after all there's only a handful of Jai programmers so if not now then when?
In particular I believe the SOA stuff is gone, my impression (I don't have privileged access) is that SOA is one of those ideas where you think "Oh! This changes everything" and for the next week or two every time you do something you realise SOA would make it better. But a year later you find yourself unwinding some of that SOA mania and you realise eh... this isn't such a great idea that it deserves to be a key language differentiator. It's not useless but it's also not fundamental so maybe write a library or something.
There are a few other data structure tricks which can hit people this way, I remember I had a brief period where I wanted to solve everything with Bloom Filters and then I got better.
In terms of languages you can go try yourself today, the closest might be Ginger Bill's Odin. Shared scepticism for both C++ and modern language trends, syntax is reminiscent though far from identical. I'd be surprised if you hate one but love the other.
Edited: Somehow I removed "no longer" from my initial sentence during editing, which inverted the sense, now fixed.
This. As much as I love listening to JB, graphics wise he’s not doing anything ground breaking, it could even be done on the web. But I understand for him the architecture for his games being perfect is what makes it worth it for him.
Except, this complexity isn't saving time and resources. This complexity admiration culture has resulted in slower code thats harder to understand, debug and maintain too. What should be used only for small amount of time is used from get go like complex architecture and deep abstraction. Fetishizing simplicity is bad too for sure but a blip on a radar and not such a trend and far less of an issue compared to fetishizing complexity thats rampant.
Not a game dev or even a gamer, I'm defending attack on simplicity not blow or muratori.