9 ms·
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 c
by piker 11mo ago
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.
- krapp 11mo agoI 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.
- manuisin 11mo agoThis. 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.
- incrudible 11mo agoThis 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.
- krapp 11mo ago>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?
- incrudible 10mo agoThere'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.
- olejorgenb 11mo ago> Or does it, like Typescript for JS, only exist because of extreme antipathy towards C++? Typescript exist because people want a type-checked language.
- ido 11mo agoYeah, I too was wondering about that comparison...Programming in TS is more pleasant (to me) than JS.
- coldtea 11mo agoStill, could that be because you're more of a C++ type personality code than a JS one?x
- christophilus 11mo agoI 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.
- tialaramex 11mo agoIt's easy for both C++ and Javascript to be horrible languages. Dislike for one doesn't have to result in fondness for the other. Brendan Eich at least has the excuse for Javascript that there was a tight deadline. What's Bjarne's excuse for C++?
- pharrington 11mo agoJonathan Blow makes Jai because he wants to make Jai. It's the same reason he makes his games at all.
- tialaramex 11mo agoRight, 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.
- bzzzt 11mo agoThe 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.
- klausa 11mo agoI 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.
- tialaramex 11mo agoA 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.
- coldtea 11mo ago>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.
- dgb23 11mo ago> 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.
- tommy92 11mo agoExcept, 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.
- sarchertech 11mo ago> People laugh at games with thousand-case switch statements or if/else chains but they shipped You have a very incorrect view of both of them if you think this is the kind of thing they are arguing against.
- bmn__ 11mo agoThis refers to the decompilation of Yandere Simulator. This argument really happened. There is a whole rabbit-hole on Youtube if you care to confirm.
- sarchertech 10mo agoI 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.
- matthewkayin 11mo ago> 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. [1] https://www.youtube.com/watch?v=4t1K66dMhWk https://www.youtube.com/watch?v=4t1K66dMhWk [2] https://www.youtube.com/watch?v=IdpD5QIVOKQ https://www.youtube.com/watch?v=IdpD5QIVOKQ
- TheMagicHorsey 11mo agoI 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?
- jackling 11mo agoJai 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.
- dismalaf 11mo ago> What features in Jai make it superior to C++ for writing games specifically? You can write games in C or Fortran, so why write games in C++? You can write things in C++, why make Rust? Basic worked, why make Python or Ruby? Why does it need "features" that make it "superior"? It should be good enough that he didn't want to use C++, so he made a new thing...
- tialaramex 11mo agoNote 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.
- dismalaf 11mo agoIt was a rhetorical question. I think anyone should be allowed to make any language they want for whatever reason they want. And IMO C++ is painful enough to use that nothing needs to be "better", more ergonomic is good enough for huge productivity gains.
- tialaramex 11mo agoMy understanding of "better" would include better ergonomics.
- cwyers 10mo agoI 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.
- jayd16 11mo agoLooking at this, there's some nice features in there, I guess. Likely the major features are about what it doesn't have. https://github.com/BSVino/JaiPrimer/blob/master/JaiPrimer.md https://github.com/BSVino/JaiPrimer/blob/master/JaiPrimer.md 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.
- tialaramex 11mo agoI 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.
- kunos 11mo ago> 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.
- HellDunkel 11mo agoNot sure about the „minimal resources“. Didn‘t he come up with his own programming language for thia one? Maybe should have invested more in art.
- leloctai 11mo agoIf a decade worth of cost of living is considered minimal resources, successful indie games wouldn't be so disproportionately Scandinavian
- coldtea 11mo ago>If a decade worth of cost of living is considered minimal resources Compared to the mainstream AAA game cost it's less than minimal, it's pocket change. And it's not like somebody handed him that money, he made it creating and selling games earlier.
- jayd16 11mo agoOk for a decade of a senior dev, that's still like $2mil. That's in the same order of magnitude as a small AA game. Supposedly the dev budget for the last pokémon game Z-A was only $13 million.
- torginus 11mo agoPolitical? 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
- kryptiskt 11mo agoHe's an anti-vaxxer.
- simonask 11mo agoI 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.
- jabbywocker 11mo agoDon’t follow him much but do you got any links discussing Blow being sexist, racist, homophobic, and transphobic?
- jna_sh 11mo agoThe second paragraph of the linked article?
- armitron 11mo ago[flagged]
- perching_aix 11mo ago
- EvilTrout 11mo agoBlow 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.
- ferguess_k 11mo agoI 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.
- stocksinsmocks 11mo agoThus, by their fruit, you will recognize them. Heckling is a lot easier than creating. Personally, I think we have an over supply of “ideas guys“
- christophilus 11mo agoJai is a real thing that others are using. I wouldn’t say Jon is an ideas guy. He executes.
- wahnfrieden 11mo agoWho is using it today? edit: Oh so others are not using it...
- jstimpfle 11mo agoHe 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.
- scuff3d 11mo agoJon 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.
- asystole 11mo agoHe's the Stephen Wolfram of game dev.