Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions packages/client/src/render/land.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,12 +54,13 @@ import { COAST_ROCK, COAST_SAND, SHADOW, mix, scale, shade } from './theme.js';
// ---------------------------------------------------------------------------

/**
* Base land color (a warm, slightly green earth tone, darker than the bright
* lanes so the water reads as the playfield and the land as the backdrop).
* Base land color — the original's lush grass green (owner's screenshots of
* real play show green islands with rock cliffs, not the olive-slate we had).
* Kept darker than the shoal band so water still reads as the playfield.
* The lit/shade variants come from theme.shade so the land obeys the same
* top-left key light as every structure.
*/
export const LAND_BASE = 0x3c4a3a;
export const LAND_BASE = 0x2f5730;

/**
* Width (world units) of the sand/rock coast band drawn along the waterline.
Expand Down
21 changes: 13 additions & 8 deletions packages/client/src/render/theme.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,16 +48,21 @@ export const GOLD = 0xf4c95c;
/**
* Water depth ramp, shallowest (coast) -> deepest (open sea). The world
* renderer interpolates along this by a per-pixel/per-band "depth" value so
* the sea reads as layered rather than a single flat fill. All cool navies,
* deliberately DESATURATED and a touch darker than the old ramp so the warm
* red / cool blue team hulls read as the brightest, most saturated things on
* screen (competitive readability: the eye goes to the ships, not the sea).
* the sea reads as layered rather than a single flat fill.
*
* Retuned 2026-07-31 against the owner's gameplay screenshots of the ORIGINAL:
* the real map is HIGH CONTRAST — near-black navy in the deep channels against
* bright teal-green shoals ringing every island — not the uniform mid-blue we
* had. That contrast is what makes the lanes legible at a glance, and it only
* became worth doing once the true per-cell seabed shipped (WaterMask.depth).
* Hulls still out-saturate the sea: the ramp stays desaturated, it just spans
* a much wider value range.
*/
export const WATER_RAMP: readonly number[] = [
0x2c7e9e, // shallow / near coast — muted teal
0x1f6c8c, // mid
0x16526f, // deep open sea (where ships sail — a real blue, not a void)
0x0b3047, // abyss / map edge
0x3f8f7d, // shallow / near coast — the original's bright teal-green shoal
0x24606a, // mid
0x102a44, // deep open sea — the original reads near-black navy here
0x06121f, // abyss / map edge
];

/** Foam / wave-crest highlight stroked on the lighter water bands. */
Expand Down
6 changes: 3 additions & 3 deletions packages/client/src/render/world.ts
Original file line number Diff line number Diff line change
Expand Up @@ -144,11 +144,11 @@ export function waterDepth01(
export function seabedBandTint(band: number): { color: number; alpha: number } | null {
switch (band) {
case 1:
return { color: WATER_RAMP[2] ?? 0x16526f, alpha: 0.5 }; // deep channel
return { color: WATER_RAMP[2] ?? 0x102a44, alpha: 0.72 }; // deep channel — near-black navy
case 2:
return { color: WATER_RAMP[0] ?? 0x2c7e9e, alpha: 0.42 }; // shoal / shallow
return { color: WATER_RAMP[0] ?? 0x3f8f7d, alpha: 0.6 }; // shoal — bright teal-green
case 3:
return { color: 0x6f7fa8, alpha: 0.34 }; // pink passable shallows
return { color: 0x5f7fa0, alpha: 0.45 }; // pink passable shallows
default:
return null;
}
Expand Down
Loading