매크로

조회 수 1008 추천 0 댓글 3


R7GeQvg.png

위 스샷과 같은 리듬게임 매크로를 만드려고 합니다.


1. 구동환경


MEmu라는 에뮬(?)을 통해 PC에서 안드로이드 게임을 구동


i7의 부족함이 없는 컴퓨터 성능


2. 게임에 대한 소개


리듬게임으로 캐릭터 면상 위에 빨간버튼이 오면 클릭, 주황 버튼이 오면 꾸욱 누르기,


파란 버트닝 오면 해당 방향으로 드래그 해야 한다.


3. 설계


이미지서치와 비활성 클릭을 통한 구현


4. 문제점


- 멀티터치가 안됨. 동시에 꾸욱 눌러야 하는 상황에 대처 불가능


- 프로그램 성능 부족. 초기 테스트 단계에서 몇가지 버튼만 테스트할 시에는 작동을 잘 하나,

   버튼수가 많아지고 이미지서치하는게 많아지니 제대로 구동이 안됨.


5. 소스

global bt1:=252|632<<16
global bt1l:=162|632<<16
global bt1r:=342|632<<16 ;버튼 위치들에 대한 값. bt1l, bt1r은 드래그해야할 도착 위치.
global wintitle:="MEmu 2.9.6 - MEmu"
global n1:=0
F8::exitapp


F2::
{
loop ;무한반복
{
imagesearch,vx,vy,237,630,267,660,*10 %A_ScriptDir%/normal.bmp  ;일반 클릭하는 명령
if errorlevel = 0
{
postmessage, 0x201, 1, %bt1%, , %wintitle%
postmessage, 0x202, 0, %bt1%, , %wintitle%
}

imagesearch,vx,vy,237,630,267,660,*10 %A_ScriptDir%/push.bmp  ;꾸욱 눌러줘야 하는것에 대한 명령
if errorlevel = 0
{
if n1 = 0
{
n1:=n1+1
postmessage, 0x201, 1, %bt1%, , %wintitle%
}
else
{
n1:=n1-1
postmessage, 0x202, 0, %bt1%, , %wintitle%
}
}

imagesearch,vx,vy,187,622,207,642,*10 %A_ScriptDir%/side.bmp ;왼쪽으로 드래그
if errorlevel = 0
{
if n1 = 1
{
n1:=13-1
postmessage, 0x202, 0, %bt1%, , %wintitle%
}
else
{
postmessage, 0x201, 1, %bt1%, , %wintitle%
postmessage, 0x202, 0, %bt1l%, , %wintitle%
}
}

imagesearch,vx,vy,297,622,317,642,*10 %A_ScriptDir%/side.bmp  ;오른쪽으로 드래그
if errorlevel = 0
{
if n1 = 1
{
n1:=n1-1
postmessage, 0x202, 0, %bt1%, , %wintitle%
}
else
{
postmessage, 0x201, 1, %bt1%, , %wintitle%
postmessage, 0x202, 0, %bt1r%, , %wintitle%
}
}


나머지 4개의 버튼에 대하여 위 소스 반복.


6. 상세

버튼의 색상이 단일 색상이 아니라서


딱 1개 픽셀만 찍어내서 이미지 서치로 약간의 오차범위를 스캔하게 했습니다.


컴퓨팅 성능낭비를 줄이기 위해 버튼별로 20X20 ~ 30X30 픽셀 범위로 스캔하도록 했어요.



드래그 해야하는 파란색 버튼의 경우, 빨강 주황버튼과 달리 방향구분이 필요해서


해당 방향으로 삐죽 튀어나온 부분의 좁은 구역에 파란색 픽셀을 감지하도록 했구요.



우선 빨강 버튼과 주황버튼만 조합한 테스트 단계에서는 정상작동 잘 되는걸 확인했구요


파란색 버튼까지 스캔하는 코드를 넣으면 작동을 못합니다.


파란색 버튼 설계가 잘못되서 드래그를 못하는건 그렇다고 쳐도


정상 작동되던 빨강, 주황버튼까지 작동을 못하더라구요.


아무래도 이미지스캔할게 많아지다보니 제때제때 동작을 못하는거 같습니다.



원하는건


- 멀티터치를 어떻게 구현해야하나


- 쾌적한 동작을 위해 어떻게 해야하나


입니다.


코드의 개선점이라던가, 좋은 함수의 소개든지 어떤것이든 좋습니다.




  • 슉슉이 2017.05.24 10:40

    1. 동시클릭은 안됩니다. 아주 빨리 순차클릭으로 동시처럼? 작동하게는 가능합니다.


    2. imagesearch <- 이건 에어로피크가 켜져있으면 느립니다. 윈 7의 경우 에어로 피크를 완정히 끌 수 있어서 빨리 작동하지만 원10일 경우 기본적인 서치시간이 있어서 1을 구현하기가 힘듭니다.


    정말 빠른 캡쳐 방법이 있지만, 지금은 지원하는 지는 모르겠지나 미뮤는 다이랙트액스를 지원하지 않아 프린트윈도우 함수를 못씁니다(녹스 스피드모드, 블루스택 가능).

  • 단백질 2017.05.24 12:00

    굳이..리듬게임까지 매크로 돌려야됨꽈 ㅠㅠ

  • 암드래 2017.05.24 19:26

    - 멀티터치를 어떻게 구현해야하나

    => 멀티스레드를 통한 멀티터치 구현 (오토핫키는 단일 스레드 스크립트 언어이므로 불가능)

    => C++이나 C# 이용


    - 쾌적한 동작을 위해 어떻게 해야하나

    => 오토핫키 원본 소스코드를 확인해보면 이미지 서치 함수는 반복문 작업이 많음

    => 따라서, 따로 이미지 서치 함수만 떼어내서 해당 반복문에 대해 분산 처리를 하도록 코딩하여 반복문 속도개선 (병렬 프로그래밍)

    => http://sosal.kr/466 참고


List of Articles
분류 제목 글쓴이 최근변경 추천
질문 이미지서치 스크립한번 봐주세요.. 1 일기 2016.02.07 0/0
질문 이미지서치 순서에 대한 답좀 부탁드립니다.. 1 sinyoonh 2017.11.23 0/0
질문 이미지서치 성능개선할 수 없나요 3 츠네로바 2017.05.24 0/0
질문 이미지서치 서치능력이 너무 형편없는데... 3 펩티드 2018.06.05 0/0
질문 이미지서치 사진크기 달라도 찾을방법있나요? 7 Toon 2014.12.02 0/0
질문 이미지서치 사이에 이벤트 1 Sklz 2019.01.21 0/0
질문 이미지서치 부분입니다. 변수에 값을넣는데요. 4 우후훅 2014.11.11 0/0
질문 이미지서치 범위지정에 대한 질문을 합니다~! 7 메루루루 2015.07.30 0/0
질문 이미지서치 범위지정 질문있습니다~ 5 페르니코 2016.01.31 0/0
질문 이미지서치 범위서칭 질문드립니다. 8 오핫정보공유 2019.11.26 0/0
질문 이미지서치 범위 관련해서 도움좀 주세요 2 몬길을하자 2016.12.07 0/0
질문 이미지서치 방향에 대해서 질문 3 키리 2018.05.15 0/0
질문 이미지서치 방법좀 알려주실분 4 잘생긴욱이 2017.10.09 0/0
질문 이미지서치 방법좀 알려주세요 3 초근성 2018.08.12 0/0
질문 이미지서치 반복문 줄이기 질문드립니다. 1 무쌍류 2023.02.24 0/0
질문 이미지서치 및 document..에 대해 알려주세요..해당내... 2 정직한 2016.10.31 0/0
질문 이미지서치 미인식 검출 3 메이커s 2020.05.26 0/0
질문 이미지서치 무한루프 질문 좀 할게요 5 으뜸어린이 2014.11.05 0/0
질문 이미지서치 명령어에 대해 궁금한게 있어요 7 스웨이스 2016.11.15 0/0
질문 이미지서치 명령어 질문있습니다. 8 지니블렉션 2015.04.10 0/0
Board Pagination Prev 1 ... 303132333435363738 ... 173 Next
/ 173

전체 최신 인기글

전체 주간 인기글