Skip to content

Building the Game

Manuel Quiñones edited this page Apr 17, 2026 · 3 revisions

⚙️ Core Thread 4 — Building the Game

This Core Thread is the technical reference hub for everyone working on the Threadbare codebase — whether you're a contributor fixing a bug, a learner building a StoryQuest level, or a developer extending the game's systems.

Threadbare is built with Godot Engine and hosted on GitHub. The source code is open under the Mozilla Public License 2.0.


Getting Started

Getting the Source Code

Threadbare uses Git Large File Storage (LFS) to store large assets such as music and artwork. You must install and configure Git LFS before cloning the repository.

  1. Install Git LFS
  2. Run git lfs install
  3. Clone the Threadbare repository

▶️ Threadbare on GitHub

Running the Game

Download and install Godot Engine, then open the project from your local clone.


Contributing Code & Assets

Before contributing, read these essential documents:

  • Contributing — Code style, language conventions, GDScript guidelines, Godot conventions, and pull request format
  • Licensing — All assets and code must be under compatible open licenses. Read this first.
  • Content Guidelines — What content is appropriate for Threadbare (age 13+)

Coding Style

Godot Conventions

Key conventions used in the Threadbare project (full details in Contributing):

  • Use Unique Names to reference nodes in scripts (e.g. %HitBox)
  • Scene file + components/ subfolder structure — keep the .tscn file alone in its folder with all related scripts in a components/ subfolder

Input Considerations

Consider the Input Handling when developing a mechanic, or even when designing a level. For instance, all aiming should be possible at 45 degrees to work with keyboard-only input, so the targets should be placed accordingly. When playtesting, the player should be able to complete a level using keyboard input only.


Level Design Reference

TileMapLayers and TileSets

Threadbare levels are built from stacked TileMapLayer nodes. Each layer holds a different type of terrain or decoration.

➡️ TileMapLayers and TileSets — Available TileSets, water/bridge construction, foam, cliff shadows, and the Void tileset

Available TileSets:

File Purpose
bridges.tres Bridges and bridge shadows
decoration.tres Decorations on top of cliffs
elevation_2.tres Cliffs (current standard)
exterior_floors.tres Grass, dirt, sand
foam_2.tres Foam where land meets water
shadows.tres Cliff shadows
void_chromakey.tres The Void starfield backdrop
water.tres Water tiles

Time and Weather

➡️ Time and Weather — How to apply time-of-day and weather effects to scenes; why quest levels use fixed conditions


Asset Production

Visual Assets

➡️ Visual Style Guide — Full reference for art direction, pixel art conventions, character anatomy, colour palette, cel shading, perspective, and animation

Key specs:

  • PNG format for all images
  • 64×64 pixel tiles
  • Characters drawn in 192×192 canvas with 2px outline
  • 3-colour cel shading (fill, light, dark) — no dithering, no soft shading
  • Animations at 10fps; draw right-facing only and flip for left

Audio Assets

➡️ Audio Style Guide — File formats for sound effects (WAV) and music (OGG/MP3)

Narrative & Dialogue

➡️ Narrative Style Guide — Dialogue conventions, ellipsis formatting, and character voice


Godot Tips & How-Tos

Quick reference guides for working with Threadbare in the Godot editor:


GitHub Workflow

Submitting a Pull Request

See Contributing for the full guide to PR titles, descriptions, commit format, and co-authorship.

In brief:

  • Title: short, imperative mood, sentence case (e.g. "Ink combat: Add ink follow player feature")
  • Description: explain the change, link to resolved issues with Resolves https://github.com/endlessm/threadbare/issues/XYZ
  • PRs are squash-merged — the PR title and description become the commit message

Reviewing a Pull Request

➡️ Reviewing Contributions — The review process, playtesting checklist, style/legal/attribution checks, and merge strategy

Reviewing a StoryQuest Submission

➡️ Reviewing a StoryQuest submission — Detailed technical guide for reviewing learner StoryQuest PRs, including git commands for checking file scope, orphan resources, and large files


Architecture Overview

This section will expand as the codebase documentation grows.

Key Directories

  • scenes/game_elements/ — Characters, props, NPCs, and shared game components
  • scenes/game_logic/ — Reusable scripts
  • scenes/quests/story_quests/ — StoryQuest directories (one per quest)
  • assets/first_party/ — First-party reusable assets
  • assets/third_party/ — Third-party assets
  • tiles/ — TileSet resources

Input System

➡️ Input Handling — Current input mapping for keyboard, mouse, joypad, and mobile (in development)


Making a StoryQuest | Next: Community and Governance

Clone this wiki locally