Map 1: rebuild Hollywood as the El Capitan landmark
Full build / Import + headless tests (push) Successful in 37s
Full build / Full desktop build + optional release (push) Skipped

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:
zwitschi committed 2026-11-02 12:34:48 +01:00
1 parent 3f335481d6
commit 74dc1fdc1d
50 files changed
+1176 -100

No files matched your search

+12 -2
View File
@@ -312,8 +312,8 @@ static func shared_profiles() -> Array[NpcProfile]:
static func hollywood_building() -> VenueScenario:
var scenario := VenueScenario.new()
scenario.id = "hollywood_building"
scenario.display_name = "Hollywood Boulevard Building"
scenario.description = "Steps and entrance of a private building off Hollywood Boulevard."
scenario.display_name = "El Capitan Entertainment Centre"
scenario.description = "The historic 1921 Masonic Temple at 6840 Hollywood Boulevard, now the El Capitan Entertainment Centre."
scenario.shift_duration_s = 900.0
var policy := AccessPolicy.new()
@@ -352,6 +352,9 @@ static func hollywood_building() -> VenueScenario:
_building_routine("staff_entry", Rules.NpcType.AUTHORIZED_STAFF, "enter", Vector2(0, 600), 0.35),
_building_routine("guest_entry", Rules.NpcType.AUTHORIZED_GUEST, "enter", Vector2(0, 900), 0.25),
_building_routine("performer_show", Rules.NpcType.PERFORMER, "perform", Vector2(300, 800), 0.24),
_late_routine("late_tourist", Rules.NpcType.TOURIST, "photo", 0.22),
_late_routine("late_guest", Rules.NpcType.AUTHORIZED_GUEST, "enter", 0.20),
_late_routine("late_trespasser", Rules.NpcType.TRESPASSER, "trespass", 0.14),
{
"id": "building_filming_boundary",
"phase": Rules.Phase.MIDDAY,
@@ -710,6 +713,13 @@ static func profile_dictionary() -> Dictionary:
# --- Event builders ----------------------------------------------------------------
## Late-phase routine traffic. The range-based helper would classify a 700 s
## start as evening, so the phase is set explicitly.
static func _late_routine(id: String, npc_type: int, intent: String, prob: float) -> Dictionary:
var event := _building_routine(id, npc_type, intent, Vector2(700, 900), prob)
event["phase"] = Rules.Phase.LATE
return event
static func _building_routine(id: String, npc_type: int, intent: String, time_range: Vector2, prob: float) -> Dictionary:
return {
"id": id, "phase": _phase_for_range(time_range, 900.0),