Phillip đã đưa ra một cái nhìn tổng quan tuyệt vời về cách thức hoạt động của hầu hết các bot, nhưng tôi chỉ muốn đề cập đến mọi thứ chi tiết hơn một chút, vì tôi có một chút kinh nghiệm cá nhân phát triển trên hoặc cho tất cả các loại bot mà anh ấy đề cập.
Trong Runescape, có một dự án lớn (RSBot) sẽ sao chép nội dung của bộ nhớ từ máy khách Runescape vào bộ nhớ cục bộ của nó, nơi nó có thể xem toàn bộ trạng thái của trò chơi mà không có nguy cơ bị máy khách bắt gặp. Nó đòi hỏi một chút kỹ thuật đảo ngược để xác định vị trí cần tìm trong bộ nhớ để tìm con trỏ tới dữ liệu, nhưng một khi họ đã làm như vậy, họ đã đưa ra một API để tận dụng thông tin. Nó sẽ biết chính xác nơi nào trên thế giới bằng cách lấy tọa độ của một vật thể và sau đó biến đổi chúng bằng ma trận biến đổi camera để có được vị trí trên màn hình. Các mặt nạ hit cũng có thể đọc được, vì vậy thật đơn giản để xác định chính xác phạm vi di chuyển chuột vào để có được kết quả mong muốn.
Bot cung cấp một loạt thông tin gỡ lỗi, chẳng hạn như các chú thích cho nhà phát triển biết tọa độ ô vuông ở đâu, đối tượng này có ID nào, ID nào thuộc về một mục nhất định, v.v. Thông tin này sau đó có thể được sử dụng để tạo bot. Quá trình thực hiện các kịch bản bot thực sự khá đơn giản. Khung này cung cấp nhiều chức năng tiện ích, chẳng hạn như move_to(world_coordinates)
hoặc mouse_move(x,y)
sẽ thực hiện các hành động được chỉ định theo cách hơi đáng tin cậy (di chuyển chuột dọc theo một spline ngẫu nhiên, di chuyển nhiều lần qua cả bản đồ nhỏ và màn hình, v.v.)
Cũng trong Runescape, bạn có tùy chọn giảm đáng kể chất lượng đồ họa. Thực sự khá dễ dàng để tạo ra một số loại bot nhất định bằng cách quay màn hình và áp dụng một số khái niệm thị giác máy tính cơ bản để xây dựng một mô hình của thế giới. Tôi đã tạo ra cả bot nguyền rủa và bot nấu chảy bằng kỹ thuật này, cả hai đều hoạt động khá tốt. Nó sẽ chỉ lấy khung hình, tăng độ bão hòa hết mức có thể, và sau đó cố gắng trích xuất các mẫu từ đó có thể tạo bản đồ xác suất cho các vùng nhấp chuột.
Trong trường hợp bot nguyền rủa, mục tiêu là một con quỷ nhỏ hơn, nó chỉ là một thứ màu đỏ khổng lồ, rất tầm thường để tìm thấy. Trong trường hợp bot nấu chảy, nó sẽ tìm kiếm một hình thang nhỏ màu cam được bao quanh bởi màu xám, và đó sẽ là lò lửa. Nó cũng sẽ cố gắng tìm một hình chữ 'L' lớn, màu xám nhạt, sẽ là bàn ngân hàng. Điều đó chỉ được thực hiện với thu hẹp và heuristic cơ bản. Nó cũng có thể tự định hướng với la bàn tiện dụng bên cạnh bản đồ nhỏ, vì vậy nó có thể định hướng máy ảnh ở vị trí đáng tin cậy hơn để tìm các đối tượng mục tiêu.
Trong các trò chơi Nexon khác nhau, các máy chủ rất tin tưởng của khách hàng. Tôi đã lạm dụng tấn này trong Maplestory bằng cách sửa đổi bản đồ để loại bỏ các mối nguy hiểm hoặc thêm các sợi dọc để bot không cần phải quá phức tạp. Tôi cũng sẽ theo dõi lưu lượng đến và từ máy chủ để xây dựng mô hình thế giới mà sau đó có thể được sử dụng để nhanh chóng tìm và tiêu diệt quái vật.
Khi tôi nhận ra rằng tôi không thực sự chơi MMO nữa và chỉ tự động hóa chúng, tôi quyết định ngừng chơi hoàn toàn. Nếu tôi không lo lắng về việc phơi bày bản thân một cách hợp pháp, có lẽ tôi đã giết chết các bot MMO, nhưng tôi thực sự không muốn bị kiện. Đó là lý do tại sao tôi dành thời gian để lập trình thực sự những ngày này!