99 lines
5.0 KiB
Markdown
99 lines
5.0 KiB
Markdown
Contributor's License Agreement
|
|
-------------------------------
|
|
|
|
By contributing source code or other assets (e.g. music, artwork, graphics) to Cambridge, through a pull request or otherwise, you provide me with a non-exclusive, royalty-free, worldwide, perpetual license to use, copy, modify, distribute, sublicense, publicly perform, and create derivative works of the assets for any purpose.
|
|
|
|
You also waive all moral rights to your contributions insofar as they are used in the Cambridge repository or in any code or works deriving therefrom.
|
|
|
|
(Notwithstanding the above clause, I will still make my best effort to provide sufficient attribution to all contributions. At the very least you'll get documentation of your contributions under SOURCES, and probably a special place in the credit roll as well.)
|
|
|
|
|
|
Git / Repo conventions
|
|
----------------------
|
|
|
|
In general, use `kebab-case` for branch names. Also, make sure they're concise and descriptive - like 2 or 3 words is usually good.
|
|
|
|
```
|
|
* badbeef (badBranchName) This branch name is bad.
|
|
| * defaced (another_bad_branch_name) This branch name is also bad because it uses snake case.
|
|
|/
|
|
| * deadcab (generic) This branch name isn't very descriptive.
|
|
|/
|
|
| * bac0040 (this-long-winded-branch-name-that-could-be-its-own-commit-message) Self-explanatory.
|
|
|/
|
|
| * 600db01 (good-branch-name) This branch name is good.
|
|
|/
|
|
* 0000420 (HEAD -> master, tag: v0.6.9) This is a sexy root commit.
|
|
```
|
|
|
|
The top line of a commit message should generally be one full sentence long, without too many subordinate clauses. Don't sweat 50/72, but try not go over about 100 characters either.
|
|
* If the message starts with a verb, it should be written in the past tense, as a description of what the commit _did_ to the commit tree. (e.g. _Made_ a change, _Fixed_ a bug, _Added_ a feature)
|
|
* Alternatively, include a description (in the present tense) of what is now true thanks to this commit. (e.g. "The Puyo Puyo mode can now support up to 50 players.")
|
|
|
|
```
|
|
* 800000d (message-too-long) Made multiplayer stuff play well with the new v0.2.5 server by fixing a problem the client was having with sending multiple 4-KB packets within 2 milliseconds of each other.
|
|
| * defaced (not-descriptive-enough) Fixed stuff.
|
|
|/
|
|
| * bad0003 (present-tense) Lengthens the retry period of the server connection to 15 seconds.
|
|
|/
|
|
| * bad0004 (imperative-mood) Force the credit roll to end after 67 seconds if no input is detected.
|
|
|/
|
|
| * 600d001 (good-commit-summary) Made the Jenny Marathon mode not top out randomly at level 600.
|
|
| * 600d002 (also-good) Backgrounds don't suck anymore.
|
|
|/
|
|
* 1234567 (HEAD -> master, tag: v0.4.2) Updated docs in preparation for a new release.
|
|
```
|
|
|
|
When making pull requests, always include:
|
|
|
|
* A title that works well as a commit title, since that's what's going to appear when it's merged.
|
|
* A full description of the problem that the pull request solves or the feature that it implements.
|
|
* If the whole purpose of the pull request is to resolve a particular issue and nothing else, "Fixes #[issue number]" counts as a full description. Otherwise if there's anything else in the pull request, make a short note of "also [did this other thing]".
|
|
|
|
|
|
Coding conventions
|
|
------------------
|
|
|
|
Use tabs to indent, spaces to align.
|
|
|
|
* Specifically, spaces should not appear at the beginning of a line, and tabs should not appear _except_ at the beginning of a line.
|
|
* The sole exception is in a multiline `if` statement; the initial `if` should have four spaces before it to align it with an `elseif` on the next line. For example:
|
|
|
|
```lua
|
|
---- 4 spaces
|
|
if self.level < 900 then return 12
|
|
elseif self.level < 1200 then return 8
|
|
else return 6 end
|
|
```
|
|
|
|
Comments at the end of lines of code must be one line long. Multi-line comments must appear in their own block.
|
|
|
|
```lua
|
|
if not self.piece:isDropBlocked(self.grid) then
|
|
-- this is a comment that appears in a block of its own, separate from any code
|
|
-- consecutive multiline comments must have the same indentation level and
|
|
-- not appear next on the same line as actual code
|
|
self.drop_bonus = 0 -- comments at the end of a line must stay on that line
|
|
else
|
|
if piece_dy >= 1 then -- basically
|
|
self.drop_bonus = self.drop_bonus + piece_dy * 20 -- this sort of
|
|
end -- multiline comment
|
|
self.drop_bonus = self.drop_bonus + 1 -- is completely
|
|
end -- unacceptable
|
|
```
|
|
|
|
Use `snake_case` for variables, `camelCase` for functions.
|
|
|
|
```lua
|
|
function MyGameMode:on_activate_bleep_bloop()
|
|
-- no, bad, use "onActivateBleepBloop"
|
|
|
|
local bleepBloopFrames = 240
|
|
-- this is also bad, use "bleep_bloop_frames"
|
|
|
|
local bleep_bloop_bonus = self.lock_delay * 150
|
|
self.bleepBloopSubscore = self.bleepBloopSubscore + bleep_bloop_bonus
|
|
-- this should be self."bleep_bloop_subscore", member variables are also variables
|
|
end
|
|
```
|