Ancient Savo Development
It is 130 days since I released the first Ancient Savo version for the development-phase test crew. Since that there has been a version release almost every week - the only exception was the week when we did a live-streamed Q&A video. Or, in other words; I'm happy to see that I've managed to reserve enough time for my indie coding (and that it has not hindered me contributing towards UnReal World development, for making the Ancient Savo weather simulation helped me to refine the weather engine code used in UrW, adding some new features). At the moment the latest version is numbered 18 (it corresponds to the week number. The first version was released on 8th of January, week number 1. Version 18 was released on 16th of May, week 19 so minus that one week). The timeline of the development has been pretty much how I estimated it to be; the main game mechanics "Should be mostly done by May 2021 (quote from the campaign page at 18th of May). I have a feeling that versions 19 and 20 will see the essential game mechanics up and running, so that the main focus will shift to developing UI, graphics, sounds, playability etc.
First, a note on the mental well-being and the personal aspects of the game development. I remember how in many of my older blog posts I've described by personal problems with metaphors like "being in thick mist, not able to see clearly, expect maybe the things in very short distance", my problems with balancing my timetables, my tendency to pick up a side-project (because someone else proposes a thing X and I feel that "okay, I'll do that first, then focus on my very own projects", or because I've felt that "I first need to focus on this urgent real-life homesteading project, and it will also be good for my mental well-being, and then I'll be better able to focus on indie coding projects"). And how that fog / mist / and tendency to give lower priority to my own coding projects, how it has not been about low self esteem nor lack of inspiration; but more like lack of the sense of "fully being here", because of an all-encompassing sense of dissociation, which makes me feel more like an outside spectator (instead of a first-person active agent, the centre of initiative). So, over the years it has been a slow process of recovery, the process of learning to better understand where that foggy state comes from and how to dissolve the fog. Around the year 2019 we went through a structured period of guided meditation sessions with Clementine. If someone happens to feel that all that talk about "Shamanic Counseling, Depth Hypnosis, Hypnotherapy, Energy Healing" is suspicious bogus, then sure anyone has the right to believe what ever they want to believe. Personally, I tend to value first-hand experience over plain prejudice, and since my teenage years I've had consistent experience that this kind of inner work can help to transform both the sub-conscious emotional patterns and the semi-cognitive thought patterns which seem to guide so much of our behaviour. Around the same time (year 2019) I also saw my local therapist on regular basis, until she retired. The combination of those therapeutic processes left me with a more deeper sense of inner clarity. The feeling that Ancient Savo is a real idea, that the project is real, and that I'm present in the making that project come true - not just some dissociated post-traumatic outside spectator passively witnessing a flow of events taking place. Such deep basic constellation of ones psycho-emotional state is beyond rational cognitive processes, so they are better addressed with the age-old shamanistic techniques of tapping into the symbolical dream-like layers of the human mind.
Oh well. So, having a strong enough sense of inner clarity, good. And to calmly maintain the commitment to making Ancient Savo come true, even though there is absolutely no certainty if the project will pay off in the financial level. I enjoy making the game, and want to see the project finished - that is reason enough to work on the project. (And, in the good case, if the game project will generate sales and income, it just means that I could continue the life of an indie game programmer, instead of having to adopt some other work to sustain myself. But that remains to be seen, and until that I just resort to all the good old ways of a starving artist.) So far my economy has been manageable, barely, yet manageable. At a times this is a source of minor stress, for I know that rationally speaking it would be wiser to pick up any odd job to generate a sustainable income. But I deliberately choose economical uncertainty, I can handle that, especially when I feel that what I've been doing all these 130 days is a lot more like "the life I want to live", than some earlier phases of my life, when I constantly felt like "I have to struggle through this to get to a place where I'd like to be". For this it has been good to see other people being interested in the project. Every donation counts, every piece of feedback counts, for it helps me to feel that what I'm doing is not only good for me but potentially interesting for an audience. And my friends who have already contributed music and graphics, and every friend who has showed interest in contributing during the summer when my own main focus will be on the UI aspect of the project - Thank You! It is great to feel connected with other people, friends bringing in their own talent to make the project so much richer than what I could ever achieve alone.
I might have written than my game development philosophy starts with coding the minimally functional kernel of the game, and then expanding on that step by step, layer by layer. Which means that not all of the code needs to be planned in great detail before starting to code - which probably is a bad practice according to a number of programming & design guides. But this happens to be the way which suits the way my brain works. I enjoy a sense of discovery, when I build on that minimal kernel, and then just realize that "oh, okay, so this aspect needs to be coded that way, so that it will play smoothly with that another aspect". At a times it feels almost like just witnessing organic growth, instead of merely following a ready-made plan. Or, if this sounds too obscure and mystic, let me rephrase myself; Sometimes I plan with pen and paper, taking notes on what variables I need to model, and how to best group them together in classes. But most of the time I don't, instead I plan by writing a piece of code, and most of the time I find that I need to re-write this or that piece of code, several times, to find a robust, bug-proof, flexible design. For me the occasional need to re-write code is not a bad thing, it is the cheap price I pay for having the freedom and creativity of my "learning-by-doing-planning-by-coding"-approach.
Yet, during the process I have gained a more clear understanding how my own way of thinking grows from the algorithm, from the code up. I mean, I've already said that for me it is essential first to code the game mechanics and only then devote energy to having a nice UI layer on top of the inner working of the game. For me this approach is so natural that sometimes I have trouble trying to remember how other people might first see just the surface, the UI, and feel that this is what the game is. That is a perfect valid approach, and of course it should be so for a polished, finished game, that the UI is there to help the player to engage with the game world. It is just that as a developer I always first think of the inner working of the game world - I feel that first we need something to interact with, only then we plan and implement the ways of user interaction. OK, so far all good, but I've come to understand that sometimes my "algorithms first, the minimal functionality first, then expand on that, write the details later on"-approach renders the early development versions not game-like. Or, what to me appears as a strictly organized group of inter-related data structures and algorithms, might easily appear as a haphazard mess of place-holders. Hehe, so, finally, with versions 19 and 20 I'm steering towards something which will be like the minimal essential functions of a proper game =)
Finally, let me go into the details. Or, actually, I started to write this blog post partially because I wanted to have a digital copy of my today's pen-and-paper notes. And then I felt that it would be nice to share these notes with you. The background; I think it was Ancient Savo development version release 2 which already featured the essentials of slash-and-burn agriculture. And I remember how, at that point, I felt like "OK, we first need enough variables and data structures to simulate trees being felled and burned, seeds sown and then growing. The exact details can be polished later on." I was not sure if one tile in the game map will be 10m * 10m, or a smaller, or a bigger area. I had no idea what is "one unit of rye seeds". I was just happy with there being variables and an interplay of algorithms adjusting the values of the said variables. Slowly, over the months of development my ideas have been growing more clear. Now I think that one tile in the game world will indeed represent an area of 10m*10m, and that "one unit" of food will be 100g, and internally we will model the calories per 100g of each food type. Digging into some old records I had already figured out that on average the Savonian-style slash-and-burn agriculture one sown seed of rye will yield about 15 to 20 seeds harvested. So, to finally set the details I've been making some calculations;
Let us assume that 100g of rye contains 200 kcal of energy. (I've found different numbers for this. Some sources say that a bread baked on rye flour contains 230kcal of energy, that unprocessed whole rye seeds contain 330kcal / 100g, and rye porridge contains only 39 kcal /100g. The low value for porridge is probably because it has so much water in it. So, for the sake of the game simulation I'm using some sort of estimated average, thinking that they will eat some porridge, some bread, and a little of unprocessed whole grain boiled as such.) And let us assume a daily diet with consists of 1/3 rye (or barley, but for the sake of simplicity I'm first calculating the exact details for rye only), 1/3 of meat / fish / eggs / beans, and 1/3 of vegetables and berries. (At the moment I'm not yet sure if there will be some UI or AI to adjust these ratios either by the player or by the algorithm. So, again, let's first start with some sort of base-line average, leaving open the possibility of more details in the future). And let us assume that on average, on low or medium strain, an adult human will eat about 2 kg of food per day. Using my game units (one unit = 100 g) that will mean 7 units of rye per day. To make it through a year a single person would need 2555 units (255,5 kg) of rye. But you shouldn't eat all of your grain, but leave enough seeds to be sown for the next harvest. How much is enough of seeds?
Again, based on the oldest records and mentions I've found, it seems like in this style of agriculture people used to sow about 25 kg of seeds per 0.5 ha field. Translated to my game units that would mean 5 units of seeds per one tile. Assuming the ratio of 1 seed sown / 15 seeds harvested, it seems that in the game world one tile of rye field will yield 5 * 15 = 75 units of harvest. Omitting the need of seeds sown this means that to produce enough rye for a full year one person would need 2555 / 75 = 34 tiles of a field (rounded down from 34.06666...) Let's add 3 extra tiles to grow the seeds, 37 tiles will yield 37 * 75 = 2775 units of rye, eating 2555 will leave 220 units, and sowing 5 units per tile it takes 185 units to sow those 37 tiles. Hooray, that will leave 220-185 = 35 units of a rye for a bad day reserve =) All of this assuming the 1 / 15 ratio of harvest - which will naturally depend on weather. Freezing cold nights early in the summer can potentially ruin most of the crops, in which case there is a pressing need of alternative sources of food.
Let's also take a brief look at the daily need of kcal consumed. The modern standard seems to be 2000kcal per day for a normal person, but that can be doubled if doing heavy work for a longer period of time. Turnip contains mere 28 kcal / 100g, mushroom are about the same, but berries can have 56 kcal / 100g. So, for this calculation let us assume an average of 30 kcal / 1 unit of this food group. For rye we settled for the value 200 kcal / unit. Fish, meat, eggs and beans contain something like 80kcal - 234 kcal / 100g, depending on how much fat there is. A modern average for salmon seems to be 127 kcal, forest reindeer meat is also 127 kcal / 100g. Hen eggs are 134 kcal, but I don't know if wild aquatic bird eggs have less or more calories in them. For broad bean I've used value 102 kcal / 1 unit. Let's try a calculation with an average of 120 kcal for this food group. Now, my simple simulation is that there are 3 food groups, and the daily diet consists of 7 units per group. That will make 7 * 30 + 7 * 200 + 7 * 120 = 210 + 1400 + 840 = 2450 kcal / day. Hooray! Seems like this diet will keep our Ancient Savonian slash-and-burn farmer alive and fed, under normal strain. Working harder needs to be compensated by eating more, and eating more fatty food, if available. What if all of the harvest is ruined? Assuming good luck, having enough fish and meat on the table every day would mean 21 * 120 kcal = 2520 kcal / day - enough to live from hand to mouth, if you can catch enough game and fish to yield 2.1kg of food / day.
I'm beginning to understand why my ancestors adopted (slash-and-burn) agriculture. Suppose that instead of those 37 tiles you are diligent enough to have 50 tiles of arable land? Half an hectare. According to the game simulation that would yield 3750 units of rye, you eat 2555 and have 1195 units, sowing another 50 tiles requires 250 units, and you'll have 945 units of rye in your storehouse, as a reserve for a bad day. And, remember, that in favourable conditions one seed of rye sown might yield 20 seeds harvested. In that case your 50 tiles of field will yield 5000 units of harvest. Eat 2555 units , sow 250 units, have 2195 units as a reserve. With this kind of numbers you'd probably be able to feed your offspring, for all of our earlier calculations assumed a single adult sustaining oneself. To feed your kids you need to keep on fishing, hunting, gathering, sowing and harvesting more until the kids are old enough to participate in the work.
Let me conclude with a brief note of real world thoughts. I've already decided that if I ever will have horses again, I first need to have more land. Enough pasture for two horses, for a constant scarcity of pasture is not nice for anyone. I really have no idea if that will ever happen, so better not plan according to that. In other words - it wouldn't feel wise to reserve all of my yard as a possible-pasture-to-be. Instead, other ideas have been simmering in my mind, and I've already started planting an apple tree here, a few Juglans mandshurica, and an oak there. Dug up a few raspberry bushes from a shadowy corner of the yard and re-planted them in a sunny spot. Seemingly unrelated to all this, there are a few storm-felled fir trees next to my yard in neighbour's forest. The neighbour said I can have those trees, and I kind of a would like to, although I still have enough firewood for two or three winters. So I have been thinking that for what use would I trim those fir trees; cut them to small blocks suitable only for firewood, or trim them to logs for some future building project (in which case hauling the logs would be another problem, and exactly the kind of a task I'd love to have a horse to work together with...). Then, suddenly, today these ideas just made a connection in my mind. What if I cut those storm-felled trees into 1.5 metre pieces, maybe splitting them so that they'll dry faster. And transport them onto my yard, so that later on I can burn them on the spot. Effectively making a small-scale version of slash-and-burn agriculture. I'm still storing a small amount of rye seeds from my earlier experiments. Maybe not enough for 50 tiles, but I'd be happy with a smaller, more manageable project =) 10m * 20 m maximum, for a bigger field all the harvesting and threshing would grow into a major time-consuming task. But a small experiment sounds like a fun hobby, yielding a little extra food and a deeper sense of being connected to the roots.
Add new comment