mirror of
https://github.com/FoundationAgents/MetaGPT.git
synced 2026-06-17 15:35:21 +02:00
add spatial_memory and maze_env
This commit is contained in:
parent
b1e2ed04dc
commit
6b5572d896
41 changed files with 1205 additions and 3 deletions
0
examples/st_game/__init__.py
Normal file
0
examples/st_game/__init__.py
Normal file
384
examples/st_game/maze.py
Normal file
384
examples/st_game/maze.py
Normal file
|
|
@ -0,0 +1,384 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
# @Desc : maze environment
|
||||
|
||||
"""
|
||||
Author: Joon Sung Park (joonspk@stanford.edu)
|
||||
|
||||
File: maze.py
|
||||
Description: Defines the Maze class, which represents the map of the simulated
|
||||
world in a 2-dimensional matrix.
|
||||
"""
|
||||
|
||||
import json
|
||||
import math
|
||||
from pathlib import Path
|
||||
from .utils.const import MAZE_ASSET_PATH
|
||||
from .utils.utils import read_csv_to_list
|
||||
|
||||
class Maze:
|
||||
def __init__(self, maze_asset_path: Path = MAZE_ASSET_PATH):
|
||||
# READING IN THE BASIC META INFORMATION ABOUT THE MAP
|
||||
self.maze_asset_path = maze_asset_path
|
||||
maze_matrix_path = maze_asset_path.joinpath("matrix")
|
||||
# Reading in the meta information about the world. If you want tp see the
|
||||
# example variables, check out the maze_meta_info.json file.
|
||||
meta_info = json.load(open(maze_matrix_path.joinpath("maze_meta_info.json")))
|
||||
# <maze_width> and <maze_height> denote the number of tiles make up the
|
||||
# height and width of the map.
|
||||
self.maze_width = int(meta_info["maze_width"])
|
||||
self.maze_height = int(meta_info["maze_height"])
|
||||
# <sq_tile_size> denotes the pixel height/width of a tile.
|
||||
self.sq_tile_size = int(meta_info["sq_tile_size"])
|
||||
# <special_constraint> is a string description of any relevant special
|
||||
# constraints the world might have.
|
||||
# e.g., "planning to stay at home all day and never go out of her home"
|
||||
self.special_constraint = meta_info["special_constraint"]
|
||||
|
||||
# READING IN SPECIAL BLOCKS
|
||||
# Special blocks are those that are colored in the Tiled map.
|
||||
|
||||
# Here is an example row for the arena block file:
|
||||
# e.g., "25335, Double Studio, Studio, Common Room"
|
||||
# And here is another example row for the game object block file:
|
||||
# e.g, "25331, Double Studio, Studio, Bedroom 2, Painting"
|
||||
|
||||
# Notice that the first element here is the color marker digit from the
|
||||
# Tiled export. Then we basically have the block path:
|
||||
# World, Sector, Arena, Game Object -- again, these paths need to be
|
||||
# unique within an instance of Reverie.
|
||||
blocks_folder = maze_matrix_path.joinpath("special_blocks")
|
||||
|
||||
_wb = blocks_folder.joinpath("world_blocks.csv")
|
||||
wb_rows = read_csv_to_list(_wb, header=False)
|
||||
wb = wb_rows[0][-1]
|
||||
|
||||
_sb = blocks_folder.joinpath("sector_blocks.csv")
|
||||
sb_rows = read_csv_to_list(_sb, header=False)
|
||||
sb_dict = dict()
|
||||
for i in sb_rows: sb_dict[i[0]] = i[-1]
|
||||
|
||||
_ab = blocks_folder.joinpath("arena_blocks.csv")
|
||||
ab_rows = read_csv_to_list(_ab, header=False)
|
||||
ab_dict = dict()
|
||||
for i in ab_rows: ab_dict[i[0]] = i[-1]
|
||||
|
||||
_gob = blocks_folder.joinpath("game_object_blocks.csv")
|
||||
gob_rows = read_csv_to_list(_gob, header=False)
|
||||
gob_dict = dict()
|
||||
for i in gob_rows: gob_dict[i[0]] = i[-1]
|
||||
|
||||
_slb = blocks_folder.joinpath("spawning_location_blocks.csv")
|
||||
slb_rows = read_csv_to_list(_slb, header=False)
|
||||
slb_dict = dict()
|
||||
for i in slb_rows: slb_dict[i[0]] = i[-1]
|
||||
|
||||
# [SECTION 3] Reading in the matrices
|
||||
# This is your typical two dimensional matrices. It's made up of 0s and
|
||||
# the number that represents the color block from the blocks folder.
|
||||
maze_folder = maze_matrix_path.joinpath("maze")
|
||||
|
||||
_cm = maze_folder.joinpath("collision_maze.csv")
|
||||
collision_maze_raw = read_csv_to_list(_cm, header=False)[0]
|
||||
_sm = maze_folder.joinpath("sector_maze.csv")
|
||||
sector_maze_raw = read_csv_to_list(_sm, header=False)[0]
|
||||
_am = maze_folder.joinpath("arena_maze.csv")
|
||||
arena_maze_raw = read_csv_to_list(_am, header=False)[0]
|
||||
_gom = maze_folder.joinpath("game_object_maze.csv")
|
||||
game_object_maze_raw = read_csv_to_list(_gom, header=False)[0]
|
||||
_slm = maze_folder.joinpath("spawning_location_maze.csv")
|
||||
spawning_location_maze_raw = read_csv_to_list(_slm, header=False)[0]
|
||||
|
||||
# Loading the maze. The mazes are taken directly from the json exports of
|
||||
# Tiled maps. They should be in csv format.
|
||||
# Importantly, they are "not" in a 2-d matrix format -- they are single
|
||||
# row matrices with the length of width x height of the maze. So we need
|
||||
# to convert here.
|
||||
# We can do this all at once since the dimension of all these matrices are
|
||||
# identical (e.g., 70 x 40).
|
||||
# example format: [['0', '0', ... '25309', '0',...], ['0',...]...]
|
||||
# 25309 is the collision bar number right now.
|
||||
self.collision_maze = []
|
||||
sector_maze = []
|
||||
arena_maze = []
|
||||
game_object_maze = []
|
||||
spawning_location_maze = []
|
||||
for i in range(0, len(collision_maze_raw), meta_info["maze_width"]):
|
||||
tw = meta_info["maze_width"]
|
||||
self.collision_maze += [collision_maze_raw[i:i+tw]]
|
||||
sector_maze += [sector_maze_raw[i:i+tw]]
|
||||
arena_maze += [arena_maze_raw[i:i+tw]]
|
||||
game_object_maze += [game_object_maze_raw[i:i+tw]]
|
||||
spawning_location_maze += [spawning_location_maze_raw[i:i+tw]]
|
||||
|
||||
# Once we are done loading in the maze, we now set up self.tiles. This is
|
||||
# a matrix accessed by row:col where each access point is a dictionary
|
||||
# that contains all the things that are taking place in that tile.
|
||||
# More specifically, it contains information about its "world," "sector,"
|
||||
# "arena," "game_object," "spawning_location," as well as whether it is a
|
||||
# collision block, and a set of all events taking place in it.
|
||||
# e.g., self.tiles[32][59] = {'world': 'double studio',
|
||||
# 'sector': '', 'arena': '', 'game_object': '',
|
||||
# 'spawning_location': '', 'collision': False, 'events': set()}
|
||||
# e.g., self.tiles[9][58] = {'world': 'double studio',
|
||||
# 'sector': 'double studio', 'arena': 'bedroom 2',
|
||||
# 'game_object': 'bed', 'spawning_location': 'bedroom-2-a',
|
||||
# 'collision': False,
|
||||
# 'events': {('double studio:double studio:bedroom 2:bed',
|
||||
# None, None)}}
|
||||
self.tiles = []
|
||||
for i in range(self.maze_height):
|
||||
row = []
|
||||
for j in range(self.maze_width):
|
||||
tile_details = dict()
|
||||
tile_details["world"] = wb
|
||||
|
||||
tile_details["sector"] = ""
|
||||
if sector_maze[i][j] in sb_dict:
|
||||
tile_details["sector"] = sb_dict[sector_maze[i][j]]
|
||||
|
||||
tile_details["arena"] = ""
|
||||
if arena_maze[i][j] in ab_dict:
|
||||
tile_details["arena"] = ab_dict[arena_maze[i][j]]
|
||||
|
||||
tile_details["game_object"] = ""
|
||||
if game_object_maze[i][j] in gob_dict:
|
||||
tile_details["game_object"] = gob_dict[game_object_maze[i][j]]
|
||||
|
||||
tile_details["spawning_location"] = ""
|
||||
if spawning_location_maze[i][j] in slb_dict:
|
||||
tile_details["spawning_location"] = slb_dict[spawning_location_maze[i][j]]
|
||||
|
||||
tile_details["collision"] = False
|
||||
if self.collision_maze[i][j] != "0":
|
||||
tile_details["collision"] = True
|
||||
|
||||
tile_details["events"] = set()
|
||||
|
||||
row += [tile_details]
|
||||
self.tiles += [row]
|
||||
# Each game object occupies an event in the tile. We are setting up the
|
||||
# default event value here.
|
||||
for i in range(self.maze_height):
|
||||
for j in range(self.maze_width):
|
||||
if self.tiles[i][j]["game_object"]:
|
||||
object_name = ":".join([self.tiles[i][j]["world"],
|
||||
self.tiles[i][j]["sector"],
|
||||
self.tiles[i][j]["arena"],
|
||||
self.tiles[i][j]["game_object"]])
|
||||
go_event = (object_name, None, None, None)
|
||||
self.tiles[i][j]["events"].add(go_event)
|
||||
|
||||
# Reverse tile access.
|
||||
# <self.address_tiles> -- given a string address, we return a set of all
|
||||
# tile coordinates belonging to that address (this is opposite of
|
||||
# self.tiles that give you the string address given a coordinate). This is
|
||||
# an optimization component for finding paths for the personas' movement.
|
||||
# self.address_tiles['<spawn_loc>bedroom-2-a'] == {(58, 9)}
|
||||
# self.address_tiles['double studio:recreation:pool table']
|
||||
# == {(29, 14), (31, 11), (30, 14), (32, 11), ...},
|
||||
self.address_tiles = dict()
|
||||
for i in range(self.maze_height):
|
||||
for j in range(self.maze_width):
|
||||
addresses = []
|
||||
if self.tiles[i][j]["sector"]:
|
||||
add = f'{self.tiles[i][j]["world"]}:'
|
||||
add += f'{self.tiles[i][j]["sector"]}'
|
||||
addresses += [add]
|
||||
if self.tiles[i][j]["arena"]:
|
||||
add = f'{self.tiles[i][j]["world"]}:'
|
||||
add += f'{self.tiles[i][j]["sector"]}:'
|
||||
add += f'{self.tiles[i][j]["arena"]}'
|
||||
addresses += [add]
|
||||
if self.tiles[i][j]["game_object"]:
|
||||
add = f'{self.tiles[i][j]["world"]}:'
|
||||
add += f'{self.tiles[i][j]["sector"]}:'
|
||||
add += f'{self.tiles[i][j]["arena"]}:'
|
||||
add += f'{self.tiles[i][j]["game_object"]}'
|
||||
addresses += [add]
|
||||
if self.tiles[i][j]["spawning_location"]:
|
||||
add = f'<spawn_loc>{self.tiles[i][j]["spawning_location"]}'
|
||||
addresses += [add]
|
||||
|
||||
for add in addresses:
|
||||
if add in self.address_tiles:
|
||||
self.address_tiles[add].add((j, i))
|
||||
else:
|
||||
self.address_tiles[add] = set([(j, i)])
|
||||
|
||||
|
||||
def turn_coordinate_to_tile(self, px_coordinate):
|
||||
"""
|
||||
Turns a pixel coordinate to a tile coordinate.
|
||||
|
||||
INPUT
|
||||
px_coordinate: The pixel coordinate of our interest. Comes in the x, y
|
||||
format.
|
||||
OUTPUT
|
||||
tile coordinate (x, y): The tile coordinate that corresponds to the
|
||||
pixel coordinate.
|
||||
EXAMPLE OUTPUT
|
||||
Given (1600, 384), outputs (50, 12)
|
||||
"""
|
||||
x = math.ceil(px_coordinate[0]/self.sq_tile_size)
|
||||
y = math.ceil(px_coordinate[1]/self.sq_tile_size)
|
||||
return (x, y)
|
||||
|
||||
|
||||
def access_tile(self, tile):
|
||||
"""
|
||||
Returns the tiles details dictionary that is stored in self.tiles of the
|
||||
designated x, y location.
|
||||
|
||||
INPUT
|
||||
tile: The tile coordinate of our interest in (x, y) form.
|
||||
OUTPUT
|
||||
The tile detail dictionary for the designated tile.
|
||||
EXAMPLE OUTPUT
|
||||
Given (58, 9),
|
||||
self.tiles[9][58] = {'world': 'double studio',
|
||||
'sector': 'double studio', 'arena': 'bedroom 2',
|
||||
'game_object': 'bed', 'spawning_location': 'bedroom-2-a',
|
||||
'collision': False,
|
||||
'events': {('double studio:double studio:bedroom 2:bed',
|
||||
None, None)}}
|
||||
"""
|
||||
x = tile[0]
|
||||
y = tile[1]
|
||||
return self.tiles[y][x]
|
||||
|
||||
|
||||
def get_tile_path(self, tile, level):
|
||||
"""
|
||||
Get the tile string address given its coordinate. You designate the level
|
||||
by giving it a string level description.
|
||||
|
||||
INPUT:
|
||||
tile: The tile coordinate of our interest in (x, y) form.
|
||||
level: world, sector, arena, or game object
|
||||
OUTPUT
|
||||
The string address for the tile.
|
||||
EXAMPLE OUTPUT
|
||||
Given tile=(58, 9), and level=arena,
|
||||
"double studio:double studio:bedroom 2"
|
||||
"""
|
||||
x = tile[0]
|
||||
y = tile[1]
|
||||
tile = self.tiles[y][x]
|
||||
|
||||
path = f"{tile['world']}"
|
||||
if level == "world":
|
||||
return path
|
||||
else:
|
||||
path += f":{tile['sector']}"
|
||||
|
||||
if level == "sector":
|
||||
return path
|
||||
else:
|
||||
path += f":{tile['arena']}"
|
||||
|
||||
if level == "arena":
|
||||
return path
|
||||
else:
|
||||
path += f":{tile['game_object']}"
|
||||
|
||||
return path
|
||||
|
||||
|
||||
def get_nearby_tiles(self, tile, vision_r):
|
||||
"""
|
||||
Given the current tile and vision_r, return a list of tiles that are
|
||||
within the radius. Note that this implementation looks at a square
|
||||
boundary when determining what is within the radius.
|
||||
i.e., for vision_r, returns x's.
|
||||
x x x x x
|
||||
x x x x x
|
||||
x x P x x
|
||||
x x x x x
|
||||
x x x x x
|
||||
|
||||
INPUT:
|
||||
tile: The tile coordinate of our interest in (x, y) form.
|
||||
vision_r: The radius of the persona's vision.
|
||||
OUTPUT:
|
||||
nearby_tiles: a list of tiles that are within the radius.
|
||||
"""
|
||||
left_end = 0
|
||||
if tile[0] - vision_r > left_end:
|
||||
left_end = tile[0] - vision_r
|
||||
|
||||
right_end = self.maze_width - 1
|
||||
if tile[0] + vision_r + 1 < right_end:
|
||||
right_end = tile[0] + vision_r + 1
|
||||
|
||||
bottom_end = self.maze_height - 1
|
||||
if tile[1] + vision_r + 1 < bottom_end:
|
||||
bottom_end = tile[1] + vision_r + 1
|
||||
|
||||
top_end = 0
|
||||
if tile[1] - vision_r > top_end:
|
||||
top_end = tile[1] - vision_r
|
||||
|
||||
nearby_tiles = []
|
||||
for i in range(left_end, right_end):
|
||||
for j in range(top_end, bottom_end):
|
||||
nearby_tiles += [(i, j)]
|
||||
return nearby_tiles
|
||||
|
||||
|
||||
def add_event_from_tile(self, curr_event, tile):
|
||||
"""
|
||||
Add an event triple to a tile.
|
||||
|
||||
INPUT:
|
||||
curr_event: Current event triple.
|
||||
e.g., ('double studio:double studio:bedroom 2:bed', None,
|
||||
None)
|
||||
tile: The tile coordinate of our interest in (x, y) form.
|
||||
OUPUT:
|
||||
None
|
||||
"""
|
||||
self.tiles[tile[1]][tile[0]]["events"].add(curr_event)
|
||||
|
||||
|
||||
def remove_event_from_tile(self, curr_event, tile):
|
||||
"""
|
||||
Remove an event triple from a tile.
|
||||
|
||||
INPUT:
|
||||
curr_event: Current event triple.
|
||||
e.g., ('double studio:double studio:bedroom 2:bed', None,
|
||||
None)
|
||||
tile: The tile coordinate of our interest in (x, y) form.
|
||||
OUPUT:
|
||||
None
|
||||
"""
|
||||
curr_tile_ev_cp = self.tiles[tile[1]][tile[0]]["events"].copy()
|
||||
for event in curr_tile_ev_cp:
|
||||
if event == curr_event:
|
||||
self.tiles[tile[1]][tile[0]]["events"].remove(event)
|
||||
|
||||
|
||||
def turn_event_from_tile_idle(self, curr_event, tile):
|
||||
curr_tile_ev_cp = self.tiles[tile[1]][tile[0]]["events"].copy()
|
||||
for event in curr_tile_ev_cp:
|
||||
if event == curr_event:
|
||||
self.tiles[tile[1]][tile[0]]["events"].remove(event)
|
||||
new_event = (event[0], None, None, None)
|
||||
self.tiles[tile[1]][tile[0]]["events"].add(new_event)
|
||||
|
||||
|
||||
def remove_subject_events_from_tile(self, subject, tile):
|
||||
"""
|
||||
Remove an event triple that has the input subject from a tile.
|
||||
|
||||
INPUT:
|
||||
subject: "Isabella Rodriguez"
|
||||
tile: The tile coordinate of our interest in (x, y) form.
|
||||
OUPUT:
|
||||
None
|
||||
"""
|
||||
curr_tile_ev_cp = self.tiles[tile[1]][tile[0]]["events"].copy()
|
||||
for event in curr_tile_ev_cp:
|
||||
if event[0] == subject:
|
||||
self.tiles[tile[1]][tile[0]]["events"].remove(event)
|
||||
|
|
@ -3,8 +3,10 @@
|
|||
# @Desc : maze environment
|
||||
|
||||
from metagpt.environment import Environment
|
||||
from .maze import Maze
|
||||
|
||||
|
||||
class MazeEnvironment(Environment):
|
||||
|
||||
pass
|
||||
def __init__(self, name: str, maze: Maze) -> None:
|
||||
self.name = name
|
||||
self.maze = maze
|
||||
|
|
|
|||
0
examples/st_game/memory/__init__.py
Normal file
0
examples/st_game/memory/__init__.py
Normal file
114
examples/st_game/memory/spatial_memory.py
Normal file
114
examples/st_game/memory/spatial_memory.py
Normal file
|
|
@ -0,0 +1,114 @@
|
|||
"""
|
||||
Author: Joon Sung Park (joonspk@stanford.edu)
|
||||
|
||||
File: spatial_memory.py
|
||||
Description: Defines the MemoryTree class that serves as the agents' spatial
|
||||
memory that aids in grounding their behavior in the game world.
|
||||
"""
|
||||
import json
|
||||
import os
|
||||
|
||||
class MemoryTree:
|
||||
def __init__(self, f_saved):
|
||||
self.tree = {}
|
||||
if os.path.isfile(f_saved) and os.path.exists(f_saved):
|
||||
with open(f_saved) as f:
|
||||
self.tree = json.load(f)
|
||||
|
||||
|
||||
def print_tree(self):
|
||||
def _print_tree(tree, depth):
|
||||
dash = " >" * depth
|
||||
if type(tree) == type(list()):
|
||||
if tree:
|
||||
print (dash, tree)
|
||||
return
|
||||
|
||||
for key, val in tree.items():
|
||||
if key:
|
||||
print (dash, key)
|
||||
_print_tree(val, depth+1)
|
||||
|
||||
_print_tree(self.tree, 0)
|
||||
|
||||
|
||||
def save(self, out_json):
|
||||
with open(out_json, "w") as outfile:
|
||||
json.dump(self.tree, outfile)
|
||||
|
||||
|
||||
def get_str_accessible_sectors(self, curr_world):
|
||||
"""
|
||||
Returns a summary string of all the arenas that the persona can access
|
||||
within the current sector.
|
||||
|
||||
Note that there are places a given persona cannot enter. This information
|
||||
is provided in the persona sheet. We account for this in this function.
|
||||
|
||||
INPUT
|
||||
None
|
||||
OUTPUT
|
||||
A summary string of all the arenas that the persona can access.
|
||||
EXAMPLE STR OUTPUT
|
||||
"bedroom, kitchen, dining room, office, bathroom"
|
||||
"""
|
||||
x = ", ".join(list(self.tree[curr_world].keys()))
|
||||
return x
|
||||
|
||||
|
||||
def get_str_accessible_sector_arenas(self, sector):
|
||||
"""
|
||||
Returns a summary string of all the arenas that the persona can access
|
||||
within the current sector.
|
||||
|
||||
Note that there are places a given persona cannot enter. This information
|
||||
is provided in the persona sheet. We account for this in this function.
|
||||
|
||||
INPUT
|
||||
None
|
||||
OUTPUT
|
||||
A summary string of all the arenas that the persona can access.
|
||||
EXAMPLE STR OUTPUT
|
||||
"bedroom, kitchen, dining room, office, bathroom"
|
||||
"""
|
||||
curr_world, curr_sector = sector.split(":")
|
||||
if not curr_sector:
|
||||
return ""
|
||||
x = ", ".join(list(self.tree[curr_world][curr_sector].keys()))
|
||||
return x
|
||||
|
||||
|
||||
def get_str_accessible_arena_game_objects(self, arena):
|
||||
"""
|
||||
Get a str list of all accessible game objects that are in the arena. If
|
||||
temp_address is specified, we return the objects that are available in
|
||||
that arena, and if not, we return the objects that are in the arena our
|
||||
persona is currently in.
|
||||
|
||||
INPUT
|
||||
temp_address: optional arena address
|
||||
OUTPUT
|
||||
str list of all accessible game objects in the gmae arena.
|
||||
EXAMPLE STR OUTPUT
|
||||
"phone, charger, bed, nightstand"
|
||||
"""
|
||||
curr_world, curr_sector, curr_arena = arena.split(":")
|
||||
|
||||
if not curr_arena:
|
||||
return ""
|
||||
|
||||
try:
|
||||
x = ", ".join(list(self.tree[curr_world][curr_sector][curr_arena]))
|
||||
except:
|
||||
x = ", ".join(list(self.tree[curr_world][curr_sector][curr_arena.lower()]))
|
||||
return x
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -18,6 +18,7 @@ from metagpt.roles.role import Role, RoleContext
|
|||
from metagpt.schema import Message
|
||||
|
||||
from ..memory.agent_memory import AgentMemory
|
||||
from ..memory.spatial_memory import MemoryTree
|
||||
from ..actions.dummy_action import DummyAction
|
||||
from ..actions.user_requirement import UserRequirement
|
||||
from ..maze_environment import MazeEnvironment
|
||||
|
|
@ -29,6 +30,7 @@ class STRoleContext(RoleContext):
|
|||
env: 'MazeEnvironment' = Field(default=None)
|
||||
memory: AgentMemory = Field(default=AgentMemory)
|
||||
scratch: Scratch = Field(default=Scratch)
|
||||
spatial_memory: MemoryTree = Field(default=MemoryTree)
|
||||
|
||||
|
||||
class STRole(Role):
|
||||
|
|
|
|||
|
|
@ -0,0 +1,26 @@
|
|||
Name,Whisper
|
||||
Latoya Williams,"Rajiv Patel is your housemate whom you've known for about a year; You and Rajiv Patel sometimes talk about politics and local elections; Abigail Chan is your housemate whom you've known for about a year; Francisco Lopez is your housemate whom you've known for about a year; Haily Johnson is your housemate whom you've known for about a year but you don't really find her too comfortable; In terms of your daily plans, you sometimes spend time at The Rose and Crown Pub when it's late; You have known the bartender at The Rose and Crown Pub, Arthur Burton for about half a year; You like to talk about politics and local elections"
|
||||
Rajiv Patel,"Latoya Williams is your housemate whom you've known for about a year; You and Latoya Williams sometimes talk about politics and local elections; Abigail Chan is your housemate whom you've known for about a year and you think she is kind of cute; Francisco Lopez is your housemate whom you've known for about a year; Haily Johnson is your housemate whom you've known for about a year but you don't really find her too comfortable; You sometimes try to spend time at Hobbs Cafe but you haven't really talked to anyone there yet; In terms of your daily plans, you sometimes spend time at The Rose and Crown Pub when it's late and you have known the bartender, Arthur Burton for about a year; You like to talk about politics and local elections"
|
||||
Abigail Chen,You think you are kind of cute; You and Latoya Williams are housemates and have known each other for about a year; You and Rajiv Patel are housemates and have known each other for about a year and you two are somewhat close; You and Francisco Lopez are housemates and have known each other for about a year; You and Hailey Johnson are housemates and have known each other for about a year
|
||||
Francisco Lopez,"You and Latoya Williams are housemates and have known each other for about a year; You and Rajiv Patel are housemates and have known each other for about a year; You and Abigail Chen are housemates and have known each other for about a year; You and Hailey Johnson are housemates and have known each other for about a year but you don't really like her too much; You have a secret crush on Abigail Chen but so far, you haven't had the courage to ask her out; You think Abigail Chen is cute; You frequent Hobbs Cafe"
|
||||
Hailey Johnson,"You want to be acknowledged by everyone; You've known Isabella Rodriguez for about a year and you talk to her often about the piece you are currently writing; Latoya Williams is your housemate whom you've known for about a year and you think she is somewhat cute; Rajiv Patel is your housemate whom you've known for about a year, but you don't know much about him; Abigail Chen is a housemate whom you've known for about a year, but you haven't really talked to her yet; Francisco Lopez is your housemate and you two have known each other for quite awhile because you are from the same town; You are interested in meeting someone; You are interested in romantically dating someone; You are not seeing anyone right now "
|
||||
Arthur Burton,"You are generally nice to all your customers and listen to their story; You and Isabella Rodriguez are friends; You've known Isabella Rodriguez for a few years since she runs Hobbs Cafe right next to your bar; You know Latoya Williams as a customer at your bar, The Rose and Crown Pub; You know Rajiv Patel as a customer at your bar, The Rose and Crown Pub; You know Ryan Park as a customer at your bar, The Rose and Crown Pub; You know Carlos Gomez as a customer at your bar, The Rose and Crown Pub; You know Adam Smith as a customer at your bar, The Rose and Crown Pub; You know Yuriko Yamamoto as a customer at your bar, The Rose and Crown Pub; You know Jennifer Moore as a customer at your bar, The Rose and Crown Pub; You know Sam Moore as a customer at your bar, The Rose and Crown Pub; You know Carmen Ortiz as a customer at your bar, The Rose and Crown Pub; You know Tom Moreno as a customer at your bar, The Rose and Crown Pub; You don't like it when people fight at your bar"
|
||||
Ryan Park,"You frequent Hobbs Cafe to work and think and eat; You've known Isabella Rodriguez for about a year; You know Isabella Rodriguez works at Hobbs Cafe; You frequent The Rose and Crown Pub to eat dinner; You've known the bartender at The Rose and Crown Pub, Arthur Burton, for about a year; You've known Giorgio Rossi, your next door neighbor, for about a year; You've known Carlos Gomez, your neighbor, for about a year; You wonder why Giorgio Rossi and Carlos Gomez are always fighting; You want no part in Giorgio Rossi and Carlos Gomez's fight"
|
||||
Isabella Rodriguez,"You are excited to be planning a Valentine's Day party at *Hobbs Cafe on February 14th from 5pm* and you are eager to tell everyone to come to the party; You and Maria Lopez have known each other for about a year ever since Maria Lopez visited Hobbs Cafe and are good friends; Maria Lopez is a loyal friend to you and a frequent customer at Hobbs Cafe; You see Tamara Taylor as a frequent customer at your cafe, Hobbs Cafe; You and Tamara Taylor have known each other for a few months; You and Carlos Gomez have known each other for about 4 years; You know that Carlos Gomez is a good poet and you like his poem; You see Ryan Park frequently when he visits your cafe, Hobbs Cafe; You often see Ryan Park working hard on his laptop and you think he is dedicated in his work, which you find to be cool; Hailey Johnson is a frequent customer at your cafe, Hobbs Cafe; You find Haily Johnson to be a little uncomfortable because she is too pushy; You know Giorgio Rossi as a customer at your Hobbs Cafe; You know Wolfgang Schulz as a customer at Hobbs Cafe; You know Carmen Ortiz as a customer at Hobbs Cafe; You and Arthur Burton are friends; You've known Arthur Burton for a few years since he runs a bar right next door"
|
||||
Giorgio Rossi,"You do not like Carlos Gomez; You think Carlos Gomez is annoying; You think Carlos Gomez is pushy; You think Carlos Gomez is a coward; You've known Carlos Gomez, your next door neighbor, for about two years; You think Carlos Gomez is really loud and you have filed complaints against him before; For planning, you frequent Hobbs Cafe to hang out and write and think; you are friends with Isabella Rodriguez who works at Hobbs Cafe; You think Isabella Rodriguez is kind-hearted; You and Ryan Park sometimes talk about random things; You've known Ryan Park for about a year living as his neighbor; You would rather not see Carlos Gomez ever"
|
||||
Carlos Gomez,"You do not like Giorgio Rossi; You think Giorgio Rossi is annoying; You think Giorgio Rossi is a coward; You've known Giorgio Rossi, your next door neighbor, for about two years; For planning, you frequent The Rose and Crown Pub at night to eat and drink; you are friends with Arthur Burton who is a bartender at the pub; You've known Ryan Park for about a year living as his neighbor; You would rather not see Giorgio Rossi ever; You want Ryan Park to take your side in his fight against Giorgio Rossi"
|
||||
Klaus Mueller,"This is very important -- you have a crush on Maria Lopez; You and Maria Lopez have known each other for over 2 years now; You and Maria Lopez are close friends and classmates; You are close with Ayesha Khan, who is a classmate in one of your classes and a dormmate; You and Maria Lopez are dormmates; You and Eddy Lin are classmates; You know Mei Lin is a professor at your college; You and Wolfgang Schulz are classmates and dormmates"
|
||||
Maria Lopez,"This is very important -- you have a secret crush on Klaus Mueller; You and Klaus Mueller have known each other for over 2 years now; You and Klaus Mueller are close friends and classmates; For planning, you frequent Hobbs Cafe for studying; You are close with Ayesha Khan, who is a classmate in one of your classes and a dormmate; You and Eddy Lin are classmates; You know Mei Lin is a professor at your college; You and Wolfgang Schulz are classmates and dormmates"
|
||||
Ayesha Khan,"You are close with Wolfgang Schulz, who is a classmate in one of your classes and a dormmate; You and Maria Lopez are dormmates; You and Klaus Mueller are dormmates; You and Eddy Lin are classmates; You know Mei Lin is a professor at your college"
|
||||
Wolfgang Schulz,"For planning, you frequent Hobbs Cafe for studying; You are close with Ayesha Khan, who is a classmate in one of your classes and a dormmate; You and Maria Lopez are dormmates; You and Klaus Mueller are dormmates; You and Eddy Lin are classmates and you two sometimes talk about your favorite music; You know Mei Lin is a professor at your college; You've met Isabella Rodriguez who works at the cafe but have not really talked to her"
|
||||
Mei Lin,"You are a professor who loves teaching; You've known your neighbor, Yuriko Yamamoto, since the time she helped you with some legal matters; You've known your next door old couple, Sam Moore and Jennifer Moore, for a few years; You think Sam Moore is a kind and nice man; You like Jennifer Moore's art; You know of Tamara Taylor who live next block but you haven't really chatted with her; You've known Carmen Ortiz for a year or so as your neighbor; You know the Moreno family somewhat well -- the husband Tom Moreno and the wife Jane Moreno; You know that Tom Moreno and your husband, John Lin, are colleagues at The Willows Market and Pharmacy; John Lin is your husband who works at the Pharmacy section of The Willows Market and Pharmacy; Eddy Lin is your son who studies music theory at the college; You love your family very much; You think your son, Eddy Lin, has been a little rebellious recently"
|
||||
John Lin,"You like to talk about politics and local elections; You are really curious about who will run for the local mayor election that is coming up in a few months; You've known your neighbor, Yuriko Yamamoto, since the time she helped you with some legal matters; You've known your next door old couple, Sam Moore and Jennifer Moore, for a few years; You think Sam Moore is a kind and nice man; You like Jennifer Moore's art; You know of Tamara Taylor who live next block but you haven't really chatted with her; You've known Carmen Ortiz for a year or so as your neighbor; You and Tom Moreno are colleagues at The Willows Market and Pharmacy; You know the Moreno family somewhat well -- the husband Tom Moreno and the wife Jane Moreno; Mei Lin is your wife who is a professor; Eddy Lin is your son who studies music theory at the college; You love your family very much"
|
||||
Eddy Lin,"You are a music student at the Oak Hill College; You are working on a new music composition; You like hip hop music; You like to attach ""Yo"" at the end of your sentences; You've known your neighbor, Yuriko Yamamoto, for a few years since she helped your parents with some legal matters; You've known your next door old couple, Sam Moore and Jennifer Moore, for a few years; You know of Tamara Taylor who live next block but you haven't really chatted with her; You've known Carmen Ortiz for a year or so as your neighbor; You know the Moreno family somewhat well -- the husband Tom Moreno and the wife Jane Moreno; You know that Tom Moreno and your father, John Lin, are colleagues at The Willows Market and Pharmacy; John Lin is your father who works at the Pharmacy section of The Willows Market and Pharmacy; Mei Lin is your mother who teaches at the Oak Hill Collrhr; You love your family very much; You think your mother, Mei Lin, is a little too uptight; You and Wolfgang Schulz are schoolmates; You and Ayesha Khan are school mates; You and Maria Lopez are schoolmates"
|
||||
Tom Moreno,"You like to express your opinions; You are loud; You like to talk about politics and local elections; You've known your neighbor, Yuriko Yamamoto, for a few years and you two sometimes chat about the local election; You've known your next door old couple, Sam Moore and Jennifer Moore, for a few years; You don't really like Sam Moore; You know of Tamara Taylor who live next block but you haven't really chatted with her; You've known Carmen Ortiz for a year or so as your neighbor; In terms of your daily plans, you frequent The Rose and Crown Pub at night; You've knonw the bartender Arthur Burton for a few years; You sometimes talk to Adam Smith about local elections; You and John Lin are colleagues at The Willows Market and Pharmacy; You know the Lin family somewhat well -- the husband John Lin, wife, Mei Lin, and the son Eddy Lin; you know Mei Lin is a professor; Jane Moreno is your wife -- you love her but your relationship with her has been strained recently"
|
||||
Jane Moreno,"You don't really care about politics; You've known your neighbor, Yuriko Yamamoto, for a few years; You've known your next door old couple, Sam Moore and Jennifer Moore, for a few years; You think Sam Moore is a kind and nice man; You know of Tamara Taylor who live next block but you haven't really chatted with her; You've known Carmen Ortiz for a year or so as your neighbor; You know the Lin family somewhat well since they are your neighbor -- the husband John Lin, wife, Mei Lin, and the son Eddy Lin; you know Mei Lin is a professor; Tom Moreno is your husband -- you love him but your relationship with him has been strained recently"
|
||||
Tamara Taylor,"You just moved in; Carmen Ortiz is your housemate; You don't really know any one in town because you justn moved in, but you are looking forward to meeting more people"
|
||||
Carmen Ortiz,"You are somehwat curious about who will run for the local mayor election that is coming up in a few months; Tamara Taylor is your housemate who just moved in; Tamara Taylor just moved in so she doesn't know many peopl in town; You've known your neighbor, Yuriko Yamamoto, for a few years and you two sometimes chat about the local election; You've known your next door old couple, Sam Moore and Jennifer Moore, for a few years; You've known the couple, Tom Moreno and Jane Moreno, who live in the next block for a few years; In terms of your daily plans, you frequent Hobbs Cafe; You've knonw the bartender Arthur Burton for a few years; You've known Isabella Rodriguez the owner at Hobbs Cafe for a few years"
|
||||
Sam Moore,"You are thinking of running in the upcoming local mayor election; You are telling people that you are running for the upcoming local mayor election; You've known your neighbor, Adam Smith, for a few years; You consider Adam Smith to be a very close friend of yours although he is much younger than you; You've known your neighbor, Yuriko Yamamoto, for a few years since the time she helped you and your wife Jennifer Moore on some legal matters; You consider Yuriko Yamamoto to be someone like your daughter even though you two are not related; You've known Carmen Ortiz for a year or so as your neighbor; You've known the couple, Tom Moreno and Jane Moreno, who live in the next block for a few years; You think Tom Moreno is a little too aggressive and opinionated; You've known the bartender Arthur Burton for a few years; You've known the Lin family, Mei, John, and the son Eddy Lin, for a few years since they live next block; In terms of your plan, you like to take a walk in the park;"
|
||||
Jennifer Moore,"You don't really care about politics; You've known your neighbor, Adam Smith, for a few years; You've known your neighbor, Yuriko Yamamoto, for a few years since the time she helped you and your husband Sam Moore on some legal matters; You consider Yuriko Yamamoto to be someone like your daughter even though you two are not related; You've known Carmen Ortiz for a year or so as your neighbor; You've known the couple, Tom Moreno and Jane Moreno, who live in the next block for a few years; You think Tom Moreno is a little too aggressive and opinionated; You've known the bartender Arthur Burton for a few years; You've known the Lin family, Mei, John, and the son Eddy Lin, for a few years since they live next block; You love your husband, Sam Moore and hope he has relaxing days; You know Sam Moore, your husband, is planning on running for the local mayor election but you do not want him to as it will be too taxing for him "
|
||||
Yuriko Yamamoto,"You like to talk about politics and local elections; You've known your neighbor, Adam Smith, for a few years and you two sometimes chat about the local election; You've known your next door old couple, Sam Moore and Jennifer Moore, for a few years; You and Sam Moore are somewhat close; You've known Carmen Ortiz for a year or so as your neighbor; You've known the couple, Tom Moreno and Jane Moreno, who live in the next block for a few years; You think Tom Moreno is a little too aggressive and opinionated; You've knonw the bartender Arthur Burton for a few years; You've known the Lin family, Mei, John, and the son Eddy Lin, for a few years since the time you helped them with some legal matter"
|
||||
Adam Smith,"You like to talk about politics and local elections; You are really curious about who will run for the local mayor election that is coming up in a few months; You've known your neighbor, Yuriko Yamamoto, for a few years and you two sometimes chat about the local election; You've known your next door old couple, Sam Moore and Jennifer Moore, for a few years; You and Sam Moore are somewhat close; You view Sam Moore as something of a mentor; You know of Tamara Taylor who live next block but you haven't really chatted with her; You've known Carmen Ortiz for a year or so as your neighbor; You've known the couple, Tom Moreno and Jane Moreno, who live in the next block for a few years; You think Tom Moreno is a little too aggressive and opinionated; In terms of your daily plans, you frequent The Rose and Crown Pub at night; You've knonw the bartender Arthur Burton for a few years"
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
Name,Whisper
|
||||
Maria Lopez,This is very important -- you have a secret crush on Klaus Mueller; You and Klaus Mueller have known each other for over 2 years now; You and Klaus Mueller are close friends and classmates; You and Isabella Rodriguez who works at Hobbs Cafe are close friends; For planning, you frequent Hobbs Cafe for studying
|
||||
Klaus Mueller,This is very important -- you have a crush on Maria Lopez; You and Maria Lopez have known each other for over 2 years now; You and Maria Lopez are close friends and classmates; You and Maria Lopez are dormmates; You and Isabella Rodriguez are aquintances since Isabella works at Hobbs Cafe that you frequent
|
||||
Isabella Rodriguez,You are excited to be planning a Valentine's Day party at *Hobbs Cafe on February 14th from 5pm* and you are eager to tell everyone to come to the party; You and Maria Lopez have known each other for about a year ever since Maria Lopez visited Hobbs Cafe and are good friends; Maria Lopez is a loyal friend to you and a frequent customer at Hobbs Cafe; Klaus Mueller is a frequent customer at Hobbs Cafe; you love your work at Hobbs Cafe
|
||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,5 @@
|
|||
{"world_name": "the ville",
|
||||
"maze_width": 140,
|
||||
"maze_height": 100,
|
||||
"sq_tile_size": 32,
|
||||
"special_constraint": ""}
|
||||
|
|
@ -0,0 +1,63 @@
|
|||
32138, the Ville, artist's co-living space, Latoya Williams's room
|
||||
32148, the Ville, artist's co-living space, Latoya Williams's bathroom
|
||||
32158, the Ville, artist's co-living space, Rajiv Patel's room
|
||||
32168, the Ville, artist's co-living space, Rajiv Patel's bathroom
|
||||
32178, the Ville, artist's co-living space, Abigail Chen's room
|
||||
32188, the Ville, artist's co-living space, Abigail Chen's bathroom
|
||||
32198, the Ville, artist's co-living space, Francisco Lopez's room
|
||||
32139, the Ville, artist's co-living space, Francisco Lopez's bathroom
|
||||
32149, the Ville, artist's co-living space, Hailey Johnson's room
|
||||
32159, the Ville, artist's co-living space, Hailey Johnson's bathroom
|
||||
32179, the Ville, artist's co-living space, common room
|
||||
32189, the Ville, artist's co-living space, kitchen
|
||||
32199, the Ville, Arthur Burton's apartment, main room
|
||||
32140, the Ville, Arthur Burton's apartment, bathroom
|
||||
32150, the Ville, Ryan Park's apartment, main room
|
||||
32160, the Ville, Ryan Park's apartment, bathroom
|
||||
32170, the Ville, Isabella Rodriguez's apartment, main room
|
||||
32180, the Ville, Isabella Rodriguez's apartment, bathroom
|
||||
32190, the Ville, Giorgio Rossi's apartment, main room
|
||||
32200, the Ville, Giorgio Rossi's apartment, bathroom
|
||||
32141, the Ville, Carlos Gomez's apartment, main room
|
||||
32151, the Ville, Carlos Gomez's apartment, bathroom
|
||||
32161, the Ville, The Rose and Crown Pub, pub
|
||||
32171, the Ville, Hobbs Cafe, cafe
|
||||
32181, the Ville, Oak Hill College, classroom
|
||||
32191, the Ville, Oak Hill College, library
|
||||
32201, the Ville, Oak Hill College, hallway
|
||||
32142, the Ville, Johnson Park, park
|
||||
32152, the Ville, Harvey Oak Supply Store, supply store
|
||||
32162, the Ville, The Willows Market and Pharmacy, store
|
||||
32193, the Ville, Adam Smith's house, main room
|
||||
32203, the Ville, Adam Smith's house, bathroom
|
||||
32174, the Ville, Yuriko Yamamoto's house, main room
|
||||
32184, the Ville, Yuriko Yamamoto's house, bathroom
|
||||
32194, the Ville, Moore family's house, main room
|
||||
32204, the Ville, Moore family's house, bathroom
|
||||
32172, the Ville, Dorm for Oak Hill College, Klaus Mueller's room
|
||||
32182, the Ville, Dorm for Oak Hill College, Maria Lopez's room
|
||||
32192, the Ville, Dorm for Oak Hill College, Ayesha Khan's room
|
||||
32202, the Ville, Dorm for Oak Hill College, Wolfgang Schulz's room
|
||||
32143, the Ville, Dorm for Oak Hill College, man's bathroom
|
||||
32153, the Ville, Dorm for Oak Hill College, woman's bathroom
|
||||
32163, the Ville, Dorm for Oak Hill College, common room
|
||||
32173, the Ville, Dorm for Oak Hill College, kitchen
|
||||
32183, the Ville, Dorm for Oak Hill College, garden
|
||||
32205, the Ville, Tamara Taylor and Carmen Ortiz's house, Tamara Taylor's room
|
||||
32215, the Ville, Tamara Taylor and Carmen Ortiz's house, Carmen Ortiz's room
|
||||
32225, the Ville, Tamara Taylor and Carmen Ortiz's house, common room
|
||||
32235, the Ville, Tamara Taylor and Carmen Ortiz's house, kitchen
|
||||
32245, the Ville, Tamara Taylor and Carmen Ortiz's house, bathroom
|
||||
32255, the Ville, Tamara Taylor and Carmen Ortiz's house, garden
|
||||
32265, the Ville, Moreno family's house, Tom and Jane Moreno's bedroom
|
||||
32275, the Ville, Moreno family's house, empty bedroom
|
||||
32206, the Ville, Moreno family's house, common room
|
||||
32216, the Ville, Moreno family's house, kitchen
|
||||
32226, the Ville, Moreno family's house, bathroom
|
||||
32236, the Ville, Moreno family's house, garden
|
||||
32246, the Ville, Lin family's house, Mei and John Lin's bedroom
|
||||
32256, the Ville, Lin family's house, Eddy Lin's bedroom
|
||||
32266, the Ville, Lin family's house, common room
|
||||
32276, the Ville, Lin family's house, kitchen
|
||||
32207, the Ville, Lin family's house, bathroom
|
||||
32217, the Ville, Lin family's house, garden
|
||||
|
|
|
@ -0,0 +1,46 @@
|
|||
32227, the Ville, <all>, bed
|
||||
32237, the Ville, <all>, desk
|
||||
32247, the Ville, <all>, closet
|
||||
32257, the Ville, <all>, shelf
|
||||
32267, the Ville, <all>, easel
|
||||
32277, the Ville, <all>, bathroom sink
|
||||
32208, the Ville, <all>, shower
|
||||
32218, the Ville, <all>, toilet
|
||||
32228, the Ville, <all>, kitchen sink
|
||||
32238, the Ville, <all>, refrigerator
|
||||
32248, the Ville, <all>, toaster
|
||||
32258, the Ville, <all>, cooking area
|
||||
32268, the Ville, <all>, common room table
|
||||
32278, the Ville, <all>, common room sofa
|
||||
32209, the Ville, <all>, guitar
|
||||
32219, the Ville, <all>, microphone
|
||||
32229, the Ville, <all>, bar customer seating
|
||||
32239, the Ville, <all>, behind the bar counter
|
||||
32249, the Ville, <all>, behind the cafe counter
|
||||
32259, the Ville, <all>, cafe customer seating
|
||||
32269, the Ville, <all>, piano
|
||||
32279, the Ville, <all>, blackboard
|
||||
32210, the Ville, <all>, game console
|
||||
32220, the Ville, <all>, computer desk
|
||||
32230, the Ville, <all>, computer
|
||||
32240, the Ville, <all>, library sofa
|
||||
32250, the Ville, <all>, bookshelf
|
||||
32260, the Ville, <all>, library table
|
||||
32270, the Ville, <all>, classroom student seating
|
||||
32280, the Ville, <all>, classroom podium
|
||||
32211, the Ville, <all>, behind the pharmacy counter
|
||||
32221, the Ville, <all>, behind the grocery counter
|
||||
32231, the Ville, <all>, pharmacy store shelf
|
||||
32241, the Ville, <all>, grocery store shelf
|
||||
32251, the Ville, <all>, pharmacy store counter
|
||||
32261, the Ville, <all>, grocery store counter
|
||||
32271, the Ville, <all>, supply store product shelf
|
||||
32281, the Ville, <all>, behind the supply store counter
|
||||
32212, the Ville, <all>, supply store counter
|
||||
32222, the Ville, <all>, dorm garden
|
||||
32232, the Ville, <all>, house garden
|
||||
32242, the Ville, <all>, garden chair
|
||||
32252, the Ville, <all>, park garden
|
||||
32262, the Ville, <all>, harp
|
||||
32272, the Ville, <all>, lifting weight
|
||||
32282, the Ville, <all>, pool table
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
32135, the Ville, artist's co-living space
|
||||
32145, the Ville, Arthur Burton's apartment
|
||||
32155, the Ville, Ryan Park's apartment
|
||||
32165, the Ville, Isabella Rodriguez's apartment
|
||||
32175, the Ville, Giorgio Rossi's apartment
|
||||
32185, the Ville, Carlos Gomez's apartment
|
||||
32195, the Ville, The Rose and Crown Pub
|
||||
32136, the Ville, Hobbs Cafe
|
||||
32146, the Ville, Oak Hill College
|
||||
32156, the Ville, Johnson Park
|
||||
32166, the Ville, Harvey Oak Supply Store
|
||||
32176, the Ville, The Willows Market and Pharmacy
|
||||
32186, the Ville, Adam Smith's house
|
||||
32196, the Ville, Yuriko Yamamoto's house
|
||||
32137, the Ville, Moore family's house
|
||||
32147, the Ville, Tamara Taylor and Carmen Ortiz's house
|
||||
32157, the Ville, Moreno family's house
|
||||
32167, the Ville, Lin family's house
|
||||
32177, the Ville, Dorm for Oak Hill College
|
||||
|
|
|
@ -0,0 +1,40 @@
|
|||
32285, the Ville, artist's co-living space, Latoya Williams's room, sp-A
|
||||
32295, the Ville, artist's co-living space, Rajiv Patel's room, sp-A
|
||||
32305, the Ville, artist's co-living space, Rajiv Patel's room, sp-B
|
||||
32315, the Ville, artist's co-living space, Abigail Chen's room, sp-A
|
||||
32286, the Ville, artist's co-living space, Francisco Lopez's room, sp-A
|
||||
32296, the Ville, artist's co-living space, Hailey Johnson's room, sp-A
|
||||
32306, the Ville, Arthur Burton's apartment, main room, sp-A
|
||||
32316, the Ville, Arthur Burton's apartment, main room, sp-B
|
||||
32287, the Ville, Ryan Park's apartment, main room, sp-A
|
||||
32297, the Ville, Ryan Park's apartment, main room, sp-B
|
||||
32307, the Ville, Isabella Rodriguez's apartment, main room, sp-A
|
||||
32317, the Ville, Isabella Rodriguez's apartment, main room, sp-B
|
||||
32288, the Ville, Giorgio Rossi's apartment, main room, sp-A
|
||||
32298, the Ville, Giorgio Rossi's apartment, main room, sp-B
|
||||
32308, the Ville, Carlos Gomez's apartment, main room, sp-A
|
||||
32318, the Ville, Carlos Gomez's apartment, main room, sp-B
|
||||
32289, the Ville, Adam Smith's house, main room, sp-A
|
||||
32299, the Ville, Adam Smith's house, main room, sp-B
|
||||
32309, the Ville, Yuriko Yamamoto's house, main room, sp-A
|
||||
32319, the Ville, Yuriko Yamamoto's house, main room, sp-B
|
||||
32290, the Ville, Moore family's house, main room, sp-A
|
||||
32300, the Ville, Moore family's house, main room, sp-B
|
||||
32310, the Ville, Tamara Taylor and Carmen Ortiz's house, Tamara Taylor's room, sp-A
|
||||
32320, the Ville, Tamara Taylor and Carmen Ortiz's house, Tamara Taylor's room, sp-B
|
||||
32291, the Ville, Tamara Taylor and Carmen Ortiz's house, Carmen Ortiz's room, sp-A
|
||||
32301, the Ville, Tamara Taylor and Carmen Ortiz's house, Carmen Ortiz's room, sp-B
|
||||
32311, the Ville, Moreno family's house, Tom and Jane Moreno's bedroom, sp-A
|
||||
32321, the Ville, Moreno family's house, Tom and Jane Moreno's bedroom, sp-B
|
||||
32292, the Ville, Moreno family's house, empty bedroom, sp-A
|
||||
32302, the Ville, Moreno family's house, empty bedroom, sp-B
|
||||
32312, the Ville, Lin family's house, Mei and John Lin's bedroom, sp-A
|
||||
32322, the Ville, Lin family's house, Mei and John Lin's bedroom, sp-B
|
||||
32293, the Ville, Lin family's house, Eddy Lin's bedroom, sp-A
|
||||
32303, the Ville, Lin family's house, Eddy Lin's bedroom, sp-B
|
||||
32313, the Ville, Dorm for Oak Hill College, Klaus Mueller's room, sp-A
|
||||
32323, the Ville, Dorm for Oak Hill College, Klaus Mueller's room, sp-B
|
||||
32294, the Ville, Dorm for Oak Hill College, Maria Lopez's room, sp-A
|
||||
32304, the Ville, Dorm for Oak Hill College, Ayesha Khan's room, sp-A
|
||||
32314, the Ville, Dorm for Oak Hill College, Ayesha Khan's room, sp-B
|
||||
32324, the Ville, Dorm for Oak Hill College, Wolfgang Schulz's room, sp-A
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
32134, the Ville
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"Isabella Rodriguez": {
|
||||
"maze": "the_ville",
|
||||
"x": 72,
|
||||
"y": 14
|
||||
},
|
||||
"Klaus Mueller": {
|
||||
"maze": "the_ville",
|
||||
"x": 126,
|
||||
"y": 46
|
||||
},
|
||||
"Maria Lopez": {
|
||||
"maze": "the_ville",
|
||||
"x": 123,
|
||||
"y": 57
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1 @@
|
|||
{}
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
{"kw_strength_event": {},
|
||||
"kw_strength_thought": {}}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{}
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
{
|
||||
"vision_r": 8,
|
||||
"att_bandwidth": 8,
|
||||
"retention": 8,
|
||||
"curr_time": null,
|
||||
"curr_tile": null,
|
||||
"daily_plan_req": "Isabella Rodriguez opens Hobbs Cafe at 8am everyday, and works at the counter until 8pm, at which point she closes the cafe.",
|
||||
"name": "Isabella Rodriguez",
|
||||
"first_name": "Isabella",
|
||||
"last_name": "Rodriguez",
|
||||
"age": 34,
|
||||
"innate": "friendly, outgoing, hospitable",
|
||||
"learned": "Isabella Rodriguez is a cafe owner of Hobbs Cafe who loves to make people feel welcome. She is always looking for ways to make the cafe a place where people can come to relax and enjoy themselves.",
|
||||
"currently": "Isabella Rodriguez is planning on having a Valentine's Day party at Hobbs Cafe with her customers on February 14th, 2023 at 5pm. She is gathering party material, and is telling everyone to join the party at Hobbs Cafe on February 14th, 2023, from 5pm to 7pm.",
|
||||
"lifestyle": "Isabella Rodriguez goes to bed around 11pm, awakes up around 6am.",
|
||||
"living_area": "the Ville:Isabella Rodriguez's apartment:main room",
|
||||
"concept_forget": 100,
|
||||
"daily_reflection_time": 180,
|
||||
"daily_reflection_size": 5,
|
||||
"overlap_reflect_th": 4,
|
||||
"kw_strg_event_reflect_th": 10,
|
||||
"kw_strg_thought_reflect_th": 9,
|
||||
|
||||
"recency_w": 1,
|
||||
"relevance_w": 1,
|
||||
"importance_w": 1,
|
||||
"recency_decay": 0.995,
|
||||
"importance_trigger_max": 150,
|
||||
"importance_trigger_curr": 150,
|
||||
"importance_ele_n": 0,
|
||||
"thought_count": 5,
|
||||
|
||||
"daily_req": [],
|
||||
"f_daily_schedule": [],
|
||||
"f_daily_schedule_hourly_org": [],
|
||||
"act_address": null,
|
||||
"act_start_time": null,
|
||||
"act_duration": null,
|
||||
"act_description": null,
|
||||
"act_pronunciatio": null,
|
||||
"act_event": ["Isabella Rodriguez", null, null],
|
||||
"act_obj_description": null,
|
||||
"act_obj_pronunciatio": null,
|
||||
"act_obj_event": [null, null, null],
|
||||
"chatting_with": null,
|
||||
"chat": null,
|
||||
"chatting_with_buffer": {},
|
||||
"chatting_end_time": null,
|
||||
"act_path_set": false,
|
||||
"planned_path": []
|
||||
}
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
{
|
||||
"the Ville": {
|
||||
"Hobbs Cafe": {
|
||||
"cafe": [
|
||||
"refrigerator",
|
||||
"cafe customer seating",
|
||||
"cooking area",
|
||||
"kitchen sink",
|
||||
"behind the cafe counter",
|
||||
"piano"
|
||||
]
|
||||
},
|
||||
"Isabella Rodriguez's apartment": {
|
||||
"main room": [
|
||||
"bed",
|
||||
"desk",
|
||||
"refrigerator",
|
||||
"closet",
|
||||
"shelf"
|
||||
]
|
||||
},
|
||||
"The Rose and Crown Pub": {
|
||||
"pub": [
|
||||
"shelf",
|
||||
"refrigerator",
|
||||
"bar customer seating",
|
||||
"behind the bar counter",
|
||||
"kitchen sink",
|
||||
"cooking area",
|
||||
"microphone"
|
||||
]
|
||||
},
|
||||
"Harvey Oak Supply Store": {
|
||||
"supply store": [
|
||||
"supply store product shelf",
|
||||
"behind the supply store counter",
|
||||
"supply store counter"
|
||||
]
|
||||
},
|
||||
"The Willows Market and Pharmacy": {
|
||||
"store": [
|
||||
"behind the pharmacy counter",
|
||||
"pharmacy store shelf",
|
||||
"pharmacy store counter",
|
||||
"grocery store shelf",
|
||||
"behind the grocery counter",
|
||||
"grocery store counter"
|
||||
]
|
||||
},
|
||||
"Dorm for Oak Hill College": {
|
||||
"garden": [
|
||||
"dorm garden"
|
||||
],
|
||||
"common room": [
|
||||
"common room sofa",
|
||||
"pool table",
|
||||
"common room table"
|
||||
]
|
||||
},
|
||||
"Johnson Park": {
|
||||
"park": [
|
||||
"park garden"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{}
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
{"kw_strength_event": {},
|
||||
"kw_strength_thought": {}}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{}
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
{
|
||||
"vision_r": 8,
|
||||
"att_bandwidth": 8,
|
||||
"retention": 8,
|
||||
"curr_time": null,
|
||||
"curr_tile": null,
|
||||
"daily_plan_req": "Klaus Mueller goes to the library at Oak Hill College early in the morning, spends his days writing, and eats at Hobbs Cafe.",
|
||||
"name": "Klaus Mueller",
|
||||
"first_name": "Klaus",
|
||||
"last_name": "Mueller",
|
||||
"age": 20,
|
||||
"innate": "kind, inquisitive, passionate",
|
||||
"learned": "Klaus Mueller is a student at Oak Hill College studying sociology. He is passionate about social justice and loves to explore different perspectives.",
|
||||
"currently": "Klaus Mueller is writing a research paper on the effects of gentrification in low-income communities.",
|
||||
"lifestyle": "Klaus Mueller goes to bed around 11pm, awakes up around 7am, eats dinner around 5pm.",
|
||||
"living_area": "the Ville:Dorm for Oak Hill College:Klaus Mueller's room",
|
||||
"concept_forget": 100,
|
||||
"daily_reflection_time": 180,
|
||||
"daily_reflection_size": 5,
|
||||
"overlap_reflect_th": 4,
|
||||
"kw_strg_event_reflect_th": 10,
|
||||
"kw_strg_thought_reflect_th": 9,
|
||||
|
||||
"recency_w": 1,
|
||||
"relevance_w": 1,
|
||||
"importance_w": 1,
|
||||
"recency_decay": 0.99,
|
||||
"importance_trigger_max": 150,
|
||||
"importance_trigger_curr": 150,
|
||||
"importance_ele_n": 0,
|
||||
"thought_count": 5,
|
||||
|
||||
"daily_req": [],
|
||||
"f_daily_schedule": [],
|
||||
"f_daily_schedule_hourly_org": [],
|
||||
"act_address": null,
|
||||
"act_start_time": null,
|
||||
"act_duration": null,
|
||||
"act_description": null,
|
||||
"act_pronunciatio": null,
|
||||
"act_event": ["Klaus Mueller", null, null],
|
||||
"act_obj_description": null,
|
||||
"act_obj_pronunciatio": null,
|
||||
"act_obj_event": [null, null, null],
|
||||
"chatting_with": null,
|
||||
"chat": null,
|
||||
"chatting_with_buffer": {},
|
||||
"chatting_end_time": null,
|
||||
"act_path_set": false,
|
||||
"planned_path": []
|
||||
}
|
||||
|
|
@ -0,0 +1,86 @@
|
|||
{
|
||||
"the Ville": {
|
||||
"Oak Hill College": {
|
||||
"hallway": [],
|
||||
"library": [
|
||||
"library sofa",
|
||||
"library table",
|
||||
"bookshelf"
|
||||
],
|
||||
"classroom": [
|
||||
"blackboard",
|
||||
"classroom podium",
|
||||
"classroom student seating"
|
||||
]
|
||||
},
|
||||
"Dorm for Oak Hill College": {
|
||||
"garden": [
|
||||
"dorm garden"
|
||||
],
|
||||
"Klaus Mueller's room": [
|
||||
"bed",
|
||||
"game console",
|
||||
"closet",
|
||||
"desk"
|
||||
],
|
||||
"woman's bathroom": [
|
||||
"toilet",
|
||||
"shower",
|
||||
"bathroom sink"
|
||||
],
|
||||
"common room": [
|
||||
"common room sofa",
|
||||
"pool table",
|
||||
"common room table"
|
||||
],
|
||||
"man's bathroom": [
|
||||
"shower",
|
||||
"bathroom sink",
|
||||
"toilet"
|
||||
]
|
||||
},
|
||||
"The Willows Market and Pharmacy": {
|
||||
"store": [
|
||||
"grocery store shelf",
|
||||
"behind the grocery counter",
|
||||
"grocery store counter",
|
||||
"pharmacy store shelf",
|
||||
"pharmacy store counter",
|
||||
"behind the pharmacy counter"
|
||||
]
|
||||
},
|
||||
"Harvey Oak Supply Store": {
|
||||
"supply store": [
|
||||
"supply store product shelf",
|
||||
"behind the supply store counter",
|
||||
"supply store counter"
|
||||
]
|
||||
},
|
||||
"Johnson Park": {
|
||||
"park": [
|
||||
"park garden"
|
||||
]
|
||||
},
|
||||
"The Rose and Crown Pub": {
|
||||
"pub": [
|
||||
"shelf",
|
||||
"refrigerator",
|
||||
"bar customer seating",
|
||||
"behind the bar counter",
|
||||
"kitchen sink",
|
||||
"cooking area",
|
||||
"microphone"
|
||||
]
|
||||
},
|
||||
"Hobbs Cafe": {
|
||||
"cafe": [
|
||||
"refrigerator",
|
||||
"cafe customer seating",
|
||||
"cooking area",
|
||||
"kitchen sink",
|
||||
"behind the cafe counter",
|
||||
"piano"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{}
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
{"kw_strength_event": {},
|
||||
"kw_strength_thought": {}}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{}
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
{
|
||||
"vision_r": 8,
|
||||
"att_bandwidth": 8,
|
||||
"retention": 8,
|
||||
"curr_time": null,
|
||||
"curr_tile": null,
|
||||
"daily_plan_req": "Maria Lopez spends at least 3 hours a day Twitch streaming or gaming.",
|
||||
"name": "Maria Lopez",
|
||||
"first_name": "Maria",
|
||||
"last_name": "Lopez",
|
||||
"age": 21,
|
||||
"innate": "energetic, enthusiastic, inquisitive",
|
||||
"learned": "Maria Lopez is a student at Oak Hill College studying physics and a part time Twitch game streamer who loves to connect with people and explore new ideas.",
|
||||
"currently": "Maria Lopez is working on her physics degree and streaming games on Twitch to make some extra money. She visits Hobbs Cafe for studying and eating just about everyday.",
|
||||
"lifestyle": "Maria Lopez goes to bed around 2am, awakes up around 9am, eats dinner around 6pm. She likes to hang out at Hobbs Cafe if it's before 6pm.",
|
||||
"living_area": "the Ville:Dorm for Oak Hill College:Maria Lopez's room",
|
||||
"concept_forget": 100,
|
||||
"daily_reflection_time": 180,
|
||||
"daily_reflection_size": 5,
|
||||
"overlap_reflect_th": 4,
|
||||
"kw_strg_event_reflect_th": 10,
|
||||
"kw_strg_thought_reflect_th": 9,
|
||||
|
||||
"recency_w": 1,
|
||||
"relevance_w": 1,
|
||||
"importance_w": 1,
|
||||
"recency_decay": 0.99,
|
||||
"importance_trigger_max": 150,
|
||||
"importance_trigger_curr": 150,
|
||||
"importance_ele_n": 0,
|
||||
"thought_count": 5,
|
||||
|
||||
"daily_req": [],
|
||||
"f_daily_schedule": [],
|
||||
"f_daily_schedule_hourly_org": [],
|
||||
"act_address": null,
|
||||
"act_start_time": null,
|
||||
"act_duration": null,
|
||||
"act_description": null,
|
||||
"act_pronunciatio": null,
|
||||
"act_event": ["Maria Lopez", null, null],
|
||||
"act_obj_description": null,
|
||||
"act_obj_pronunciatio": null,
|
||||
"act_obj_event": [null, null, null],
|
||||
"chatting_with": null,
|
||||
"chat": null,
|
||||
"chatting_with_buffer": {},
|
||||
"chatting_end_time": null,
|
||||
"act_path_set": false,
|
||||
"planned_path": []
|
||||
}
|
||||
|
|
@ -0,0 +1,87 @@
|
|||
{
|
||||
"the Ville": {
|
||||
"Oak Hill College": {
|
||||
"hallway": [],
|
||||
"library": [
|
||||
"library sofa",
|
||||
"library table",
|
||||
"bookshelf"
|
||||
],
|
||||
"classroom": [
|
||||
"blackboard",
|
||||
"classroom podium",
|
||||
"classroom student seating"
|
||||
]
|
||||
},
|
||||
"Dorm for Oak Hill College": {
|
||||
"garden": [
|
||||
"dorm garden"
|
||||
],
|
||||
"Maria Lopez's room": [
|
||||
"closet",
|
||||
"desk",
|
||||
"bed",
|
||||
"computer",
|
||||
"blackboard"
|
||||
],
|
||||
"woman's bathroom": [
|
||||
"toilet",
|
||||
"shower",
|
||||
"bathroom sink"
|
||||
],
|
||||
"common room": [
|
||||
"common room sofa",
|
||||
"pool table",
|
||||
"common room table"
|
||||
],
|
||||
"man's bathroom": [
|
||||
"shower",
|
||||
"bathroom sink",
|
||||
"toilet"
|
||||
]
|
||||
},
|
||||
"The Willows Market and Pharmacy": {
|
||||
"store": [
|
||||
"grocery store shelf",
|
||||
"behind the grocery counter",
|
||||
"grocery store counter",
|
||||
"pharmacy store shelf",
|
||||
"pharmacy store counter",
|
||||
"behind the pharmacy counter"
|
||||
]
|
||||
},
|
||||
"Harvey Oak Supply Store": {
|
||||
"supply store": [
|
||||
"supply store product shelf",
|
||||
"behind the supply store counter",
|
||||
"supply store counter"
|
||||
]
|
||||
},
|
||||
"Johnson Park": {
|
||||
"park": [
|
||||
"park garden"
|
||||
]
|
||||
},
|
||||
"The Rose and Crown Pub": {
|
||||
"pub": [
|
||||
"shelf",
|
||||
"refrigerator",
|
||||
"bar customer seating",
|
||||
"behind the bar counter",
|
||||
"kitchen sink",
|
||||
"cooking area",
|
||||
"microphone"
|
||||
]
|
||||
},
|
||||
"Hobbs Cafe": {
|
||||
"cafe": [
|
||||
"refrigerator",
|
||||
"cafe customer seating",
|
||||
"cooking area",
|
||||
"kitchen sink",
|
||||
"behind the cafe counter",
|
||||
"piano"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"fork_sim_code": "base_the_ville_isabella_maria_klaus",
|
||||
"start_date": "February 13, 2023",
|
||||
"curr_time": "February 13, 2023, 00:00:00",
|
||||
"sec_per_step": 10,
|
||||
"maze_name": "the_ville",
|
||||
"persona_names": [
|
||||
"Isabella Rodriguez",
|
||||
"Maria Lopez",
|
||||
"Klaus Mueller"
|
||||
],
|
||||
"step": 0
|
||||
}
|
||||
0
examples/st_game/tests/__init__.py
Normal file
0
examples/st_game/tests/__init__.py
Normal file
8
examples/st_game/tests/test_maze.py
Normal file
8
examples/st_game/tests/test_maze.py
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
from ..utils.const import MAZE_ASSET_PATH
|
||||
from ..maze import Maze
|
||||
|
||||
def test_maze_init():
|
||||
maze = Maze(maze_asset_path=MAZE_ASSET_PATH)
|
||||
|
||||
|
||||
|
||||
7
examples/st_game/tests/test_spatial_memory.py
Normal file
7
examples/st_game/tests/test_spatial_memory.py
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
from ..utils.const import STORAGE_PATH
|
||||
from ..memory.spatial_memory import MemoryTree
|
||||
|
||||
def test_spatial_memory():
|
||||
x = STORAGE_PATH.joinpath("base_the_ville_isabella_maria_klaus\personas\Isabella Rodriguez\bootstrap_memory\spatial_memory.json")
|
||||
x = MemoryTree(x)
|
||||
x.print_tree()
|
||||
|
|
@ -6,3 +6,6 @@ from pathlib import Path
|
|||
|
||||
ROOT_PATH = Path(__file__).parent.parent
|
||||
STORAGE_PATH = ROOT_PATH.joinpath("storage")
|
||||
MAZE_ASSET_PATH = ROOT_PATH.joinpath("static_dirs/assets/the_ville")
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ from typing import Any
|
|||
import json
|
||||
import openai
|
||||
from pathlib import Path
|
||||
import csv
|
||||
|
||||
|
||||
def read_json_file(json_file: str, encoding=None) -> list[Any]:
|
||||
|
|
@ -30,4 +31,33 @@ def embedding_tools(query):
|
|||
input=query
|
||||
)
|
||||
embedding_key = embedding_result['data'][0]["embedding"]
|
||||
return embedding_key
|
||||
return embedding_key
|
||||
|
||||
def read_csv_to_list(curr_file: str, header=False, strip_trail=True):
|
||||
"""
|
||||
Reads in a csv file to a list of list. If header is True, it returns a
|
||||
tuple with (header row, all rows)
|
||||
ARGS:
|
||||
curr_file: path to the current csv file.
|
||||
RETURNS:
|
||||
List of list where the component lists are the rows of the file.
|
||||
"""
|
||||
if not header:
|
||||
analysis_list = []
|
||||
with open(curr_file) as f_analysis_file:
|
||||
data_reader = csv.reader(f_analysis_file, delimiter=",")
|
||||
for count, row in enumerate(data_reader):
|
||||
if strip_trail:
|
||||
row = [i.strip() for i in row]
|
||||
analysis_list += [row]
|
||||
return analysis_list
|
||||
else:
|
||||
analysis_list = []
|
||||
with open(curr_file) as f_analysis_file:
|
||||
data_reader = csv.reader(f_analysis_file, delimiter=",")
|
||||
for count, row in enumerate(data_reader):
|
||||
if strip_trail:
|
||||
row = [i.strip() for i in row]
|
||||
analysis_list += [row]
|
||||
return analysis_list[0], analysis_list[1:]
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue