42 lines
1.8 KiB
Markdown
42 lines
1.8 KiB
Markdown
|
# Progs {#progs}
|
||
|
|
||
|
Progs are binary files containing bytecode that contain platform and architecture
|
||
|
indepenent programs.
|
||
|
|
||
|
We generally refer to them as **progs**.
|
||
|
|
||
|
Our SDK is built using QuakeC as the language of choice, as that's where
|
||
|
the engine-provided API is the most powerful and there is a great
|
||
|
deal of history of games using it.
|
||
|
|
||
|
## Server-Side QuakeC {#SSQC}
|
||
|
|
||
|
The main game-logic module, first introduced with **Quake (1996)**.
|
||
|
It is involved with the core game entities, triggers, and decides what
|
||
|
monsters, items and weapons are allowed in the game and how they are used.
|
||
|
In Nuclide, the server game is tightly coupled with @ref entitydef to
|
||
|
make everything streamlined for content creators and developers alike.
|
||
|
|
||
|
## Client-Side QuakeC {#CSQC}
|
||
|
|
||
|
Largely responsible for visual effects and the overall presentation.
|
||
|
A large chunk of the client-side code is spent executing shared code
|
||
|
between client and server. Player movement, weapons and vehicle input
|
||
|
is shared between client and server to ensure smooth network play.
|
||
|
|
||
|
## Additional Progs
|
||
|
|
||
|
We offer multiple types of progs the game-logic can load/unload at runtime.
|
||
|
|
||
|
You will generally find them within your `<gamedir>/progs` directory.
|
||
|
|
||
|
They are optional. So if you want to handle everything internally, you can.
|
||
|
|
||
|
But if you're worried about keeping up with changes, you may want to depend on their stable APIs and extend your game using modules as the main method of feature-injection.
|
||
|
|
||
|
-  [HudC](@ref hudC) powers our client-side, hot-pluggable **heads-up-display**.
|
||
|
-  [AddonC](@ref addonC) is our server-side **plugin** system.
|
||
|
-  [MapC](@ref mapC) handles server-side **map-oriented** tasks and logic.
|
||
|
-  [RuleC](@ref ruleC) is responsible for the shared, **global set of game-rules**.
|
||
|
|