군대에 있을때 해봐야지하고 까먹고 있었는데 얼마전에 여기 블로그에 글써놓은거 보고 생각나서 설치해봤다.
소스코드는 github.com/Virtus77/pysc2-agent에 올리고 있다.
지금은 사실 직접 짠 코드는 아니고 github.com/skjb/pysc2-tutorial 이걸 보고 구조를 익히고 있다.
Create Game
Reset
Observe
Act
If game is not finished
go Observe
else
Reward
go Reset
전체 흐름이 이렇게 진행되는데 사람이 실제로 게임하는 방식을 그대로 시뮬레이팅 하는 방식이 신기하다.
예를들어 배럭을 지을때 scv선택, 키보드B, 키보드S, 클릭 이런 일련의 동작을 action으로 만들어서 사용한다.
사진엔 안나와있지만 화면(카메라)도 움직여줘야해서 실제로 우리가 스타를 할때 하는 행동들을 비슷하게 구현해줘야한다. 이외에도 RAW_ACTION이라고 해서 실제 맵이나 미니맵에 상호작용하지 않는 저수준에서의 컨트롤이 가능한 방법이 있다.
아무튼 위에 적어놓은 외국분이 올려주신 튜토리얼보고 따라하곤 있는데 머신러닝이나 파이썬을 접해본적이 별로 없어서 앞으로 어떻게 구현해야할지 난감한 상황이다.
두서없이 진행상황을 적어보자면
구글 검색도 해보고 관련 디스코드도 들어가보니 pysc2는 머신러닝베이스 봇을 만들기에 적합하고, 스크립팅에 적합한건 python-sc2라고 한다. 그래서 봇 관련 구체적인 기능은 python-sc2에 좀 더 많이 구현되어있는 편이다.
그래서 고민 좀 해봤는데 내가 만들고 싶은건 스크립팅된 봇은 아니라고 생각해 pysc2로 계속 해볼 예정이다.
일꾼 선택, 생산, 미네랄 채취까지는 무난하다. 그런데 보급고나 병영 지을려니 건물지을때 어디에 지을지 정하는 기능을 만들어야 한다. 랜덤이나 직접 정해서 하기보다 봇이 학습했으면 하는데, 머신러닝을 공부해봐야 하는건가...
언제, 어디에, 어떤건물을 지을지에 따라 가중치 주면 될 것 같은데 그걸 코드로 구현하는 방법을 잘 모르겠다;
그냥 취미, 재미로 하는거라 우선순위가 밀려서 장기 프로젝트가 될 듯한 느낌이다.
얼마전에 Unrailed라는 게임 인공지능을 깃허브에서 봤는데, 머신러닝 관련된 것은 아니지만 재밌어보여서 그걸 먼저 해볼까 싶기도 하다.
시험기간 다가오니 이것저것 다해보게 되는건 왜 그런건지...