CDDA Development Visualization & Contributing

Hi all,
I’m relatively new to Cataclysm and this forum but a long time programmer and rogue-like fanatic. I’ve been diving into the code nearly as much as I’ve been playing and having an absolute blast with both.

I came across a couple videos on Octav Sandulescu’s YouTube page that I found pretty amazing. I wouldn’t be surprised if they were familiar to some of you.

Signal boosting these here:
Cataclysm: Dark Days Ahead Development 2010-2014
Cataclysm: Dark Days Ahead Development 2014-2017

The description for “The Toolbox” suggests that this is the place to learn how to contribute to the project. I’m pretty curious to know more about the process that y’all are engaging in here. In particular I’m interested in the engine side of things as opposed to mods.

For clarity, I have two related questions:
What is the current size/scope of the people contributing to the core of this project?
… and how has the inclusion of additional contributors typically been handled in the past?

Anyhow, you guys are badass.

in the last week, 22 authors pushed 107 commits. I don’t recognize anyone’s user logo but my own, and I’m sixth in the number of commits with 13-16 commits in a few PRs. That suggests 5 people submitted half the commits and the other 16 submitted 1-2 each. How much of that is “core” I don’t know. I wouldn’t consider any of changes to be core but only 1-2 of them were in a mod.

Additional contributors have been added when a person opened a PR for a change. There’s no barriers to entry beyond skill: I had the vehicle parts descriptions code accepted as my third or fourth PR, even though that was a significant revision of some of the vehicle code. My code was good enough so it got accepted.

I don’t feel confident in rewriting the NPC AI code to let them use most CBMs yet. But if you’re smarter than me (not too hard, really), and you can and want that to be your first PR, then write it and submit it. If you did a good job, your code will go in.

I was planning on working on the AI when I have the time, atm I REALLY need to just review how it works, and how bad of a mess people are making it out to be.

@Mussorgsky if you want to contribute to AI (which I understand is a big task, but so is engines lol) that would be a great place to start. But really any contribution that adds to the game in a meaningful way such as QoL stuff is generally accepted. Another thing I wanted to look at was being able to “use” objects without having to pick them up and putting them down (such as a elec lamp).

I am adding the ability to install CBMs on allies, but the list of CBMs that NPCs can use without AI changes is small. I don’t know why anyone else would want to fix my issues, but I was using the AI code as an example of a complicated piece of code where the maintainers would still accept good changes from new contributors.

I was going to link some of the project docs, but then I realized they don’t answer your questions.

Team size is especially tricky, partially because it’s rather large. This page shows a graph of commits merged into the project over time, with individual graphs for the 100 contributors responsible for the largest number of commits (note that #100 was responsible for 49 commits, not a small number, and there are people with fewer commits with a massive impact on the project). This can give you some of the flavor of contribution, the history of the project is much more accurately characterised as contributors periodically coming and going, leaving behind improvements than there being a core team continuously working on the codebase (though I’ve been at it since 2012 and BevapDin has been massively prolific for nearly as long). Its almost impossible to draw a line anywhere and say, “above this line is the core contributors”.

That having been said, governance is clear, I own the repository and I’ve delegated merge rights to a dozen or so others, most prolific of which at the moment is ZhilkinSerg and longest lived is Rivet-the-zombie.

That doesnt even get into code contributions vs game data vs tilesets vs build tooling vs feature review vs documentation vs testing vs bug reporting, etc… all kinds of contributions push the game forward.

Becoming a contributor is simple, open a Pull Request on github and convince someone (mostly myself, ZhilkinSerg, or Rivet at the moment) that it’s worth merging. Everything else is coordination and communication.

The replies here were exactly the kind of information I was looking for, so thanks!

Just one thing to add: I am easily convincible. :stuck_out_tongue:

im very young still, till i learn c++ fully and other stuff i will help contribute to cdda (prob 2019 or something…) :smile: