- What is RuneDark?
- RuneDark is a desktop client for managing automation scripts in games. Unlike traditional injection or reflection frameworks, RuneDark is hands-off, relying solely on computer vision and optical character recognition.
- RuneDark does not encourage or support activities that are in violation of any game's Terms of Service.
- Is RuneDark only for OSRS?
- RuneDark can be expanded to fit any on-screen computer game.
- Right now, it only works for 2007-style OSRS interfaces.
- Is RuneDark safe?
- As of November 2024, RuneDark is open source. It is safe and easy to use.
- As a rule, it's best to review a developer's code or scan any executable file you receive for viruses before running it to ensure you're using safe software.
- What are the general approaches to gaming software automation?
- There are three general types:
- Injection: Injects unauthorized code into the game, similar to jailbreaking a phone.
- Reflection: Uses external applications to read game memory and make decisions.
- Example: If memory at
0x7FFE0300B8C0
drops below 50, a bot could instruct a character to drink a potion.
- Example: If memory at
- Color: Reads pixel colors on the screen to make decisions without accessing game code.
- There are three general types:
- Why is color botting the safest approach?
- Color bots don't alter game code directly; they rely solely on screen visuals, making them harder to detect.
- How are injection methods detected?
- Game servers inspect data packets for irregularities.
- Analogy: A unique scuff mark on boxes shows authenticity; a missing or altered mark raises suspicion.
- Game servers inspect data packets for irregularities.
- How are reflection methods detected?
- Servers flag actions that wouldn't be possible through the standard UI.
- Example: A bot detects a potion in the inventory and drinks it even if the inventory tab isn't open, which a human player couldn't do without switching views.
- Servers flag actions that wouldn't be possible through the standard UI.
- How was RuneDark built?
- Can I be banned for using RuneDark?
- Only if using it irresponsibly in violation of game's terms of service.
- How likely am I to get banned using RuneDark?
- Unlikely if used responsibly. RuneDark's humanization techniques reduce detectability.
- Is it safe to bot on my main account?
- Caution is advised. Although RuneDark mimics human inputs, no one can game for extended periods (e.g., 20 hours) without breaks.
- What actions guarantee a ban?
- Consistent Input Timing: e.g., a click every second, down to the microsecond.
- Pixel-perfect Precision: e.g., perfectly timed cursor movements.
- Rapid Input Sequences: e.g., thousands of inputs without breaks.
- Instant Reactions: e.g., dodging instantly after a threat appears.
- Uninterrupted Play: e.g., playing 24 hours straight.
- Pathing Loops: e.g., following an exact path every time.
- How do game designers detect botting?
- Behavioral analysis, memory scans, and network monitoring.
- Behavioral Analysis: Detects unnatural patterns (precise timing, repetitive actions).
- Memory Scanning: Finds unauthorized access to in-game data.
- Network Monitoring: Identifies irregular packet data.
- Machine Learning: Spots unusual player behavior across datasets.
- Behavioral analysis, memory scans, and network monitoring.
- What anti-botting measures are rumored at Jagex?
- Rumored steps include different levels of scrutiny:
- Step 1: Flags on new accounts can lead to a permanent ban.
- Step 2: More established accounts receive temporary 2-day bans; repeat offenses lead to permanent bans.
- Rumored steps include different levels of scrutiny:
- What humanization techniques does RuneDark use?
- RuneDark randomizes mouse movements, wait times, and decisions to appear human-like.
- How do I avoid bans?
- Avoid breaking terms of service, and if using automation, avoid injection or reflection methods.
- Does RuneDark run in the background?
- No, RuneDark currently requires direct input, though remote input is on the roadmap
- The core of RuneDark is designed using the Model-View-Controller (MVC) pattern.
- This pattern is used to separate the application's logic from its presentation. In this app:
- Models refer to bots (their properties, functions, etc.).
- Views refer to the user interface (the buttons, text, etc.).
- A Controller handles communication between these two layers.
RuneLiteBot
- Derived from the base
Bot
, this class contains the general utility functions shared by all bots that interface with RuneLite.
- Derived from the base
RuneLiteWindow
- Derived from the base
Window
, this class tailors window references to the idiosyncracies of RuneLite.
- Derived from the base
RuneLiteObject
- This class represents an object on the screen, bounded by a
Rectangle
- Note that the bounding
Rectangle
for aRuneLiteObject
is contained within a larger referenceRectangle
(i.e. the entire screen).
- This class represents an object on the screen, bounded by a
(0, 0) ---- Main Monitor Screen Area ------- + ---------------- +
| | |
| | |
| | top |
| | |
| | |
|-----left-- + ----- Rectangle --------- + |
| | | |
| | | |
| | + -- RuneLiteObject -- + | |
| | | | | height |
| | | | | |
| | | | | |
| | + -------------------- + | |
| + --------- width --------- + |
| |
| |
+ --------------------------------------------------------- +
- Note that this coordinate system is defined with the origin in the upper left corner.
- This is because right-handed click-and-drag operations usually occur from a click in the upper-left corner of the screen that then drags down to the lower-right corner.
- Install Python 3.10.9.
- Install Git Bash for Windows.
- Open an IDE (e.g. VS Code).
- Clone this repository.
- Set up a virtual environment.
- Ensure
virtualenv
is installed:pip install virtualenv
- Create a virtual environment:
virtualenv venv --python=python3.10.9
- Activate the newly-created virtual environment:
source venv/Scripts/activate
- Install dependencies:
pip install -r requirements.txt
- Ensure
- Run:
python src/rune_dark.py
❌ If you are getting ModuleNotFound
errors, restart your IDE for the newly-installed modules to be recognized.
- First, check out the existing base template.
- Then, see one of the basic bots and emulate its implementation.
- Ensure default settings are hard-coded in the main bot file.
- See the final few lines in
src/rune_dark.py
and change them appropriately.
-
Compiling builds (i.e. compiling
src/rune_dark.py
into an executable) can be done with these approaches:- Pyinstaller
- This method is not secure, as source code and assets are stored in temp files during execution.
- Using the
auto-py-to-exe
GUI makes this process easier.
- Nuitka
- This method is far more secure and modern, but build times are significant.
- The standard command to compile a version of RuneDark is:
python -m nuitka --standalone --follow-imports --enable-plugin=tk-inter --enable-plugin=no-qt src/rune_dark.py
- PyArmor
- A tool used to obfuscate python scripts, bind obfuscated scripts to fixed machine, or expire obfuscated scripts.
- Pyinstaller
-
Using Nuitka and PyArmor together is the best way to compile RuneDark and protect its code through obfuscation.
- Make sure both Nuitka and PyArmor are installed:
pip install nuitka pyarmor
- Obfuscate
rune_dark.py
with PyArmor.- Initialize a PyArmor project:
pyarmor init --src . --entry src/rune_dark.py dist_protected
- This command sets up a PyArmor project with
rune_dark.py
as the entry script and creates a folder nameddist_protected
where the obfuscated files will go.
- This command sets up a PyArmor project with
- Obfuscate the files:
pyarmor pack -x "src/rune_dark.py" --output dist-protected
- This command obfuscates
rune_dark.py
and places the obfuscated code in thedist_protected
directory.
- This command obfuscates
- Initialize a PyArmor project:
- Compile the obfuscated script with Nuitka:
python -m nuitka --standalone --follow-imports --enable-plugin=tk-inter --enable-plugin=no-qt src/rune_dark.py
--standalone
creates a standalone executable that bundles all required dependencies so that the program can run independently of an external Python installation.--follow-imports
tells Nuitka to follow all imports in the script and include those modules and their dependencies in the compiled executable.--enable-plugin=tk-inter
enables thetk-inter
plugin in Nuitka. This includes Tkinter, which is the standard Python GUI library, ensuring Tkinter-dependent code works properly in the compiled executable.--enable-plugin=no-qt
enables theno-qt
plugin in Nuitka, which excludes Qt libraries from the final executable. This can reduce the executable's size, especially if the code doesn't depend on Qt.src/rune_dark.py
specifiesrune_dark.py
in thesrc
directory as the entry point to be compiled.
- Test the compiled executable:
./src/rune_dark