So the essential game loop of my initial TextWorld will be something like this:
Respond to Player Input by performing the task associated with the link that was clicked.
Run down the list of active mobiles, updating each one
Check if the player’s location has changed, and update the Location text accordingly
Check if the player’s status has changed, and update the Status text accordingly
Add action text based on the player’s input and mobile actions, and bring the action area to the bottom of the scrollbar
Wait for Input
I’m bringing back the timing factor. Each action the player takes will take a certain amount of time, potentially zero if the action doesn’t do anything but open up another menu. Or long enough that an active mobile would be able to interrupt them. There’ll be a list of mobiles to see who goes next based on the time it takes to complete their next action. If they interact with the player, the player is given the option of a response. Likewise for mobile to mobile interactions and player to mobile interactions.
Each of the Update stages will require complex coding, especially for getting the text right. That’ll be the hard part.
I think my first task will be to set up the world tree, the list of space objects and their interconnections, and load that.
Then I’ll have to make the player object, and put it into the space.
Third I’ll have to develop the functions that assemble what the player sees, based on the location of the player object.
Fourth I’ll have to deal with the interaction between the player and the text links, to allow the player to move between spaces and perform actions.
After that I can start making mobs, widgets, and actually making the whole thing a game. But first things first; the world tree.
I’ll need to make a function that loads the world tree, to begin with. Eventually I’d like to have it loaded from an XML file, but for now I’ll do it all in code.
Hmm… I forget so soon, I was going to use a list of spaces rather than a tree of linked spaces. Load all of the spaces into an array or a hashtable, then have the exits lead to particular space numbers, since I couldn’t use direct references.
For now I’m going to make the description for the room all myself, but later I want it to be procedurally generated based on the room contents.
Okay it’s almost time for DnD, time to go be nerdy in a different fashion. Glayven.