Monkeyrunner를 이용한 안드로이드 매크로
PC를 이용해서 자동으로 200턴 대기하는 방법
스펙트럴 소울즈의 상상을 초월하는 노가다는
에디트만으로 감당할 수 없습니다.
특히 이계의 문 22층, 23층에서 200턴 이후
등장하는 클리오네, 세이렌을
기다리는 일은 정말 지루합니다.(심지어 랜덤)
PC 게임의 오토마우스처럼 반복 동작을 할 수 있는
안드로이드 매크로 앱을 찾아봤는데,
루팅의 제약이 있어서 사용하기 좀 꺼려지더군요.
그래서!
직접 만들기로 하였습니다.
ㄷㄷ
Android SDK Monkeyrunner 소개
Monkeyrunner는 안드로이드 개발도구 중의 하나로 PC에서 안드로이드 기기를 제어할 수 있습니다. 특정 포인트를 터치한다거나 글자를 입력하는 등등의 행위를 프로그램화 할 수 있기 때문에 테스트 자동화 등에서도 간간히 쓰이곤 합니다.
이것을 조금 활용하면 특정 행위를 반복하는 매크로로서 사용할 수 있습니다.
먼저, Monkeyrunner를 사용하기 위해서는 안드로이드 SDK가 설치되어 있어야합니다.
위 링크를 통해서 안드로이드 SDK를 다운로드 받을 수 있습니다만 설치 방법에 대해서 따로 설명하지 않겠습니다. 기본적으로 이 포스트는 안드로이드 SDK가 설치되어 있고 monkeyrunner을 실행 할 수 있는 환경이 갖추어져 있다는 것을 전제로 합니다.
정상적으로 설치되었다면 안드로이드 설치 폴더 하위의 tools 폴더에서 monkeyrunner.bat을 확인할 수 있습니다.(Android Studio의 경우 C:\Users\사용자계정\AppData\Local\Android, Stand-alone의 경우 C:\Program Files (x86)\Android에서 확인 가능)
터치 좌표 확인 방법
이제 게임에서 반복시킬 동작을 확인 하도록 합시다.
200턴을 대기하기 위해 우리가 해야할 일은
1) UP 키를 누른다.(이동->대기)
2) A 키를 누른다.(대기 실행)
을 200번 반복하는 것입니다.
Monkeyrunner에서는 아래와 같은 구문으로 PC에서 안드로이드 기기에 터치 이벤트를 발생시킬 수 있습니다.
device.touch(X좌표,Y좌표,'DOWN_AND_UP')
위의 200턴 대기 시나리오를 위해서는
device.touch(UP키 X좌표,UP키 Y좌표,'DOWN_AND_UP')
device.touch(A키 X좌표,A키 Y좌표,'DOWN_AND_UP')
라고 해주기만 하면 됩니다.
아하! 그럼 이제 각 키의 좌표값만 알면 되겠군요.
좌표값 확인을 위해 스마트폰에서 '시스템 설정>개발자 옵션>포인터 위치' 를 활성화합니다. 그리고 Monkeyrunner의 실행을 위해 '시스템 설정>개발자 옵션>USB 디버깅' 을 활성화합니다.(시스템 설정에 개발자 옵션이 존재하지 않는 경우 '시스템 설정>휴대폰 정보>소프트웨어 정보'에서 빌드 정보를 여러번 클릭해주세요. 개발자 옵션을 보이게 할지 여부를 결정할 수 있습니다.)
포인터 위치를 활성화하면 스마트폰 상단에서 터치하는 포인트의 좌표를 확인 할 수 있습니다. 게임화면에서 UP키를 누르면
좌표값(239.8, 783.2) 를 확인 할 수 있습니다.
같은 방식으로 A키는 (1133.4, 969.0) 입니다.
Monkeyrunner 스크립트의 작성 및 실행
이제 필요한 구성이 모두 끝났으니 매크로를 작성해보도록 합시다. PC에서 문서편집기를 열고 아래와 같이 타이핑합니다.
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice
device = MonkeyRunner.waitForConnection()
for i in range(1,210):
device.touch(240,783,'DOWN_AND_UP')
device.touch(1133,969,'DOWN_AND_UP')
MonkeyRunner.sleep(1)
적당한 이름으로 monkeyrunner.bat과 같은 경로에 저장합니다.
위 파일에서 for문의 (1,210)의 의미는 210번 반복하라는 의미입니다. 몬스터 턴인 경우에도 매크로가 동작 중이기 때문에 대략 210번이면 200턴 정도가 됩니다. 10턴만 대기하고 싶다면 'for i in range(1,10)' d이라고 작성하면 됩니다.
이제 실행을 위해서 PC와 스마트폰을 USB로 연결합니다. 게임에서는 200턴 대기할 부분으로 이동합니다.
그리고 PC의 명령어 실행창에서 Android SDK 하위의 tools 폴더로 이동 후에 'monkeyrunner.bat 저장한 파일' 로 실행하면!
알아서 UP키, A키를 누르면서 200턴을 기다립니다. 웹서핑이나 하면서 한 3분 기다렸더니...
클리오네가 나타나는군요. ㅋㅋ 포획!!
참고
이 방식을 활용하면 터치를 이용한 반복작업은 무엇이든지 할 수 있습니다. 게임뿐만 아니라 안드로이드 위에서 동작하는 모든 앱을 위한 매크로로 사용할 수 있습니다.
다만 한가지! 처음 monnkeyrunner를 실행할때 USB 디버깅을 허용할지 묻는 팝업이 뜨는데 이것을 허용으로 해주시는 것만 잊지 마세요.
게임 하나 해보겠다고 안드로이드까지 공부하는 제 자신이 가끔은 두려워질때가 있습니다. ㅡㅡ;
'가상세계 > 안드로메다' 카테고리의 다른 글
AMOLED라서 좋아요! 삼성 갤럭시탭 s2 (0) | 2016.05.13 |
---|---|
안드로이드와 오디오인터페이스 (0) | 2016.04.28 |
스펙트럴 소울즈 팁#1, 커트앵거, 천사의 깃털, 무 (0) | 2015.01.10 |
스펙트럴 소울즈 에디트#3, 파괴의 권화, 연금술사의 도제 그리고 연구자 (0) | 2015.01.09 |
스펙트럴 소울즈 에디트#2, 몬스터 격파와 아이템 (0) | 2015.01.06 |