TeaPearce / Counter-Strike_Behavioural_Cloning

IEEE CoG & NeurIPS workshop paper 'Counter-Strike Deathmatch with Large-Scale Behavioural Cloning'
343 stars 45 forks source link

Wonder if accessing game memory is necessary when training? #9

Closed bbsxjy closed 1 year ago

bbsxjy commented 2 years ago

Hi TeaPearce,

Thanks for providing such a well written paper and presenting this project for the behaviral cloning track, really appreciate it. Me and my team are inspired from this and we are planing to do a research on other MMORPG games.

Before we start our project, I would like to consult you some questions regarding to this project codes which would defenetly help us to understand the concept better.

  1. In the file dm_record_data.py and dm_record_data_me_wasd.py, the application is actually open up the game process and access game's memorry to get internal game data like player position, x,y,z and height etc. So the question is, is it necessary to access game memory while recording game play data(especially for MMORPG/FPS game) for behavioural cloning working properly?
  2. If it is true above, after done training the model by using the data above, is it necessary to access game's memory when running agents to use model to play actual game? The reason I'm asking is because usually accessing to game's memory will be considered as hacks.
  3. Last but not the least, for 3D games, is the FOV, positions of player, yaw, pitch and roll required to gather as the meta data in order to do the behaviral cloning and make agents play like human?

Sorry if I'm asking too many questions! Really hope you can answer them since our team is now very excited about what the AI can achieve in the MMORPG games!

Best regards, Whaley

TeaPearce commented 1 year ago

Closing this as handled this over email with the OP directly. Response as below:

For BC, we need to collect a dataset of observation and action pairs. How to collect this is the challenge! Ideally, one would have access to both the observation a human player is seeing, alongside the mouse and keyboard actions they took. If you have direct access to this, then no, you don’t need to delve into the memory or anything.

For CSGO, unfortunately, when scraping data from human players, I didn’t have access to the mouse and keyboard events directly. So how can we collect a dataset for BC? The approach I took was to use some tools from the hacking community to extract x,y,z coordinates (amongst other things) that would allow me to reverse-engineer the keyboard and mouse actions they player took.

At test time, it was not essential for me to parse the memory again, since I’m just applying the predicted actions to the game.

I hope my general approach will help you in whichever game you are focusing on. The specifics of what you need to collect will depend on the action space of the game, so I can’t advise too much there.