Xonotic Forums

Full Version: What was easy for you in development? (Darkplaces and QuakeC programming)
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hello, everyone, 
I was looking the code and I was developing something to learn but I remained stagnant since I saw that there were things that I couldn't understand well. I know that I should know the C programming language well, but there is no problem with this. I know how the logical structure works and I'm not saying it as a novice, none of this.

Apart from this, I wanted to know some experiences from the developers, I understand that the experiences of others can't be used for someone who doesn't know and for experts, but perhaps there is something that can take some step.

I wonder if someone liked modifying the codes of weapons, player, HUD, ... Same for engine devs, if they liked modifying some resources from the engine...

Here is the question for the developers:

What did you consider easy to develop in Xonotic?
Hey, I'm not a Xonotic dev but I used to contribute to similar projects, I can at least share my experience from these. It's never easy to hop into a new project of this scale, you need to set up a comfy dev environment and mainly get an understanding of the whole architecture of the game, not just the language it's written in. If you have experience with other projects, it will be easier, but it always takes some time and effort.

The key thing is to see the big picture, know the big parts of the game, how they communicate and where they are located. This I always learn by starting to fix very simple bugs -- open the bug tracker, find something that looks simple and try to fix it, potentially ask for advice, and when you have something, even incomplete, don't be afraid to open a pull/merge request in which devs will review your work and tell you how to polish and finish your contribution.

To look for specific functionality in unknown codebase I simply use grep, something like this:

grep --color=always -Irnw render ./darkplaces

It's simple and effective. Doxygen can also be useful for generating automatic documentation that helps to search for stuff.
(08-04-2020, 10:32 AM)drummyfish Wrote: [ -> ]Hey, I'm not a Xonotic dev but I used to contribute to similar projects, I can at least share my experience from these. It's never easy to hop into a new project of this scale, you need to set up a comfy dev environment and mainly get an understanding of the whole architecture of the game, not just the language it's written in. If you have experience with other projects, it will be easier, but it always takes some time and effort.

The key thing is to see the big picture, know the big parts of the game, how they communicate and where they are located. This I always learn by starting to fix very simple bugs -- open the bug tracker, find something that looks simple and try to fix it, potentially ask for advice, and when you have something, even incomplete, don't be afraid to open a pull/merge request in which devs will review your work and tell you how to polish and finish your contribution.

To look for specific functionality in unknown codebase I simply use grep, something like this:

grep --color=always -Irnw render ./darkplaces

It's simple and effective. Doxygen can also be useful for generating automatic documentation that helps to search for stuff.

Thanks, I understand that time and effort are valuable, also when we make or make mistakes and they correct us, we continue to learn. I know that the patience is important too.

I think it would also be cool if there was a visual scheme of the game code base and Darkplaces engine code base so we can see what it's like and look at the code interactions with code files included. 
I know that there is Doxygen, but it only documents parts of the code base even I'm not sure if the graphs are correct, as in the gitlab documentation warns us that the documentation of Doxygen can be incomplete. The graphs don't display the info of each code file content and where this code interacts in another code file.