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
|
||||
|
||||
`assets/branding/boot_splash.png`, 1024x1218, palette PNG with alpha
|
||||
(256 colors, 95 alpha levels), about 150 KB. Subject: cartoon zombie head and bust,
|
||||
unsettling grin, thumbs up, with "Mat Games" below in a phosphor-terminal typeface.
|
||||
`assets/branding/boot_splash.png`, 1024x1185, palette PNG with alpha
|
||||
(256 colors, 95 alpha levels), about 159 KB. Subject: cartoon zombie head and bust,
|
||||
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`:
|
||||
|
||||
- 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
|
||||
provider terms do not claim ownership of the output. Raw source kept at
|
||||
`tools/branding/raw/` with its SHA256. Note that an image generator does not emit
|
||||
real alpha, so the flat magenta background is keyed out locally;
|
||||
provider terms do not claim ownership of the output. A second AI pass (`agy_edit`)
|
||||
kept the face, grin, thumbs-up hand, shirt, pose and flat background and changed
|
||||
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
|
||||
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
|
||||
@@ -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;
|
||||
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;
|
||||
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.
|
||||
|
||||
```sh
|
||||
@@ -66,11 +71,11 @@ ratio; the exported shell confirms the result with the classes
|
||||
|
||||
## Verification
|
||||
|
||||
- Exported `index.png` has the same 1024x1218 dimensions as the master. It is
|
||||
re-encoded by the exporter to 32-bit RGBA (about 475 KB), so the bytes are not
|
||||
- Exported `index.png` has the same 1024x1185 dimensions as the master. It is
|
||||
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
|
||||
0.14% 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.
|
||||
0.13% of pixels, all with alpha below 20, i.e. invisible. The release keeps the
|
||||
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
|
||||
empty `alt`.
|
||||
- `html/export_icon=false`, so no favicon is exported: the browser tab still shows
|
||||
|
||||
@@ -1,5 +1,21 @@
|
||||
# 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
|
||||
|
||||
See `docs/BRANDING.md`: black boot splash background and the "Mat Games" mascot in
|
||||
|
||||
@@ -3,36 +3,43 @@
|
||||
"file": "assets/branding/boot_splash.png",
|
||||
"size": [
|
||||
1024,
|
||||
1218
|
||||
1185
|
||||
],
|
||||
"mode": "P",
|
||||
"palette_colors": 256,
|
||||
"sha256": "78524be4ba17ab04afe56d16b00954989457f9af247367f7c4b0f9ed8ea2dec4"
|
||||
"sha256": "4b4bab87b5038915d5a7493c6ee134cd654293036d093e71d210cbad6359bdb2"
|
||||
},
|
||||
"mascot_source": {
|
||||
"file": "tools/branding/raw/agy_generate_20261010234423_0.jpg",
|
||||
"sha256": "5929495ff606fbcdd74f52a37304f3b569315bcd1fc0fef812b5fd7689dc1396"
|
||||
"file": "tools/branding/raw/agy_edit_20261010235510_0.jpg",
|
||||
"sha256": "913184c2e2e3dd5357f7729988859c8e038e4561ba18af7cb60f12644f7f6994"
|
||||
},
|
||||
"generator": {
|
||||
"tool": "agy_generate (Antigravity direct API)",
|
||||
"model": "gemini-3.1-flash-image",
|
||||
"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."
|
||||
},
|
||||
"chroma_key": {
|
||||
"background_rgb": [
|
||||
250,
|
||||
4,
|
||||
247
|
||||
246,
|
||||
1,
|
||||
237
|
||||
],
|
||||
"transparent_below": 55,
|
||||
"opaque_above": 130
|
||||
},
|
||||
"title": {
|
||||
"text": "Mat Games",
|
||||
"text": "MatGames",
|
||||
"font": "tools/branding/fonts/VT323-Regular.ttf",
|
||||
"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
|
||||
@@ -13,13 +13,15 @@ from PIL import Image, ImageDraw, ImageFilter, ImageFont
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('raw', type=pathlib.Path, help='raw generated image (magenta background)')
|
||||
parser.add_argument('--title', default='Mat Games')
|
||||
parser.add_argument('--title', default='MatGames')
|
||||
parser.add_argument('--canvas', type=int, default=1024)
|
||||
parser.add_argument('--title-height', type=int, default=190)
|
||||
parser.add_argument('--bottom-fade', type=int, default=50,
|
||||
help='soften the generator frame cut at the bottom of the bust')
|
||||
parser.add_argument('--colors', type=int, default=256,
|
||||
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.raw = args.raw.resolve()
|
||||
root = pathlib.Path(__file__).resolve().parents[1]
|
||||
@@ -108,7 +110,8 @@ manifest.update({
|
||||
'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'),
|
||||
'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.'),
|
||||
@@ -118,5 +121,13 @@ manifest.update({
|
||||
'license': 'SIL Open Font License 1.1 (tools/branding/fonts/OFL.txt)'},
|
||||
'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')
|
||||
print(out, canvas.size, canvas.mode, 'mascot', mascot.size)
|
||||
|
||||
Reference in New Issue
Block a user