이전 글에서 목표했던 대로 클라이언트와의 어떠한 연계도 없이 단순히 경험치 숫자를지속적으로 읽고 저장하는 프로그램 을 만들어보려합니다.
저는 Python을 이용한 프로그래밍이 익숙하기에 언어는 Python을 사용할 예정입니다.
첫번째 시도로는 pyautogui 로 스크린 캡쳐를 하고 pyrtesseract (OCR) 로 캡쳐된 이미지의 특정 좌표에서 현재 경험치량을 추출하여 정수로 획득하게 되면 성공입니다.
개발 환경 셋업하기.
Windows에서의 개발은 거의 7년만이라 익숙치 않은 상태입니다만... 깨지고 부숴지다보면 뭐라도 되지 않겠습니까?
저는 가성비 엔지니어이기에 Pycharm을 커뮤니티 에디션으로 설치해줍니다.
(회사에서는 프로페셔널 플랜을 사용합니다. 사랑합니다 젯브레인!)
간단히 개발환경을 셋업한 뒤, 필요한 패키지들을 설치해줍니다. GUI로도 편하게 라이브러리 검색-설치가 가능하군요!
pytesseract를 사용하기 위해선 빌드된 바이너리를 함께 다운로드 받아야 합니다. UB-Mannheim/Tesseract 깃헙에서 다운로드 가능합니다. 설치시 언어 데이터를 선택할 수 있는데요, 혹시 모르니 한글 관련 데이터를 함께 설치해줬습니다.
프로그램 실행시켜보기
ChatGPT의 도움을 받아 간단히 스크립트를 작성하고 실행시켜보았습니다.
import pyautogui
from PIL import Image
import pytesseract
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
def read_text_from_screen(x, y, width, height):
# 화면 캡처를 수행합니다.
screenshot = pyautogui.screenshot(region=(x, y, width, height))
# 캡처한 이미지를 저장합니다.
screenshot.save("screenshot.png")
# 이미지에서 텍스트 추출
extracted_text = pytesseract.image_to_string(Image.open("screenshot.png"))
return extracted_text
# 읽어올 화면의 좌표와 크기를 설정합니다.
screen_x = 688
screen_y = 982
screen_width = 145
screen_height = 20
# 특정 부분의 텍스트를 읽어옵니다.
result_text = read_text_from_screen(screen_x, screen_y, screen_width, screen_height)
print("Extracted Text:", result_text)
박스친 부분을 보면 현재 경험치 275649, 33.10% 에 대한 데이터를 잘 가져왔음을 확인할 수 있습니다.
이제 이 코드를 모듈화하여 경험치와 관련된 데이터를 정규화하여 획득하고, 10초 간격으로 프로그램이 실행되도록 수정해야겠네요.
PoC 마무리
PoC의 결과로 저는 경험치와 관련된 시계열 데이터를 획득하게 되었는데요. 이제부터는 할 수 있는 것이 너무나도 다양합니다.
단점이라면 메이플랜드 화면을 한쪽에 항상 띄워놓아야만 데이터 획득이 가능하다는 단점이 있지만...
이젠 간단한 GUI를 만들어 스탯창을 꾸밀 수도 있고. 누적된 기간 데이터에 간단한 라벨링을 하여 경험치 구간을 비교해 볼 수도 있겠죠.
또한 OCR 기술을 사용하여 텍스트 추출에 대한 경험을 통해 앞으로 경험치 말고도 더 다양한 텍스트 데이터를 파이썬을 통해 획득할 수 있게 되었습니다.
이 정도면 훌륭한 어시스턴스를 만들어나가기에 파이썬과 pyrtesseract 가 아주 적절한 도구로써 PoC에 성공했다고 볼 수 있겠습니다.
메이플랜드로부터 데이터를 획득 하는 것이 어려울 뿐, 이후 데이터 분석이나 UI를 만들어나가는 과정은 메이플랜드와의 관련 없이 수행할 수 있는 작업들이기에 성공, 실패 유무가 오로지 저에게 달려있는 것이기도 하죠.
다음 게시글에서는 시계열 데이터를 잘 쌓는 글을 올려보도록 하겠습니다.
메이플랜드를 하고 있으면 우측 창에 주가 그래프처럼 내 사냥에 대한 효율을 실시간 그래프로 확인할 수 있다면 얼마나 멋질까요?
시간당 3만이 안나오면 제 자신에게 채찍 소리가 나게 한다던가 ㅋㅋㅋㅋㅋㅋㅋㅋㅋ
생각만 해도 가슴이 두근거립니다.
이 맛에 프로그래밍 하는 것 같습니다.
'게임 > 메이플랜드' 카테고리의 다른 글
메이플랜드 사냥터별 시간당 경험치 자동 측정하는 방법! (35) | 2024.02.13 |
---|---|
메이플랜드 매크로 보다 나은 경험치 측정기 - 데이터 시각화 (38) | 2024.02.09 |
메이플랜드 경험치 측청기,분석기 만들기 - 인사이트 보여주기 (60) | 2024.01.21 |
메이플랜드 경험치 측청기,분석기 만들기 - 시계열 데이터 쌓기 (56) | 2024.01.21 |
메이플랜드 경험치 측정기, 분석기 - 인트로 (50) | 2024.01.20 |