Always curious to hear from people doing Rust gamedev without bevy! What are the main crates you're using, and what sort of game object architecture are you going with?
I do hobbyist level gamedev in my spare time and found bevy to be a bit too much for the things I want to do.
- Mad Max is not a great example of anarchy, as the last couple of movies featured a government led by an autocrat (haven't seen the other ones)
- The Play Store being bad does not mean the App Store is not also bad
- How do you know most of the world likes the authority of the App Store? Is it not more likely that most of the world are ignorant of its rules, and assumes a free and open marketplace?
A gaggle of feuding warlords a government does not make.
> The Play Store being bad
The Play Store is actually merely “slightly worse” than the App Store. The problem was that my uncle in law was using some other “alternative app store” because Android allows this and then … inevitably … some lazy or corrupt app vendors encourage their use or outright require it. Or a phone manufacturer will try to make an extra 50c per device by inserting themselves (or a “valued partner”) between users and legitimate providers.
You’ll see arguments for this, right here, espoused vehemently by people that must really,
desperately get away from oversight.
The problem with that argument is that people are free to choose for themselves and asking for authoritarian control of a whole system just because some people might be dumb enough to fuck up is completely crazy.
By this standard, people shouldn't be allowed to drive because sometime they fuck up by drinking and/or driving too fast.
Everybody is responsible for their own life, own choices, etc. I'm amazed that a company that is supposedly progressive liberal can get away with such bullshit.
But at the same time, I know very well the pseudo-progressives are always authoritarians who think they know better and want to impose their morals/rules on everyone, stealing agency from people while pretending to be doing good. Apple is a perfect example.
Maybe it's not a great idea to allow a company to decide what software users can run, and I am inclined to believe that Murphy's Law will apply. Ultimately, software is freedom of speech.
I get that point as a person who frequents HN, but for many regular people that’s probably a net positive. People would install random apps or browser extensions just to gain an advantage in some Facebook click came.
Having some kind of hidden “I know what I’m doing” mode would make sense, but would probably defeated the same way as “I’ll teach you how to open browser console” to paste some command exploits.
Just as a thought experiment: Governments could mandate banks to prevent their customers from spending beyond what'll go to rent/mortgage. It'd certainly prevent overdue or missed payments. Would that be a net positive, or would that prevent or slow people from learning fiscal responsibility and the benefits that go along with that?
Overdraft limits restrict how much into the negative your bank account can go. Credit ratings are designed to help paint a story about risk, for lenders to consider when deciding how much money you can be loaned, and at what interest rate.
Both of those things existed in the early 2000s, but if the risk of a loan can (appear to) be shifted onto someone else, banks can and will issue bigger and riskier loans to people, and will reward the individual people selling the loans personally.
I don't think it's a compelling example, because fiscal responsibility requires very little education. Detecting malware by comparison requires literal experts. I think a better comparison might be requiring regulation around investment vehicles to eg root out ponzi schemes. Whatever our success there is definite buy in for that.
I think the change has been the general user doing many aspects of their real-life interactions (money, government, housing, travel, work, etc) easily and at speed via computing device compared to slower offline or face-to-face, and there's huge consequences if that gets screwed up if it can't be isolated from interference.
What I find interesting is that there's been little interesting making something like QubesOS for as many consumer devices (portables as well as desktop) as possible with an interface as painless as possible so people actually use it, and then the blast radius from any problem is smaller. There's also the hosted services side of computing where isolation on the same host is an expected feature and vulnerabilities like meltdown/spectre are such a big deal over the past 8 years, but it only gets seen as a curiosity on consumer devices.
> What I find interesting is that there's been little interesting making something like QubesOS for as many consumer devices
I know it's on a much, much smaller scale, but I'd say the move to sandboxing apps / browser tabs / profiles is aiming for precisely that and in a way that's invisible to most users, which is probably for the better.
This is a false dichotomy. There are plenty of options in between "one company has total dictatorial control over an app store" and "it's a free for all of downloading software willy nilly off the internet".
The DMA in EU has alternate app stores being created, for example. That's some kind of point in between these two. But it still feels like if that's your only option, you'll get ICEBlock blocked in those markets too in many cases.
I know several non-technical people who use F-Droid to get reliable, free software. This is the only option to get updates after the phone is no longer supported. Ideally, it should be possible to install a different, supported OS for that.
iPhones become e-waste at that point, due to the discussed restrictions.
If you are not smart enough and need a big tech company to lead your life you can do it by yourself without thinking it's okay to subject the whole world to this duopoly.
You can very easily turn that argument around and say: if you are smart enough, use an operating system that doesn't babysit you and switch to Linux which is a very valid option.
The fact of the matter is that most people are stupid and a company that protects its customers from themselves will be more successful and outcompete a "moral" company.
Except people usually try to find ways around moral problems. For now, the pressure isn't too big but I think at some point the buildup will be too much and the fall for Apple will be very harsh.
It seems we expect the government to step in and fix this. But it’s not a neutral party. Even before Trump collusion between moneyed interests and politicians was high. Those who hold the money hold the power. And those with the money have decided that even free speech has worn out its welcome. To the point of using its military to invade its own cities.
I just don’t see us righting ourselves through the electoral process. If we are ever going to fix our government it will need to happen through mass strikes. That’s the most credible alternative. In the meantime our state of affairs will likely continue to decay. Climate change, authoritarianism, debt and austerity. These are only going to get worse. Eventually we will be forced to get our collective act together.
(It was later partly rejected by other courts in the DMCA anticircumvention context.)
This argument doesn't imply that companies have to help you publish your software, because they might be entitled to some kind of editorial control over which speech they do or don't distribute. But it does at least imply that the stakes of such control are very high and that free speech norms may be implicated by them!
Interesting tool. I do something similar when I think it's important to focus on just getting the words out: I close my eyes, or look away from the screen.
I think most programmers would agree that thinking represents the majority of our time. Writing code is no different than writing down your thoughts, and that process in itself can be immensely productive -- it can spark new ideas, grant epiphanies, or take you in an entirely new direction altogether. Writing is thinking.
I think an over-reliance, or perhaps any reliance, on AI tools will turn good programmers into slop factories, as they consistently skip over a vital part of creating high-quality software.
You could argue that the prompt == code, but then you are adding an intermediary step between you and the code, and something will always be lost in translation.
I think this misses the point. You're right that programmers still need to think. But you're wrong thinking that AI does not help with that.
With AI, instead of starting with zero and building up, you can start with a result and iterate on it straight away. This process really shines when you have a good idea of what you want to do, and how you want it implemented. In these cases, it is really easy to review the code, because you knew what you wanted it to look like. And so, it lets me implement some basic features in 15 minutes instead of an hour. This is awesome.
For more complex ideas, AI can also be a great idea sparring partner. Claude Code can take a paragraph or two from me, and then generate a 200-800 line planning document fleshing out all the details. That document: 1) helps me to quickly spot roadblocks using my own knowledge, and 2) helps me iterate quickly in the design space. This lets me spend more time thinking about the design of the system. And Claude 4 Opus is near-perfect at taking one of these big planning specifications and implementing it, because the feature is so well specified.
So, the reality is that AI opens up new possible workflows. They aren't always appropriate. Sometimes the process of writing the code yourself and iterating on it is important to helping you build your mental model of a piece of functionality. But a lot of the time, there's no mystery in what I want to write. And in these cases, AI is brilliant at speeding up design and implementation.
> So, the reality is that AI opens up new possible workflows. They aren't always appropriate. Sometimes the process of writing the code yourself and iterating on it is important to helping you build your mental model of a piece of functionality. But a lot of the time, there's no mystery in what I want to write. And in these cases, AI is brilliant at speeding up design and implementation.
I agree but I have a hunch we're all gonna be pushed by higher ups to use AI always and for everything. Headcounts will drop, the amount of work will rise and deadlines will become ever so tight. What the resulting codebases would look like years from now will be interesting.
Yeah, I am grateful that I work with a lot of other engineers and managers who care a lot about quality. If you have a manager who just cares about speed, the corner cutting that AI enables could become a nightmare.
Based on your workflow, I think there is considerable risk of you being wooed by AI into believing what you are doing is worthwhile. The plan AI offers is coherent, specific, it sounds good. It's validation. Sugar.
I know the tools and environments I am working in. I verify the implementations I make by testing them. I review everything I am generating.
The idea that AI is going to trick me is absurd. I'm a professional, not some vibe coding script kiddie. I can recognise when the AI makes mistakes.
Have the humility to see that not everyone using AI is someone who doesn't know what they are doing and just clicks accept on every idea from the AI. That's not how this works.
We're talking about software development here, not misinformation about politics or something.
Software is incredibly easy to verify compared to other domains. First, my own expertise can pick up most mistakes during review. Second, all of the automated linting, unit testing, integration testing, and manual testing is near guaranteed to pick up a problem with the functionality being wrong.
So, how exactly do you think AI is going to trick me when I'm asking it to write a new migration to add a new table, link that into a model, and expose that in an API? I have done each of these things 100 times. It is so obvious to me when it makes a mistake, because this process is so routine. So how exactly is AI going to trick me? It's an absurd notion.
AI does have risks with people being lulled into a false sense of security. But that is a concern in areas like getting it to explain how a codebase works for you, or getting it to try to teach you about technologies. Then you can end up with a false idea about how something works. But in software development itself? When I already have worked with all of these tools for years? It just isn't a big issue. And the benefits far outweigh it occasionally telling me that an API exists that actually doesn't exist, which I will realise almost immediately when the code fails to run.
People who dismiss AI because it makes mistakes are tiresome. The lack of reliability of LLMs is just another constraint to engineer around. It's not magic.
Yes, maybe using the word "verify" here is a bit confusing. The point was to compare software, where it is very easy to verify the positive case, to other domains where it is not possible to verify anything at all, and manual review is all you get.
For example, a research document could sound good, but be complete nonsense. There's no realistic way to verify that an English document is correct other than to verify it manually. Whereas, software has huge amounts of investment into testing whether a piece of software does what it should for a given environment and test cases.
Now, this is a bit different to formally verifying that the software is correct for all environments and inputs. But we definitely have a lot more verification tools at our disposal than most other domains.
Right, I wasn't really sure about that title either. I didn't play vampire survivor, but I saw footage where the game stops completely as you level up, you get to think and choose an upgrade in peace, and then the frenetic action start again. It inspired me to add this mechanic to the game, instead of the quick thinking required in traditional breakout, so that's why i mentioned it. I don't think I can change the title here, but if a mod could remove the vampire survivor mention, it would make the title more accurate.
Thanks for the precision. Never heard of that game. It's also made by reflexive entertainment, the makers of Ricochet Infinity, another breakout game. The (game) world is small.
That entirely depends on the game. Recent example is Risk of Rain 2, which had frequent hitches caused by the C# garbage collector. Someone made a mod to fix this by delaying the garbage collection until the next load-screen — in other words, controlled memory leakage.
The developers of Risk of Rain 2 were undoubtedly aware of the hitches, but it interfered with their vision of the game, and affected users were left with a degraded experience.
It's worth mentioning that when game developers scope of the features of their game, available tech informs the feature-set. Faster languages thus enable a wider feature-set.
> It's worth mentioning that when game developers scope of the features of their game, available tech informs the feature-set. Faster languages thus enable a wider feature-set.
This is true, but developer productivity also informs the feature set.
A game could support all possible features if written carefully in bare metal C. But it would take two decades to finish and the company would go out of business.
Game developers are always navigating the complex boundary around "How quickly can I ship the features I want with acceptable performance?"
Given that hardware is getting faster and human brains are not, I expect that over time higher level languages become a better fit for games. I think C# (and other statically typed GC languages) are a good balance right now between good enough runtime performance and better developer velocity than C++.
> frequent hitches caused by the C# garbage collector
They probably create too much garbage. It’s equally easy to slow down C++ code with too many malloc/free functions called by the standard library collections and smart pointers.
The solution is the same for both languages: allocate memory in large blocks, implement object pools and/or arena allocators on top of these blocks.
Neither C++ nor C# standard libraries have much support for that design pattern. In both languages, it’s something programmers have to implement themselves. I did things like that multiple time in both languages. I found that, when necessary, it’s not terribly hard to implement that in either C++ or C#.
> In both languages, it’s something programmers have to implement themselves.
I think this is where the difference between these languages and rust shines - Rust seems to make these things explicit, C++/C# hides behind compiler warnings.
Some things you can't do as a result in Rust, but really if the rust community cares it could port those features (make an always stack type type, e.g.).
Code base velocity is important to consider in addition to dev velocity, if the code needs to be significantly altered to support a concept it swept under the rug e.g. object pools/memory arenas, then that feature is less likely to be used and harder to implement later on.
As you say, it's not hard to do or a difficult concept to grasp, once a dev knows about them, but making things explicit is why we use strongly typed languages in the first place...
The GC that Unity is using is extremely bad by today's standards. C# everywhere else has a significantly better GC.
In this game's case though they possibly didn't do much optimization to reduce GC by pooling, etc. Unity has very good profiling tools to track down allocations built in so they could have easily found significant sources of GC allocations and reduced them. I work on one of the larger Unity games and we always profile and try to pool everything to reduce GC hitches.
From experience, I can say that there are many games with transferable skills.
At the top of my list is Factorio, and second is actually World of Warcraft.
More generally, there is a lot to learn from game design that you can learn through playing. The question of how to make taxes palatable, for example, is really no different to the question of how to challenge a player without frustrating them.
I believe the value of games are poorly understood, partially because chess, a game that has nothing left to teach us, muddies the conversation
> "because chess, a game that has nothing left to teach us"
That's a wild and weird take. It may not teach the collective "us", if your "us" is a very small set of well-established, experienced, smart, and mature people always in their element, then, yes, Chess has arguably nothing left to teach "us".
But it can be a very good learning experience for the absolute majority of people.