Files
2009scape/docs/GLOSSARY.md
T
2026-07-05 18:14:54 -04:00

76 lines
4.2 KiB
Markdown

# Glossary
RuneScape, RSPS, and codebase-specific terms that show up throughout 2009scape.
## Project / RuneScape terms
- **RS2 / build 530** — the version of RuneScape 2 this project emulates, targeting
content as it existed around **January 2009**.
- **RSPS** — RuneScape Private Server; a third-party server emulating the game.
- **Authenticity** — a core value: behavior should match the real ~Jan-2009 game, not
invented mechanics.
- **Cache** — the RuneScape game data archive (maps, models, item/NPC/object definitions).
Read by `core.cache`. Edited with external tools (`Tools/`, Thanos, RSDataSuite).
- **Client** — the game client that connects to this server; lives in a separate repo.
- **World** — a running game instance. Multiple worlds can run with different ids; the
websocket port defaults to `53594 + world_id`.
## Engine concepts
- **Tick** — the fundamental time unit of the game loop (canonically 600 ms). Almost all
timed logic is expressed in ticks.
- **Pulse** — a unit of scheduled/repeating work (`core.game.system.task.Pulse`) submitted
to `GameWorld.Pulser`; `pulse()` returns `true` when done. Movement, combat, skilling,
and bot scripts are pulses.
- **Node** — base type for anything in the world (`core.game.node`): entities, items,
ground items, scenery.
- **Entity** — a living `Node`: `Player` or `NPC`.
- **AIPlayer** — a server-controlled fake player used to populate the world / for bots.
- **Scenery** — a world object (tree, door, altar, etc.).
- **Container** — an item collection (`inventory`, `equipment`, `bank`).
- **Varp / Varbit** — RuneScape client state variables ("player variables" / bit-packed
variables) used to drive interface and world state. Accessed via `getVarp`/`setVarp`,
`VarbitDefinition`.
- **Component / Interface / Widget** — an on-screen UI panel (ids from `Components`).
- **Attribute** — arbitrary key/value state stored on a `Player`; prefix a key with
`/save:` to persist it across logins.
## Content system
- **ContentInterface** — the marker interface (`core.api.ContentInterface`) whose
sub-types `ClassScanner` reflectively instantiates at startup. Implementing one is how
content self-registers.
- **ClassScanner** — startup component (`core.plugin.ClassScanner`) that uses **classgraph**
to discover and load all content/plugins.
- **InteractionListener** — content interface for reacting to player interactions with
NPCs / scenery / items / ground items.
- **InterfaceListener** — content interface for handling UI/widget button events.
- **Commands** — content interface for registering `::command` chat commands, gated by
**Privilege**.
- **CommandSet** — engine-side grouping of commands, marked `@Initializable`.
- **NPCBehavior** — per-NPC-id AI/combat behavior class.
- **Plugin** — historically any auto-loaded content class; in legacy Java code see
`core.plugin.Plugin` / `PluginManifest` / `@Initializable`.
- **ConstLib** — external dependency (`org.rs09.consts.*`) providing named id constants
(`Items`, `NPCs`, `Scenery`, `Animations`, `Components`, `Sounds`).
## Bots / self-botting
- **Script** (`core.game.bots.Script`) — a bot automation routine with a `tick()` method.
- **Self-botting** — a real player automating their own account via `::script`; permanently
removes them from the highscores. Gated by the `enable_botting` config flag.
- **`@PlayerCompatible`** — annotation marking a `Script` as runnable on a real player;
such scripts appear in the `::scripts` menu.
- **ScriptAPI** — automation helper API (`scriptAPI`) exposing movement, interaction,
banking, GE, and overlay helpers to scripts.
- **BottingOverlay** — the small progress panel a running script shows the player.
- See [`BOT_SCRIPTING.md`](BOT_SCRIPTING.md) for the full system.
## Tooling / infra
- **Thanos tool** — the required editor for the JSON game-data files; runs on **Java 11**.
- **RSDataSuite** — cache/data tool bundled in `Tools/`.
- **detekt** — Kotlin static analyzer run in `mvn verify` / CI (`Server/detekt.yml`).
- **mvnw** — the Maven wrapper; source of truth for building.
- **Thanos / Zaros jar** — same tool family for JSON editing (see README).