본문 바로가기
가상세계/안드로메다

스펙트럴 소울즈 팁#2, 자동 200턴 돌리기

by 래프윙 2015. 1. 11.



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 디버깅을 허용할지 묻는 팝업이 뜨는데 이것을 허용으로 해주시는 것만 잊지 마세요.







게임 하나 해보겠다고 안드로이드까지 공부하는 제 자신이 가끔은 두려워질때가 있습니다. ㅡㅡ;