Progress is going a little faster since I went out and bought 12 more clamps. The supports are all built and I am working on the upper sections. In a day or two I'll have them as tall as I need and will start building the flat top where the saw blade will be positioned. As soon as the saw blade is in place I'll build the part that pushes the logs toward the blade. After that I have the water wheel, flume, and water runoff and then it is complete. I'm hoping I can finish it in a month so I can get back to work on the data side of things.
My python custom types are mostly done. There are still some tweaks to make which I will do while writing a test case. Temperature needs to allow negative values and calories and temperature need to allow a value of 0. I've already started integrating units into Everything to provide validation for fields and to rewrite values in the format I want. Still have a few more things to do but they will get done shortly.
Progress is going well despite being a bit slow. By building the model I have figured out how the saw mill works. There is one part of the construction that is going to be difficult to do because it uses a tree branch as a spring. Since I have a limited area to build the model finding a tree branch that will provide this function and positioning it in a way that will work may be difficult. As progress continues I will have to figure out how to handle this. For now though here is an image of what it looks like. I'm not going to explain anything as future images will show things.
While undergoing some changes to Everything I was about to start creating a number of new classes. The new classes would have been types of units allowing Everything to validate the data entered into fields that need specific types of data. Instead of creating python classes however I took a look at what would be involved in creating custom python types. Now I only touched C for about 15 days back about 15 years ago so I do not remember anything about C. So I looked over all the examples and created a basic first type based on everything I found. I then created a python class to test the speed difference between a regular python class and the C code. As expected the custom python type (written in C) was faster even with no C programming experience. So using examples and searching the internet I managed to create 11 custom types each with new, init, repr, and str functions. After that I created functions for comparing these new types as I will need to know things like if there is enough flour in a sack to make a loaf of bread. I still need to be able to add and subtract units which requires some more code so I will be searching for examples on that and getting that set up soon. And once I have that I'll get these new types in use validating data in fields and displaying errors if the data is incorrect.
I can already import data from new files. There are a few small changes I want to make before I consider this part of it done. There is the other part where the template for a data type is changed and I provide a way to import data into the new template. This will probably take a bit to get working as it isn't very high priority since the templates are not changing in ways that would lose data.
New Crafting Recipes
A few weeks ago I added 2 mead recipes and started researching barrels as I needed them. This has created new recipes that go through the entire process from a single oak tree to barrels. I have some stuff to finish figuring out with the oak tree I am currently using and will then need to add additional types of oak trees through this process as well. If oak tree wood varies in colour there will be the potential to have barrels in these colours. You will also be able to make barrels with either brass or iron hoops as these both existed.
I spent a fair amount of time researching medieval barrels. I found that there would be just too many types of barrels for my game so I needed to simplify things. For instance an ale barrel was a specific size where a wine barrel was a different size. That just seemed too complex for my game so I decided to only use 5 barrel sizes and not have each barrel branded by the cooper that made them (it was illegal to use unbranded barrels) as this would require a lot of textures to deal with. The barrel sizes I will have are the Tun, Hogshead, Barrel, Kilderkin, and Firkin. With these 5 sizes you won't need to deal with any politics of needing to use a specific barrel for ale, you just need to pick the recipe for the amount of ale you want to make.
With these changes I need to change my ale and mead recipes so they can be brewed for each barrel size. I will also need recipes to transfer from one container to multiple smaller containers since brewers would probably brew by the tun and sell smaller. I have no way to prove they did this in medieval times without spending more time researching, but I believe I spent enough ime already and it seems reasonable to me. Maybe further down the line I'll have time to invest in this or perhaps I'll come across some information while researching one of the many other things I need to. For now those 5 sizes should be fine.
Working on my First Model
By reading the heading you are probably thinking I am referring to a 3 dimensional object that fits inside the game. What I am actually talking about is a 3 dimentional model built for real which is going to be mostly popsicle sticks.
So far I have a nice solid base, a dowel with 4 hand drilled holes where 4 other dowels fit, and a single support attached to the base where one end of the dowel will fit. When I am done building it I hope to have a medieval water powered saw mill complete with a blade that hopefully can cut wood. It doesn't actually need to cut wood to display the idea and make the design of a 3 dimentional in game model much easier.
I had some issues with the way I was specifying what containers could contain. So over the weekend I moved this data into its own datatype called cargo.
Since the last update I've been working on my data import and reworking code so the rows used when editing an item can also be used in the import. The reworked code is mainly done and just needs some testing and potential bug fixes. Once the data import is completely done I'll import another 140ish forenames that I have set up in test import files. Also if you edit a template the data import will get used to migrate existing data to the new template structure.
I also decided to start adding surnames and found that medieval surnames are interesting. Surnames appear to be based on professions, where someone lived, nick names, and even the son of a persons forename. Of these types of surnames those based on locations won't really fit well in my game so I am going to not use any of these, but the other types will be used.
After looking at surnames based on professions I decided my hard coded list of professions was not good enough so I added professions as a new data type to Everything. I added 55 professions (which were my hard coded list) and then 54 surnames based on professions like Granger (farmer) and Smith (blacksmith). I have another 95 surnames which would are associated to professions I do not yet have, so I need to get these surnames and professions added.
I have not added surnames based on personal names like Johnson and Richardson or nicknames like Black, Little, and Armstrong but will be added these shortly after the data import is done.
I also made changes to existing data (buildings and recipes) associating them to professions where they should be. With buildings and recipes associated to professions it allows multiple professions to use the same building but each are only able to craft up what their professions allow. As an example a fertile field will be able to be used by a farmer to grow vegetables, an orchard worker to plant fruit trees, to grow grapes for making wine, or even as an herb garden.
And that is where things are currently at. Even though I'm concentrating on story for a while it still requires me to add other things in the process.
During Christmas holidays I discovered that Everything was taking longer to load than it needed because I was updating the display after every item was loaded. If I did this after every file instead things loaded significantly faster. So I spent some time trying to figure out the best way to load up the data as quickly as possible where updating the display would not slow down the load time. The easiest way to do this became obvious, I would create a new process which would load the data and the main process would check on the progress at regular intervals.
Everything now keeps all the game data in a secondary process and the main process asks it for things as needed. These changes are mostly done and loading data is much faster. Of these changes only one remains incomplete and that is because it itself is going to go through some changes to make it better than what currently exists. This will hopefully be done before the end of February but still requires some work to figure out exactly how I want to change it.
Other changes to Everything have been made as well. Five new types of data (characters, forenames, locations, schedules, and surnames) have been created and I have already started adding data for two of those types. Two of the other types still need to have their template revised a bit before I start adding data to them.
I have decided that for the next few months to the rest of the year I would put my time into figuring out my games story. An RPG requires a good story and so far I only have the beginning and very end worked out. I want my story to keep the player wanting to know more so they keep playing until the end. In order to do this I need to know the entire story and all the characters, places, and any items involved in it.
Thankfully I have data I had created in the past which defines some characters which will fit into my game nicely. I still need to figure out the role of each of these characters and any additional characters I need. And to make the game world seem more alive these characters will also have their own little stories that play out during the game.
It is going to be a lot of work and I may as well write it now so I have more time to revise it as much as needed before the game is done.
I decided to make some changes regarding game progress. Progress videos take a fair amount of time to plan, record, edit, and upload. I also have to be at home and if I get interrupted or someone in my apartment building makes noise it just makes it all worse.
Instead of spending time making progress videos I would rather invest this time into actual progress. This is one of the reasons why progress videos have been few and far between. I still want to provide progress but make it easier for myself so I do it more often.
So I've made some changes to my website. From now going forward this page will contain dated updates of the latest progress and the stats page will contain a small amount of information about the data and code.