I’ll say it again: I think he makes cool stuff! I just don’t think hes right about his judgement here
That's extremely reductionist. He's saying that modern software is crap regarding performance. And whenever he does complain, he manages to demonstrate it.
Sounds like a recipe for lots of bugs.
Nobody said or implied that you need to eschew libraries and write everything from scratch to achieve performance, and it is frankly a very dishonest way of conducting this conversation.
Especially considering that we’re talking about someone (Casey) whose previous job was pretty much selling high-performance libraries (RAD Tools).
The claim from the (to be cheeky) “anti-performance” crowd is that it is impossible or unnecessary to extract more performance from modern computers. All that we’re saying is that things are not so black and white.
“The conclusion”, if you need one, is that people saying that more performance is impossible or impractical as a knee-jerk response are often wrong.
My point is, if the claim is that modern software is bad, what do they offer as the solution to that?
> The conclusion”, if you need one, is that people saying that more performance is impossible or impractical as a knee-jerk response are often wrong.
This is barely a statement. I've never heard "performance is impossible" from anyone, and it's amusing you would accuse me of a strawman and then introduce one like this.
If you want to paraphrase him correctly, he has claimed several times that there are several low-hanging-fruits performance-wise in modern software.
> I've never heard "performance is impossible" from anyone
First, I said “impossible or impractical”. This comment section is littered with the second. Second, this is not an exaggeration, nor refers to you. It actually happened: a FAANG product manager told Casey it would take several years and a PHd degree to fix some performance issues in a MS product that Casey had diagnosed. Casey then proceeded to create a performant proof of concept with feature parity over a weekend or so.
> what do they offer as the solution to that?
Are you asking for a silver bullet? Because there are none. The first step towards a solution for low performance in modern software is stopping the automatic reactions of saying performance is unnecessary, impractical or even impossible, whenever someome with enough knowledge of the problem domain claims otherwise.
The path to faster software involves actual hard work, rather than attempting to publicly shame people who offer solutions.
I really don’t think this is unreasonable at all.
Again, what solutions? Until you can define what these are I'm not sure what his position is or what he's advocating for.
No offense but I've exhausted my interest in the topic, take care
I am talking about actual concrete solutions. “Do this code change and the bottleneck will go away”.
This person offered ACTUAL CONCRETE SOLUTIONS to performance issues. He literally opened bug-tickets and discussed with the team, and provided proof-of-concepts, but a FAANG manager attempted to shut him down.
This is not some snake oil salesman offering magic performance beans, this is someone who actually knew what they were talking about, and was able to diagnose performance problems in the operating system and solve it, for free. This isn’t some hypothetical, he REALLY did fix it despite being told it was impossible.
EDIT: Like the sibling poster said, the systemic solution is to "git gut". Which is clearly impossible as long as developers and managers foster a culture of dismissing performance, or in some cases inventing excuses not to work on it, as was seen in the Casey/Microsoft debacle.
The solution is to git gud.
There certainly was actionable advice in the couple of his videos I've seen (I haven't watched many, he's a wandering talker). But the underlying theme is about development process and frame of mind. Just adopting a list of techniques would miss the "greater than the sum of it's parts" value.
someone unironically espousing this as a "solution" to a struggling creator will never understand why other frameworks become popular when they cater to helping them out instead of throwing a book at them. That's why Unity is more popular among small creators. They don't necessarily want to be an engineer, they want to create art.
This mentality spreads outside of programming to other software as well. Gimp, Blender (which is fortunately making changes towards accessibility), etc.
You seem committed to the idea anyone is advocating yac-shaving by a highly constrained developer. I'm not seeing that.
Like anything in software projects, the path of least resistance will get you to the quality floor. Trivially actionable advice doesn't exist because it will become part of the quality floor. That's just the evolution of software.
That doesn't mean there isn't actionable advice that's low on the learning curve. But like others skill, there is an unavoidable learning curve, it also takes time to apply the skill, and choosing when to apply it is a skill in and of itself. That's just life in development.
I'm not saying to never sacrifice quality to get products out the door. But there's also nothing wrong with acknowledging when that's being done. And the state of affairs is that performance is very frequently sacrificed, leading to a pretty damn sorry looking status quo.
Poe's law is in effect. I've seen that sentiment elsewhere and even in this post espoused unironically. It happens quite often in these circles unfortunately.
>I'm not saying to never sacrifice quality to get products out the door. But there's also nothing wrong with acknowledging when that's being done.
there isn't, but there is something wrong when you question the quality of a developer over it, while not understanding their constraints on knowledge, time, scope, and overall goals. It's just very presumptuous and I've never seen a justified case to shame someone as such.
Promote good practices, educate on bad ones. You can do this without such attitude as "git gud" which targets devs directly (which may not be something you said, but it is said often enough that I feel a need to address it).
Nobody is, though, and if you see other replies with the “git gud” text you’ll see this is used as a way to attack anyone who cares about performance.
This is the Electron or Hybrid app argument all over again. For 95% of the applications built, the ability to launch on Win, Mac, Linux, Android and iOS far outweighs the bloat and performance hit you have. But for the few AAA titles out there, then yes supporting native support might be worthwhile.
I mean, thats what modern software development is all about - tradeoffs.
I don’t think anyone is saying it. Grandparent poster is inferring it incorrectly.
Is anyone, Casey or someone in this thread, complaining that Unity or Unreal have low performance? I don’t think so.
Casey Muratori’s performance rants of the past were almost always about specific pieces of software and in the most public of those he managed to show how to fix those in an acceptable timeframe.
https://news.ycombinator.com/item?id=31069502
> That's extremely reductionist. He's saying that modern software is crap regarding performance. And whenever he does complain, he manages to demonstrate it.
Did you even read the thread I was responding to?
I'm not GP, but I read the thread, and it seems like you think that this guy has severe performance problems with every piece of modern software, and therefor he has severe performance problems with UE and Unity. He doesn't though. If he did, he would probably publish some rant about the particular problems he has with these particular pieces of software
You didn't read the thread then. The parent of my parent commented that they thought performance was a problem. I was just responding to that inference. That's all.
You are talking about my post. I did not say anything specific to UE5, I was only trying to fix a misrepresentation of someone else. Please read the full thread for context, and also my replies to you if you need clarification.
Also, please read to this part of my comment if you want to understand the situation:
> Casey Muratori’s performance rants of the past were almost always about specific pieces of software and in the most public of those he managed to show how to fix those in an acceptable timeframe.
And, that's where he lost me. Software was always crap. Emacs = Eight Megabytes and constantly swapping.
Because even if you squeeze every last cent of performance, someone will have a great idea that will spend each dime you saved and then even add some debt on it.
Performance is never a positive as much as a disqualifying negative. Features are what sell the software. Why would people use/pay for IDEs over a free text editor.
And if you listen to Casey's advice, well, be ready to rewrite your entire stack because almost no software today is willing to do what you need. It's a good advice if you know you'll keep programming for next 120-30000 years. And don't have any competition willing to cut corners.
Except we're talking about video games, where time and time again performance was crucial in achieving new breakthroughs, from Mario's side scrolling, to Carmack's advances in FPSs, to... FFS, we're talking about Unreal 5, this version's selling point is mainly being able to do in realtime what was previously only possible before with offline rendering.
Just because there are trash mobile games that make money doesn't mean there isn't money in high-performance software.
Not really. Most of the times Casey & Co. (Blow et others) have entire rants bitching about photoshop, visual studio,windows, websites etc. They tend to present videogames as example of "how it should be done".
They (again, as Casey&Blow and the rest of the group they seem to belong to) have this weird attitude of automatically dismiss anything that doesn't belong to whatever microsubset they are already very experienced in.. so Rust is shit, C++ is shit, GC is shit, smart pointers are shit, get/setters are shit, public/private is shit, memory safety doesn't matter and so on.. all this while not offering any alternative other than "git gut". I tend to agree with a lot of the rants to be honest but I also perceive their suggested solutions as total non starters for large scale development.
Or, in specific cases, such as OOP criticism, with very vocal disclaimers that his view deviates from the mainstream. Are those people not entitled to an opinion?
The last time one of those happened publicly, Casey was able to provide a proof of concept in a very short timeframe, despite claims that it was impractical and borderline impossible to fix.
But because Casey and Jon are friends and frequent collaborators, and generally prioritize the same things, they get interpreted as sharing each other's views about everything. They don't, but the mischaracterization is not easily dispelled.
In that domain speed is pretty important, but even there it's not as crucial as you might assume. I'm not saying discount it altogether, just good gameplay will trump good performance. They aren't completely unrelated, but there are diminishing returns.
What are the titles that need to be that much performant? AAA titles are just rehash/sequels with latest monetization tactics tacked on. On low end you got shitty mobile games that only optimization is user conditioning.
That leaves you with Indies, that can use GameMaker/Unity and still get their game out.
Sure some AAA use Unreal to their absolute limits. In same way some people develop drivers for embedded hardware. You still don't want to develop games and software in general, the same way those few studios do.
Nearly every single game no matter what it looks like makes performance trade offs.
Number of enemies on screen, ai search depth, world size, world granularity, whether to allow partial transparency, number of lights, number/complexity of systems etc…
Even for something that may look like just another indie side scroller.
Sometimes these constraints breed creativity. But if you use game maker/unity, you will find yourself regularly running into performance issues that will require problem solving.
The same is true when making an engine, but the problem space is far, far more nuanced than just: some types of games don’t need to worry about performance and so are fine using game maker/unity.
Not to mention that very often good gameplay also requires appropriate performance. This is still critical in titles not targeting high-end hardware, but also in AAA. Frame render time matters, and lack of performance can affects the work of not only developers, but also artists.
Even in mobile games performance could make a huge difference: something with low performance might not run in some mobile phones and you'd lose a huge chunk of audience (and no, before you say it, it's not just people with iPhone 16s that are a target to make money).
Sure it's a simplification. But it is the truth. AAA are generally that way now, because people don't want to bet a lot of money without it being a sure fire bet. And it's same for game mills in mobile land.
> Not to mention that very often good gameplay also requires appropriate performance.
Yes, but point is good performance. Casey insists performance is thing to optimize for. When in reality it's like n-th thing to focus-on.
Yep, a gross and incorrect one, invented only to advance an argument that doesn't match reality. Performance and ms-per-frame is still highly critical in AAA-land, despite your opinions on current gaming trends. There are people working hard on it, including the Unreal and Unity teams.
> Yes, but point is good performance. Casey insists performance is thing to optimize for. When in reality it's like n-th thing to focus-on.
Again, this is a bit of a misrepresentation, and probably a bit of projection. His rants are often about specific issues he finds, and mostly about low-hanging-fruit issues that cause real usability problems for end users.
He might write and teach how to write high-performance code and high-performance architecture, but it was not to the detriment of code quality, speed of development or architecture quality. The architecture of Handmade Hero, for example, is significantly better than most "make your own engine" shows on Youtube.
I beg to differ it's not an incorrect one.
AAA Titles (+ if I did play them):
Destiny - Review say perf OK.
Elden Ring(+) - Performance Ok on consoles on release it was a slideshow. It ran like garbage. Personally I think it's a clusterfuck
GTA V(+) - Had a huge performance blunder. Released for n-thienth time. Good performance today for game that was released in 2013.
FIFA/NFL/Sports game - Runs ok. It's the same game as year X-1 except with some tweaks (like microtransactions and ads).
Call of Duty - Review while perf is Ok, it's not something
Battlefield - They were Ok, they went too loose with optimization resulting in the shitfest that was 2042. They got punished for it.
Fortnite - Sure stellar work from the guys making Unreal engine no complaints.
According to revenue PUBG belongs on this list. PlayerUnknown’s Battlegrounds - Barely holding itself at the seams this game made mad money while being a buggy and lice infested mess. It
Pokemon - It's Ok, but nothing to write home about.
Resident Evil: Village(+) - Played it. It ran like shite. Had to crack it to get decent performance.
Far Cry 6 - Ok performance, but essentially Farcry X-1. With more content.
---------
From examples given, while performance is usually critical for online multiplayer shooters, it's not so much being faster as being less slow than the guy next to you. E.g. PUBG was fine and dandy, even though it was really, really badly optimized.
> Again, this is a bit of a misrepresentation, and probably a bit of projection. His rants are often about specific issues he finds, and mostly about low-hanging-fruit issues that cause real usability problems for end users.
It's not. He compares Visual Studio 2019 to Visual Studio 6 and concludes that MSFT is staffed by idiots https://www.youtube.com/watch?v=GC-0tCy4P1U
Does he compare OS support? Features present? Libs used? No. It's bad and it sucks an MSFT doesn't know to do fast software.
More than in other kinds of software, adding new "features" to games tends to slow the game down more (you're trying to do more in the time you have to render a frame). So often performance improvements are needed simply to make room for more "features".
absolutely. I'm an engine programmer and this has to be my train of thought, otherwise I'd be out of a job (you know, until the 11th hour where I break a lot of work just to get something out).
I'm not saving a few milliseconds on some feature that "only" takes 2 milliseconds because the game needs maximum performance. It's so when the director or designer comes up with some other crazy idea that they have more frame budget to try and fit it in. They may still not be able to, but I don't want my default answer to be "no, we can't spare the time" (not unless it's something absurd).
Others don't. Because the floor for performance tolerance is low enough you don't need to bother most of the time.
After all premature optimization is the root of all evil.
> After all premature optimization is the root of all evil.
This quote means not to optimize too early, not that you shouldn't optimize at all.
ehhh. I agree with most of your sentiment, but this is starting to be the gamer version of this topic. Replace "modern software is crap" with "modern AAA games are crap". The industry is too varied to lump it all into one box, especially when several of the largest games this year came out with your normal "buy one get everything" monetization.
Back on topic: I'd say optimization is still an important and under aprreciated factor of development. One where you don't notice it when it's done right but is all that's talked about when done wrong. I want to hope UE5 solves some of those problems, but the proof will be in the pudding as always.
They are crap and getting worse on a completely different axis (social engineering). It's not all gloom and doom, people can get insensitive to strategies and good games haven't, stopped getting made.
> I'd say optimization is still an important and under aprreciated factor of development
I never said it didn't. I said It's not be all end all, and not optimizing is causing collapse of civilization.
It’s in a genre with notorious performance issues and limitations as well as bugs, but they managed to put in the time and effort. Some of the lessons and solutions are quite educational even.
There’s games that are ridiculously simple in comparison let your fans spinning for no reason, grind to a halt or crash.
Performance is key here, as it is one of the most limiting factors for _both_ quality and features. Namely the things you can do and how well you can do them is tied to performance. If you are pushing those in any dimension, then you want control.
Sure, performance is important if you are making a game with that level of simulation. Most games (or software in general) don't go for that level of simulation/performance.
For every Factorio, there are thousands of games that work just as well without that level of simulation. From FPS to trashy mobile games that are just a well disguised slot machine.
> There’s games that are ridiculously simple in comparison let your fans spinning for no reason, grind to a halt or crash.
Sure and Morrowind used to corrupt your save-files in a horrible manner. It still sold as hot cakes. Even though I remember it being a hog on my resources.
Warcraft 3 had an unpatched memory issue people used to extend its programming capabilities, until it turns out said issue could be used for RCE, so Blizzard had to break every existing custom map (like DOTA, not like custom melee map) to fix it. It started several independent genres.
------------
Point is you don't need to think about every ms of execution if you are writing 99.9% of software. Sure you can take some precautions and use some tried and true methods (using immutable trees for editing).
But even those come with caveats. You have only so and so complexity budget, will you spend it on features or performance? Almost always the answer is features.
I‘m not looking at this from a pure business perspective because it’s not fruitful. We all know that you can produce crap and make a huge buck, because of marketing, dark patterns, manipulation, exploitation, luck and so on.
I‘m saying there are good examples where building things from a lower layer up does not only make sense, but is necessary for creative freedom and quality they achieved.
I think the main point of his view is that with current hardware advances we should be able to have a cake and eat it too. We can have both the features and the speed, but we don't care about that. The only thing that matters is to be first.
To quote a famous asshole: "Real artists ship."
Or another "Perfect is the enemy of Good Enough™"
Network effects are real and being first to (idea) market has its own benefits. Who would have thought, speed of development has its own merits.
People who care about performance also care about speed of development. The only people saying it's impossible to reconcile both is the people who religiously dismiss the need for performance in modern software.
His message is very clear: Modern software is crap. It's orders of magnitude slower than it should be, it's buggy, and,yes, bloated.
And if you ever used any piece of software today I don't see how you can you not agree with it...
He is never advocating NOT using engines, but rather that one can be much better and more efficient developer with just a little bit knowledge of inner workings of an engine.
Him "spending a billion years" is nonsense. Handmade Hero is his side-side project which he does once a week for couple hours. You can think of HH as a teaching tool (and not even a good one which he would admit himself im sure) and not 'here is definite guide on how you make an engine yourself'. HH inspired and showed ropes to so many developers, its value is immeasurable.