We need a structured way of describing the world and its state to players (human and bot).
I suggest breaking the world into smaller chunks, called 'scenes', of varying size. Scenes will have an upper bound on size and describe a logical unit of space. Examples of scenes might include:
A town square
A section of forest
A floor of a museum
A region of a dungeon
A cave
Scenes will be described as a 2d grid with (x,y) coordinates, with each grid space occupying approximately 1 square meter. Grid (0,0) will be in the 'north western' corner of the scene and Grid (SceneWidth,SceneHeight) will be in the 'sourth eastern' corner, with the x coordinate describing the east-west direction and the y coordinate describing the north-south direction
Objects in the scene can either occupy a grid or an edge between two grids.
Objects that occupy grid spaces might include:
Players and NPCs
Rocks
Loot
Trees
Evil deities
Birds
Objects that might occupy spaces between grids might include:
Fences
Doors
Magical barriers
Walls
Objects in the scene may need to describe the following:
Where in the scene they are
Whether or not they make terrain impassible
Where they are within a grid, if they do not occupy an entire space
Which assets are required to render them
What interactions they support
Whether or not they are capable of changing
Players and other entities may travel between scenes using Links
Scenes include a list of links
Links include their location in the Scene, what scene they link to, and how the link is interacted with
We need a structured way of describing the world and its state to players (human and bot).
I suggest breaking the world into smaller chunks, called 'scenes', of varying size. Scenes will have an upper bound on size and describe a logical unit of space. Examples of scenes might include:
Scenes will be described as a 2d grid with (x,y) coordinates, with each grid space occupying approximately 1 square meter. Grid (0,0) will be in the 'north western' corner of the scene and Grid (SceneWidth,SceneHeight) will be in the 'sourth eastern' corner, with the x coordinate describing the east-west direction and the y coordinate describing the north-south direction
Objects in the scene can either occupy a grid or an edge between two grids.
Objects that occupy grid spaces might include:
Objects that might occupy spaces between grids might include:
Objects in the scene may need to describe the following:
Players and other entities may travel between scenes using Links
Examples of links may include: