Lets not forget XLST being a nightmare to use and having to replace > with > etc. I have to use it at work as it is a common method of communicating data with the likes of SAP. I didn’t think of using JSON for this - I did use it to implement a communication layer from a ReST service to a mobile app and it was easy to use. Currently I am using Notepad++ set to XML mode to edit the ‘adventure’ file.
That aside the links between rooms are independent of the rooms themselves - to go East from room 5 to 6 there is a record in a separate table holding 5, 6 and the id of the verb East. To go west from room 6 to 5 there is a record holding 6, 5 and the id of the verb West. This makes creating mazes much easier.
Currently if you need to go East from room 5 to 6 and there is a locked door there are no record in the link table - the room has code to move you once the ‘door’ is unlocked.