Hacker News new | ask | show | jobs
by indspenceable 3356 days ago
> These days, when most people talk about AI they’re talking about machine learning. There’s not any of that in SF2.

Actually, AI for games is pretty much never equivalent to AI for non-games. The end goal is different - games want to provide a non-optimal set of instructions, so that it's challenging but not impossible to win. The goals are entirely different.

If you're making a game, this is probably at least a useful example to look at, even if I don't agree with some of the decisions they made (uninterruptible moves, for instance)

6 comments

I think the problem here is that AI academics think of AI as predicting from factors. Most other people think of an AI as a program that can effectivly emulate human intellegence. The end goal of AI (or at least game AI) is to create as perfect of a facsimile for the way an average person will think. In reality there are no "best decitions", let alone in a simulated reality inhabited with different rules and AI.

When I play a game I want the AI to be as close to another human as possible. That's why many AIs are laughed at for being tricked by really simple tactics (circling around a pilar so the AI follows you, putting something between you and the AI so they can't see you like in Skyrim's buckets, etc.).

I wouldn't go that far.

AIs in games often cheat, and they're also dumbed down so that they don't beat humans too fast, but the main difference with "regular" AI comes from the difference in goals and context. AI in most games has to make sufficiently smart decisions in a dynamic environment and with very limited timespan (milliseconds, usually). In such, it is pretty similar to algorithms used in robotics, and therefore entirely unlike the stuff the regular AI does to suggest you better ads.

Completely agree. Games are typically only "fun" when you feel challenged. Most people do not find "fun" in losing.
The thing is most simple game AI isn't challenging. Or it's challenging in boring ways. Like having 100% perfect aim or long health bars. It's awesome to have an AI that is challenging by actually being good at the game. Having some actual strategy and intelligence.

It's a complete misconception that "real AI" needs to be super hard. Give it realistic constraints like slow reaction times or noisy input. You can handicap it in many ways to control the difficulty. Modern chess engines can easily beat even the best players in the world. But by limiting the number of moves they search, you can set one up that new players can beat.

My favorite game AI is from age of empires 2. All other RTSes just let the AI cheat like crazy to provide challenge. For AoE2 they went to a lot of work to design an expert system and a custom scripting language for it. Tons of features were implemented to make it easy to write relatively sophisticated AI strategies. And they documented it well and made it easy for modders to write even better AI scripts.

As a result the AI on hardest can beat all but skilled competitive players without cheating at all (at least the current AI shipped with the steam version.) It's actually fun to play against and isn't a terrible substitute for a real human player.

Similarly to that, there exist AIs for Starcraft Broodwar that are capable of providing a decent challenge to novice and intermediate level human players. You could check some examples at play on: http://sscaitournament.com/ and also develop your own AI in one of the more popular programming languages (C++, Java, etc). Disclaimer: I am the author of one of those Starcraft Broodwar AIs
> Most people do not find "fun" in losing.

Allow me to introduce you to a developer named https://en.wikipedia.org/wiki/FromSoftware ...

And if that's not good enough, there's the one whose game basically opens with 'Losing is fun!': http://dwarffortresswiki.org/index.php/DF2014:Losing
Kind of off topic, but the thing I like about the "Losing is fun!" mantra of DF is that "losing" is not the end of the game. It's just another point in history. So "losing" really just advances the story plot -- which is why it's fun. Conversely, "winning" means that you don't have anything left to do and it's "boring". I don't know any other game with this point of view.
Thia is just the general rule for simulation games, in free play mode.

Reach a point where all core problems are solved, and then create your own problems (and try to solve them).

Its just DF community that claimed it as their mantra, and their primary marketing of the game. But all sim games (d)evolve to this.

Kinda like Lucky Strike's "it's toasted!" slogan

Both of which were influenced in their attitude towards losing by a little game known as Nethack [1].

Although I understand Souls doesn't have permadeath, therefore it's probably only half the fun of Nethack.

__________

[1] https://en.wikipedia.org/wiki/NetHack

Which in turn took from rogue. Which in turn came from DnD first edition / advanced edition, when DnD was more about navigating dungeon traps than fighting monsters (and not at all similar to modern DnD, which resembles Besthesda RPGs much more than roguelikes)

But Original DnD is where my inspiration-knowledge stops

D&D is descended from wargaming.
https://alt.org/nethack/ is probably the best way to play it (or watch others do so, which is a pretty cool feature)
It depends. With a well balanced fighting game I don't mind losing to a good human opponent because it means that my game improves. Playing against someone who's good is a great way to find out what moves/patterns you thought might be safe aren't.

I agree that if you have no way to measure that progress/improvement then the fun is lost.

That actually would be an interesting game mechanic; make sure you lose, but you get more points for how spectacularly you lose...
Now i want though a machine learned fighting game AI. Maybe it would even be a challenge for the enthusiasts?

https://youtube.com/watch?v=xSGW7CwD5GM

Someone made exactly that for Super Smash Bros.:

https://www.engadget.com/2017/02/26/super-smash-bros-ai-comp...

Machine learning would be interesting to apply to something like saltybet[0], there's already a paper on the idea[1], dunno if somebody actually did manage to do it.

[0]http://www.saltybet.com/

[1]http://webcache.googleusercontent.com/search?q=cache:VXw25h2...

(uninterruptible moves, for instance)

I bet this was done to decrease the complexity of the script flow. Otherwise, you'd have to provide for the interruption cases.

I asked the blog's author and he said hits do interrupt scripts. Aside from that, more complex scripts intended for higher difficulty have explicit conditional branches after moves to allow for blocking and counters. The triple fireball script example is for "easy Ryu", so it's intentionally dumb/non-reactive.
What do you mean by non-interruptible moves?