Xonotic Forums
[SOLVED] Help for your project architecture - Printable Version

+- Xonotic Forums (https://forums.xonotic.org)
+-- Forum: Support (https://forums.xonotic.org/forumdisplay.php?fid=3)
+--- Forum: Xonotic - Help & Troubleshooting (https://forums.xonotic.org/forumdisplay.php?fid=4)
+--- Thread: [SOLVED] Help for your project architecture (/showthread.php?tid=2995)

Help for your project architecture - jdumont007 - 05-10-2012

Hi dear Xonotic team,

I've recently decided to contribute on Xonotic project.
I'd like to create new maps, new weapons, new code modules but here is the thing :

I completely don't understand your project architecture, I mean :

What d0_blind_id means ?
What fteqcc means ?
etc ...

I used to work with more common and understandable files and directories names as such as :

src or source
mode/multiplayer or mode/singleplayer
gui or ui for user interface.

Can you please give me a real big help to let me know how to modify each part of the source code, I don't manage to find on the internet or the forum.

Thanks a lot in advance,

RE: Help for your project architecture - Mr. Bougo - 05-10-2012

Here's a partial hierarchy:
  • darkplaces: engine code, it's a standalone so it's in its own directory
  • d0_blind_id: player authentication libraries (for the stats system for example), also standalone
  • fteqcc: QuakeC compiler -- the game logic is written in QuakeC and compiled into .dat files which are loaded by the darkplaces engine, also standalone
  • data: contains the game itself:
    • maps: .bsp for compiled maps, .map for sources. Also contains mapinfo files (map metadata), shaders and other map-specific assets
    • models: players, weapons, items, etc. Their sources can be found in the mediasource git repository, and perhaps in the release package too (I'm not sure of that)
    • qcsrc: the game logic:
      • menu: menu code
      • server: serverside code (items, triggers, physics, weapon logic... most of the game logic is serverside)
      • client: clientside code (also known as CSQC): HUD, effects, some console messages... Things that can be done safely on the client's side to avoid using too much bandwidth and CPU on the server
      • common: common functions shared by the three sections above
      • dpdefs: definition of engine interface functions
      • the rest of it: you probably won't have to touch that. You probably won't have to touch dpdefs either.

If you got the sources from the git repository, everything in "data" is split into .pk3dir subrepositories.

EDIT: also, here's the dev wiki: http://dev.xonotic.org/projects/xonotic/wiki . You'll find an introduction to QuakeC in there: http://dev.xonotic.org/projects/xonotic/wiki/Introduction_to_QuakeC .
EDIT2: we also have a dev irc channel, #xonotic on irc.freenode.net

RE: Help for your project architecture - Soelen - 05-10-2012

There are easy 3 steps, here you go sir:

[Image: gnomes.jpg]

RE: Help for your project architecture - jdumont007 - 05-10-2012

Thanks a lot,

Hope to have fun developing on xonotic project,

good day/night