-
Notifications
You must be signed in to change notification settings - Fork 1
Swim game prototype: Analyst #3 swims the Strait of Hormuz #1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
ziggythebot
wants to merge
1
commit into
b1rdmania:main
Choose a base branch
from
ziggythebot:swim-prototype
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,278 @@ | ||
| # Hell Strait — Image Assets | ||
|
|
||
| All art is generated via [Stability AI Stable Image Core](https://platform.stability.ai/docs/api-reference). | ||
| Place finished PNGs in the `images/` folder — the game loads them automatically and falls back to procedural canvas art if missing. | ||
|
|
||
| --- | ||
|
|
||
| ## Generating with Stability AI | ||
|
|
||
| ```bash | ||
| cp .env.example .env | ||
| # Add your STABILITY_API_KEY to .env | ||
|
|
||
| # Generate a specific asset: | ||
| node scripts/stability-generate.mjs -- --name=title-art --aspect=16:9 "YOUR PROMPT" | ||
|
|
||
| # Or use the npm shortcuts: | ||
| npm run generate:all | ||
| ``` | ||
|
|
||
| --- | ||
|
|
||
| ## Screen Backgrounds | ||
|
|
||
| ### `images/title-art.png` — 640 × 240 | ||
|
|
||
| ``` | ||
| Amiga Cinemaware 1989 game title screen, dramatic pixel art, | ||
| dark Strait of Hormuz at night, massive oil tanker silhouette on horizon, | ||
| jagged Iranian coastline low hills far left, Shahed drones as dark specks | ||
| in sky, lone figure in a tiny battered speedboat smoking a thick cigar, | ||
| moonlight shimmer on flat black water, orange-red distant glow from | ||
| refinery flares, limited 32-colour Amiga palette, chunky pixels, | ||
| retro game aesthetic, no modern HDR, no text, no logos | ||
| ``` | ||
|
|
||
| **Negative:** text, watermark, modern CGI, photorealistic, bokeh, anime | ||
| **Aspect:** 16:9 | ||
| **npm:** `npm run generate:title-art` | ||
|
|
||
| --- | ||
|
|
||
| ### `images/scene-border.png` — 640 × 280 | ||
|
|
||
| Used in cutscene frames 1–2 (Omani border crossing). | ||
|
|
||
| ``` | ||
| Amiga pixel art 1989 Cinemaware style, desert border checkpoint at early dawn, | ||
| Omani guard in traditional white dishdasha and leather belt, holding open a | ||
| crumpled Western passport, suspicious squinting expression, small dusty | ||
| checkpoint building with boom gate, sand dunes and flat horizon behind, | ||
| orange-pink sunrise sky, warm side light, limited 32-colour palette, | ||
| chunky retro game art, no text, no logos, no photorealistic faces | ||
| ``` | ||
|
|
||
| **Negative:** text, modern CGI, photorealistic, bokeh, watermark, anime | ||
| **Aspect:** 16:9 | ||
| **npm:** `npm run generate:scene-border` | ||
|
|
||
| --- | ||
|
|
||
| ### `images/scene-hamid.png` — 640 × 280 | ||
|
|
||
| Used in cutscene frames 3–4 (Meet Hamid, "Fuck the police"). | ||
|
|
||
| ``` | ||
| Amiga pixel art 1989 Cinemaware style, Omani fisherman at a rickety | ||
| night canal dock, weathered dark skin, rolled sleeves, one hand pointing | ||
| at a battered 40-year-old wooden dinghy speedboat tied with fraying rope, | ||
| other hand holding a folded wad of dollar bills, single dock lamp warm glow, | ||
| moonlight on dark still water, dramatic shadow play, limited 32-colour palette, | ||
| chunky retro game scene, no text, no logos | ||
| ``` | ||
|
|
||
| **Negative:** text, modern CGI, photorealistic, bokeh, watermark, anime | ||
| **Aspect:** 16:9 | ||
| **npm:** `npm run generate:scene-hamid` | ||
|
|
||
| --- | ||
|
|
||
| ### `images/scene-boat.png` — 640 × 280 | ||
|
|
||
| Used in cutscene frames 5–6 (The crossing → The swim). | ||
|
|
||
| ``` | ||
| Amiga pixel art 1989 Cinemaware side-scrolling scene, battered old | ||
| wooden dinghy racing across open flat ocean at pre-dawn, Iranian rocky | ||
| coastline silhouette in far hazy distance, Shahed-136 drone dark shape | ||
| visible in orange-grey sky overhead, man sitting at bow smoking a | ||
| thick Cuban cigar, salt spray, wave motion lines, very limited 32-colour | ||
| Amiga palette, retro game background art, no text, no logos | ||
| ``` | ||
|
|
||
| **Negative:** text, watermark, modern lens blur, photorealistic, anime | ||
| **Aspect:** 16:9 | ||
| **npm:** `npm run generate:scene-boat` | ||
|
|
||
| --- | ||
|
|
||
| ### `images/win-art.png` — 640 × 160 | ||
|
|
||
| Victory screen art. | ||
|
|
||
| ``` | ||
| Amiga pixel art 1989 Cinemaware victory screen, American man floating | ||
| on his back in calm turquoise ocean, thick lit Cuban cigar clamped in | ||
| wide grinning teeth, aviator sunglasses, arms spread wide, two Shahed | ||
| drones passing harmlessly high overhead in orange sunrise sky, | ||
| golden morning light glittering on water, triumphant joyful mood, | ||
| limited 32-colour retro palette, chunky pixels, no text, no UI | ||
| ``` | ||
|
|
||
| **Negative:** text, watermark, modern CGI, bokeh, anime | ||
| **Aspect:** 16:9 (top 160px crop) | ||
| **npm:** `npm run generate:win-art` | ||
|
|
||
| --- | ||
|
|
||
| ### `images/lose-art.png` — 640 × 160 | ||
|
|
||
| Game over screen art. | ||
|
|
||
| ``` | ||
| Amiga pixel art 1989 Cinemaware game-over screen, large Omani Coast Guard | ||
| patrol vessel looming in the foreground, powerful white searchlight beam | ||
| cutting across dark water onto a bedraggled wet man treading water, | ||
| stern uniformed officers leaning over deck railing aiming rifles down, | ||
| dramatic stark contrast between light and shadow, humiliation and threat, | ||
| limited 32-colour retro palette, no text, no UI | ||
| ``` | ||
|
|
||
| **Negative:** text, watermark, modern CGI, bokeh, anime | ||
| **Aspect:** 16:9 (top 160px crop) | ||
| **npm:** `npm run generate:lose-art` | ||
|
|
||
| --- | ||
|
|
||
| ## Sprite Sheet PNGs | ||
|
|
||
| All sprites use **transparent background**. Amiga 32-colour palette. | ||
| The game auto-detects and draws these via `ctx.drawImage()` — if missing, procedural canvas art is used as fallback. | ||
|
|
||
| --- | ||
|
|
||
| ### `images/sprite-player.png` — 96 × 20 | ||
|
|
||
| 4-frame horizontal strip. Each frame: 24 × 20px. | ||
|
|
||
| ``` | ||
| Amiga pixel art sprite sheet, 4-frame swim cycle animation horizontal strip, | ||
| American man swimming breaststroke side-view facing right, each frame 24×20px | ||
| (total 96×20px), lit cigar clamped between grinning teeth, dark aviator | ||
| sunglasses, khaki shorts, arms alternating stroke positions, legs kicking, | ||
| transparent background, 1989 Cinemaware style, limited 32-colour palette, | ||
| no text, no outline border | ||
| ``` | ||
|
|
||
| **Aspect:** 1:1 (custom: 96×20) | ||
| **npm:** `npm run generate:sprite-player` | ||
|
|
||
| --- | ||
|
|
||
| ### `images/sprite-drone.png` — 88 × 24 | ||
|
|
||
| 2-frame horizontal strip. Each frame: 44 × 24px (engine-off / engine-on). | ||
|
|
||
| ``` | ||
| Amiga pixel art sprite sheet, Shahed-136 loitering munition drone, | ||
| 2-frame horizontal strip (total 88×24px), each frame 44×24px, | ||
| top-down plan view, frame 1 engine cold: dark grey delta-wing body | ||
| pointed nose left, red LED dot dim; frame 2 engine hot: same body with | ||
| small orange exhaust flame at rear, red LED bright, | ||
| transparent background, retro game enemy sprite, limited 32-colour palette | ||
| ``` | ||
|
|
||
| **Aspect:** 1:1 (custom: 88×24) | ||
| **npm:** `npm run generate:sprite-drone` | ||
|
|
||
| --- | ||
|
|
||
| ### `images/sprite-boat.png` — 104 × 18 | ||
|
|
||
| 2-frame horizontal strip. Each frame: 52 × 18px (left-facing / right-facing). | ||
|
|
||
| ``` | ||
| Amiga pixel art sprite sheet, Iranian IRGC fast-attack patrol boat, | ||
| 2-frame horizontal strip (total 104×18px), each frame 52×18px, | ||
| top-down view, dark hull with grey deck, mounted machine gun on foredeck, | ||
| tiny Iranian tricolour flag at stern, short wake lines at stern, | ||
| frame 1 boat facing left, frame 2 boat facing right (mirror), | ||
| transparent background, 1989 retro game enemy sprite, limited 32-colour palette | ||
| ``` | ||
|
|
||
| **Aspect:** 1:1 (custom: 104×18) | ||
| **npm:** `npm run generate:sprite-boat` | ||
|
|
||
| --- | ||
|
|
||
| ### `images/sprite-zyn.png` — 16 × 12 | ||
|
|
||
| Single frame. Power-up collectible. | ||
|
|
||
| ``` | ||
| Amiga pixel art sprite, Zyn nicotine pouch, single frame 16×12px, | ||
| small white rectangular foil pouch, bold blue ZYN text in pixel font, | ||
| subtle cyan glow outline around edges suggesting power-up, | ||
| transparent background, retro game collectible item, limited palette | ||
| ``` | ||
|
|
||
| **Aspect:** 1:1 (custom: 16×12) | ||
| **npm:** `npm run generate:sprite-zyn` | ||
|
|
||
| --- | ||
|
|
||
| ### `images/sprite-cigar.png` — 24 × 8 | ||
|
|
||
| Single frame. Collectible. | ||
|
|
||
| ``` | ||
| Amiga pixel art sprite, lit Cuban cigar floating in water, single frame 24×8px, | ||
| brown tobacco body with gold band at one third, glowing orange-red lit ember | ||
| at right end, tiny wisp of grey smoke curling up, ash grey at left tip, | ||
| transparent background, retro game collectible, limited 32-colour Amiga palette | ||
| ``` | ||
|
|
||
| **Aspect:** 1:1 (custom: 24×8) | ||
| **npm:** `npm run generate:sprite-cigar` | ||
|
|
||
| --- | ||
|
|
||
| ### `images/sprite-coastguard.png` — 68 × 24 | ||
|
|
||
| Single frame. Boss / end-of-level threat. | ||
|
|
||
| ``` | ||
| Amiga pixel art sprite, Omani Coast Guard patrol vessel, single frame 68×24px, | ||
| top-down view, dark navy hull with white superstructure, searchlight tower | ||
| amidships with beam indicated, Omani national flag at stern (red white green), | ||
| two rifle barrels protruding from starboard deck, small wake at stern, | ||
| dramatic and threatening, transparent background, retro game boss enemy, | ||
| limited 32-colour Amiga palette | ||
| ``` | ||
|
|
||
| **Aspect:** 1:1 (custom: 68×24) | ||
| **npm:** `npm run generate:sprite-coastguard` | ||
|
|
||
| --- | ||
|
|
||
| ## Optional / Background Tiles | ||
|
|
||
| ### `images/bg-water.png` — 640 × 360 _(optional)_ | ||
|
|
||
| If present, replaces the procedural wave animation. Tiled horizontally. | ||
|
|
||
| ``` | ||
| Amiga pixel art, top-down open ocean water texture tile 640×360px, | ||
| dark blue-green water with horizontal wave crest lines, subtle parallax | ||
| depth variation, light diffuse patterns, Strait of Hormuz deep water, | ||
| 1989 retro game background scroll, limited 32-colour palette, no text | ||
| ``` | ||
|
|
||
| --- | ||
|
|
||
| ## Generation Order (recommended) | ||
|
|
||
| 1. `npm run generate:title-art` — gets the title screen looking right first | ||
| 2. `npm run generate:scene-border` + `scene-hamid` + `scene-boat` — cutscenes | ||
| 3. `npm run generate:win-art` + `lose-art` — end screens | ||
| 4. Sprites last (hardest to get right at small sizes) | ||
|
|
||
| --- | ||
|
|
||
| ## Style Notes for Consistency | ||
|
|
||
| - **Palette:** Warm oranges, deep teals, dark navy, sandy ochre — Amiga OCS 32-colour | ||
| - **No** modern HDR, no depth-of-field blur, no photorealistic faces | ||
| - **Yes** chunky pixel dithering, flat colour regions, hard shadow edges | ||
| - All reference images: 1989 Cinemaware games (*Wings*, *It Came from the Desert*, *Defender of the Crown*) | ||
Empty file.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Documentation uses outdated
--name=syntax.The manual invocation example uses
--name=title-artwhich writes topublic/generated/title-art.png, notimages/title-art.png. This is inconsistent with the npm shortcuts and the expected asset locations documented below.📝 Proposed fix
📝 Committable suggestion
🤖 Prompt for AI Agents