Do you think that AI has magic guardrails that force it to obey the laws everywhere, anywhere, all the time? How would this even be possible for laws that conflict with eachother?
I have found paradox games to have uneven game mechanics; some run miles wide, some of them run deep, and many others are just very superficial, and there is no reliable indication which will be which when you are playing fresh.
You are getting downvoted, but this is a cool idea. Diplomacy has historically been a weak part of the series, and being able to shore that up may be a lot of fun to play against.
I would say diplomacy is the most misunderstood feature of the series. Players constantly say they want a stronger AI that's smarter at diplomacy. But whenever they have built an AI like that, their play testers complained that it doesn't behave like a real world leader (too ruthless).
This experience led Soren Johnson (co-designer of Civ III and lead designer of Civ IV) to the realization that Civ AIs are supposed to "play to lose" [1].
I am so tired of game designers/developers being so pathetically wrong about stuff like this. Modders have to CONSTANTLY fix these boneheaded, user hostile decisions in nearly every game. A lot of game developers are not the people actually loving/playing their games in the same way that the cello maker is usually not the cello player.
Even many popular mods fuck this up! DEI in Total War Rome 2 needs submods to make the AI play by the same rules as the player!!! This is top of the most subscribed list right now FOR A REASON!!! https://steamcommunity.com/sharedfiles/filedetails/?id=36258...
Make the AI play by the exact same rules as the player. Make a scaling AI difficulty slider which goes from "piss easy" to "insane grandmaster" but without cheats. It's not that hard to do this, the chess engine crowd figured it out back in 2001. FEAR figured it out in 2004. Game AI has straight up not improved and at many times gotten worse in the ensuing two decades.
It's not that hard to do this, the chess engine crowd figured it out back in 2001.
They really didn't. No one likes playing against weaker chess engines. They play perfectly like a higher-rated engine and then randomly make an obvious blunder. They don't play naturally like a human player of that rating.
The weaker AIs in Civ games do a far better job at "playing to lose" than low rated chess engines. It's not even close!
That makes sense, but at the end of the day, it may be more fun to play around with opponents that act more relatedly. This could take the form of in-game/session-appropriate diplomatic responses that don't read like pre-canned text, or, having explanatory text for why the AI is acting perhaps in goofy ways (which comes up a lot).
It is _rough_. People say it has gotten better since release, but if you have not played it before, and were to play it fresh right now, it is not great. The UI is both dense and vapid at the same time, UI glitches/bugs, jarring all-or-nothing lock-step advancement of ages, etc.
I have found that a hybrid viewport screenshot + textual 'semantic snapshot' approach leads to the best outcomes, though sometimes text-only can be fine if the underlying page is not made of a complete mess of frameworks that would otherwise confuse normal click handlers, etc.
I think using a logical diff to do pass/fail checking is clever, though I wonder if there are failure modes there that may confuse things, such as verifying highly dynamic webpages that change their content even without active user interactions.
Totally agree - hybrid approaches can work well, especially on messy pages. We’ve seen the same tradeoff.
On the verification side though, dynamic pages are exactly the reason why we scope assertions narrowly (specific predicates, bounded retries using eventually() function) instead of diffing the whole page. If the expected condition can’t be proven within that window, we fail fast rather than guessing.
How was this flamebait? It is an example of how bad programming choices/assumptions/guardrails costs lives, a counterargument to the statement of 'And yet, it never does'. Splitting hairs if the language is C or assembly is missing the spirit of the argument, as both those languages share the linguistic footguns that made this horrible situation happen (but hey, it _was_ the 80s and choices of languages was limited!). Though, even allowing the "well ackuacally" cop-out argument, it is trivial to find examples of code in C causing failures due to out-of-bounds usage of memory; these bugs are found constantly (and reported here, on HN!). Now, you would need to argue, "well _none_ of those programs are used in life-saving tech" or "well _none_ of those failures would, could, or did cause injury", to which I call shenanigans. The link drop was meant to do just that.
We need to agree to disagree on this one; the claim that C is fine and does not cause harm due to its multitude of foot-guns, I think, is an egregious and false claim. So don't make false claims and don't post toxic positivity, I guess?
A budget that is influenced by the budgets of everything else. If you have $100 in free 'foo' money for 'foo' efforts, suddenly you do not need to fund 'foo' from your general fund and you can move those dollars you would have otherwise used for it to instead be used for anything else you want.
reply