Tuxmino Logo


Highly moddable free open source falling block puzzle game. Written in C.


If you are interested in contributing to Tuxmino, that's great! Below is a link to TODO.md which is a list of all issues and things that haven't been implemented yet. Also make sure you read the Styling Guidelines below. Also if you contribute, please add yourself to the game credits in credits.c!


Styling Guidelines

General Guidelines

Naming Conventions

Do to the extensive use of the Raylib library in this project, the naming conventions are quite similar to Raylib's to avoid mixing different naming styles. However, some things are different. Here is a list of all of the naming conventions:

Code ElementConvention
Variables (all types)camelCase
PointersType* pointer
Floatsx.xf (ex: 10.0f)
Operators (all types)Value1 + value2
Enum membersALL_CAPS
Struct memberscamelCase
Function ParamscamelCase

File Docstrings

At the top of every file should be a docstring stating:


 * File: file.c
 * ------------
 * This is a file that does xyz, it should be used for xyz, etc.
 * Original Author: John Doe
 * Contributors:
 *   - Tux: Added xyz
 * Date Created: MMM DD, YYYY
 * Last Modified: MMM DD, YYYY


Functions should have descriptive names, and should use camelCase. The opening bracket for a function should be on its own line (this is only for functions, dont do this for if statements, loops, etc). Each function should have a small comment/docstring explaining what the function does. You do not need to go into detail on HOW the function works, only WHAT it does (or better yet, WHY its doing something). If the name of the function is super obvious, for example something like drawSquare(), you do not need to provide a docstring stating "This function draws a square". If a function doesn't need a docstring, you do not need to write one. All functions should have two line breaks in between them.


 * This function does xyz
void thisIsAFunction(int param)
    if (param == 3) {
        /* code */

void superObviousFunction()
    /* code */

 * This is another function with a docstring
void anotherFunction()
    /* code */