3. Macro written in Python(feat. Blade2 for kakao)
이번 포스팅부터는 실제 서비스 중인 게임들에 적용할 수 있는 매크로 기능들을 Python으로 만들어보겠습니다. 그 과정에서 매크로 프로그램에 필요한 다양한 기술들을 하나하나 자세하게 설명할 . 역시 직접 만들어보는게 최고 아니겠습니까.
목표
- Python 으로 화면 인식하기
준비물
-
Microsoft Windows OS가 설치된 개인 컴퓨터. (Windows OS란 우리가 흔히 말하는 윈도우7, 윈도우8, 윈도우10입니다. 특별한 목적을 가지고 컴퓨터를 사용하는 분 외에는 대부분 윈도우가 설치되어 있을 것입니다.)
-
그리고 Python !!, Python 은 반드시 설치되어 있어야 합니다.
화면 인식
게임 매크로의 기본 동작은 다음과 같습니다. 메모리 해킹 방식이 아닌 화면 인식 방식의 경우입니다.
개인적으로 화면 인식 방식은 불법이라고 생각하지는 않지만 메모리 해킹은 확실히 불법입니다. 데이터를 위변조했기때문이죠. 위조 화폐를 만드는 거랑 비슷하다고 생각합니다. 하지만 화면 인식이 불법이냐고 물어보면 저는 불법이라고 생각하지 않습니다만.. 현재는 불법이라고 생각하는 게 대세긴 하죠. 한가지 확실한 건 자기가 혼자 만들어 쓰는 건 불법이 아니라는 것입니다.
- 화면 인식
- 마우스 클릭
- 화면 인식
- 마우스 클릭 …
이 동작이 영원히 반복하는 게 매크로입니다. 물론 세부적으로는 1-1. 2-1. 3-1.에 로직이 추가로 들어가겠지만 크게 보면 이와 같다고 볼 수 있겠습니다.
화면을 인식하는 방식에는 두 가지가 있습니다.(현재까지 제가 아는 한에서)
- 화면 하드 카피(이미지 캡쳐)
- 윈도우 API 를 통해서 얻어오는 윈도우 출력 메모리 버퍼 캡쳐
1번은 말 그대로 내 눈에 보이는 모니터 화면을 캡쳐하는 방식입니다. 2번은 조금 어려울 수 있는 개념인데 쉽게 설명해보겠습니다. 윈도우 프로그램은 사람 눈에 보이기 위해 각자가 가지고 있는 메모리에 화면에 무엇을 출력할 지를 저정해두고 있습니다. 서로 다른 윈도우 프로그램들이 겹쳐지거나 할 때 보면 보이는 부분이 있고 안보이는 부분이 있는 건 다 알고 있죠. 여기서 어디를 보이게 하고 안보이게 할 지는 윈도우 OS가 결정합니다. 사람 이 볼때는 보이는 부분이 있고 안보이는 부분이 있지만 실제로는 각자의 메모리에 화면 정보가 다 담겨져 있습니다. 이 메모리 정보(메모리 해킹 아닙니다. 화면 정보입니다.)를 윈도우 시스템 함수를 통해 얻어올 수가 있는데 이 정보는 화면이 가려도 전체 화면 정보를 가져올 수 있습니다.(1번은 화면이 다른 창에 가리면 가린 화면은 못보게 되죠)