Development Update - January 2024
Added 2024-01-04 21:35:55 +0000 UTCHey everyone! Hope you all had a good holiday season!
As promised, over the last month I worked on a family tree view, and optimising relationships.
Family Tree View
First off, the more interesting topic, family trees. Here are some examples of the new family tree view:


Note: Only people in the settlement are added to family trees - so people need to live long enough to have multiple generations alive in the settlement to generate family trees like the ones above. The family trees above were found on people with a race with a max age of 1000.
With the default generation settings, most family trees look more like:

(Or no family tree at all, if people have no family within the settlement).
The icon in the top right of the family tree node tells you the type of the person, and more icons appear depending on if you've favourited the person, or they have notes (similar to the current person summary cards). The right button at the bottom of the node lets you close the family tree view and open the selected person in the right pane. The left button lets you switch the family tree perspective to the selected person. This is useful as not all relations are expanded fully (as otherwise the tree would become too complicated, with crossing lines). If a node hasn't been fully expanded, an icon is displayed in the top right.
Optimised Relations
When I started this bit of work, storing relations took up around 30% of the setlement size. Now, it's about ~10% of the size. Basically, I could optimise this as the original representation was very inefficient - I stored every one to one relation between people. For example, for a typical family of four, with a mother, father, and two children, I would store 6 one to one relations: parent partner relation, the sibling relation, and then each parent to child relation. This scales poorly as more children are added to the family. Some of these relations are also redundant - if two people have the same parents then I can derive the sibling relationship, there's no need to persist it. The new model now only stores family units, so now I just have one object with two parents and two children, and then pointers from those people to the family unit. This is a good step towards larger settlement sizes.
Summary
Speaking of larger settlement sizes, that's what I'm going to focus on next. I want to see if there are any other optimisations I can do, and I need to test the performance (e.g. generation time, map rendering) before I'll be ready to turn it on.
Fun anecdote, sometime last year I enabled versioning on the file storage bucket I used to save all of your settlements. This is useful as if something breaks / you accidentally delete a settlement, you have a week to contact me and I can revert the settlement back to a working version. However, it turns out that I never actually deleted old versions after a week like I thought I did, they would just stick around forever. Doh. Fixing that tiny bug has reduced my storage costs by 60%, wish I had noticed that sooner. Test your infra folks.
Once again, thank you for all you're support. It's been an absolutely incredible year, and I'm greatful for everything you let me do. Here's to another great year! As always, let me know if you have any ideas or feedback - it's always appreciated.
Comments
That's currently not possible, but it's a good idea!
Thomas Allerton
2024-01-07 21:12:33 +0000 UTCAwesome. Will look forward to this. As a side note is there any way to adjust gender weighting by race? I want my added changelings to be more a gender and non binary than the baseline
ByTheTentacles
2024-01-07 20:28:57 +0000 UTCSupporting you is so worth it. The fantasy town generator continues to be an amazing and fun tool for my games. Keep up the great work!!
Martine Maggi
2024-01-05 04:40:33 +0000 UTC