-**Note:** The article is written as developer notes to ease developer tasks and save QuakeC function terms here.
+**Note:** The article is written as developer notes to ease developer tasks and save QuakeC terms here.
# CSQC, MENUQC, SVQC and GAMEQC blocks
+Xonotic uses the ***csprogs.dat*** from the server you're playing on, as it must match the server's ***progs.dat*** code (whereas your ***menu.dat*** is always your local copy).
+
Menu and HUD code are actually separated as they run in 2 distinct programs: ***csprogs.dat*** and ***menu.dat***
Server program is ***progs.dat***
- Also, code inside a **`#ifdef GAMEQC`** block is part of both client (not menu) and server code.
-Example: `g_balance_grapplehook_speed_fly` is clearly a server cvar (**g_*** cvars are server cvars), so you CAN'T declare it within a `#ifdef CSQC` block. This cvar should be declared inside a **`#ifdef SVQC`**.
+### A bit of explanation about the use of each type of cvars
+
+- **g_*** cvars:
+
+Example: `g_balance_grapplehook_speed_fly` is clearly a server or game cvar (**g_*** cvars are server and game cvars), so you CAN'T declare it within a `#ifdef CSQC` block. This type of cvar only can be declared inside a **`#ifdef SVQC`** or **`#ifdef GAMEQC`** block (if possible).
+
+- **sv_*** cvars:
+
+Example: `sv_campcheck` is clearly a server cvar (**sv_*** cvars are server cvars), only can be declared inside a **`#ifdef SVQC`** block.
+
+- **cl_*** cvars:
-Other example: `cl_chatsound` is clearly a client cvar (**cl_*** cvars are client cvars), only can be declared in a **`#ifdef CSQC`** block.
+Example: `cl_chatsound` is clearly a client cvar (**cl_*** cvars are client cvars), only can be declared inside a **`#ifdef CSQC`** block.
<br />