Map 1: rebuild Hollywood as the El Capitan landmark
Replace the generic boulevard facade with a stylized 6840 Hollywood Blvd block: six Ionic columns, eight stone steps, Masonic frieze/medallions, event banners, side doors, El Capitan Theatre and retail neighbours, Ovation Hollywood arcade, Walk of Fame and four-lane street markings. Add the Day and Night Hollywood venue-menu rows. Night uses a phase-time offset so a full-length shift stays in LATE while the clock starts at zero; late routine traffic keeps the street populated and the offset round-trips through checkpoint restore. Retune local-light falloff to linear attenuation, add a cool north sky fill, and use the smooth limestone facade texture. Refresh the staged gallery and map references; add geometry-budget, menu, night-offset and late-traffic tests.
This commit is contained in:
1 parent
3f335481d6
commit
74dc1fdc1d
50 files changed
+1176
-100
No files matched your search
+38
-8
@@ -44,6 +44,13 @@ ROOT = Path(__file__).resolve().parent.parent
|
||||
RAW_DIR = ROOT / "assets" / "textures" / "ai" / "v2" / "raw"
|
||||
READY_DIR = ROOT / "assets" / "textures" / "ai" / "game_ready" / "v2"
|
||||
CONCEPT_DIR = ROOT / "docs" / "screens" / "concepts"
|
||||
## Realistic-block references live in a dedicated folder so the original
|
||||
## Hollywood entrance concepts stay comparable.
|
||||
CONCEPT_SUBDIRS = {
|
||||
"hollywood_boulevard_entrance_day": "hollywood_boulevard",
|
||||
"hollywood_boulevard_entrance_night": "hollywood_boulevard",
|
||||
"hollywood_boulevard_across_street": "hollywood_boulevard",
|
||||
}
|
||||
REALISM_DIR = ROOT / "docs" / "screens" / "realism"
|
||||
|
||||
DEFAULT_MODEL = "openai/gpt-5-image-mini"
|
||||
@@ -129,6 +136,28 @@ CATALOGUE = {
|
||||
"wide shot of a fire engine and firefighters in dark turnout gear arriving at "
|
||||
"a brick venue entrance at night, red and blue light reflections on wet "
|
||||
"pavement, onlookers kept back by a guard")),
|
||||
# -- Real-world Hollywood block (map optimization) ----------------------
|
||||
"hollywood_boulevard_entrance_day": ("scene", (
|
||||
"photorealistic eye-level view of the El Capitan Entertainment Centre at "
|
||||
"6840 Hollywood Boulevard, the 1921 Hollywood Masonic Temple: light limestone "
|
||||
"Neoclassical facade, six oversized Ionic columns, eight stone steps up to "
|
||||
"recessed dark double doors with ornamental iron grilles, a continuous "
|
||||
"crosscut-grille transom, carved Masonic motto and circular medallions on the "
|
||||
"parapet, three tall red event banners, the Hollywood Walk of Fame terrazzo "
|
||||
"sidewalk with brass stars, palm trees, the neighbouring El Capitan Theatre "
|
||||
"marquee at the left edge, a four-lane boulevard, clear morning light")),
|
||||
"hollywood_boulevard_entrance_night": ("scene", (
|
||||
"the same El Capitan Entertainment Centre on Hollywood Boulevard after dark: "
|
||||
"six Ionic columns and limestone facade lit by warm practical lamps, red event "
|
||||
"banners, the El Capitan Theatre marquee glowing next door, wet asphalt "
|
||||
"reflecting the lights, a few pedestrians on the Walk of Fame terrazzo, palm "
|
||||
"silhouettes, distant city haze, cinematic night photography")),
|
||||
"hollywood_boulevard_across_street": ("scene", (
|
||||
"view from the steps of the El Capitan Entertainment Centre across Hollywood "
|
||||
"Boulevard: a four-lane street with yellow centre lines, red-painted kerb and "
|
||||
"crosswalk, the Ovation Hollywood retail frontage opposite with a broad stone "
|
||||
"arcade and sign band, palm trees, the Walk of Fame sidewalk with brass stars, "
|
||||
"traffic and pedestrians, late-afternoon haze, realistic game environment")),
|
||||
# -- Skyline backdrops (replace assets/textures/skyline.png) -------------
|
||||
"skyline_day": ("backdrop", (
|
||||
"Los Angeles Hollywood skyline in daylight: varied mid-rise and high-rise "
|
||||
@@ -177,6 +206,7 @@ PICKS = {
|
||||
"skyline_dusk": "skyline_dusk-v5",
|
||||
"skyline_night": "skyline_night-v4",
|
||||
"brick_facade": "brick_facade",
|
||||
"stone_steps": "stone_steps-v2",
|
||||
"sidewalk_pavers": "sidewalk_pavers",
|
||||
"asphalt": "asphalt",
|
||||
"asphalt_wet": "asphalt_wet",
|
||||
@@ -185,13 +215,13 @@ PICKS = {
|
||||
|
||||
# Realism trial: capture shot -> concept it is judged against.
|
||||
SHOTS = {
|
||||
"entrance_day": "hollywood_entrance_morning",
|
||||
"entrance_day": "hollywood_boulevard_entrance_day",
|
||||
"boulevard_day": "boulevard_skyline_day",
|
||||
"street_day": "boulevard_skyline_day",
|
||||
"street_day": "hollywood_boulevard_across_street",
|
||||
"boulevard_night": "hollywood_entrance_rain_night",
|
||||
"street_night": "boulevard_skyline_dusk",
|
||||
"entrance_late": "hollywood_entrance_rain_night",
|
||||
"street_late": "boulevard_skyline_dusk",
|
||||
"street_night": "hollywood_boulevard_entrance_night",
|
||||
"entrance_late": "hollywood_boulevard_entrance_night",
|
||||
"street_late": "hollywood_boulevard_across_street",
|
||||
# Each venue is judged on its own frame; the real geometry no longer shares
|
||||
# the Hollywood layout.
|
||||
"joke_shop_door": "joke_shop_door_closeup",
|
||||
@@ -223,7 +253,7 @@ def next_free_path(path: Path) -> Path:
|
||||
def raw_path(name: str) -> Path:
|
||||
group = CATALOGUE[name][0]
|
||||
if group == "scene":
|
||||
return CONCEPT_DIR / f"{name}.png"
|
||||
return CONCEPT_DIR / CONCEPT_SUBDIRS.get(name, "") / f"{name}.png"
|
||||
return RAW_DIR / group / f"{name}.png"
|
||||
|
||||
|
||||
@@ -820,7 +850,7 @@ def cmd_realism(args) -> int:
|
||||
rows = {}
|
||||
for capture in sorted(capture_set.glob("*.png")):
|
||||
concept_name = SHOTS.get(capture.stem)
|
||||
target = CONCEPT_DIR / f"{concept_name}.png" if concept_name else None
|
||||
target = raw_path(concept_name) if concept_name else None
|
||||
if target is None or not target.is_file():
|
||||
continue
|
||||
cap_m, tgt_m = image_metrics(capture), image_metrics(target)
|
||||
@@ -862,7 +892,7 @@ def write_sheet(run: Path, sets) -> Path:
|
||||
draw.text((c * cw + 6, 4), label, fill=(235, 235, 235))
|
||||
for r, shot in enumerate(shots):
|
||||
y = 20 + r * (ch + 20)
|
||||
tiles = [CONCEPT_DIR / f"{SHOTS[shot]}.png"] + [d / f"{shot}.png" for d in sets]
|
||||
tiles = [raw_path(SHOTS[shot])] + [d / f"{shot}.png" for d in sets]
|
||||
for c, path in enumerate(tiles):
|
||||
if path.is_file():
|
||||
with Image.open(path) as image:
|
||||
|
||||
@@ -23,6 +23,8 @@ class CatalogueTests(unittest.TestCase):
|
||||
|
||||
def test_paths_stay_in_their_folders(self):
|
||||
self.assertTrue(sc.raw_path("boulevard_skyline_day").is_relative_to(sc.CONCEPT_DIR))
|
||||
self.assertTrue(sc.raw_path("hollywood_boulevard_entrance_day").is_relative_to(
|
||||
sc.CONCEPT_DIR / "hollywood_boulevard"))
|
||||
self.assertTrue(sc.raw_path("skyline_day").is_relative_to(sc.RAW_DIR))
|
||||
self.assertTrue(sc.raw_path("asphalt").is_relative_to(sc.RAW_DIR))
|
||||
|
||||
|
||||
Reference in new issue
Block a user