Setting Up the DarkRP Gamemode
Complete guide to installing DarkRP from GitHub, configuring it with darkrpmodification, setting up jobs and shipments, and choosing the right map.
Overview
DarkRP is the most popular GMod roleplay gamemode. It requires two components: the DarkRP gamemode itself and the darkrpmodification addon for all server-specific customization. You should never edit DarkRP's own source files — all changes go through darkrpmodification.
Installation from GitHub (Recommended)
The Workshop version of DarkRP (ID 248302805) works but receives updates less frequently and can lag behind the GitHub version. Install from GitHub for production servers:
- Download or clone
github.com/FPtje/DarkRP - Upload the entire repository to:
garrysmod/gamemodes/darkrp/ - Confirm the folder structure is:
garrysmod/gamemodes/darkrp/gamemode/init.lua garrysmod/gamemodes/darkrp/gamemode/cl_init.lua
Configuring darkrpmodification
All customization happens through the darkrpmodification addon:
- Download from
github.com/FPtje/darkrpmodification - Upload to:
garrysmod/addons/darkrpmodification/
This addon contains all the files you will actually edit. DarkRP detects it automatically on load.
Launch Configuration
Set the following in Pterodactyl startup variables:
| Variable | Value |
|---|---|
GAMEMODE |
darkrp |
SRCDS_MAP |
rp_downtown_v4c_v2 |
TICKRATE |
33 |
Tickrate 33 is strongly recommended for DarkRP. Higher tickrates increase CPU load significantly with high player counts, and DarkRP's gameplay does not require the precision of 66-tick.
Key Configuration Files
Main Config
addons/darkrpmodification/lua/darkrp_config/config.lua
Common settings in this file:
GM.Config.enablebuysell = true -- Enable buying/selling
GM.Config.enablelockpicking = true -- Lock pick doors
GM.Config.maxjobs = 30 -- Max custom jobs
GM.Config.startingmoney = 500 -- Starting wallet amount
GM.Config.salary = 45 -- Citizen base salary
Jobs
addons/darkrpmodification/lua/darkrp_customthings/jobs.lua
Example job definition:
TEAM_POLICE = DarkRP.createJob("Police Officer", {
color = Color(25, 25, 170),
model = {"models/player/police.mdl"},
description = [[Protect the city. Arrest criminals.]],
weapons = {"arrest_stick", "unarrest_stick", "stunstick"},
command = "police",
max = 4,
salary = 75,
admin = 0,
vote = false,
})
Shipments (Gun Dealer items)
addons/darkrpmodification/lua/darkrp_customthings/shipments.lua
DarkRP.createShipment("AK47", {
entity = "fas2_ak47",
model = "models/weapons/w_rif_ak47.mdl",
price = 1500,
amount = 10,
separate = true,
pricesep = 200,
allowed = {TEAM_GUN_DEALER},
})
Custom Entities
addons/darkrpmodification/lua/darkrp_customthings/entities.lua
Recommended Maps
| Map | Description |
|---|---|
rp_downtown_v4c_v2 |
Classic DarkRP map; most players recognize it |
rp_evocity_v33x |
Larger map; better for high player counts |
Both maps require CSS content to display correctly. See the content mounting article.
Performance Guidelines
DarkRP is particularly sensitive to addon count. Keep your addon count:
- Under 50 addons for servers with 30+ players
- Under 75 addons for 20-player servers
Each Lua addon adds to the global tick processing time. Monitor server frame time with net_graph 4 in-game — if the server bar turns red, you have too many addons or too complex a configuration.
Common Setup Mistakes
Editing DarkRP files directly: Any DarkRP update will overwrite your changes. All customization must go in darkrpmodification.
Wrong gamemode folder name: The folder must be named exactly darkrp (lowercase). Naming it DarkRP or dark_rp causes a fallback to sandbox.
Missing darkrpmodification: DarkRP loads with defaults if darkrpmodification is not found. Custom jobs, shipments, and config changes will not apply.