From 5b4d06e34da55d6d6386f66fc834574d5730aec6 Mon Sep 17 00:00:00 2001 From: Doug Strain Date: Fri, 12 Jul 2024 13:36:49 -0700 Subject: [PATCH] Preliminary draft of the Perimeter zone - A layout and some room descriptions for the next RPG zone. Based on the Perimeter Institute in Waterloo. - Based on the quantum AI road map, the next zone should enter tunnels under the mountains: https://quantumai.google/learn/map --- .../final_state_world_test.py | 3 +- .../quantum_perimeter.py | 222 +++++++++++++++++- 2 files changed, 222 insertions(+), 3 deletions(-) diff --git a/examples/quantum_rpg/final_state_preparation/final_state_world_test.py b/examples/quantum_rpg/final_state_preparation/final_state_world_test.py index e6b1a071..f24dc634 100644 --- a/examples/quantum_rpg/final_state_preparation/final_state_world_test.py +++ b/examples/quantum_rpg/final_state_preparation/final_state_world_test.py @@ -32,7 +32,8 @@ } # Rooms that purposely do not have a way back. -_ONE_WAY_ROOMS = {"hadamard1", "hadamard4_0", "hadamard4_1", "hadamard5", "perimeter1"} +_ONE_WAY_ROOMS = {"hadamard1", "hadamard4_0", "hadamard4_1", "hadamard5", "perimeter1", + "perimeter99"} def find_room(room_name: str): diff --git a/examples/quantum_rpg/final_state_preparation/quantum_perimeter.py b/examples/quantum_rpg/final_state_preparation/quantum_perimeter.py index 8b0c726f..b3e14509 100644 --- a/examples/quantum_rpg/final_state_preparation/quantum_perimeter.py +++ b/examples/quantum_rpg/final_state_preparation/quantum_perimeter.py @@ -22,10 +22,228 @@ label="perimeter1", title="Inside the Perimeter", description=( - "You have made it inside the Quantum Perimeter Research Facility." + "You have made it inside the Quantum Perimeter Research Facility.\n" + "What once must have been a modern and extravagent reception area\n" + "has now fallen into disrepair. Light from a large hall seeps in\n" + "from the north. Double doors lead to a theatre to the east." ), encounters=[], items=[CONSTRUCTION_SIGN], - exits={Direction.SOUTH: "hadamard17"}, + exits={Direction.EAST: "perimeter2", Direction.NORTH: "perimeter3"}, + ), + Location( + label="perimeter2", + title="Theatre of Ideas", + description=( + "A large lecture hall is filled with empty seats. The front of\n" + "the theatre is filled with a large stage and screen. Light from\n" + "a projector in the ceiling illuminates a presentation of slides\n" + "that periodically rotate with an echoing click that reveberates\n" + "through the empty hall." + ), + encounters=[], + items=[], + exits={Direction.WEST: "perimeter1", Direction.UP: "perimeter6"}, + ), + Location( + label="perimeter3", + title="Atrium", + description=( + "Diffuse sunlight seeps in through an opening far above. Several floors\n" + "of broken windows surround the rectangular atrium, extending upwards.\n" + "Vague pools of dissolved material and scattered glass shards are all\n" + "that remain within this empty space." + ), + encounters=[], + items=[], + exits={Direction.SOUTH: "perimeter1", Direction.NORTH: "perimeter4"}, + ), + Location( + label="perimeter4", + title="Black Hole Bistro", + description=( + "A sign hangs crookedly over the institute's cafeteria.\n" + "Within, overturned chairs and tables fill the chaotically\n" + "arranged place. Strange radiation emanates from the\n" + "counters and serving areas." + ), + encounters=[], + items=[], + exits={ + Direction.SOUTH: "perimeter3", + Direction.NORTH: "perimeter5", + Direction.UP: "perimeter9", + }, + ), + Location( + label="perimeter5", + title="Reflection Pool", + description=("A reflection pool outside the perimeter institute."), + encounters=[], + items=[], + exits={Direction.SOUTH: "perimeter4", Direction.NORTH: "perimeter20"}, + ), + Location( + label="perimeter6", + title="Theatre Seating", + description=("Second floor of the lecture hall."), + encounters=[], + items=[], + exits={Direction.DOWN: "perimeter2", Direction.NORTH: "perimeter7"}, + ), + Location( + label="perimeter7", + title="Reading Room", + description=( + "A library within the Perimeter institute. Books containing\n" + "quantapedia entries can be found here." + ), + encounters=[], + items=[], + exits={Direction.SOUTH: "perimeter6", Direction.NORTH: "perimeter8"}, + ), + Location( + label="perimeter8", + title="Stairway", + description=("Stairs leading upwards."), + encounters=[], + items=[], + exits={ + Direction.UP: "perimeter11", + Direction.SOUTH: "perimeter7", + Direction.WEST: "perimeter9", + }, + ), + Location( + label="perimeter9", + title="Dining Area", + description=("Upstairs from the bistro."), + encounters=[], + items=[], + exits={ + Direction.DOWN: "perimeter4", + Direction.NORTH: "perimeter10", + Direction.EAST: "perimeter8", + }, + ), + Location( + label="perimeter10", + title="Terrace", + description=( + "From the overlook, you can see the surrounding area.\n" + "In the distance, a tunnel into the mountains of error\n" + "correction can be seen past a large forest." + ), + encounters=[], + items=[], + exits={Direction.SOUTH: "perimeter9"}, + ), + Location( + label="perimeter11", + title="Stairway", + description=("Stairs lead up and down."), + encounters=[], + items=[], + exits={ + Direction.DOWN: "perimeter8", + Direction.NORTH: "perimeter12", + Direction.UP: "perimeter15", + }, + ), + Location( + label="perimeter12", + title="Hallway", + description=(""), + encounters=[], + items=[], + exits={ + Direction.SOUTH: "perimeter11", + Direction.WEST: "perimeter13", + Direction.EAST: "perimeter14", + }, + ), + Location( + label="perimeter13", + title="Theorist Office", + description=(""), + encounters=[], + items=[], + exits={Direction.EAST: "perimeter12"}, + ), + Location( + label="perimeter14", + title="Experimentalist Office", + description=(""), + encounters=[], + items=[], + exits={Direction.WEST: "perimeter12"}, + ), + Location( + label="perimeter15", + title="Rooftop Garden", + description=(""), + encounters=[], + items=[], + exits={Direction.DOWN: "perimeter11"}, + ), + Location( + label="perimeter20", + title="By the shores of a Silver Lake", + description=(""), + encounters=[], + items=[], + exits={Direction.SOUTH: "perimeter5", Direction.NORTH: "perimeter21"}, + ), + Location( + label="perimeter21", + title="Bridge over Silver Lake", + description=(""), + encounters=[], + items=[], + exits={Direction.SOUTH: "perimeter20", Direction.NORTH: "perimeter22"}, + ), + Location( + label="perimeter22", + title="By an old mill", + description=(""), + encounters=[], + items=[], + exits={ + Direction.SOUTH: "perimeter21", + Direction.EAST: "perimeter23", + Direction.NORTH: "perimeter24", + }, + ), + Location( + label="perimeter23", + title="Grist Mill", + description=(""), + encounters=[], + items=[], + exits={Direction.WEST: "perimeter22"}, + ), + Location( + label="perimeter24", + title="On the edge of a twisty forest", + description=("Entrance to the forest maze."), + encounters=[], + items=[], + exits={Direction.SOUTH: "perimeter22", Direction.NORTH: "perimeter25"}, + ), + Location( + label="perimeter25", + title="Maze of twisty little forest passages", + description=("A maze of twisty forest passages, all alike."), + encounters=[], + items=[], + exits={Direction.SOUTH: "perimeter24"}, + ), + Location( + label="perimeter99", + title="Into the Unknown", + description=("Entrance to the next zone."), + encounters=[], + items=[], + exits={Direction.SOUTH: "perimeter25"}, ), ]