Skip to content

Commit 59a284a

Browse files
authored
Merge pull request #51 from TMHSDigital/issues-sweep
Open-issues sweep: tags, formats, filters, shortlist, maintenance, categories, re-verification, new sources
2 parents 39b2a46 + 9d285a1 commit 59a284a

287 files changed

Lines changed: 1921 additions & 325 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
name: Request an asset / report a gap
2+
description: You need something the catalog does not cover and have no source in mind
3+
title: "[gap] "
4+
labels: ["gap"]
5+
body:
6+
- type: markdown
7+
attributes:
8+
value: |
9+
Use this when you searched the [catalog](https://tmhsdigital.github.io/Free-Game-Dev-Assets/) and came up empty. If you already know a source, use **New source** instead. Gaps feed the research queue and the Gaps sections of the [stacks](https://github.com/TMHSDigital/Free-Game-Dev-Assets/tree/main/stacks).
10+
- type: textarea
11+
id: need
12+
attributes:
13+
label: What you need
14+
description: Be concrete about the asset, not the game. "Straight-down character sprites that turn in four directions, 16x16" beats "RPG art".
15+
validations:
16+
required: true
17+
- type: dropdown
18+
id: category
19+
attributes:
20+
label: Category
21+
options:
22+
- 3d
23+
- 2d
24+
- characters
25+
- audio
26+
- animation
27+
- video
28+
- environment
29+
- shaders-vfx
30+
- fonts
31+
- tools
32+
- not sure
33+
validations:
34+
required: true
35+
- type: dropdown
36+
id: licence
37+
attributes:
38+
label: Licence constraint
39+
description: The most restrictive terms you can accept.
40+
options:
41+
- No credit at all (CC0 / public domain)
42+
- Credit is fine (CC-BY)
43+
- Any licence that allows commercial game use
44+
- Copyleft is fine (GPL, CC-BY-SA)
45+
validations:
46+
required: true
47+
- type: input
48+
id: format
49+
attributes:
50+
label: Formats or engine
51+
placeholder: glTF for Godot 4, PNG sprite sheets, OGG loops, …
52+
- type: textarea
53+
id: tried
54+
attributes:
55+
label: What you already tried
56+
description: Catalog entries or outside sources you looked at, and why they did not fit (wrong perspective, licence, style, quality).

‎.github/workflows/links.yml‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ jobs:
2626

2727
- name: Check links
2828
id: check
29+
env:
30+
# Read-only use of the GitHub API for the archived / inactive check.
31+
GITHUB_TOKEN: ${{ github.token }}
2932
run: node site/check-links.mjs --report link-report.md
3033

3134
- name: Open or update the report issue

‎CONTRIBUTING.md‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,11 @@ To add a starter stack (one pick per need for a kind of game), follow [`stacks/R
4343
- `attribution_string`: the copy-paste credit line. Required when `attribution_required` is `true`; optional otherwise.
4444
- `publisher`: optional. Name the **rights-holding publisher**, never the host. Set it whenever that publisher has more than one catalog entry, so the entries group; setting it on a publisher that currently has only one entry is also fine and saves a backfill later. Do not set it to a generic host or distributor (GitHub, Hugging Face, itch.io, OpenGameArt, the Internet Archive, Google Fonts) or to a distributor that does not hold the rights. Distinguish sibling organisations that are genuinely different rights holders: `blender.md` (the application, Blender Foundation) carries no `publisher`, while the asset bundles under `studio.blender.org` carry `Blender Studio`. Kenney, Quaternius, KayKit, LuizMelo, 0x72, Blender Studio, Material Maker, Alif Type, GGBotNet and 3dmodelscc0 are the largest groups in use today; treat that as illustrative, not as the permitted set.
4545
- `subcategories`: lower-case kebab-case (`base-meshes`, `field-recordings`). Reuse a value already in the catalog before inventing one, and do not add a variant of an existing value that differs only in plural or spelling. Where both forms were in use, the more common one was kept (`characters`, `environment`, `interior`, `tileset`, `vectors`, `pixel`, `impulse-responses`, `base-meshes`). Retired spellings are listed in [`site/value-aliases.json`](site/value-aliases.json), which the validator enforces (V19); add a line there when you merge two values.
46-
- `formats`: what you actually get, in one of four kinds. **File formats**, as commonly written: usually upper case (`PNG`, `FBX`, `JSON`, `VOX`), tool-specific ones as the tool writes them (`gdshader`, `tmx`, `ktx2`). **Engine or language targets**, as the product writes them (`glTF`, `Godot`, `Unity`, `Python`, `React`). **Delivery types** for software with no file format of its own, lower-case kebab-case (`godot-addon`, `blender-extension`, `npm`, `cli`, `library`, `desktop-app`, `mobile-app`, `middleware`, `model`). And `various` for an aggregator whose files come in too many formats to list. Platforms (`windows`, `macos`, `ios`) and descriptions (`heightfield`, `examples`) are `tags`, not formats. Reuse the spelling already in the catalog.
46+
- `formats`: what you actually get, in one of four kinds. **File formats**, as commonly written: usually upper case (`PNG`, `FBX`, `JSON`, `VOX`), tool-specific ones as the tool writes them (`gdshader`, `tmx`, `ktx2`). **Engine or language targets**, as the product writes them (`glTF`, `Godot`, `Unity`, `Python`, `React`). **Delivery types** for software with no file format of its own, lower-case kebab-case (`godot-addon`, `blender-extension`, `npm`, `cli`, `library`, `desktop-app`, `mobile-app`, `middleware`, `model`). And `various` for an aggregator whose files come in too many formats to list. Platforms (`windows`, `macos`, `ios`) and descriptions (`heightfield`, `examples`) are `tags`, not formats. The allowed values are the closed list in [`site/format-vocabulary.json`](site/format-vocabulary.json), which the validator enforces (V20): reuse a listed spelling, and add a genuinely new format there in the same change that first uses it. Its `groups` drive the site's Format filter, so a new format that belongs to a group (another glTF or font container) goes into that group too.
47+
- `tags`: lower-case kebab-case words describing the content (`low-poly`, `modular`, `platformer`). Do not restate another field: the licence (`cc0`, `mit`, `ofl`, `open-source`, `royalty-free`), the credit requirement (`no-attribution`) or the entry's own `publisher` (`kenney`) are rejected (V19 via `site/value-aliases.json`, V21), because search and the filters read those fields directly and a copied tag drifts. A `varies` entry lists its licence mix in the body, not in tags.
4748
- Frontmatter is one `key: value` per line; lists are `[a, b]` or indented `- item` lines. A key given twice is an error. Entry files may not contain emoji.
4849
- `grid_dimensions` / `camera_perspective` / `hardware_tags`: optional metadata for 2D and UI entries. `3d` and `characters` entries leave `camera_perspective` out: it describes a 2D camera, and those entries have none.
50+
- `maintenance`: optional, `archived` | `inactive` (V22). Set `archived` when the source repository is archived, and `inactive` when it has had no push for over three years, with a dated `- Maintenance:` line in Notes saying what you read. Leave it out otherwise. The weekly link check reports a GitHub source whose state no longer matches.
4951
- `url`: an `https://` address (`http://` only where the source has no https). Other schemes are rejected.
5052
- `verified`: ISO date (`YYYY-MM-DD`) of your last license check. It must be a real date, no later than tomorrow in UTC, and no newer than the newest date in `## Evidence` (V8): a new `verified` date needs a new dated Evidence line from the same check. Dates inside URLs do not count as Evidence dates.
5153
- `status`: `active` | `needs-review` | `deprecated`. A `deprecated` entry needs a `- Deprecated:` line in its body giving the reason (V9). `active` means the licence, the commercial stance and the credit requirement are all settled: an `unknown` in `license`, `commercial` or `attribution_required` keeps an entry at `needs-review`. The validator enforces this (V14), and rejects `formats`, `subcategories` or `tags` values that differ only by case, punctuation or a trailing "s" from one already in use (V13).

‎README.md‎

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@
33
[![Website](https://img.shields.io/website?url=https%3A%2F%2Ftmhsdigital.github.io%2FFree-Game-Dev-Assets%2F&up_message=live&down_message=down&label=website)](https://tmhsdigital.github.io/Free-Game-Dev-Assets/)
44
[![Pages](https://img.shields.io/github/actions/workflow/status/TMHSDigital/Free-Game-Dev-Assets/pages.yml?label=pages)](https://github.com/TMHSDigital/Free-Game-Dev-Assets/actions/workflows/pages.yml)
55
[![License: CC0-1.0](https://img.shields.io/badge/license-CC0--1.0-lightgrey.svg)](LICENSE)
6-
[![Sources](https://img.shields.io/badge/sources-319-informational)](https://tmhsdigital.github.io/Free-Game-Dev-Assets/)
6+
[![Sources](https://img.shields.io/badge/sources-334-informational)](https://tmhsdigital.github.io/Free-Game-Dev-Assets/)
77
[![GitHub stars](https://img.shields.io/github/stars/TMHSDigital/Free-Game-Dev-Assets)](https://github.com/TMHSDigital/Free-Game-Dev-Assets/stargazers)
88
[![PRs welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](CONTRIBUTING.md)
99

1010
Free assets and tools for commercial games. Each entry records the licence as its source
1111
states it and the date someone read it there; active entries quote the source's own words.
1212
The catalog indexes sources and never rehosts them: check the source before you ship.
1313

14-
- **[Browse 319 sources](https://tmhsdigital.github.io/Free-Game-Dev-Assets/)** on the site, filtered by licence, credit and review status.
14+
- **[Browse 334 sources](https://tmhsdigital.github.io/Free-Game-Dev-Assets/)** on the site, filtered by licence, credit and review status.
1515
- **Starter stacks**, one pick per need and what the whole set owes:
1616
[2D pixel platformer](https://tmhsdigital.github.io/Free-Game-Dev-Assets/stack/2d-pixel-platformer/) ·
1717
[2D top-down pixel game](https://tmhsdigital.github.io/Free-Game-Dev-Assets/stack/2d-top-down-pixel/) ·
@@ -100,23 +100,23 @@ a credit.
100100

101101
## Browse the catalog
102102

103-
The [website](https://tmhsdigital.github.io/Free-Game-Dev-Assets/) searches all 319 entries
103+
The [website](https://tmhsdigital.github.io/Free-Game-Dev-Assets/) searches all 334 entries
104104
and filters them by category, commercial use, attribution, review status and 2D camera
105105
view. Press `/` to search. Filtered views and individual entries have their own URLs, so you can send
106106
someone exactly what you are looking at.
107107

108108
| Category | Entries | Focus | Index |
109109
| --- | ---: | --- | --- |
110-
| **3D** | 69 | Models, scans, PBR textures and materials | [`catalog/3d/`](catalog/3d/) |
111-
| **Tools** | 66 | Editors, pipeline, TTS, Godot add-ons | [`catalog/tools/`](catalog/tools/) |
110+
| **3D** | 70 | Models, scans, PBR textures and materials | [`catalog/3d/`](catalog/3d/) |
111+
| **Tools** | 77 | Editors, pipeline, TTS, Godot add-ons | [`catalog/tools/`](catalog/tools/) |
112112
| **2D** | 54 | Sprites, tilesets, UI and HUD, icons, palettes | [`catalog/2d/`](catalog/2d/) |
113113
| **Audio** | 30 | SFX, music, foley, impulse responses | [`catalog/audio/`](catalog/audio/) |
114-
| **Characters** | 27 | Rigged packs, generators, modular humanoids | [`catalog/characters/`](catalog/characters/) |
115-
| **Fonts** | 23 | OFL and commercial-ok typefaces, CJK | [`catalog/fonts/`](catalog/fonts/) |
116-
| **Environment** | 15 | HDRI, terrain DEMs, geodata | [`catalog/environment/`](catalog/environment/) |
114+
| **Characters** | 28 | Rigged packs, generators, modular humanoids | [`catalog/characters/`](catalog/characters/) |
115+
| **Fonts** | 25 | OFL and commercial-ok typefaces, CJK | [`catalog/fonts/`](catalog/fonts/) |
116+
| **Environment** | 13 | HDRI, terrain DEMs, geodata | [`catalog/environment/`](catalog/environment/) |
117117
| **Shaders & VFX** | 17 | Shaders, particle and FX resources | [`catalog/shaders-vfx/`](catalog/shaders-vfx/) |
118118
| **Animation** | 12 | Motion capture and character clips | [`catalog/animation/`](catalog/animation/) |
119-
| **Video** | 6 | Stock footage, archival clips | [`catalog/video/`](catalog/video/) |
119+
| **Video** | 8 | Stock footage, archival clips | [`catalog/video/`](catalog/video/) |
120120

121121
## Reading an entry
122122

‎catalog/2d/README.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ two carry obligations the rest do not.
104104
| [universal-lpc-generator](universal-lpc-generator.md) | Universal LPC Generator | varies (SA) | varies† | active |
105105
| [lpc-revised-basics](lpc-revised-basics.md) | LPC Revised Basics | varies (OGA-BY for every item) | yes | active |
106106
| [openclipart](openclipart.md) | Openclipart | CC0 | yes | active |
107-
| [opengameart](opengameart.md) | OpenGameArt | varies | unknown | needs-review |
107+
| [opengameart](opengameart.md) | OpenGameArt | varies | yes | needs-review |
108108
| [lospec](lospec.md) | Lospec | varies | unknown | needs-review |
109109
| [dcss-tiles](dcss-tiles.md) | Dungeon Crawl Stone Soup Tiles | varies | unknown | needs-review |
110110

‎catalog/2d/ansimuz-industrial-parallax.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ license_spdx: CC0-1.0
1010
commercial: true
1111
attribution_required: false
1212
formats: [PNG, PSD]
13-
tags: [cc0, parallax, background, layers, pixel, industrial, night, platformer, side-scroller]
13+
tags: [parallax, background, layers, pixel, industrial, night, platformer, side-scroller]
1414
camera_perspective: side_scroller
1515
verified: 2026-09-23
1616
status: active

‎catalog/2d/ansimuz-sunnyland.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ license_spdx: CC0-1.0
1010
commercial: true
1111
attribution_required: false
1212
formats: [PNG, WAV]
13-
tags: [cc0, pixel, platformer, itch, 16-bit]
13+
tags: [pixel, platformer, itch, 16-bit]
1414
camera_perspective: side_scroller
1515
verified: 2026-08-24
1616
status: active

‎catalog/2d/armm1998-zelda-like.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ license_spdx: CC0-1.0
99
commercial: true
1010
attribution_required: false
1111
formats: [PNG]
12-
tags: [cc0, 16x16, overworld, cave, indoors, opengameart, 4-directional]
12+
tags: [16x16, overworld, cave, indoors, opengameart, 4-directional]
1313
grid_dimensions: 16x16
1414
camera_perspective: isometric_3_4
1515
verified: 2026-09-22

‎catalog/2d/bit-bonanza.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ license_spdx: CC0-1.0
99
commercial: true
1010
attribution_required: false
1111
formats: [PNG]
12-
tags: [cc0, 1-bit, 10x10, rpg, icons, itch]
12+
tags: [1-bit, 10x10, rpg, icons, itch]
1313
grid_dimensions: 10x10
1414
camera_perspective: 2d_flat
1515
verified: 2026-08-15

‎catalog/2d/bondoki-rotating-gems.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ license_spdx: CC0-1.0
99
commercial: true
1010
attribution_required: false
1111
formats: [GIF, PNG]
12-
tags: [cc0, match-3, gems, jewels, animated, puzzle, casual, mobile]
12+
tags: [match-3, gems, jewels, animated, puzzle, casual, mobile]
1313
grid_dimensions: 52x52
1414
verified: 2026-09-23
1515
status: active

0 commit comments

Comments
 (0)