naver / guitar

76 stars 18 forks source link

마우스 이동 문의 #344

Open jazzah01 opened 7 years ago

jazzah01 commented 7 years ago

안녕하세요. GUITAR를 통해 FPS 게임 클라이언트 자동화테스트를 해보려고 하는 유저입니다. 지난번 문의에 친절하게 대답해주셔서 감사합니다.

  1. 특정 이미지를 찾아 마우스커서를 이동시키는 것이 아닌, 임의의 범위만큼 마우스를 이동시킬 수 있나요? FPS게임이기 때문에 마우스를 이동 시켜 화면 전환이 필요합니다. 전에 마우스 클릭관련 메뉴얼을 봤을 때 이미지를 서칭해서 클릭하는 내용만 적혀 있었는데, 서칭없이 현재 상태에서의 클릭이 필요해서 autoit함수의 "$마우스클릭=MouseClick('left')" 계산한다. 구문으로 해결한바 있었습니다. 이런 것처럼 임의의수치 (좌표기반 아님)로 마우스를 상하 좌우, 대각선으로 이동 가능한지 궁금합니다. "$마우스이동=MouseMove(13.13, 15, 70)" 계산한다. (수치는 임의입니다) 구문으로 실행해봤더니, 이동은 되나 좌표를 참조하여 이동하는 것이라 제가 원하는 화면으로 이동이 안되고 있습니다. 만약 그것이 불가능하다면, 좌표 참조 기준이 궁금합니다.

  2. 특정 UI 이미지 서칭을 시킬 때 좌표값 저장을 반드시 해야하는지 궁금합니다. 우선 실험해봤을때는 좌표값을 빼도 그 이미지를 잘 찾아 클릭을 하긴 했는데, 좌표값이 정확히 어떤 역할을 하는지 알고 싶습니다.

  3. 완성시킨 구문과 이미지들로 다른 PC에서 구동을 할때, 해당 이미지를 찾지 못하는 경우가 발생하는데, 이러한 문제가 발생하는 원인과 해결방법이 궁금합니다. 이미지 좌표값을 지워야 하는건지.. 관련이 있는지 알고 싶습니다.

ssmmhh commented 7 years ago

답변 드립니다.

1. 이미지를 현재 최근 위치로 부터 상대적으로 이동하시려는것 같은데, 아래와 같이 하시면 가능합니다. 최근 마우스 위치 기준으로 상태적으로 X+50, Y+10 을 클릭하는 예제 입니다.


블로그링크 이동한다. "$마우스클릭=MouseClick('left', MouseGetPos()[0] + 50, MouseGetPos()[1] + 10)" 계산한다.

2. 이미지 캡쳐시에 생성되는 파일에 좌표는 이미지 검색이 최초 검색위치를 지정하는것으로 이전에 속도가 느린 PC에서 빠르게 이미지를 찾기 위한 옵션일 뿐이며, 이미지를 찾거나, 찾지 못하는 경우와는 상관이 없습니다. 현재는 PC속도가 워낙 빨라져서 파일명에 좌표값이 큰 의미가 없습니다. (즉, 좌표가 없어도 정상작동됩니다)

3. 게임과 같은 경유 그래픽 드라이버나 각종 그래픽 옵션값이 달라져서 실제 이미지가 틀려지는 경우가 많습니다. 때문에 스크립트를 작성상 PC가 아닌 다른PC에서 테스트 하고자 한다면 해당 PC와 동일한 환경 (드라이버 버전 및, 게임 옵션등을 정확하게 일치 시켜 주셔야 합니다.) 가능한 윈도우 창모드로 실행하시길 권장해 드리며, 해당 윈도우의 크기도 정확하게 일치 시키는것이 중요합니다.

https://github.com/naver/guitar/issues/70 에서와 같이 실패시 원본과, 실패된 화면의 이미지를 확대해 비교해 보시면 색상이나, 이미지가 틀려진것을 확인하실수 있을겁니다.