CS315 Game Programming: Style

Project structure

The repository root will contain the README.md file as well as a project folder. The Godot Project itself should be in the project subdirectory.

For example, if your repository root is in a directory called my-game, then your directory structure for a new project should look like this:

my-game/
├── README.md
└── project/
    ├── icon.svg
    └── project.godot

Group files together by feature, not by type. This keeps dependencies together and makes it easier to find things. For example, a hero directory might contain hero.tscn, hero.gd, hero_sprites.png, and attack.wav. Resources that are used across features should be in a top-level directory called common; here, continue to use the directory structure to group like with like.

When you are ready to export your projects, configure them to export to a build folder at the repository root, with subdirectories named for the export platform. Keep the build folder out of version control by adding it to a top-level .gitignore file.

Version control

All repositories must be in the course organization on GitHub. Only source files should be tracked in version control. Do not commit derived files nor builds.

There is one mainline branch named main or master.

Follow Chris Beams seven rules of a great git commit message, which are reproduced here for your convenience.

  1. Separate subject from body with a blank line
  2. Limit the subject line to 50 characters
  3. Capitalize the subject line
  4. Do not end the subject line with a period
  5. Use the imperative mood in the subject line
  6. Wrap the body at 72 characters
  7. Use the body to explain what and why vs. how

If you realize that one of your commit messages needs to be updated, follow the useful guide provided by GitHub.

Every submission corresponds to a GitHub release. Name your release and the corresponding tag using semantic versioning with a major version of zero, a minor version of the iteration number, and the patch number for bugfixes. For example, your first iteration release should be tagged 0.1.0. If you discover a problem after tagging but before the deadline, you can make a new release called 0.1.1.

Code quality

Follow Godot Engine’s GDScript Style Guide.

Generate neither errors nor warnings at runtime. Do not change the editor settings to avoid this quality standard. Most warnings can be addressed with better engineering. In the rare case where using @warning_ignore is appropriate, explain the reason in source code comments.

Content

Game designs uphold the values of the Beneficence Pledge. All content is appropriate for an ESRB Rating of E, E10+, or T.

Intellectual property and licensing

You must have a clear legal right to all the third-party work you incorporate, and you must abide by their licenses.

Track the origins and licenses of all third-party assets in your README.md file. This allows you to keep track of what is in your project so that you can audit it later.

If a license requires that a copy of the license itself be redistributed, keep a copy of that license alongside the asset in the project folder, naming it clearly.

For example, many fonts at Google Fonts are licensed under SIL Open Font License and are distributed with a file named OFL.txt that documents the terms. One such font is Roboto. Incorporating the font into the game and following this guide, you should expect to see a structure like this:

my-game/
├── README.md
└── project/
    └── ui/
        ├── Roboto-VariableFont_wdth,wght.ttf
        └── Roboto_OFL.txt

For projects that are kept internal to the class, there are no additional steps required. These projects are internal studio experiments and not intended for public display, and these steps ensure we have done due diligence should the project continue.

Public works must fully follow the licensing requirements. Godot Engine itself provides helpful documentation about how to comply with licenses, including tips that facilitate the process for Godot Engine projects.


CS315 Course Plans (Fall 2026) © 2026 by Paul Gestwicki is licensed under CC BY-SA 4.0