The Low-Tech AI of Elden Ring(nega.tv) |
The Low-Tech AI of Elden Ring(nega.tv) |
(See the end)
It’s all part of the Fromsoft experience but man, who writes these things?
https://youtu.be/vIbKALhzHVc?si=WRAQs77WG2QwVkt5
More topical, I do actually appreciate some of the persistent jankiness like this that hasn't changed since their original games. They experimented with different approaches in DS3, where certain NPCs you encountered would essentially evaporate after you exhausted their dialogue, and they would later materialize back in the hub. I personally hated this -- one element I really enjoyed in the earlier games was this sense that the world doesn't revolve around you. The NPCs feel like rich characters with their own goals and motivations
Having them leave when you're finished talking to them sort of reduced them to utilities, which of course they are ultimately, but the gamefeel suffered a bit from making that more explicit. Don't me wrong though, I love DS3, but I didn't care for that particular change
Anyway, handling NPC progression in this way where the player needs to reload the area is more about navigating a technical limitation than anything else. But like many constraints it conspires with others to produce a certain gamefeel that I enjoy. It would feel a bit less impactful if Hyetta just moved on the instant I exhausted her dialogue -- it's more interesting for me to return and see that she has moved on
Another example of this sort of thing is FromSoft supposedly historically being bad at animating eyes, hence many critical NPCs being blindfolded or with faces hidden by helmets or otherwise obscured. This imagery plays nicely with their other sensibilities around character design and is thematically pretty rich
I can't really talk about DS2 because I didn't play very far in that one, but in DS1 there are a few NPC who do that, like Laurentius, Griggs and Ingward
According to [1], earlier versions of the EMS editor were built on Microsoft Excel, took 30s to open, and didn't support undo/redo. They rewrote it for Elden Ring, but Dark Souls quest design makes a lot more sense when you realize how hard it was to change anything.
Like, are you shitting me? Why? After a while, I would do this to every NPC, every time. But, yeah, it's a bad design.
It makes for a deeply unique experience overall
Perhaps the one you’d most object to is the DS1 DLC, that people paid money for, lacking instructions for access. It involves killing a specific enemy and returning to a previous location.
At the time, people forked over cash and had to prowl the whole game playing spot the difference.
"Make the person repeat what they just told you" as a process is very immersion breaking.
The NPC / quest thing means that, unless you go online, you will need multiple playthroughs and exploration to get every quest done, OR you need to engage in a community - the quests and lore are often all discussed, disseminated, notes compared, theories crafted, etc in the community after the release of a new game.
Whether that's good or bad design I'll leave up to opinion, but it's interesting.
(personally I don't have the time to do multiple 100+ hour playthroughs so I followed guides online)
Fromsoft wants to do major seperate quest lines, so they have to cut corners elsewhere. I guess they choose a robust system that is sometimes annoying for the player.
The JRPG logic is annoying, but From uses it to beg important questions about the game world and the player. Fromsoft characters like Lautrec live in infamy for being so slippery and deliberately misleading.
a) you lucked out and it turns out your brain works exactly like the designer's and the cryptic hint make sense to you,
b) you use a guide/ask a friend/call a hotline,
c) you like the game so much you end up brute forcing your way through all of that stuff,
d) you just ignore that sidequest. I sure hope for you that finishing the main quest doesn't need you to guess something unreasonably obtuse... *COUGH* Legend of Zelda's final dungeon's location *COUGH*
And yet, that's still way better than having a quest log UI, constant screen notifications, and narration that babysit you all the time, treating you like you have never played a RPG before, acting like you are too stupid to read and listen to npc dialogue and items lore
I'll take the jank over what the western industry is filled with
For their first real open world, it holds pretty well
1. Many scripting languages you'd find in games are implemented by evaluating the syntax tree directly (IIRC WitcherScript in Witcher 2 and 3 is implemented like that)
2. A behavior tree can be "compiled" down to a bytecode VM similar to what some scripting languages use
Though if any of these two approaches makes any difference in performance i'm not sure and i'd expect it'd depend heavily on how exactly they're implemented (my kneejerk reaction would be to expect the VM approach to be faster because parsing a bytecode sequence might be more cache friendly than jumping through pointers, but i also suspect that since game AI scripts/behaviors wont do any real computation themselves and instead 99% of the code would be engine/native calls, any potential benefit would be diminished -- but as i haven't tried to implement the same stuff with a realistic setup using both approaches to compare, i cannot say one or the other for certain).
Any good library author is going to try to bury the complexity so that users don't need to deal with it, but there can be a monstrous beast under the hood.
What the video refers to as a "Combat Wheel" is, in my opinion, much more easily explained as a weighted random selection. It really just takes a list of functions and randomly chooses one to call with dynamic weights. (But I appreciate that I differ significantly from AI academia on this point, because I also think the term "utility ai" is a really silly term for... dynamically weighting options before selection)
Likewise the start of that video talks a lot about the "Goals", in reference to complex planners like GOAP (which is the approach famously used in FEAR) and HTNs, but there is no planner here. It's just a basic pushdown automata.
Anyway, the reason I wrote this post in the first place is mostly because I watched that video and it felt a bit off, and investigated the code myself.
and of course, lets you have a reasonable amount of control over different bosses
They have accumulated bloat and tech debt since their inception as a studio
https://github.com/ividyon/EldenRingHKS/blob/main/c9997.hks
But it works for them, and that's what creates their flavored games, i hope they'll never change a bit
What you're describing is a behavior tree: predefined logic, predefined responses, no learning, no inference, no model.
Stop calling everything AI, guys.
It's a hard problem because "AI" has been a term since the 50s but has been used to describe different approaches to making a computer do things over time. The way game developers use "AI" to mean "hardcoded logic for game behavior" is fully inline with what "AI" meant in the 60s when they were using symbolic AI to write the first computer-controlled chess games.
Then AI programmers hit the wall of hard-coded logic, went through an AI winter, and what survived on the other end was logic that was automatically trained from big data sets. We used to call that "machine learning" because "AI" had connotations of snake oil from previous AI winters. But then within the past decade, tech companies with grandiose ambitions decided that "machine learning" was too nerdy so resurrected "AI" to refer to LLMs and their ilk.
The term is just a muddled mess.
I think AI for game NPCs is perfectly valid terminology. The actor senses the surroundings and makes decisions to achieve its goals within the constraints and events of the environment.
AI - artificial intelligence
The "artificial" can have several meanings. It seems a lot of folks interpret it as "man-made but identical" however I usually try to interpret it as "not sincere", "fake" or "a replication of". If you use the term that way it will fit a lot nicer into your understanding of AI in games, frankly also AI as in LLM's. In the way that it is not actually intelligent it is mimicking intelligence.Just by using the term "AI" I feel like you are indicating that it is not actually intelligence, otherwise you would call it intelligence instead. Therefore using hard-coded logic to fake behavioral patterns makes perfect sense.
https://dictionary.cambridge.org/dictionary/english/artifici...
There's no ambiguity when speaking, but when searching Rust-related things I get a lot of Rust game stuff. "Rust crates" or "Rust drops" correspond to in-game things so the fandom wiki will pop up. Occasionally I'll even get rust-removal webpages.
Partly for technical accuracy, partly to manage the average person's expectations when they hear "AI", partly to avoid contributing to a big dumb-money "everything is AI" bubble, etc.
I find just juxtaposing these two normal words flows much more nicely from the tongue than the comparatively awkward "LLM".
TBH i haven't played Elden Ring but from what i've seen there are so few "active" NPCs around that i highly doubt there'd be any performance issue coming from this.
Once you get to that point you can still make it work but it will take a lot of work to make it as fast as possible, whereas you'd have been better served by more branchless approaches that doesn't parse/jump the FSM.
Basically in my experience when you actually build a behavior tree as a tree, you get a pretty significant node count once you try to do anything remotely complex, just due to the way that behavior trees implement both control flow and actions as a (usually) static tree. In large AAA games this can really quickly turn into a situation where you have tens of thousands of nodes in a single behavior tree, which you then need to deal with somewhat efficiently. This affects not only the runtime, but the editor tooling as well, since these are often authored as visual noodle graphs.
You could totally lower the tree to some kind of bytecode, or optimized representation, but something I like about the approach here is that you kinda just don't need to do that. It's naturally resistant to the kind of node explosion you get with static trees because the decision logic is contained within nodes as Lua script (or C++ code), rather than built into the tree structure itself.
It's not a strongly justified position, I just think these kinds of structural decisions have an oversized impact on the amount and kind of optimization work you need to do down the line.
(Author here, if it wasn't clear)
My vote for "high tech game AI" would probably be this old mod for Fallout 4:
>PANPC (Pack Attack NPC Edition) is a unique scripted AI management system for Fallout 4. Rather than treating each enemy as an individual proximity-based reaction agent (basically, a mine with a gun), this system generates social feedback between NPCs belonging to the same or allied factions.
>Enemies factor the overhaul health and success of their “team” into their tactical decisions, adjusting their strategies based on their social and threat awareness. As a result, they will switch between ranged, melee, defensive, and offensive tactics based on their perceptions of team advantage and individual risk.
https://fallout.wiki/wiki/Mod:PANPC_(Pack_Attack:_NPC_Editio...
1. Make individual agent AIs that can act on their own.
2. Make squad AIs that can influence their agent AIs.
3. Add even more AIs on top, like a scenario AI.
Each of these AIs can be a state machine, behavior tree, rule system or goal system. They’re exactly equivalent and can be translated into each other mechanically. So the whole hierarchical AI is equivalent to one big state machine.
Not only would they call out to each other, they would attempt to carry off wounded allies and call out to each other in native language (set in africa, so I understood it).
They also adjusted their techniques based on the reputation level of the player.
https://www.gamedevs.org/uploads/three-states-plan-ai-of-fea...
Transformer based AI had to wait until the world's compute capacity reached a certain level to become feasible.
Deep Blue, the first chess engine to defeat a world champion, was a GOFAI system
There was an article recently about a system used in production at a pasty chain in Japan to classify pastries at checkout that didn't use DL for most of its existence. Now it seems to be a hybrid system that uses symbolics and DL for certain functions
https://www.newyorker.com/tech/annals-of-technology/the-past...
This has been the case since at least the 90s, it is not a new thing.
I know that we're all experiencing AI fatigue, but this comment is an example of the "once an AI technology finds a niche and becomes accepted technique within that niche, it ceases to be AI" meme.
https://www.amazon.com/Programming-Example-Wordware-Develope...
And I suspect that one day we might even think of LLMs as "low tech AI", assuming we move on to more advanced forms of AI (here's hoping).
Stop calling everything AI, guys.
Depends on how pedantic you want to get, one could argue that regular expressions are AI too.
https://www.rand.org/content/dam/rand/pubs/research_memorand...
Regexes were invented for much higher order tasks (modeling neural networks) than just making find-and-replace easier.
This is literally AI. A behavior tree is AI, all of those things are AI. It's just symbolic rather than neural network based.
The thing about artificial intelligence is that it doesn't necessarily have to look or behave like biological intelligence. It could very well be a very alien and foreign form of intelligence.
LLMs are a tiny blip in it.
It's OK, they'll just keep subsidizing it until it's eventually feasable...
both of which have laughably low specs by modern standards ... potato
I have the opposite view, modern games require laughably high specs for what experiences they are achieving, look at what great dynamic experiences (games) can be achieved on older generations of gaming hardware.Transformer based AI does not magically equal great dynamic experiences, good game design does. Sometimes a basic technique is more effective then a complex one.
Dynamic experience wise what is really the upgrade between ps3 call of duty and current day, aside from graphic fidelity that has increased there is parkour now. But mirror's edge shows that was possible at the time too. Seems it's just consuming a LOT more resources for not a lot of benefit. If you run a ps3 emulator with a modded game with high res textures & shaders you're still using 1/4 of the resources the modern re-release does.
squeezing a lot of juice out of basic techniques
"limitations breed creativity" I think this is one of the reasons why games on limited hardware are often better games, it requires the game designer to choose between prioritizing the game's core or other distractions like graphics.If you search for 'rust crypto', you get results for Rust cryptographic packages as well as Rust in the cryptocurrency space (as it's become very popular with that audience)
Same with googling 'game dev AI', as I've been doing to learn about behaviour trees/FSM, you get inundated by articles of people with a Claude subscription and a dream.
a. Like on /r/crypto: https://old.reddit.com/r/crypto/
b. "Don't roll your own crypto(graphy)!" is/was a popular hacker slogan: https://hn.algolia.com/?q=Don%27t+roll+your+own+crypto
I disagree. Hardcoded means you need to change and recompile the entire program. So neither an .env file nor model weights that are loaded at runtime are 'hardcoded'.
I would define it more broadly, "same input == same output, with the same program" and using that definition all computer programs are hardcoded in the end.
There is a gray area, you can consider that even programs that use random() are in the hardcoded category as with the same (semi)random value they will produce the same output. You just need to think of the random value as input, since not all input needs to be user input.
The whole idea behind "hard-coded" and original symbolic AI was that a skilled human deliberately wrote explicit code to define a program's behavior.
Machine learning is the exact opposite of that approach.
https://en.wikipedia.org/wiki/Dune_(franchise)#Butlerian_Jih...
And the Consecrated Snowfield is only accessible if you find two parts of a hidden medallion, the first in a castle later in the game than the lift it operates. The second is hidden in a jar underneath a mountain. But you can't just smash the jar, you have to talk to the NPC inside the jar twice before you'll get the medallion.
The market rewards abstruse design.
Also, all you have to do in the Snowfield is to take a teleporter: that's not very secret, is it?
And even then, while an item may say "use it here", if it's been dozens of hours since you got it you may just straight up forget about it.
That said, I think that the target audience for the DLC was always people who thoroughly played through the game.
Same with the other games' DLC; for Bloodborne's you need to be yoinked by an invisible enemy while in posession of an item; while it's very possible people were accidentally yoinked on their first playthrough, they will forever know that the item is a trap and will avoid getting yoinked.
(unless the item in question explicitly said "get yoinked to go to DLC", I forgot)
To some extent it's a design decision maybe. From makes games that are harsh and unforgiving, but not too harsh - you can mess up bits of quests but not end up unable to get an ending (afaik) which kind of matches the gameplay (harsh but not rage-quit inducing).
FWIW, after you get one half of the medallion, get invaded by Gideon's lackey and then talk to Gideon, he will tell you to look for the Albinauric woman, so at least they give you this much.
All in all, I find the quests in the base game relatively straightforward, but anyone with any prior experience in their games will have an inkling that if they care about quests' results, you need to double-check with the wiki.
That's true, but it is strange that you get there and get early-game upgrade materials, like Smithing Stone 2, etc. It seems like they wanted to emphasize that the Scadutree Fragments are the important things for scaling, and not your Base Game level, but you already have to be pretty high level and upgraded to beat Mohg.