GIF
GIF
격투게임에서 A와 B라는 캐릭터가 약 90개의 기술을 사용한다면 경우의 수는 90*90=8100 이렇게 계산하는거 맞죠? 가물가물해서...(철권이 평균적으로 90개 이상)
머신러닝(강화학습)으로 게임 ai만드는걸 학위논문으로 잡고 있습니다.
교수님들이 이게 왜 필요한지에 대한 설명이 부족하다고 하셔서 요구분석 내용을 좀 보강할려고 하는데 FSM의 단순함을 이야기 할려고 합니다.
머신 러닝을 사용하는 이유
1. FSM과 같은 상용화된 게임 AI기법들은 격투게임과 같이 경우의수가 많은 게임에서는 사용자가 파훼하기가 너무 쉽다.
ㄴ 각 기술마다 올바른 대응법을 구사하는 상태 전이를 만드는건 사실상 불가능하다.
ㄴ 캐릭터 A와B가 사용할 수 있는 기술이 서로 90개면 90*90 = 8100개의 경우의수가 나온다.
ㄴ 8100개의 경우의수를 직접 코딩하는건 사실상 불가능하다. 이후 발생할 디버깅도 생각하면 마찬가지
2. 철권처럼 인기가 많고 성공한 격투 게임도 난이도 최고로 올려도 진 앞 오른발(뻥발)만으로 어려움 없이 클리어가 가능하다
ㄴ 게임의 파훼가 쉬울수록 게임의 흥미를 쉽게 떨어트린다.
ㄴ 단순한 AI는 결과적으로 격투 게임 뿐만 아니라 게임의 싱글플레이 콘텐츠의 흥미를 쉽게 떨어트린다.
ㄴ 싱글플레이가 단순해 멀티플레이를 하자니 네트워크, 유저들간의 실력 격차가 큰 게임들이 존재하며 특히 격투게임 같은 경우 초심자들의 적응이 쉽지 않다.
3. 머신러닝을 이용해 FSM보다 더 발전된 AI를 제공하면 기존 초보 유저들 상대로 좋은 상대가 될 수 있을거라고 생각한다.
ㄴ 한가지 기술만 사용하여 게임을 클리어하는 단순함을 해결할 수 있다.
ㄴ 네트워크 없이 싱글플레이로 멀티플레이와 같은 재미를 제공할 수 있다.(학습한 ai실력이 사람수준이라는 가정하에)
ㄴ 머신러닝은 환경에 적응 능력이 있기 때문에 새로운 캐릭터나 기술이 추가되도 FSM처럼 상태 전이 코딩을 새로 짤 필요없이 AI에게 새로운 기술의 실행 명령만 추가하면 AI가 스스로 학습해 변화된 환경에 적응해 기술을 적재적소에사용한다.
머신 러닝 사용후 발견한 별개의 장점
ㄴAI의 캐릭터 컨트롤 방식이 사람이 키보드와 조작하는 방식과 매우 유사해 학습 과정중 자동으로 버그를 찾는다.(이건 프로토타입 돌려보면서 발견한 사항)
이거 말고 또 내용 추가할만한게 있을까요
위에 본문이 간단한 환경에서 구현한 프로토타입인데(이후 재대로된 환경에 적용해볼 예정)
1. 선빵 때리면 거의 필승이기 때문에 거리조절에 신경 엄청씀
2. 거리가 가까워지면 공격이 제일 빠른 하단 공격을 많이 쓴다.
3. 하단공격 1대라도 덜맞겠다고 방방 뛴다.
4. 공격과 점프를 아주 칼같은 타이밍에 따닥 누르면 점프 공격을 하는 버그를 사용한다.
5. 오른쪽 애는 도망가면서 싸우는 니가와 스타일 왼쪽애는 쫓아가는 스타일입니다.
6. 모르고 오른쪽 끝에 갈 수 없는 벽이 있다는걸 안알려줘서 계속 뒤로 튈려고함
전 프로그래밍 전공은 아니지만, 논리로직만 고려했을 때
서로 동시에 90개 중 1개의 커맨드를 입력한다고 하는 전제를 언급하셔야 할 것 같고(아마 전제로 하신 부분 같은데 없어서 썼습니다.) 이게 없다면 서로 다른 타이밍 즉, 시간 변수까지 고려해야 하므로 경우의 수가 엄청나게 증가할 것 같습니다.
이런 가정(서로 동시에 입력)에서 출발했을 때, 8100가지의 경우의 수가 성립한다고 생각합니다.