←back to thread

1901 points l2silver | 1 comments | | HN request time: 0.205s | source

Maybe you've created your own AR program for wearables that shows the definition of a word when you highlight it IRL, or you've built a personal calendar app for your family to display on a monitor in the kitchen. Whatever it is, I'd love to hear it.
1. AIBeats ◴[] No.35756777[source]
I created an AI that can beat the first and second boss in my favourite pc game Dark souls 3

First boss:https://www.youtube.com/watch?v=zcbH7jt4w0w

Second boss:https://www.youtube.com/watch?v=IeEoQVT66t8

I am using cheat engine to get information from the game such as hero position, boss position, hero animation, boss animation, time since animation change, life, stamina, current rotation and the angle between the boss' heading and the hero. (to see if hero is behind or in front of or to the side/behind the boss)

When the boss or hero starts an animation i start a counter at 0. For every timestep that the animation is still running i increment that counter and feed it as inputThe AI has no knowledge about the lengths of the animations. It has to learn that.The animation names are converted to a one hot encoding and fed to the network

The different examples shown in the videos have only been trained for a few days in real time (only 1 instance of the game running). But the episodes are cherry picked. In the Iudex case it actually kills the boss almost every time, however Vordt is a lot harder to learn so these are the some of the kills that i have picked out.

Other games have APIs made for reinforcement learning so that the agent can take an action at each frame of the game. I have kind of hacked my own implementation and are actually doing keypresses with sleeps in between each step as i can't control the frames on a frame by frame basis.

I am using python and stable baselines for the reinforcement learning part. I made my own implementation of a "gym" for dark souls. Then i set up a lua script in cheat engine that opens a socket from this socket i read the state in my python script.