Rename to Work-Death Balance, add mascot favicon and rebalance rifle/grenade damage

This commit is contained in:
enne2
2026-10-15 17:15:16 +02:00
parent 2606fc5cc2
commit 21a1d5bf79
22 changed files with 352 additions and 39 deletions
+40 -19
View File
@@ -1,7 +1,8 @@
# Loading screen branding
# Work-Death Balance — loading screen and favicon
The stock Godot boot splash (logo plus "GODOT Game engine") is replaced by the
"Mat Games" mascot on a black background. This applies to both surfaces:
The game is named **Work-Death Balance** in the menu, native window, HTML title,
description and loading screen. **MatGames** remains the studio signature.
The stock Godot boot splash is replaced by the existing nerd-zombie mascot on black. This applies to both surfaces:
- the browser loading screen: the exported `index.png` referenced by
`<img id="status-splash">` in the HTML shell, drawn over `#status`;
@@ -10,10 +11,10 @@ The stock Godot boot splash (logo plus "GODOT Game engine") is replaced by the
## Asset
`assets/branding/boot_splash.png`, 1024x1315, palette PNG with alpha
(256 colors, 95 alpha levels), about 171 KB. Subject: cartoon zombie head and bust,
(256 colors, antialiased alpha), about 174 KB. Subject: cartoon zombie head and bust,
bald scalp with a sparse hair fringe on the sides, thick nerd glasses, unsettling grin,
thumbs up, with "MatGames" (one word, no space) in a phosphor-terminal typeface and
the subtitle `"...because he was bored..."` beneath it.
thumbs up, with **Work-Death Balance** in the VT323 phosphor-terminal typeface and
the subtitle `MatGames — "...because he was bored..."` beneath it.
Provenance is recorded in `tools/branding/manifest.json`:
@@ -34,7 +35,7 @@ Provenance is recorded in `tools/branding/manifest.json`:
and redistribution, including commercially, as long as the font is not sold on its
own. SHA256 `cf4de751ada78ceac033dbe16a687742939995b77bc2a052ae17a4957958594d`.
Only the final PNG lives under `assets/`, so the raw source and the font are not
Only the final splash/icon PNGs live under `assets/`, so the raw source and the font are not
packed into the export (`tools/*` is already excluded by the export preset).
## Composition and keying
@@ -49,14 +50,22 @@ packed into the export (`tools/*` is already excluded by the export preset).
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, plus an optional
second line. Defaults are the one-word `MatGames` and the subtitle
`"...because he was bored..."`; `--title`, `--subtitle` (empty to omit) and
second line. Defaults are `Work-Death Balance` and the subtitle
`MatGames — "...because he was bored..."`; `--title`, `--subtitle` (empty to omit) and
`--subtitle-height` change them. A 30 px `--bottom-padding` band is left under the
text so the shell progress bar does not cross the lettering;
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;
7. invokes `tools/make_favicon.py` with the already keyed original 1024×1024 mascot.
A head-only polygon excludes the hand and bust, then draws the face inside a dark
rounded badge with an amber outline. No new AI generation or second chroma key.
The 512×512 RGBA master is `assets/branding/work_death_icon.png`; a 32×32 review
preview is kept in `tools/branding/favicon_preview_32.png`. Provenance and SHA256
are recorded under `favicon` in the same manifest.
```sh
python3 tools/make_boot_splash.py tools/branding/raw/agy_generate_20261010234423_0.jpg
python3 tools/make_boot_splash.py tools/branding/raw/agy_edit_20261011000309_0.jpg \
--provenance tools/branding/raw/agy_generate_20261010234423_0.jpg \
--provenance tools/branding/raw/agy_edit_20261010235510_0.jpg
```
`--colors 0` keeps 32-bit RGBA if a future artwork needs smoother gradients.
@@ -64,6 +73,8 @@ python3 tools/make_boot_splash.py tools/branding/raw/agy_generate_20261010234423
## Godot settings
```ini
config/name="Work-Death Balance"
config/icon="res://assets/branding/work_death_icon.png"
boot_splash/bg_color=Color(0, 0, 0, 1)
boot_splash/image="res://assets/branding/boot_splash.png"
boot_splash/show_image=true
@@ -77,16 +88,26 @@ ratio; the exported shell confirms the result with the classes
## Verification
- Exported `index.png` has the same 1024x1315 dimensions as the master. It is
re-encoded by the exporter to 32-bit RGBA (about 528 KB), so the bytes are not
identical; composited on black the two images differ by at most 5.8/255 on
0.11% of pixels, all with alpha below 20, i.e. invisible. The release keeps the
171 KB master in the repository and ships a gzip sidecar.
- Exported `index.png` has the same 1024×1315 dimensions as the master. Godot
re-encodes palette images to RGBA, so bytes need not match the source PNG.
- Web preset `html/export_icon=true` uses the project icon through Godot's official
exporter. It creates `index.icon.png` (512×512) and `index.apple-touch-icon.png`
(180×180) with the corresponding HTML links. No generated HTML patch or default
Godot favicon remains; both files are included in the immutable release/hash check.
Firefox's runtime favicon is a generated blob URL; decoded pixels were compared
with the exported PNG and match exactly (zero mean/max difference).
- 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
a default icon. Using the mascot as favicon is a possible follow-up.
- The legacy URL `/pub/zombie-fps/`, score API and `zombie_fps_*` localStorage keys
intentionally remain unchanged to preserve bookmarks and browser identity.
- Native `user://` moves with the project name. `player_profile.gd` imports the old
sibling `Zombie Room FPS/zombie_fps_profile.cfg` only when the new profile is
absent, never modifies the source and never replaces an existing new profile.
Name, ID, best score and name-lock flag are retained; migration has isolated tests.
The actual local migration was also verified byte-identical, old file unchanged.
- On a phone in landscape the splash is scaled to fit the height, so the mascot
appears fairly small; a landscape variant (mascot beside the title) would fill
more of the screen if that is wanted.
- All eleven test suites still pass; this change touches no gameplay code.
- `test_rebalance_branding.gd` checks title, icon, export setting and exact damage
values; `test_player_profile.gd` includes five non-destructive migration checks.
Both suites also pass in the GDExtension-free staging project.