Remix.run Logo
▲ barbariangrunge a day ago

Blow argues software development hasn't advanced much since the early 2000s. As a game developer, I want to offer a counter point.

In the last 3 years, there have been a lot more indie games of far higher quality than we used to get. I'm thinking of the RTS space right now. The Scouring for example. We went from having nobody but Blizzard able to make something that complex to several games with outstanding performance and complexity, often with their own custom game engines that are not only working but working better than I remember wc3/sc2 working at launch.

I don't know how much of a role AI is playing in those games, but I think the performance and complexity of indie games is shooting up and we are seeing very, very small teams make things that large teams struggled with in the past. Honestly, I think indie studios are outperforming AAA in most ways besides spend and length and art budget --and yet, it's the indies who are making their own game engines these days, isn't it?

(btw, we have to also admit that many of these game engine builders look to blow for inspiration (to carmack too), and their architectures are not what you'll find at typical saas companies. Game coding is complicated in a really fun way I didn't get doing plumbing on web projects, speaking for myself)

▲corysama a day ago | parent | next [-]

As far as the coding user experience that I have personally observed, game programming peaked with the team developing NBA Inside Drive 2004 for the Xbox.

Their workflow was:

1) Arrive at work. Get coffee. Fetch latest code from Visual Source Safe.

2) Turn on Xbox. Hit F5 to build, deploy and start debugging on target.

3) Edit and Continue C++ in debugger IDE all day on target without ever bothering to stop the game. (Yes, this took some coding discipline to maintain.)

4) Turn off Xbox and go home.

Between the Visual Studio debugger and the Whole Tomato coding assistance, it was easy to understand the code and the runtime behavior. For anything GPU-related, Microsoft Pix for Xbox gave you a scrubbable timeline of every action, every pixel, every register change in the GPU while drawing a frame.

The hardware capabilities, available libraries, and artist tools have increased tremendously since then. But, the coding experience has not. 20 years later, I'm outside of gaming and I find most people using re-run-and-printf debugging for professional development. Even locally. I don't know how anyone gets anything done.

The only significant improvements I've seen in 20 years (besides the occasional memory tracker or profiler tool) has been AI agents and reversible debuggers. Otherwise, it's all been downhill since 2004.

▲explodingwaffle 11 hours ago | parent | next [-]

it drives me insane that good tracing profiler tools are basically confined to certain niche domains and/or are insanely expensive (or some weird cloud based shit). instrumenting programs (printf or otherwise) is dumb as hell when all desktop usermode (and even most embedded chips worth coding for) have the capability of instruction level trace. tools have sweet graphical timelines and stuff and it's killer.

basically, all programming should be writing requirements as a custom level for Shenzhen I/O

▲bob1029 11 hours ago | parent | next [-]

VS 2026 can be purchased on a perpetual basis for $500. They will email you a license key you can write down on a piece of paper and use forever.

https://www.microsoft.com/en-us/d/visual-studio-professional...

▲rererereferred 9 hours ago | parent | prev [-]

Maybe someone should artcraft the good debugging tools.

▲LugosFergus a day ago | parent | prev | next [-]

I haven’t used it personally, but I always heard that VSS was a complete train wreck.

Gamedev programming probably hit a low point for me when XBox One and WiiU came around. Those were some truly awful experiences.

▲maccard 12 hours ago | parent | next [-]

We still use perforce which is a mess but the reality is that you spend 2 minutes a day interacting with the tool, it doesn’t matter if it’s shit. Even now as a lead, most of my time is in swarm (reviewing), and I don’t care about all the jank that comes with P4.

I actually think git and the DVCS madness is a good example of complexity for the sake of complexity. Ending up in a detached head state through a seemingly normal series of commands, and then being able to continue working and have a very difficult resolution (compared to how you go there in the first place) that requires you to know how git works is a perfect example.

On the flip side, again in P4, you get latest and that’s it.

▲jayd16 3 hours ago | parent | next [-]

Git's issue is not that DVCS is bad. Its just that P4 workflows work better for binaries.

Git LFS is tacked on, Git's locking support is crap, the culture of git is not to build helper plugins like P4 so no one does it.

Distributing P4 to multiple offices is a pain in the ass and it really does need a lot of hardware to keep things going.

Maybe Epic's Lore will shake things up and we get the workflow in a nicer backend. Still, sane defaults and control is also something wanted so, to your points, Lore is not a DVCS

▲clhodapp 12 hours ago | parent | prev | next [-]

Detached head is neither scary nor hard to recover from. Heck, you don't even NEED to recover from it. You can just push you HEAD straight to a remote branch.

▲maccard 11 hours ago | parent [-]

In order to do that you need to know what a detached head is, what head is (and when it’s something different) and that you resolve that.

It’s just not possible to end up in that state with something like P4. My current company has >1000 people, most of whom are non-technical (artists, designers) pushing every day, and even when I worked at places with 30 people, the amount of time I spent training people on “click get latest revison, and double click to submit” was absolutely dwarfed by “I followed the git setup instructions but I can’t push my changes”

▲StilesCrisis 9 hours ago | parent [-]

In 2026 none of this matters anymore. "Claude, why can't I push my changes?" "Claude, the repo is saying something about detached HEAD, how do I fix it?"

Or even: "Claude, push the PR and sync git"--it's more than happy to take that off your plate.

▲markus_zhang 8 hours ago | parent | next [-]

This might result in some very messy situations. I never dared to ask AI to do git for me. I did ask for help but I had to double and triple check.

Most of the time I simply remove everything and start from a clean slate.

It’s not only that. You also need to understand the concept of merge, squash merge and rebase, and the difference among them.

I admit I never dabbed into the internals because I was not very interested in git. I’m interested in other stuffs such as the OS kernel.

I do think it is the wrong tool for most people out there. If you are not doing 1,000 people distributed development there should be a different tool for source control. What my team does is 95% “one developer owns the changes of one or more files and others don’t touch them” type so it is rarely a true distributed development, in the sense of multiple people touching the same systems at the same time. However, I haven’t surveyed the landscape of version control. Maybe I should at least inspect the other big names.

▲svnt 7 hours ago | parent | next [-]

> This might result in some very messy situations.

It doesn’t. Claude is far better and faster at this than anyone I’ve met in person. And you can work in any part of the source as though you were working alone, with all the numerous benefits of git.

Why would you not just try it on a disposable repo instead of continuing in fear? The thing about git is it is actually very very hard to do something that destroys anything because it is distributed. Make a repo. Clone it to two places. Do whatever you want including things that force push and overwrite history in origin. Then restore it from the other repo you cloned.

▲prmph 3 hours ago | parent [-]

> Clone it to two places.

Failing to do this is not "very, very" hard

▲StilesCrisis 7 hours ago | parent | prev [-]

If you haven't tried it, you're not in a position to speculate.

I have been letting Claude drive git/P4 for months and it does an impeccable job. With git in particular, it can't even screw up too bad; old hashes would save your bacon in a pinch, and they'd always be in the transcript, but it doesn't matter because Claude just doesn't struggle at this, not even a little bit.

▲maccard 5 hours ago | parent | prev [-]

I’ve not used Claude to resolve an issue with git (I use perforce) but my experience with asking Claude to resolve p4 issues is that it goes down a huge rabbit hole and doesn’t solve the problem. I think it’s an artefact of a proprietary tool though

▲SleepyMyroslav 2 hours ago | parent [-]

I may offer anecdata on Claude and P4. I asked it to prototype some code and move what it generated into separate header and source files. In the process of doing it Claude decided to move every edited file from the workspace into its own CL. Then it noticed that something was up and tried to put everything back. I found the part of the comment from Claude suggesting that I may go recheck that it managed to put everything back to be hilarious. Just my 2c, I guess Claude is really comfy with tools that are mostly used in training and not old monster systems like P4.

▲haileys 11 hours ago | parent | prev | next [-]

> that requires you to know how git works

Professionals should know how their tools work.

▲maccard 6 hours ago | parent | next [-]

A few years ago I was working in a company and I posted something like this:

I am an app developer. Our front end is a C++ application (a game), our backend is a dotnet application. We also have an admin portal. A single feature, including deployment touches C#, C++, JavaScript, opentofu, AWS, windows, Linux (maybe macOS), docker, MySQL, redis, caddy, git, bash, plus all of the libraries and individual tools they call through too. Every single one of those has its own quirks and sharp edges. If I spent my working hours (40h) knowing each of those tools to a professional level, I wouldn’t have enough time to work on the app.

▲vinyl7 6 hours ago | parent [-]

That means the application in total is way too complex, and could be pared down by orders of magnitude.

▲maccard 5 hours ago | parent [-]

It’s a backend, game and web portal that runs in a container with a database and a cache. Everything else is “incidental” complexity that just comes with running an app.

▲markus_zhang 10 hours ago | parent | prev [-]

Can’t delete so edit out.

▲mejutoco 9 hours ago | parent [-]

Your arguments are very confusing because of the mix of some, most, and all, and the jumping between them.

> few professionals know what ALL of the tools

> developers use (some or most)

> not all of them know

If you are a professional you need to know your tools, in any discipline. It does not matter what most or not all do. If you do not know your tools, you are not very professional.

▲ 9 hours ago | parent | next [-]
[deleted]
▲svnt 7 hours ago | parent | prev [-]

This is what argument from existential fear looks like.

▲mecsred 6 hours ago | parent [-]

No its what basic professionalism looks like. No engineer is going to try and do the job of a PLC by manually switching 100s of electrical connections a second. The PLC is a useful tool. If you work with an engineer that tells you "I dont need to know how the system works, the PLC manages that" , theyre not going to be an engineer for very long.

▲svnt 6 hours ago | parent [-]

Sorry I meant the argument parent was responding to and confused by, not their argument. I realize it was unclear.

▲mrkeen 11 hours ago | parent | prev [-]

Git is designed for a distributed situation. Different coders spread across time and space.

You always have the ability to try out the simple version that ignores that reality:

* Don't branch

* Always force-push to master.

▲maccard 11 hours ago | parent [-]

Neither of those work if you work with one other person.

▲svnt 7 hours ago | parent [-]

They work as well as perforce.

▲maccard 6 hours ago | parent | next [-]

I disagree. Perforce requires you to be connected to the depot (ignoring reconcile offline work because that’s a break glass feature), and allows you to check in when you are not synced to latest. It forces you to deal with file level conflicts at time of update, not at the time of submission, and the intermediate state of “I have local changes that the remote/server doesn’t know about” is considered exceptional rather than the norm.

I can count on one hand the number of times I’ve had to reconcile offline work in the last 18 months, which is the equivalent of every merge commit in git.

▲jayd16 3 hours ago | parent | next [-]

Reconcile is far heavier of an operation than a scan.

You can use Git LFS locking or other side channel things to get file status tracking to work in Git but its a slog. You can usually find something for your engine of choice though.

▲ 3 hours ago | parent | prev [-]
[deleted]
▲jayd16 3 hours ago | parent | prev [-]

P4 has file locking and automatic file type locking on checkout to prevent conflicts. It honestly goes a LONG way and the games industry is built around that tooling.

▲barbariangrunge a day ago | parent | prev | next [-]

how so?

▲LugosFergus a day ago | parent [-]

The biggest issue with XB1 is that it felt like a massive regression compared to 360 development. We were forced to use this Windows 8 stack that came with all sorts of warts: “managed” C++/CLI, confusing manifest files, complicated app lifetime rules, only push deployment initially, limited threading control.

For WiiU, Nintendo used the Green Hills compiler. Their entire toolchain was simply clunky and unstable. You had to use this MULTI debugger which often didn’t work. My favorite line from their dev docs was “c++ not fully supported”. Well, that’s an issue since we used that extensively. It wasn’t even clear what actually wasn’t supported.

▲flohofwoe 14 hours ago | parent | prev | next [-]

> I haven’t used it personally, but I always heard that VSS was a complete train wreck.

It was, but then it was just a version control system. Back then version control wasn't as 'intrusive' into the whole development workflow as git is today. You interacted with version control exactly twice a day: once in the morning to get the latest state, and once in the evening to commit the day's work.

▲mattmanser 9 hours ago | parent [-]

You’re forgetting the running around the office trying to find the guy who’d checked out the file you desperately needed to edit.

For you young’uns, old source control used to work like that. To edit a file, you checked it out, no-one else was allowed to edit it until you’d finished.

▲markus_zhang 8 hours ago | parent [-]

I read about that in Showstopper. David Cutler made a phone call to a developer who went to lunch without releasing the file he checked out.

I do need to inspect the other big names of contemporary version control tools. Maybe they are more suitable for small teams or individuals.

▲corysama a day ago | parent | prev [-]

Visual Source Safe was definitely an unserious source control system. That part was kindof a joke... It technically got the job done for a small local team. But, it would be laughed out of town if it was made today.

▲senderista 16 hours ago | parent [-]

I certainly didn't know of anyone at MSFT who used it.

▲aaronbrethorst 15 hours ago | parent [-]

I worked adjacent to the team that maintained it. they certainly didn't use it either, and were very clear-eyed about the issues with the product.

▲KellyCriterion 9 hours ago | parent | prev | next [-]

> Whole Tomato coding assistance

This was far before Copilot and it was the superbest extension for VC++6 & up.

▲skydhash a day ago | parent | prev | next [-]

I like REPL, but you can be quite fast with a Edit-Compile-Run cycle. But that require settings a test harness and have the run phase be a test run. It's not as fast and experimental as an REPL, but can be quite nice if you know the test cases for your code.

▲maccard 11 hours ago | parent [-]

The parent and this thread are talking about game dev.

> if you know the test cases for your code

IME, most gameplay code is not tested, it’s done by feeling. Quick iteration cycles on feeling, is super important, and most of these sorts of projects have 30+ second boot times (way longer in the days of hard drives instead of SSDs)

▲ben_w 5 hours ago | parent | prev | next [-]

> 3) Edit and Continue C++ in debugger IDE all day on target without ever bothering to stop the game. (Yes, this took some coding discipline to maintain.)

Similar experiences but with Java and Eclipse: editing code while it's running is amazing. And yet, far too often, since moving on from Java to Swift, even with the "proper" Instruments, the actual best I've had has been debug-by-print in much slower cycles... and sometimes not even that, when things went wrong in SwiftUI I might as well have been an ancient Roman haruspex reading entrails for all the good it did.

And at the time, everyone was complaining about Eclipse.

▲whizzter 7 hours ago | parent | prev | next [-]

That was pretty much my experience developing a PS2/Dreamcast game in the 2000-2001 timeframe when working on the PC build, the _REASON_ I did so was because the PC port ran on 3dfx and that crashed the OS every 2nd-4th start so restarting was painful, being able to edit-continue was a godsend.

That said, still using debugger driven development and edit-continue to this day and marvel at the lack of experience of people touting Lisp or Erlang or whatever as the only places in the world with some kind of hot-code replacement.

▲armchairhacker a day ago | parent | prev [-]

Live coding is making a comeback. I predict it for 2027. LLMs can and have made hot code loaders for any existing language, and make trivial the nasty bugs that used to plague JIT developers (like broken stack frames).

▲soniczentropy 17 hours ago | parent [-]

LLM can even make its own language then hot load that one. I've been using it to build a game engine with its own scripting language for the last few weeks and the AI is absolutely astonishing at wielding it. Part of its integration testing is exporting screenshot dumps and comparing them pixel-by-pixel vs what it expected. It's been weeks since the scripting language had any issues hot reloading

▲sarchertech a day ago | parent | prev | next [-]

I think the majority of the improvements come from 3 places.

1. Hardware advancements mean that you can get the same results with less optimized code (this is what allowed 3rd party engines with GC scripting languages to become popular)

2. The proliferation of learning resources and open source code.

3. The budgets and size of indie studios as well as total time spent on the games. Seriously look at some of the games these days that get labeled indie.

Warcraft 1 (my first RTS) had just 4 programmers. And only one of them was on the project the whole time. And the entire project was only 14 months.

▲crabmusket 14 hours ago | parent | next [-]

> having nobody but Blizzard able to make something that complex ...

> Warcraft 1 had just 4 programmers

This to me sounds like the market for games has changed, such that larger projects are now more viable. Smaller projects with a handful of people may still be viable, but look tiny in comparison.

One of my favourite games of that era, Thief, also had a very small team.

▲ModernMech 8 hours ago | parent [-]

Hold it right there, taffer!

▲latentsea 17 hours ago | parent | prev | next [-]

Warcraft 1 was one of my favourite games from my childhood. Probably took me 14 months to beat that one level I always got stuck on.

▲KellyCriterion 9 hours ago | parent | prev [-]

>Warcraft 1 (my first RTS) had just 4 programmers. And only one of them was on the project the whole time. And the entire project was only 14 months. <

Nice but this isnt even the half of the story: According to ChatGPT, the whole team was "32 people in professional roles", so 8x times of number of programmers. And that ratio even became extremer in the last decades.

▲jarjoura a day ago | parent | prev | next [-]

The indie game bar being higher is the result of the tooling being easier and more common.

▲spankibalt 15 hours ago | parent | next [-]

That and more veteran talent, including laterals, ending up in the freewheeling spaces (giconomy burnout, enough personal financial stability, crowdfunding, alternate publishing/work-life models, etc.)... including access to their knowledge and experience.

▲fallingbananna a day ago | parent | prev | next [-]

But can't we then say that software engineering *has* advanced, when the tooling has improved?

▲ragall a day ago | parent [-]

No, because the quality of the tooling and the output they afford hasn't changed.

▲lukan 11 hours ago | parent [-]

I have now a tool that can go through my codebase and find and fix bugs even without guidance. Implement any features I want, answers any high or low level questions I have about the code.

Doesn't mean the tool is flawless, but if that ain't a new quality I don't know what is.

▲ragall 7 hours ago | parent [-]

It's fast crap.

▲lukan 6 hours ago | parent [-]

But it works.

▲ragall 5 hours ago | parent [-]

It doesn't.

▲barbariangrunge a day ago | parent | prev | next [-]

Yeah, the engines help a lot with rendering, physics, and scene/level building/making custom tooling, and a bunch of other things. They are honestly amazing tools.

AAA and indies now use the same engines for the most part

In game dev however, there's a lot fewer reliable open source tools around. You have a game engine, a small number of great plugins, and a lot of dodgy stuff. You have to/get to make a lot of things yourself.

The scope and complexity of indie games, even allowing for this, is still increasing staggeringly.

...and don't get me started on unreal engine physics and pathfinding issues, or rendering bugs in unity

▲saberience a day ago | parent | prev [-]

Yes, AI tooling.

Indie games didn't get THIS good because of Unity and Godot, if you think that you're deluding yourself.

I've done amateur and professional game-dev and Unity and Godot existing don't make making an FPS any easier than before, engines have existed for a long time.

A solo dev can create (from scratch) an FPS engine, assets, music, levels from scratch over a weekend now.

This is only possible with AI.

▲mjr00 a day ago | parent | next [-]

Which good indie games, specifically, are you talking about here?

There's been a lot of good indie games recently (Queen's Domain[0] being a recent example that's taken off) but I don't know of any which are using an AI-coded engine or use AI-generated assets extensively.

[0] https://store.steampowered.com/app/1799840/Queens_Domain/

▲jdw64 a day ago | parent [-]

If we exclude AI art assets from that criteria, wasn't AI also used for coding in Mecha Chameleon, which recently achieved big success? Quite a few games have AI code in them. I know of a Korean game company too. It's just that labeling yourself as having used AI is marketing-negative, so it hasn't become widespread.

Just recently, someone used AI code to fix a Unity engine bug and hand-wrote the rest, and it still caused a huge uproar. It's a world where honestly disclosing that you used AI code is not a good idea.

▲mjr00 a day ago | parent [-]

I'm not talking about using AI to help code, which seems obvious, the parent commenter is talking about people building game engines and assets from scratch in a weekend. Meccha Chameleon was built on UE5[0], and Big Walk (the game you're talking about where the devs solved a bug using AI) is using Unity. Both of these games, I believe, took longer than a weekend to create.

[0] https://www.unrealengine.com/developer-interviews/meccha-cha...

▲jdw64 a day ago | parent [-]

I misunderstood what you said Thank you for correcting me.

▲dmonitor a day ago | parent | prev | next [-]

Indie games have been this good for 10 years now?

▲BigTTYGothGF a day ago | parent | prev | next [-]

> A solo dev can create (from scratch) an FPS engine, assets, music, levels from scratch over a weekend now.

And when they do, this is what we get:

https://i.imgur.com/w25SmDR.jpeg

▲ModernMech 7 hours ago | parent | next [-]

This is a bottom barrel dev practice that is exacerbated by AI, not something that AI is causing. People noticed this trend over a decade ago and it's been getting worse even before AI-image generation:

https://www.gamedeveloper.com/business/why-do-strategy-game-... (2015)

https://www.ranker.com/list/clash-of-clans-screaming-dudes-k... (2020)

▲Planktonne 5 hours ago | parent [-]

It's a bottom barrel dev practice that has been massively enabled by AI.

We haven't seen any such enablement for quality games.

▲saberience a day ago | parent | prev [-]

This link doesn't work outside of the US.

▲jdiff a day ago | parent | next [-]

It didn't work for me inside the US, either. https://rimgo.bloat.cat/w25SmDR.jpeg

▲3836293648 a day ago | parent | prev [-]

Works fine in Sweden

▲krapp a day ago | parent | prev [-]

>A solo dev can create (from scratch) an FPS engine, assets, music, levels from scratch over a weekend now.

What does "from scratch" even mean when using an LLM trained on existing assets, music, art and code? Why even bother with that parenthetical? No one believes an LLM creates ex nihilo like God.

Show me the AI generated game that's superior to Balatro, or Hades, Or Undertale/Deltarune? Cult of the Lamb? Expedition 33? Factorio? Kerbal Space Program? Ultrakill?

It not being easy means it requires actual effort and skill, and effort and skill are where the quality comes from. No one is ever going to care about whatever vibe-coded slopfest you had Claude shit out over a weekend. Being able to make low quality low effort shit quickly is not better.

▲mlinhares a day ago | parent | prev | next [-]

I lived through:

* before and after rails;

* before and after js UI frameworks;

* before and after scaled machine learning;

* now before and after LLMs;

And saying we haven't advanced much is wild.

▲pjmlp 12 hours ago | parent | next [-]

When I compare Electron with Delphi and VB, we have regressed by light years.

And for the pixel perfect complaints, it only shows lack of care to not have learnt how layout managers work.

▲jazzypants 6 hours ago | parent | next [-]

This doesn't feel like a natural comparison to me. Electron isn't completely oriented around a visual RAD builder like either of those frameworks so it kind of sounds like apples and oranges.

▲pjmlp 5 hours ago | parent [-]

On the contrary, Electron is for Web developers that don't care enough to learn about native GUI coding.

Managing it would be the right meaning for fullstack.

▲xandrius 3 hours ago | parent | prev [-]

Oh yeah? However little you enjoy Electron as a philosophy, I'm not really sure you've ever had to maintain different codebases for different types of machines, let alone OSs.

Electron and you throw your website basically into anything and it works.

▲pjmlp 2 hours ago | parent [-]

My dear I am into computers since 1986, we had plenty more operating systems and hardware architectures to worry about when trying to write some form of portable code.

Both ways up in snow and without boots.

▲flohofwoe 14 hours ago | parent | prev | next [-]

Software of the early 2000s pretty much looks the same as today, quality has typically even regressed. Busy-work around the development process doesn't automatically result in better software.

▲xxs 7 hours ago | parent | prev | next [-]

The simple observation is that you're very young, if the js/rails the beginning of time.

▲troupo 10 hours ago | parent | prev [-]

We have veritable supercomputers, and most software is as sluggish or more sluggish than in 2000s.

There are some local improvements, but overall software is just as shitty and buggy as 20-30 years ago, and most of it doesn't do anything different

▲jayd16 13 hours ago | parent | prev | next [-]

Is anything in this post based in reality? Blizzard was never the only RTS maker.

Indie games get released but how are you measuring such that they're outperforming AAA?

It sounds like you're saying more indies are in there own engine instead of Unreal or Unity or Godot or Roblox etc...

Are any of these takes sound?

▲kcatskcolbdi 15 hours ago | parent | prev [-]

SC2 worked flawlessly at launch, what are we talking about?