필립은 이미 대부분의 봇이 어떻게 작동하는지에 대한 훌륭한 개요를 제공했지만, 그가 다루는 모든 유형의 봇에 대해 약간의 개인적인 경험을 쌓았 기 때문에 조금 더 자세히 설명하고 싶었습니다.
Runescape에는 Runescape 클라이언트의 메모리 내용을 로컬 메모리로 복사하는 대형 프로젝트 (RSBot)가 있었으며,이 경우 클라이언트가 걸릴 위험없이 게임의 전체 상태를 볼 수 있습니다. 데이터에 대한 포인터를 찾기 위해 메모리에서 찾을 위치를 결정하려면 약간의 리버스 엔지니어링이 필요했지만 일단 그렇게 한 후에는 정보를 활용하기 위해 API를 노출했습니다. 객체의 좌표를 얻은 다음 카메라 변환 매트릭스로 객체를 변환하여 화면상의 위치를 파악함으로써 세계 어디에 있는지 정확히 알 수 있습니다. 히트 마스크도 읽을 수 있었으므로 원하는 결과를 얻기 위해 마우스를 어느 범위로 이동해야하는지 정확하게 결정하는 것은 쉽지 않았습니다.
봇은 개발자에게 어떤 타일 좌표가 어디에 있는지,이 객체에 어떤 ID가 있는지, 주어진 항목에 어떤 ID가 있는지 등을 알려주는 주석과 같은 많은 디버깅 정보를 제공했습니다.이 정보는 봇을 만드는 데 사용될 수 있습니다. 봇 스크립트를 만드는 실제 과정은 실제로 매우 간단했습니다. 이 프레임 워크는 많은 유틸리티 기능을 제공 move_to(world_coordinates)
하거나 mouse_move(x,y)
다소 믿을 수있는 방법으로 지정된 활동 (에 너무 반복, 임의의 스플라인을 따라 마우스를 이동 미니 맵과 화면 모두를 통해 이동 등) 수행 할 것이다
또한 Runescape에서는 그래픽 품질을 대폭 줄일 수있는 옵션이 있습니다. 실제로 세계의 모델을 만들기 위해 화면을 촬영하고 기본적인 컴퓨터 비전 개념을 적용하여 특정 종류의 봇을 만드는 것은 매우 쉽습니다. 이 기술을 사용하여 저주 봇과 제련 봇을 만들었습니다. 프레임을 가져 와서 채도를 최대한 높이고 패턴에서 패턴을 추출하여 클릭 영역에 대한 확률 맵을 생성하려고 시도합니다.
저주 봇의 경우, 대상은 작은 악마였으며, 이는 단지 큰 붉은 것입니다. 제련 봇의 경우 회색으로 둘러싸인 작은 주황색 사다리꼴을 찾고, 퍼니스가됩니다. 또한 은행 책상이 될 큰 밝은 회색 'L'모양을 찾으려고 노력했습니다. 이는 다운 스케일링과 기본 휴리스틱으로 이루어졌습니다. 또한 미니 맵 옆에있는 편리한 나침반으로 방향을 조정할 수 있으므로 대상 물체를 찾기 위해 카메라를보다 안정적인 위치에 놓을 수 있습니다.
다양한 Nexon 게임에서 서버는 클라이언트를 매우 신뢰합니다. 나는 봇이 거의 정교하지 않아도되도록 위험을 제거하거나 날실을 추가하기 위해 맵을 수정하여 Maplestory 에서이 톤을 남용했습니다. 또한 몬스터를 빠르게 찾아 죽이는 데 사용할 수있는 세계 모델을 구축하기 위해 서버와의 트래픽을 모니터링합니다.
더 이상 MMO를 더 이상 플레이하지 않고 자동화 한 것을 깨달았을 때, 나는 더 이상 게임을 중단하기로 결정했습니다. 만약 내가 자신을 법적으로 노출시키는 것에 대해 걱정하지 않았다면, 아마도 MMO 봇을 팔아 죽일 수도 있었지만 실제로는 고소를 원하지 않았습니다. 그래서 요즘 실제 프로그래밍을하는 데 시간을 보냅니다!