Bald mascot and one-word MatGames title on the loading screen
This commit is contained in:
Binary file not shown.
|
Before Width: | Height: | Size: 150 KiB After Width: | Height: | Size: 159 KiB |
+16
-11
@@ -9,17 +9,21 @@ The stock Godot boot splash (logo plus "GODOT Game engine") is replaced by the
|
|||||||
|
|
||||||
## Asset
|
## Asset
|
||||||
|
|
||||||
`assets/branding/boot_splash.png`, 1024x1218, palette PNG with alpha
|
`assets/branding/boot_splash.png`, 1024x1185, palette PNG with alpha
|
||||||
(256 colors, 95 alpha levels), about 150 KB. Subject: cartoon zombie head and bust,
|
(256 colors, 95 alpha levels), about 159 KB. Subject: cartoon zombie head and bust,
|
||||||
unsettling grin, thumbs up, with "Mat Games" below in a phosphor-terminal typeface.
|
bald scalp with a sparse hair fringe on the sides, unsettling grin, thumbs up, with
|
||||||
|
"MatGames" below (one word, no space) in a phosphor-terminal typeface.
|
||||||
|
|
||||||
Provenance is recorded in `tools/branding/manifest.json`:
|
Provenance is recorded in `tools/branding/manifest.json`:
|
||||||
|
|
||||||
- mascot: generated with `agy_generate` (Antigravity direct API, model
|
- mascot: generated with `agy_generate` (Antigravity direct API, model
|
||||||
`gemini-3.1-flash-image`) on 2026-10-11 from no third-party source material; the
|
`gemini-3.1-flash-image`) on 2026-10-11 from no third-party source material; the
|
||||||
provider terms do not claim ownership of the output. Raw source kept at
|
provider terms do not claim ownership of the output. A second AI pass (`agy_edit`)
|
||||||
`tools/branding/raw/` with its SHA256. Note that an image generator does not emit
|
kept the face, grin, thumbs-up hand, shirt, pose and flat background and changed
|
||||||
real alpha, so the flat magenta background is keyed out locally;
|
only the hair to a bald scalp with a side fringe; both files and their SHA256 are
|
||||||
|
kept in `tools/branding/raw/` and the edit is recorded under `mascot_derived_from`.
|
||||||
|
Note that an image generator does not emit real alpha, so the flat magenta
|
||||||
|
background is keyed out locally;
|
||||||
- lettering: drawn by script, not by the generator, because generated text is
|
- lettering: drawn by script, not by the generator, because generated text is
|
||||||
unreliable. Font `tools/branding/fonts/VT323-Regular.ttf`, glyphs of the DEC VT320
|
unreliable. Font `tools/branding/fonts/VT323-Regular.ttf`, glyphs of the DEC VT320
|
||||||
terminal, licensed **SIL Open Font License 1.1** (license text kept next to it in
|
terminal, licensed **SIL Open Font License 1.1** (license text kept next to it in
|
||||||
@@ -41,7 +45,8 @@ packed into the export (`tools/*` is already excluded by the export preset).
|
|||||||
pink tongue or the blue shirt because their red and blue are not both above green;
|
pink tongue or the blue shirt because their red and blue are not both above green;
|
||||||
4. crops to the subject, applies a 50 px fade at the bottom to soften the frame cut
|
4. crops to the subject, applies a 50 px fade at the bottom to soften the frame cut
|
||||||
of the generated bust, and scales to 1024 px wide with 40 px side padding;
|
of the generated bust, and scales to 1024 px wide with 40 px side padding;
|
||||||
5. draws the title with VT323 in amber over a blurred glow layer;
|
5. draws the title with VT323 in amber over a blurred glow layer. The title defaults
|
||||||
|
to the one-word form `MatGames`; pass `--title` to change it;
|
||||||
6. quantizes to 256 colors (no dither) and writes the PNG plus the manifest.
|
6. quantizes to 256 colors (no dither) and writes the PNG plus the manifest.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
@@ -66,11 +71,11 @@ ratio; the exported shell confirms the result with the classes
|
|||||||
|
|
||||||
## Verification
|
## Verification
|
||||||
|
|
||||||
- Exported `index.png` has the same 1024x1218 dimensions as the master. It is
|
- Exported `index.png` has the same 1024x1185 dimensions as the master. It is
|
||||||
re-encoded by the exporter to 32-bit RGBA (about 475 KB), so the bytes are not
|
re-encoded by the exporter to 32-bit RGBA (about 496 KB), so the bytes are not
|
||||||
identical; composited on black the two images differ by at most 6.4/255 on
|
identical; composited on black the two images differ by at most 6.4/255 on
|
||||||
0.14% of pixels, all with alpha below 20, i.e. invisible. The release keeps the
|
0.13% of pixels, all with alpha below 20, i.e. invisible. The release keeps the
|
||||||
150 KB master in the repository and ships a gzip sidecar.
|
159 KB master in the repository and ships a gzip sidecar.
|
||||||
- The exported shell contains no "Game engine" text and the splash image has an
|
- The exported shell contains no "Game engine" text and the splash image has an
|
||||||
empty `alt`.
|
empty `alt`.
|
||||||
- `html/export_icon=false`, so no favicon is exported: the browser tab still shows
|
- `html/export_icon=false`, so no favicon is exported: the browser tab still shows
|
||||||
|
|||||||
@@ -1,5 +1,21 @@
|
|||||||
# Web build and compressed deployment
|
# Web build and compressed deployment
|
||||||
|
|
||||||
|
## Bald mascot release: 1194f239fcbd91d6
|
||||||
|
|
||||||
|
Title is now the one-word `MatGames` and the mascot has a bald scalp with a side
|
||||||
|
fringe (AI edit of the previous generation, see `docs/BRANDING.md`). PCK 4,347,536
|
||||||
|
bytes; gzip payload total 12,796,287 bytes. Backup `index-before-bald.html`.
|
||||||
|
|
||||||
|
Cleanup after this deploy: the three older directories (ddba14dd80539f19,
|
||||||
|
9a376a3dbf674069, 7ebf03fe3c88be15) were removed with approval, leaving
|
||||||
|
1194f239fcbd91d6 (live) and 097e6c64b42640ad (previous): 272 MB -> 110 MB, free space
|
||||||
|
1,5 GB. The same guarded procedure was used (hash read from the live base href,
|
||||||
|
hex validation, containment check, kept-list exclusion, `rm -rf --` with absolute
|
||||||
|
paths) and the post-checks passed: root 200 with the new base href, live PCK
|
||||||
|
byte-identical, previous release still served, removed release 404, and the live
|
||||||
|
loading screen captured in the browser.
|
||||||
|
|
||||||
|
|
||||||
## Loading screen branding release: 097e6c64b42640ad
|
## Loading screen branding release: 097e6c64b42640ad
|
||||||
|
|
||||||
See `docs/BRANDING.md`: black boot splash background and the "Mat Games" mascot in
|
See `docs/BRANDING.md`: black boot splash background and the "Mat Games" mascot in
|
||||||
|
|||||||
@@ -3,28 +3,28 @@
|
|||||||
"file": "assets/branding/boot_splash.png",
|
"file": "assets/branding/boot_splash.png",
|
||||||
"size": [
|
"size": [
|
||||||
1024,
|
1024,
|
||||||
1218
|
1185
|
||||||
],
|
],
|
||||||
"mode": "P",
|
"mode": "P",
|
||||||
"palette_colors": 256,
|
"palette_colors": 256,
|
||||||
"sha256": "78524be4ba17ab04afe56d16b00954989457f9af247367f7c4b0f9ed8ea2dec4"
|
"sha256": "4b4bab87b5038915d5a7493c6ee134cd654293036d093e71d210cbad6359bdb2"
|
||||||
},
|
},
|
||||||
"mascot_source": {
|
"mascot_source": {
|
||||||
"file": "tools/branding/raw/agy_generate_20261010234423_0.jpg",
|
"file": "tools/branding/raw/agy_edit_20261010235510_0.jpg",
|
||||||
"sha256": "5929495ff606fbcdd74f52a37304f3b569315bcd1fc0fef812b5fd7689dc1396"
|
"sha256": "913184c2e2e3dd5357f7729988859c8e038e4561ba18af7cb60f12644f7f6994"
|
||||||
},
|
},
|
||||||
"generator": {
|
"generator": {
|
||||||
"tool": "agy_generate (Antigravity direct API)",
|
"tool": "agy_generate (Antigravity direct API)",
|
||||||
"model": "gemini-3.1-flash-image",
|
"model": "gemini-3.1-flash-image",
|
||||||
"date": "2026-10-11",
|
"date": "2026-10-11",
|
||||||
"prompt": "single cartoon zombie head-and-bust mascot, unsettling wide grin, thumbs up, 2D cartoon style with bold outlines, flat magenta chroma-key background, no text and no logo",
|
"prompt": "single cartoon zombie head-and-bust mascot, unsettling wide grin, thumbs up, 2D cartoon style with bold outlines, flat magenta chroma-key background, no text and no logo; then edited to a bald scalp with a sparse hair fringe on the sides only",
|
||||||
"terms_note": "generated from no third-party source material; the provider terms do not claim ownership of the output. The generator emits no real alpha channel, so the background is keyed out locally by this script."
|
"terms_note": "generated from no third-party source material; the provider terms do not claim ownership of the output. The generator emits no real alpha channel, so the background is keyed out locally by this script."
|
||||||
},
|
},
|
||||||
"chroma_key": {
|
"chroma_key": {
|
||||||
"background_rgb": [
|
"background_rgb": [
|
||||||
250,
|
246,
|
||||||
4,
|
1,
|
||||||
247
|
237
|
||||||
],
|
],
|
||||||
"transparent_below": 55,
|
"transparent_below": 55,
|
||||||
"opaque_above": 130
|
"opaque_above": 130
|
||||||
@@ -34,5 +34,12 @@
|
|||||||
"font": "tools/branding/fonts/VT323-Regular.ttf",
|
"font": "tools/branding/fonts/VT323-Regular.ttf",
|
||||||
"license": "SIL Open Font License 1.1 (tools/branding/fonts/OFL.txt)"
|
"license": "SIL Open Font License 1.1 (tools/branding/fonts/OFL.txt)"
|
||||||
},
|
},
|
||||||
"bottom_fade_px": 50
|
"bottom_fade_px": 50,
|
||||||
|
"mascot_derived_from": [
|
||||||
|
{
|
||||||
|
"file": "tools/branding/raw/agy_generate_20261010234423_0.jpg",
|
||||||
|
"sha256": "5929495ff606fbcdd74f52a37304f3b569315bcd1fc0fef812b5fd7689dc1396",
|
||||||
|
"edit": "AI edit (agy_edit): keep face, grin, thumbs up, shirt, pose and flat background; change the hair to a bald scalp with a sparse fringe on the sides only"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 505 KiB |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://co32s8aqwa3bj"
|
||||||
|
path="res://.godot/imported/agy_edit_20261010235510_0.jpg-d9de74481e03780407b2a1aacf263683.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://tools/branding/raw/agy_edit_20261010235510_0.jpg"
|
||||||
|
dest_files=["res://.godot/imported/agy_edit_20261010235510_0.jpg-d9de74481e03780407b2a1aacf263683.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=1
|
||||||
@@ -20,6 +20,8 @@ parser.add_argument('--bottom-fade', type=int, default=50,
|
|||||||
help='soften the generator frame cut at the bottom of the bust')
|
help='soften the generator frame cut at the bottom of the bust')
|
||||||
parser.add_argument('--colors', type=int, default=256,
|
parser.add_argument('--colors', type=int, default=256,
|
||||||
help='palette colors for the shipped PNG; 0 keeps 32-bit RGBA')
|
help='palette colors for the shipped PNG; 0 keeps 32-bit RGBA')
|
||||||
|
parser.add_argument('--generated-from', type=pathlib.Path, default=None,
|
||||||
|
help='pre-edit generation this file was derived from, for provenance')
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
args.raw = args.raw.resolve()
|
args.raw = args.raw.resolve()
|
||||||
root = pathlib.Path(__file__).resolve().parents[1]
|
root = pathlib.Path(__file__).resolve().parents[1]
|
||||||
@@ -108,7 +110,8 @@ manifest.update({
|
|||||||
'date': '2026-10-11',
|
'date': '2026-10-11',
|
||||||
'prompt': ('single cartoon zombie head-and-bust mascot, unsettling wide grin, thumbs up, '
|
'prompt': ('single cartoon zombie head-and-bust mascot, unsettling wide grin, thumbs up, '
|
||||||
'2D cartoon style with bold outlines, flat magenta chroma-key background, '
|
'2D cartoon style with bold outlines, flat magenta chroma-key background, '
|
||||||
'no text and no logo'),
|
'no text and no logo; then edited to a bald scalp with a sparse hair fringe '
|
||||||
|
'on the sides only'),
|
||||||
'terms_note': ('generated from no third-party source material; the provider terms do not claim '
|
'terms_note': ('generated from no third-party source material; the provider terms do not claim '
|
||||||
'ownership of the output. The generator emits no real alpha channel, so the '
|
'ownership of the output. The generator emits no real alpha channel, so the '
|
||||||
'background is keyed out locally by this script.'),
|
'background is keyed out locally by this script.'),
|
||||||
@@ -118,5 +121,13 @@ manifest.update({
|
|||||||
'license': 'SIL Open Font License 1.1 (tools/branding/fonts/OFL.txt)'},
|
'license': 'SIL Open Font License 1.1 (tools/branding/fonts/OFL.txt)'},
|
||||||
'bottom_fade_px': args.bottom_fade,
|
'bottom_fade_px': args.bottom_fade,
|
||||||
})
|
})
|
||||||
|
if args.generated_from is not None:
|
||||||
|
chain = manifest.get('mascot_derived_from', [])
|
||||||
|
manifest['mascot_derived_from'] = chain + [{
|
||||||
|
'file': str(args.generated_from.resolve().relative_to(root)),
|
||||||
|
'sha256': hashlib.sha256(args.generated_from.read_bytes()).hexdigest(),
|
||||||
|
'edit': 'AI edit (agy_edit): keep face, grin, thumbs up, shirt, pose and flat background; '
|
||||||
|
'change the hair to a bald scalp with a sparse fringe on the sides only',
|
||||||
|
}]
|
||||||
(source_tools / 'manifest.json').write_text(json.dumps(manifest, indent=2) + '\n')
|
(source_tools / 'manifest.json').write_text(json.dumps(manifest, indent=2) + '\n')
|
||||||
print(out, canvas.size, canvas.mode, 'mascot', mascot.size)
|
print(out, canvas.size, canvas.mode, 'mascot', mascot.size)
|
||||||
|
|||||||
Reference in New Issue
Block a user