2:15am - Well my sleep schedule has just about completely flipped over now, so I'm going to be working on my project even though it's the middle of the night.
The prototype is going slow, since I haven't been working the last three days for various reasons. Today I want to get back to turning the WorldData into a proper model of the world.
I figure I can deserialize the file into a single array of dictionary objects with data about the world, but I'm a little iffy about what to do with characters and objects and how to tie them together.
The world itself is mostly just descriptions of rooms and their connections, but the characters are going to be living, changing simulated things, both player and non-player. Plus the writing will include more than just rooms, it'll include transformations and body part descriptions. So, maybe I've been going about this in a wrong-headed way? I'm not sure. I'll think about it some more.
Normally the way I might do the world data is to create a linked list of objects, but I'm going with Godot and they're a bit more restrictive of how you create and use objects, as far as I've learned. That said, it's not just Godot, it'd be similar for the alternatives too. So I don't want to second guess my engine choice at this point.
Instead of a normal linked list of objects, I'm using an array of dictionary objects. Each dictionary works like an object, with properties I can check, so each one represents a room. They're ordered by a GUID system, and each exit of each room has a GUID associated with it that says what room it goes to.
With that I can make a network of interconnected spaces.
However, I was also going to put the NPCs and such in the world data, but I'm not sure that's a good idea anymore. The reason is because they wouldn't fit into the format. The NPCs are different from rooms.
Here's what I'm thinking now. I'll do more than one file for the game. The worlddata.json will represent the world map, and the WorldData script/node/object will continue to represent the whole game world and state. A new file will describe the starting states of all the NPCs. Furthermore, a third file will contain the transformations that can be encountered. I think there will be another file for objects, unless I decide to make objects just immobile NPCs you can pick up. We'll see when we get that far.
Now, I'm thinking I'll switch the GUID from before to just UID, and have the UIDs be different between the characters and rooms and such.
In order to make something testable, I need to make the player and the world together. I can add NPCs after that. But the player will have many of the same elements as NPCs so I need to prepare for that.
Let's see... What data does the player need?
Location
Description
Body
Inventory
Hmm... Is that it?
The NPCs will need an AI Script of some sort. The description will be procedurally generated from the body, so I'm not sure I even need to store it unless an NPC has a particularly specific body that doesn't change.
The Body data is the most complicated part. It's got to be extremely polymorphic but still describable.
Let's take a whack at describing it.
Heads
-Eyes
-Noses
-Mouths
-Ears
-Hairs
-Antennae
-Necks
Torsos
-Arms
--Hands
---Fingers
-Breasts
--Areolas
---Nipples
-Bellies
--Bellymods
Hinds
-Legs
--Feet
---Toes
-Buttcheeks
--Anuses
-Cocks
--Balls
-Pussies
-Thoraxes
-Tails
Oh there should be clothes! Also I think I'll bifurcate the body's data. Or trifurcate it? Left, right and centre. That way we can have uneven numbers on either side, or something like a third boob in the middle.
Ahh, I just had another idea. I can encode transformation plagues as a set of desired end points for each piece of the body, and how much power it has over those parts, etc. That way if you get complementary plagues they can stack, or some might ignore parts of the body. Like maybe you have a plague that only gives you giant feet, and ignores the rest of the body, but has a really high control over the feet, so other TFs have a hard time overwriting it. That could be interesting! Well I'll save that for later.
Now I mentioned clothes. I'm thinking I'll let each body part have clothing options eventually. But that's way down the line. I'm still building the world!
4:12am - Still up, but chatting with friends so I can't work right now. <3
4:33am - Yeah I'm too tired to work now. I dunno why, when I got up so late, but here I am. I'll have to take a nap before I work more.
11:14am - I'm back up now, and thinking about doing some more work. I did a job search online though and found a couple jobs that fit my search, so I should probably apply to them soon.
7:06pm - I ended up laying down to wait until Robby went to work, and fell asleep for another six hours. Bleh. At least I had some awesome dreams.
Right now I don't feel like working, so I'll put this on hold for an hour or so while I destress a bit.
8:12pm - Okay now let's see what I can cook up.
I've got my body details for the future but I can probably skip them for now while I get the basic navigation hooked up.
In my design for the interface I put in nine directional buttons including Wait at the centre. But, not every exit is going to be a cardinal direction. I'm thinking I could either do the directional buttons procedurally, drawing them from the room exits directly, or I could add more exit buttons when nonstandard exits are available.
I would have to change my world formatting to handle linking the exits to specific directions. That might be the best idea though. Ideally I want players to be able to move quickly using the numpad to control these nine buttons. Assuming I can even do that with an HTML5 app...
Alright I've changed the JSON file format for the world data and tested it, so it should work this way. I'm using an array of dictionaries to line up the exits in order.
8:34pm - Now I need to keep track of the player's data. Where should it go? In the WorldData? In a PlayerData node? In the GUI that's going to read and manipulate that data?
I think for now I'll put it in the WorldData.
I'll need the player's location and inventory to start, though the inventory won't be used until I start getting objects in there.
9:38pm - Alright, I've got the room description put together from the data in the WorldData. Next I need to make the buttons match what the room contents and exits are.
But I think I'm out of time, Rob will be home any minute and I need to make dinner. So, I guess that's it for now.
The prototype is going slow, since I haven't been working the last three days for various reasons. Today I want to get back to turning the WorldData into a proper model of the world.
I figure I can deserialize the file into a single array of dictionary objects with data about the world, but I'm a little iffy about what to do with characters and objects and how to tie them together.
The world itself is mostly just descriptions of rooms and their connections, but the characters are going to be living, changing simulated things, both player and non-player. Plus the writing will include more than just rooms, it'll include transformations and body part descriptions. So, maybe I've been going about this in a wrong-headed way? I'm not sure. I'll think about it some more.
Normally the way I might do the world data is to create a linked list of objects, but I'm going with Godot and they're a bit more restrictive of how you create and use objects, as far as I've learned. That said, it's not just Godot, it'd be similar for the alternatives too. So I don't want to second guess my engine choice at this point.
Instead of a normal linked list of objects, I'm using an array of dictionary objects. Each dictionary works like an object, with properties I can check, so each one represents a room. They're ordered by a GUID system, and each exit of each room has a GUID associated with it that says what room it goes to.
With that I can make a network of interconnected spaces.
However, I was also going to put the NPCs and such in the world data, but I'm not sure that's a good idea anymore. The reason is because they wouldn't fit into the format. The NPCs are different from rooms.
Here's what I'm thinking now. I'll do more than one file for the game. The worlddata.json will represent the world map, and the WorldData script/node/object will continue to represent the whole game world and state. A new file will describe the starting states of all the NPCs. Furthermore, a third file will contain the transformations that can be encountered. I think there will be another file for objects, unless I decide to make objects just immobile NPCs you can pick up. We'll see when we get that far.
Now, I'm thinking I'll switch the GUID from before to just UID, and have the UIDs be different between the characters and rooms and such.
In order to make something testable, I need to make the player and the world together. I can add NPCs after that. But the player will have many of the same elements as NPCs so I need to prepare for that.
Let's see... What data does the player need?
Location
Description
Body
Inventory
Hmm... Is that it?
The NPCs will need an AI Script of some sort. The description will be procedurally generated from the body, so I'm not sure I even need to store it unless an NPC has a particularly specific body that doesn't change.
The Body data is the most complicated part. It's got to be extremely polymorphic but still describable.
Let's take a whack at describing it.
Heads
-Eyes
-Noses
-Mouths
-Ears
-Hairs
-Antennae
-Necks
Torsos
-Arms
--Hands
---Fingers
-Breasts
--Areolas
---Nipples
-Bellies
--Bellymods
Hinds
-Legs
--Feet
---Toes
-Buttcheeks
--Anuses
-Cocks
--Balls
-Pussies
-Thoraxes
-Tails
Oh there should be clothes! Also I think I'll bifurcate the body's data. Or trifurcate it? Left, right and centre. That way we can have uneven numbers on either side, or something like a third boob in the middle.
Ahh, I just had another idea. I can encode transformation plagues as a set of desired end points for each piece of the body, and how much power it has over those parts, etc. That way if you get complementary plagues they can stack, or some might ignore parts of the body. Like maybe you have a plague that only gives you giant feet, and ignores the rest of the body, but has a really high control over the feet, so other TFs have a hard time overwriting it. That could be interesting! Well I'll save that for later.
Now I mentioned clothes. I'm thinking I'll let each body part have clothing options eventually. But that's way down the line. I'm still building the world!
4:12am - Still up, but chatting with friends so I can't work right now. <3
4:33am - Yeah I'm too tired to work now. I dunno why, when I got up so late, but here I am. I'll have to take a nap before I work more.
11:14am - I'm back up now, and thinking about doing some more work. I did a job search online though and found a couple jobs that fit my search, so I should probably apply to them soon.
7:06pm - I ended up laying down to wait until Robby went to work, and fell asleep for another six hours. Bleh. At least I had some awesome dreams.
Right now I don't feel like working, so I'll put this on hold for an hour or so while I destress a bit.
8:12pm - Okay now let's see what I can cook up.
I've got my body details for the future but I can probably skip them for now while I get the basic navigation hooked up.
In my design for the interface I put in nine directional buttons including Wait at the centre. But, not every exit is going to be a cardinal direction. I'm thinking I could either do the directional buttons procedurally, drawing them from the room exits directly, or I could add more exit buttons when nonstandard exits are available.
I would have to change my world formatting to handle linking the exits to specific directions. That might be the best idea though. Ideally I want players to be able to move quickly using the numpad to control these nine buttons. Assuming I can even do that with an HTML5 app...
Alright I've changed the JSON file format for the world data and tested it, so it should work this way. I'm using an array of dictionaries to line up the exits in order.
8:34pm - Now I need to keep track of the player's data. Where should it go? In the WorldData? In a PlayerData node? In the GUI that's going to read and manipulate that data?
I think for now I'll put it in the WorldData.
I'll need the player's location and inventory to start, though the inventory won't be used until I start getting objects in there.
9:38pm - Alright, I've got the room description put together from the data in the WorldData. Next I need to make the buttons match what the room contents and exits are.
But I think I'm out of time, Rob will be home any minute and I need to make dinner. So, I guess that's it for now.