On occasion there has been an inquiry about whether people could contribute to public development and if so how they could. Here's a guide telling you what you need to know:
1. Tell Rik you are interested in contributing so that he can add you to the Public Contributors group on the TWC GitHub. You will need a GitHub account.
2. Install GitHub Desktop. GitHub Desktop allows you to download and make changes to the repository with a nice UI and buttons instead of Git Shell commands.
3. Install the desired repository by clicking "Add" in the top left. If you are a member of the Contributors group, you will be able to select the relevant repository from the dropdown. Each mission has its own GitHub repository.
4. Create a Branch, by clicking "Branch" and "Create New Branch" in the top. Branches are created from the Master branch, allowing you to make changes without them automatically going into the master version. These branches can then later be merged into the master branch.
5. Make the changes you want, commit them, and then pull request the branch into the master. A pull request now appears on the master, allowing me to review the changes and make comments. If everything is fine, I will merge it into master.What do I contribute?
Edits can be made to just about anything. These could be trivial bugfixes, performance improvements, additions to existing systems, or entirely new systems. It is what you want to contribute. However, you cannot just go around editing willy-nilly, the changes you make have to be good code, good gameplay, and good design. If you are not sure whether you should be making a change, just ask me. It is better for me to tell you it's not worthwhile before you make the change than after you submit a pull request. For larger changes in design, I suggest making a forum post to discuss them with the rest of the community so that you can see if they supported.
If you are not sure where to start, try something small or simple! Play around with what is already there!Coding Guidelines:
If you are new to coding, be mindful that I may request changes several times if you submit a pull request; I often rewrite bits I made myself too. What is most important about the code you write is that it is efficient and performant. Here
is a page on the BI Wiki about optimisation of code, I highly recommend the rules on this page as they will provide a good basis for you to start with. It also has several tips and tricks specifically for Arma 3 commands.
It also helps to comment code, especially if its function is more complicated. Comment blocks should explain the why you are doing something. Don't bother commenting when code is self-evident (e.g. "This creates a vehicle" when you use the createVehicle script command).
There is also a certain "house-style" in the repositories. I recommend emulating this to the best of your ability. For example, local variables should be camelCased.
A lot of good practice can also be found from the ACE3 guide here
. However, ACE3 implements a variety of things like a lot of macros that are not relevant to our missions.
This may seem very overwhelming at the start, and that is understandable. These things will be picked up over time, and when you submit your pull requests I ask you to make changes if necessary. Editing misson.sqm files:
Arma missions are based around the mission.sqm in the mission folder. The editor will save into these. The files are often very large and it is extremely easy to get conflicting submits when two people edit them at the same time, which would mean one of the submissions has to be discarded. Do not edit these at your own volition, but clear it with me first so that I can reserve the relevant mission.sqm specifically for you and there will not be a conflict. Editing FSM files:
Mission may make use of .fsm files. These finite-state machines often serve as a sort of brain. They are best edited with the FSM Editor from the Arma 3 Tools package on Steam.