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.