공정 엔지니어의 AI 엔지니어로의 성장 기록

Qpainter 2

디아블로2 봇 만들기 #3— (맵핵 구현)미니맵 내 오브젝트 표시

1편에서 D2R 메모리를 읽고, 2편에서 투명 오버레이 창을 만들었다. 이제 실제로 화면에 무언가를 그릴 차례다. 몬스터 등급별 마커, 워프포인트와 출구 표시, 그리고 아직 방문하지 않은 방의 오브젝트까지 감지하는 PresetUnit 개념이 이번 편의 핵심이다. 좌하단 미니맵과 화면 가장자리 방향 화살표까지 구현하면 Phase 1 맵핵이 완성된다. 01 무엇을 표시할 것인가 정보 밀도가 높은 오버레이에서 빠르게 구분하려면 색상과 모양을 동시에 다르게 해야 한다. 색상만 다르면 색맹 환경에서 구분이 어렵고, 모양만 다르면 직관성이 떨어진다. ● 일반 몬스터 ..

디아블로2 봇 만들기 #2— (맵핵 구현)미니맵 오버레이 구현

1편에서 D2R의 메모리 구조를 분석하고 Python으로 게임 데이터를 읽는 데 성공했다. 다음 문제는 이 데이터를 게임 화면을 가리지 않으면서 표시하는 것이다. 해답은 게임 창 위에 완전히 겹쳐지는 투명 오버레이 창을 별도로 띄우는 방식이다. 이 글에서는 Win32 API로 게임 창을 추적하고, PyQt6로 투명 클릭 통과 오버레이를 구현하는 과정, 그리고 이소메트릭 좌표를 화면 픽셀로 변환하는 공식을 정리했다. 01 오버레이란 무엇인가 오버레이는 게임 프로세스 바깥에서 OS가 렌더링하는 별도의 투명 창이다. 게임 코드를 전혀 건드리지 않으면서 게임 화면 위에 정보를 그릴 수 있다. 스팀 오버레이, Discord 오버레이, GeFo..