Here i will add a update to whats happening at the games i develop. The older stuff i will move away to the "old Blog" section.
I improved the tile-view to show also problems and prevent the drop of a interior on top of other and outside. I also added at the entrance and exit walking blocking settings, to prevent blocking the door. Its now also checking for the path to the entrance/exit to make sure, all positions are reachable. Missing a hint to the player yet, why its not working.
I added a configuration for the work, to say, what interior is needed for it, and calculate the needed storages and add them also in a generic way to the list.
I added some basic BuildingResources to the size of the building. Later the interior will also cost some resources to drop. To make it work, i needed to update the animation positions and the resource-paths, so the resourceboxes are working well. So the current state is already a working construction center build with the generic room. Its going to be finished
Due to the custom rotation, it was now also needed to support 90° rotation of the Stacked Storages. It was easier than thought at the first time
While testing the code, i found it very anoying, that i need to click always throgh the menu, so i decided to show the often needed buildings when opening the buildmenu. At #1 is the Walkway and below, all generic buildings will be shown.
I polished everything a bit and added rotation. I found an anoying bug with the position calculation of the child objects and fixed it, so they now are at the correct place.
Before starting with the Interior placing, i added the camera for the configuration. The original camera is not fitting well, due to the angle causing walls in the way on lower zoom levels. Its also not so nice showing the player, that he is in another mode. Its now moving an zooming to the building, and keep the camera in the building to be configured.
I added an overlay for the interior, so the tiles are represented. To do that, i refactored the current pathfinding, to also have the core calculation better readable. The Rendering was pretty fast than, but maybe needs a bit polishing in showing the grid more clear.
After that, i started to do the switchable tiles and floors. It needed a bit more effort, to prevent generating hundrets of materials, its now generating it on realtime, when its not yet created. For now, there are buttons, tomorrow, i want to add some round preview pictures instead, matching defaults and highlighting for it.
I started with the new Generic Building, so the player should be able to configure the buildings by placing interior. I planned to do in this iteration a simple placement mode, where the player can just set the position of the needed items. I planned all the needed steps and started.
The Interior and BasicBuildings have been promoted to a configurable Object, so it can be used easy. I added them to the Image-Creation process and started with the configuring of the first generic Room.
After choosing the new Room, its showing a popup to select the building-type.
Finished the last open things found while developing, like flickering some parts of the ui or animations when enter/leave a building.
I also did some playtests and fixed some smaller issues i found. After that i did a release. The buildtime with the new rendering is way higher than for the forward rendering. It took ~1h in total to build (before ~20min)... But it worked fine so far
I worked more on the new UI Design. It take a lot of things to adapt. Close to all colors have to be adapted to the new style. Still a few things to change, but progressing fast, so it will be in the new release
After finishing the migration to separate the Work from the Buildings, i started a generator for the lights. This was needed to have a balanced lighting inside of the building. It generates it depending on the Tile setup, so it should work for any kind of structure. Its also a base for a possible "custom buildings" feature in the future. Its also grid based, so its bending to the correct points in the circle.
I started by removing the old animationArea to replace it with the new algorithm to find a free tile in the building. So its no more needed to set this up and it should also work later, when the player can setup the interior by himself.
The next big refactoring step is to move the Work out of the Buildings. The main part here is to adapt the UI. This part was also done very early, so it take a bit longer to refactor to the newer architecture decicions.
While implementing the Animation Paths inside of a building, i found it very anoying, that i used y-z wrong in the GridPosition. Originaly i thought its good to have x,y for the grid and z for the hight. But converting it to different coordinate systems took a lot of effort with a lot of errors in it, so i spend half of the day to migrate to a more standart coordinate system in the grid. It took so long, due to its used in tons of systems, everything related to animations, the icons, inflating walls, settings, paths, editors and much more.
After all this preparation, it was easy to apply the pathfinding for the area moving and the move to action-point. It should now avoid obstacles in the way . Its not optimized yet, so when they try to walk diagonal, they walk just streight on the tiles. I plan to add an algorithm to detect if a streight way is possible to use it like before, but i will plan this to a further iteration for now.
To round everything up i added interior bounds. Later, players can place there the interior, but till now its static predefined buildings, i need that to calculate the paths of the persons in side of the buildings. I implemented the A* in a more simple way than on the big tiles, due to its a bit different usecase. For the big tiles, i implemented it using the entity graph and also highly cache the value. This cache was needed, due to its calcualted each time a storage connection is checked. For the interior path finding, this seems not needed due to the small building size and veriety of start/end positions. The Animation creation could just use the A* every time, but maybe i will cache some parts of the calculation. I plan to add the usage of this path finding tomorrow. Till now i just created some simple Tests for it.
Due to the new Interior grid, it looked a bit anoying, that there is now space to the walls. I decided to create a new one for all of them. I started with new ideas of the basic design, but all were not so nice, so i stick to the current design. To the walkway, i added a separate connection, to deal with the new space. The first 1x1 model took already 1 complete day... I tried around with baked normals and added some more details.
After that was done, i copied that part and created all filled buildings.
I added interior tile settings to the different interior items. For now, its just used for an automatic cutoff detection i created afterwards, so its not needed anymore to setup the cut of the floor in front. Its caluclated at runtime. This is needed when later the player can set this up. I added also an editor to debug it easy and moved the 0/0 position so the grid is aligned to the big building tile settings.
In the afternoon, i thought about how to deal with the walls/floors. Its the last part to reuse the basic parts of the building. I played around with several ideas doing it in the shader. So it will stay One render call, but the shader is using now multiple textures. One for the basic stuff, one for the floor and one for the walls. After trying to do it similar as green-screen in the television, it failed when the baking merges the colors, so i found a way easier way: The UV-Value. If its inside of 0..1 its the regular texture. If its above it, its wall, below its floor. This makes it very precice AND easy to define directly in blender.
The last 2 days, i did some refactoring, to make the migration to the new building system easier. Using more entity data and less prototype stuff and trying to migrate the conversion logic to a event-based aproach so the storages can be also used from multiple works. The Storages have now also a separate Animation Position, so animation errors due to wrong configuration cannot happen anymore.
After that Simulation stuff, i migrated all interiors to a new interior position. The idea is, to let the player choose create the buildings by himself. To make this work, the first step is to align the interior to a grid. The buildings will get a bit smaller, due to i leave 0.5m space on all sides. So inside the 5x5 meter tiles, there will be 4x4m space. A long building will have 5x4 space due to the middle are. Some Buildings still fit well, others didn't fit so well, but step by step it gets more close to that target
I continued to try to create Generic / Reusable Buildings. One Problem there is the floor, so different parts of the Mesh needs to be hidden, depending on the Storage-Stacks. To have a space for the boxes to move from below the floor to the top. After several ideas, i found doing this with a shader would be the ideal part, due to its not cost any additional render calls or even vertex count. Its also so generic, that it can be done for any mesh. I can now pass a bounds to the shader and its cutting of all pixels inside of that 3d bounds. Till now i can just pass 1 element, so its not so generic yet, due to some limitations of unity... But i can do a fix number of them by hand Maybe i can use one Matrix4x4 easy pass 8 holes at once and calculate the positions with the shader also.
I worked more on the Migration to the new Rendering System and finished migrating most of the normal Buildings. While doing that, i accidentaly make the yellow parts of the box-stacks more green and red, but i liked that way to symbolize IN and OUT storage, so i keep it
I created a small comparison for the change in example the maintenance module before and after the change.
I also needed to update more lighting effects, e.g. to disable them when the general rendering is disabled. I also want to give them a special effect, so they can start/turn on, when the building is working, or in other conditions. Due to i also planned to add a "Day-Night" schedule for the crew i plan to directly plan for that case. As a short background: Humans have a ~24h internal clock cycle, so in the ISS, the lights are adjusted to this so in the night-time, the lights are reduced and more red, on daytime always on max brightness. I added the change of the light as an experiment now, it goes to red to ~21 o'clock and turns bright on 6 in the morning.
I also tried hard on the sun-shadow and found several problems i had in the scene, due to some limitations and internal techniques to render them. Its only working for the main light, that wasn't set well, and also some distances that are needed in space are problematic. I found that the main problem is the maxShadowDistance. If this is too low, it will not render shadows further away: So the station is enlighed completely for the sun. If its too high, it has a very poor quality. In closer zoom levels i need a different value than on higher zooms. Good, that it was possible to set this on runtime.
Due to the sunlight can be very anoying to the day-night cycle, i thought about turning the glasses darker in the night mode. I also thought about a different orbit, so its orbiting slower with 1 turn per day.
While thinking how to migrate to the new Lighing concept and use the advantages of it, i had a good discussion with Hokay about a possible feature. The plan is to let the player place the interior things. Its a very big change and will take some time, but i have a plan to do this step by step. I first start to migrate to the new lighting concept with one building. It was again very challanging to make the save-process work well, due to its storing companion game objects in unity. This is very hard to do, due to till now, i stored the path to it to make this work well. For all lights, this would be a mess, so i did this in an easier way. Now simple Companions can be stored without big overhead.
I fixed some small things i found and tried to create a more dark style. I didn't finish it, but its prepared and easy switchable.
I found that the new unity version get out of beta. After fixing some issues with the UI Toolkit, i tried to compile, but the burst compiler crashed withh a bad memory error from windows... I analysed that the problem is the burst compile of the big Simulation System. After removing that its not crashing anymore. I reported a bug to unity and hope the best. After disabling, it still looks running very fast, so i will keep it disabled for now.
Today, i finished the last things to be done in this iteration, created a very short update video and released everything. Here the video and article. Next iteration, i plan to do the factories, to have more content to play. I plan to do a "Workshop", maybe a bigger factory and maybe also a recycling center to have a closed circle for resources.
Due to the new UI, it took always a deselect to open the buildmenu. To make this faster, i added "b" as a shortcut, to deselecct and open the buildmenu. Than its opening another new feature, that makes it possible to search for buildings. So the player can just press "b Wal" and the Walkway will be shown. If he is pressing enter or just clicking in the screen, the building is automaticaly selected as to be planned, so he can directly drop it.
After this big changes the last days, i did a short test and found several small UI and Tutorial improvements needed to be done. I also found some bigger bug i needed to solve, related to the new seal feature and changed neighbor algorithms.
I also started to refactor the BuildMenu to add a search bar. This should make it way easier to find buildings, at least when more comming soon
I fixed the problem where the buildinglot problems were inside of the inflatable-walls, by adding a customizable offset for the icons. This also makes it nicer for bigger buildings, so the icons are now centered over it, or are drawn at good spots instead.
I also fixed some small things like the highlight on a button or handle easy thrown out the uma context sometimes over the day while development.
Finaly finished the seal topic today, by making the persons-overview next to the section dependent on the section and fixing a last bug. I cleaned the obsolete stuff in the code away and polished that part a bit. Than i fixed and improved a lot of small things like the flickering selections and instant showing the complete supply popup, without loading things afterwards in, so it looks more polished. The sideMenu is not not flickering when changing the selection. If its hidden, it waits for the mouse-up now, so it stop looking broken. The h2o container of the person-need was also at 50%, due to its an optional container, but that looked very bad there, so i make this like the others.
I found more wrong stuff: After sealing, the target N2 values were wrong. Also problems with the Humidity effect that is now dealed by the sections. I added some more automated tests for it and finaly finished this section after ~1 week of development... Now its time to clean it a bit up. Now just some UI elements need to be polished, i started with the seal buttons. To make it easy to see what it is, i highlight the neighbor related to it. I also hide them, when there is no neighbor, so for walkways are not always 4 visible. The Building is also added as an icon, to identify easy what it is. A tooltip has been also added with a big icon and the building name in.
I added more consistency checks to make sure everything runs fine in the simulation. With that i found some more small issues with destroying buildings. The main part now works fine, now need to deal with the special cases of the seal, when the player splits the ship into 2 sections. E.g. the constructionModules need to stop/restart work and also the persons need to deal with it.
I found, that one test failed due to a missing special case in the gridNeighbor calculation, so i decided to add a consistency check job there to make sure its logging better errors and prevent this in the future. Another bug in a special case of the construction with savegames leads to another bigger problem that took a longer time.
There was also another bug in the mass-construct-walkway integration test, that some mass was lost. After analysing, i found, that its an wanted feature. Due to there is still air in when unsealing, the air is drifting to space. When deflating, the building is separated to a new section with the amount of air and water in the tubes. This is than destroyed, when the building is destroyed
Today, i migrated the Air Leaks to the new Sections instead of the ship. Than i tried to check all tests. A lot of them failed, due to several issues, needed to be fixed one at the other. For example the mass calculation not respecting them, or some work-updates were missing. So good to have these tests
It looks already way better than in the morning, but still a few things open, like assigning the persons metabolism to use also the air of other sections, when they migrated. After that big work, it needs than some more tests and checks to make it stable. I expected a lot of changes, but i didn't expect to be so much.
I migrated the Air and Tubes to the new Sections instead of the global ship. There is now just the electricity left. I also used the section-containers for the bottom UI. For the testing now, i can change it when selecting a building. Later i will add a popup to change between them also. I also moved the work-stuff to the new sections when change and working on more adaptions. Its a realy big simulation change...
Before starting with the Sections, i did some performance analytics and found something realy big for the editor. As a test, i just used the testscene and fast forwarded one month. I found several things to optimize. One big thing is the sync. The simulation gets it's own simulation values where its calculating. To migrate this to work directly on entites can be possible (maybe just partialy first) can be an idea to optimize that AND make it simpler. The second part, where a lot of performance was lost was a bad placed sort for the history item. Instead of sorting before showing the values, it was done after adding an entry. When running with 1week/s, there come hundreds of sort calls on big lists, what causing in the editor already 0.3ms for each sort. It looks like it could pushed the performance x5 already
Than i continued with the creation of the ShipSections and got pretty good progress so far. I hope i can finish that tomorrow.
I also did an algorithm to push the buildings to separate sections. This is using the neighbor calculation and try to identify current used ones and try to split or merge them as intelligent as possible using bigger groups as priority.
I played around with naming the new Sections in an intelligent way, but this seems not feasable to be high performant in a Burst Job, so i decided a simple way instead. New sections get simple names. Sections with names get priority when picking a name. The new sections names get reused, but they are still created as new, so when settings are added, they will not applyed to them.
The calculation with the basic ship needed in the editor already 0.6ms (without burst). I tried to make it more performant, due to it was running in every frame, but than i decided to use the mechanism of the gridNeighborSystems reclaculation, to also trigger this update. If this is just running very rare, 1ms is fine enough for now
I finished the last polishings for the new UI structure and could finaly start with the seal. It takes a big refactoring, to make it fitting to the new requirements. This part of the tile/neighbour code was also created in the first weeks of development, but it it workes pretty easy without bigger problems.
Today, i redid the photo scene, to improve the speed generating new icons. Its now migrated completely to new UI Elements and showing the icons with the real backgrounds, to make sure they are good visible later. I added some new Icons for the new Menu also.
I finished the structure refactoring of the game ui. A lot of things are changed and aligned. There is now just one panel style, aligned with all ui elements around the screen. Also the Buttons directly on the gameplay get a separate style, that is (without highlight or active state) the same as a panel. The section part below also got the same border style as all others.
Due to the planned Sections in this Iteration, i also need to rearrange the UI and split up the section element from the ship elements.
While doing that, i came up to completely redo the basic structure of the Game. The header and footer is removed. Instead, there are several single items, so it looks more open and clean than before. I also had now space for a mainmenu button and moved the feedback and help button there. To gain even more space, the buildmenu will be moved to the left, to have space below for the new sections elements. Other things for overlays, camera or the supply-button have been also moved to the new side menu. Its hidden, when something is selected. Special Thanks to Hokay helping with it . Here a work in progress screenshot for some previews.
I refactored the ResourceContainer Management, so instead of multiple ones, we just got 1 big manager now, dealing with all of them. Each Instance got some callback methods for the events. More logic has been moved to it. For now, just for the building-specialcase but i want to migrate the other logic also to it, to cleanup and possible optimize the stuff easier later and simplify the code. I created a special test for the building container and tried to use the new system and it worked pretty well. I released a patch version with that fix and it was tested sucessfully (thanks to Ichao for testing).
This iteration will contain a very big simulation change, related to the splitup of the ship into different ship-sections, so it will also use the new container logic. It also has influence on the upper UI, so it needs to support multiple ship sections. I'm thinking on a way also to name them and keep the names when open/closing air-locks. Also critical, if persons should be allowed to go through. Maybe they need some different options like disabled/enabled open/closed. This will have a bigger visual problem for the animation of the doors.
I started to bake the trailer and needed to update a bit, so the persons working in the building while showing them. I also found it a bit strange, that the engine-destruction lots are still visible and changed that. While updating it, i also improved the first part, so the building-cycle is also visible.
I also did a new Release with an article and an update video again:
Thanks to ichao, i directly got a bugreport, that something causing again an endless loop in the simulation when updating the tubes... Due to so many problems with that part (also last time when i changed that) i decided to completely rethink the architecture there, to prevent that in the future. Too many special cases. I have already some ideas to make this simpler and more error tollerant: Current there is a big logic calculating the next update of a work. I want to change it to external events, so not the work calculates when the resourcebox will be full, just the resourcebox get an event, when its full triggering an update of the work. I work just on that now and release a patch release for it.
There was a problem at the lighting of the new bone-animation-shader. If the animation got too big in rotation, it looked completely wrong. The model was dark, but all around were bright enlighted by the sun. I idendified the normals as the problem, i didn't do it in the shader yet, due to it looked fine so far and is very complicated. As i thought it was like that, but in the end, it worked
Next problem was the generation of the Animations. It was very inperformant. Due to a lot of new animations, the baking time increased to ~1.3s, what makes it very laggy. I started to optimize it, using at the expensive parts multi threading and prevent too expensive things and could reduce it to ~300ms, so a 75% reduction. In total including the person-mesh generation its now at ~400ms, so not perfect, but a bit better. I first tried to generate on eperson per frame, but it was still lagging too much, so i needed to split it to multiple frames instead, making everything in the row supporting async generation. It ends up in a system, where i can setup the maximum time per frame what i setup to ~30fps what hited in the profiler very well. Only disadvantage: the Person is invisible, till this is done. But the person is anyway in the supplyship in this time. Just at loading, it looks like they are loaded async afterwards, what i think is also fine.
After a short test i didn't see any lags anymore, so i guess everything is ready for the release
Do more small bugfixes and added some holders to the storage-module, so the water-boxes looks nicer attached to it. I also decided how to deal with the resources in the containers of buildings, that are dismantled. They will just be lost, due to i plan to add more internal resources e.g. for the greenhouse of the canteen. These cannot imported easy to other buildings, so they will be removed. To protect the user of unwanted destruction of resources, i added a warning, showing the resources and let him confirm another time.
I did a long playtest and found a lot small things, that i fixed afterwards directly. Things like loading problems with doors or resourceboxes not rotated with the ship, but also smaller other things like outdated text in the tutorial. "Humidity" was listed in the supply-resources and so on. I also make the Photovolitaic panel buidling just selectable via the main part of the building. It was too anoying always selecting it by accident.
A bigger bug was that the container was bugged. It didn't start automatically when the ship using water in the new pipes. I decided to test this in more detail and write automated tests for that new system. This lead to several other improvements for tests i will working on firstly. Each Test took ~3s, so for 400 of this tests it got way to long. Main part is the person generation. I need to use a default person for the tests instead of creating everything at once...
Another thing what i found was, that there is a big lag, when a supplyship arrived, caused by 3 person generations. Each one took ~1.3s with all the new animations... Need to do this async instead. When loading a bigger game (8 persons the game will hang completely ~15s, what needs to be done async and maybe more performant (maybe also when the game is started, due to its not effecting the simulation).
I also need also to animate normals. I thought its not so visible and fine, but its very very visible at the solarpanels, having completely wrong sun reflection.
I found a potential bottleneck for the i18n init. I changed the architecture, to initialize it not completely at startup. Due to it got a lot of values, so when the first usage of a I18n translation is done, it lookup in the json.
It could happen, that the connection amount is >3 for the normal buildings, when using the new shortcuts added in the last iteration, so i fixed that. After that, i let the persons just use the actionpoints, when the building is realy working. So in the construction module they are not working, when no building is working, or no resources are there.
After trying a Playtest, i found a flickering in the selection, that was very anoying. After long debugging, i still couldn't find a reason, so i changed some of the models to the shader-highlighting, without rendering around.
I finished with the sleeping module improvements. I added a separate bed and a sleep animation.
I also created a separate Water-Tank Model as a replacement of the box.
I improved the Trailer by adding more buildings and also speech. Its reading with a deep voice generated like for the other things with the google AI.
Afterwards, i created some more animations for the canteen. Eat and Drink animation is also done. To test this easier, i added a possibility to show the building in the testscene and autoamticly spawn persons doing the actions on each action point. This simplified the testing a lot.
I tried to add the inner looping feature, where the inner loop can be defined inside of the animation clip. E.g. sitdown-do something-standup is in one clip. The inner loop would be here "do something". To make this smoother work i decided to change the defaultpose algorithm (where the animation tries to move to before switching) to a more convinient "blend" feature, where 2 clips can be blended into each other. One part was, that the shader accept 2 clippositions and a fading value. The second part was refactoring the algorithm on the CPU.
Afterwards, i added the looping in range feature.
Also the Toilet has been adapted and now just has 1 output garbage storage for the Brown Water. I also left a bit space for a small shower if this comes in one of the next iterations. I also added a sit-down animation.
I tried to setup different worker and customer slot action points, but the customers were stored without an index. So if customer 1 left, customer 2 become customer1. This was not a problem till now for the simulation. Now i need that info for the animation. To do that, i refactored the part, so the building also stores that info in the entities, and with it a slot Index. It can be also improved now, that the player could assign persons to explicit slots, instead of just adding them somewhere.
It was pretty straight forward to add that, and was easier than expected. Hope i didn't break something there, tests are still green :slight_smile: And now its using this new slotIndex to get the correct animation. After finishing, i found, that its also nice for differentiate the working slots. So when the specialization for persons are added its possible to setup different requirements for different work-slots. Like one leader and 2 helpers, or similar more complicated things. Also its a preparation for assigning workers to a workingSlot instead of a complete building.
I started with creating a Debug scene for the Persons, to have a better view for the other. I also added a work-index and a slot-index to separate different actionspoints for different customers and work-types. E.g. in the canteen, there are one for eating, and 1 action for drinking. In the construction module, there is one for each working place. Need to think about how to make an open one usable when just 1 slot is used, otherwise it would look bad, if he just works on one station.
Also finished the new interior of the canteen. Added a chair and table and moved the tripplebox to 3 single boxes, that uses way less space with same resources. I replaced the big water storage with the srink.
I tired to use a tool for animations. Its adding IK Bones to a mesh. The original mesh of the tool was not working well, but it was possible to use the UMA Default Mesh with it. Its in Blender and pretty cool so far. I figured out a Workflow to create multiple animations in one file. It needed to be exported, to see all, but it works.
After redo the old animations for idle and ScreenTap i started with a more complex one. Unconscious for the persons, including a standing up. Not perfect, but as a starting one to test the process i'm happy with it 🙂
So happy, that the deferred rendering now works with the Entity system, so i can get rid of the prerendered lighting in blender. It didn't look good and looked like very low quality. With the new Lights i can create the buildings in a new way without having all things in the building and can do more in unity. E.g. i plan to move the boxcontainers to a separate model, so they can be reused now. Before that was not possible, due to the baked lighting they all had different textures. This makes it very hard and time consuming to deal with the models. Now i can put them together in unity. There will be way more render calls and more gpu usage due to more lighting than before, but all batched through the Entity system, that usualy can handle millions of calls.
BUT after i tried to compile, it fails... Need to wait a bit more, but its very promising, that it starts to work soon
I continued the Iteration improving some small things like the headline of the buildingUI was crushed a bit when the content was too large and using the new emission_color part of the shader to setup the color instead of duplicating the material. I also created a queue for the speech, so its not canceling an old played clip when a new one come.
I also started with a bigger topic: a visible resourcebox fill state. I had an idea to solve that easy by using a shader. So i can setup how many items are stacked inside of the box and the shader calculates with a simple value what vertex are visible. So i just need to create a system to set this shader-value and it should work fine for all of them. Tomorrow i will add another shader, for e.g. the rendering of liquids like water by just scaling it.
I also started to redo the models for the new requirements. First i changed the Storage Module by adding a water-barrel and added 2 more box-positions for the water pump. The FillState of the Storage is representing the current fill state, similar than in the boxes. I want to add an "walk through camera" later, so its now also important to see something when walking through the ship, so i also added a big window where the persons can see the stored resources.
Due to i want to redo most of the buildings, i thought about trying also the lighting again. This would improve the quality of the game a lot, but i did this already several times and failed all the way long on the hybrid renderer. This time updating to the new unity beta it seems it works. They added defered renderer technique and my hybrid renderer seems respecting the light So i need to experiment a bit tomorrow. A bit sad, that Runtime Global Illumination is not working, but i will go for regular lights instead.
I did some last polishings for the new UI for Optimum Boxes (like the Air). Also there were a lot of small details left for the new Building Containers, e.g. to adapt the mass calculations and hide problems for the pumps, if they are at maximum.
There were also more parts to adapt in the Buildmenu and MultiSelection Details, a lot stuff to update
Due to the new Internal storage things, the working process gets more and more unclear. I started a redesign of that part and come to 100x100px boxes containing the resource. All have the same size, so it should look more structured. I also packed the storages and connections to the 100x100px to have them together and not so separated.
With this design its now easy possible to push small combinations to one line to make it look nicer. To Separate the others, i added big background images. The Ship is shown as a circle, so inside the container is also a circle now, to see easy the ship resources. I need to think about how to show the Air-Values, due to they have no maximum. I also want to improve the person and the in building storage a bit more, but the UIElements are very limited .
I found, that the colors for the boxes and containers were different. This looked not good, so i aligned them.
To start with the tube system, i created a new work-resource type for the storage, so buildings can have internal storages and can push/pull the resources into it.
I also added the feature, to toggle between different working modes. This was anyway needed later for e.g. the refinary or factory, to prevent building specialised buidlings for each resource type.
I updated to the new Unity Versions and thought about the tube system. To make a tube for all Liqids would be a big change and i guess more effort. Instead i thaught what is realy needed and come to the conclusion, that O2 Tubes are not useful. The Buildings needing O2 can just grab it from the air. The only stuff what usualy cannot get from the air is water, so i make a separate "Humidity" resource, just for the Air of the ship, so the H2O will be free for a tube-system.
It can be also useful. For the Mass-Balancer its anyway needed, so i might just need to add box->internal storage (a resource container) converters and creating special works that are able to balance them. The player should be able to setup a target-value for the internal storage and it should be somehow visible in the Mesh (e.g. a transparent bottle to see the fill-state. This might also useful for the big engines, to store fuel, and they could act as a fuel storage.
I played a bit around with the new Idea to have tubes and with a fast try reusing the current system it seems working fine so far. The main issue is to make the UI nice for it and think how to make it work. I'm thinking to make a separate logik and make it togglable, so it can be used as an input OR outputstorage, that can be switched by the player. There are 2 pumps in the buildings. One for box->internal container and one for internal container to the tubes of the ship. Both should be toggled separate. The mass balancer maybe just needs the internal storage, so no waterboxes need to be transfered to it.
I fixed some last things due to the new Init process and decided just to release it now, to start with new topics.
I found and solved some problems with the new Persons, e.g. Missing selection and some save load problems, related to the new game-init architecture. Afterwards i tried to paralise the Game Init, so at one run, a lot of mesh-splittings getting scheduled in paralell and reduced to 1 calculation. So it reduced the startup in the editor from 1.7s to 1s. At loading its down to 0.5s, due to the cache.
As a last thing for the persons, i respect the the generated name to the gender of the model. I updated also the other buildings to work with the bone-animations and fixed some tests. It was a very long iteration and not so much visible, but it was the base work to make the next iterations nice
I started to add a serialize support to the UMA, so after loading a game, the model can be recreated. DNA Changes are also supported now, and i randomized the DNA, so the person-meshes also looks different.
The Main part was done so far, so i started to integrate it to the game, and it worked so far very well. All system seems working good with the UMA-Models.
While i tried to add the save system, i had an good idea for a better integration. I created Entity Components out of the data and a system to update the Entity. Now its just needed to add the Race/Slot components and the System is generating or updating the character. With that it could be also easy possible to add a "fittness", or "thick" component, based on the player stats, and the mesh is also reflecting that.
I needed to adapt a lot of my shaders to the different kind of requirements of the UMA-Materials and changed a lot of them. I also support the Animation for multi-material meshes. This was not so easy, due to unity creates "by magic" new noded and it looks there is no way at the generation to manipulate them.
After that was done, i tried to reuse the baked animation, but it seems, the bones depends on the slots, so its not working well. I need to bake one Animation for each bone and each mesh, what is not realy nice So my next task is to hash the slots for the persons to reuse the meshes and animations.
I tired a small performance test with individual generations. Each generation cost ~200ms in the editor. After all is done, its running with 30fps at 400 persons.
I randomize the colors fo the cloths and add a bit random tane to the persons.
I played around with the UMA Framework and try to extract the needed data out of it, to push it to my framework. Its evolved very well so far, also due to my gained experiences in unity, it turns way easier than some years ago
I created a testscene with several generated and a bit randomized characters, changing the shirt color. But it should also work to add other cloths and changing other colors. Its generated and than pushed through my animation-baker to gain an Entity ready, shader animated, high performance version out of it. Adding the Animations worked as before with the other models
The DMA is something special, due to UMA using bones to manipulate the meshes. To make that work, i need to apply additional DMA Manipulation Matrix to the animation-shader, so e.g. a bigger head or bigger belly will be applyed.
I recognised, that some meshes were not shown correct. The reason was, that still multiple materials were used, even they said its just 1... E.g. for hair, eyebrown and eyelash was not rendered, due to more than just 1 material was added. In my systems i just supported single materials for now, so i need to check how to adapt to that
I finished the skeleton animation shader, using bones by updating also the normals and tangents (no extra data needed). While cleanup the code i found, that there are always the same repeating lines in the animation-data. Turns out, that the last line is always fix in a 4x4 transform matrix, so i removed that part from the data and saved again 25% of the animation data
I start playing a bit with UMA, a Mesh-Generator for persons, i also used for some testings some years ago. Hope it can replace the dummy with individual meshes and skins. This was the main reason to do the skeleton animation shader, so the animation data can be reused.
I worked also on the editor. Before it used the unity inspect, what causeing very low fps while selecting something. I changed that to the selection and extracted the elements from the debugging scene to separate windows, so i can also use them for the regular play-scene. All working now on selection and i have a separate Inspect button to view the entity itself.
I thought a bit how to deal with the person animations. Till now, its a bit anoying, that all vertex values are baked. Till now (4 small animations) its already 33mb animation data to be used in the graficcard. When more are comming and more nicer meshes are added, it could blow up a lot. To deal with that i thaught about using directly the bones, and just baking the bones, this would reduce the size dramaticly, but seems a big effort to get it work. But if this is working, it could be possible to use a character generator to create completely different meshes for each person.
It was a long way, but it looks working so far. A big mess with matrix multiplications and try and error ends up in a very nice way to do it
Before: Person-Model including prerendered vertex animation: 500kb model + 3*12 MB Animation => 35MB
After: Person-Model with bone infos including prerendered bone animation: 780kb model + 1x 80kb => 860kb
So in total 97% less, AND its working with mesh changes with the same animation-data without rebaking. For the technicans: Each vertex has bones and weights. There is a default pose and the changes for each bone in each prerendered frame stored as a Texture2D for the matrix4x4 transform. These matrix are stored. I use 2 additional UV Layers with 4byte each to store the highest 4 bones with the 4 weights attached to them. This is why the model is larger than at the vertex one, there i just stored the index of the vertex (1 byte), now i store 8byte for each vertex instead. What was a big mess are the default-poses. That one HAS to match with the original blender mesh, otherwise its just not working well, due to the distances to the bones are different... This tooks a long time to figure out
Special thanks to https://webglfundamentals.org/webgl/lessons/webgl-skinning.html where i got most of the infos to learn from
To make the docking Animations better respecting the ship spin, i needed to change a bit the method that is used to spin the buildings. Before all were aligned with the ship, but that killed the information for not attached elements like the ships. I changed that, so all buildings know the current rotation offset of the ship, and added some systems to update them. The new Method makes it easy possible to just unattach without moving away to 0.
It's all not perfect as i wanted it, but the alternative way would be a complete physics system with calculations to the target values, what is a very big task. Due to its "just" the visuals, i hope its not so important. I adapted the animations of the Shuttlebay to the new system.
Due to the new way of docking the shuttlebay is so much better when rotating the ship, i also plan to replace the current dock, with an animated, more flat version. It will be at the front of the ship and a bit wider. Not sure if i do this still in this, or in the next iteration.
Added more person animations and started with the effects. I created a new System, that can work with EffectEvents, so anyone can add an enable or disable timestamp to the events. I also needs an adjustment to the positioning systems i created a 1.5 years ago.
I added the persons with their animation to the debugging scene and fixed several things for it and refactored the general animationpaths, so its using now easier settings. I also adapted the walking animation, so the foots are now fitting to the speed.
I created a simple tapping animation, so i can use it maybe for a screen later, it should be an example for now.
After that, i added AnimationActionPoints, so a point in the building, where a crew member will do a specific animation for a while, and setup the constructioncenter for it.
I started to fix the person animation and added also sub entities to the animation debugger.
I also improved the Debugpaths, so they are shown when an entity is selected. Also have simple 3D arrows instead of the strange line indicators before.
I updated the doors also for constructionSites and walkways. While doing that, i found that the doors had some smaller issues, leading to a bigger problem with the walkways. I refactored that so the doors are not changing the position anymore. Due to the many changes, the savegames will not work when updating to the next release
For the constructionSites, it turns out very unrealistic, so i changed the logic here and not adding some doors. instead its just closed walls when its not connected. It can be opened from the persons when the door of the existing building openes (not animated, but in reality ).
In the evening, i also found another problem, that dead ends of the walkway are not closed and fixed it. Hopefully the last fix for the new doors now
I started with the next bigger topic: New doors. Before there were just door-meshes shown, that were not realy realistic. Also there were a lot of problems when to show them. With Hokay we found a way nicer layout that can be animated and can be realistic. Its like at an elevator, but for the round shape. Its fitting in all current buildings at the connections, so all buildings can stay as they are.
I needed to adjust a lot of the game initialisation, to make it nicely integrated and reusable but it looks now working very well.
After it was working, there were still a lot of stuff left to adjust. I changed the Neighbor state calculation, so its now more reflecting the "accessable" state so for the building layer the "atmosphere" when persons can walk into it. Than i started to add the doors also to the walkways (what is another bigger topic )
I fixed last issues with the mesh-deform of the inflatable walls, so the deformation is now calculated correct. I also added additional tile with heights to the settings, to cover also very large buildings correct.
I started with an very old ticket created in march 2020 (GEN-267). The inflatableWalls were one of the first things added very early and got small refactorings over the time. Now i finaly improved the complete animation, so its inflating step by step, starting from the connected building. Its inflating new walls at already inflated walls, so also from left to right or from top to bottom, to make it look more realistic. Also due to that big buildings take also longer to inflate all walls.
I finished the part where the TargetAnimation is set by the efficiency. This visualises now more building values, so the player can see more direct whats happening, without selecting the buildings.
I refactored the Animation System. To be more flexiable, it will not work easy in the shader, so i changed it to a bursted job instead. This job calculates for the animation once the position inside of the baked clip. It looks working fine so far.
I added also a "Target" value, to set the clip and pct value of the clip. All clips have a default-pose position, where the system go first. It supports loop and non-loop animations and goes than smooth to the other animation. All still in a multithreadded burst-job to be as efficient as possible. The real vertex moving than in the shader. I also found and fixed some algorithm problems while baking the materials. I guess thats why the person had 1 frame wrong in the animation
After a long Debugging and tryout session, i finally made it to create also the bones and weights correct for the automatic splitted meshes. This means the animation can be done easy with the non split mesh and afterwards the systems generate all whats needed, to run in the shader the animated complexer meshes.
I optimized a bit more, and now it looks fine so far, so i can continue with the next level, to make the animations game related, so when happens what, when do they loop, when stop, move to separate parts of a clip and so on. E.g. i plan to open the panels step by step, to show the current power-usage.
I also started to create a debug scene, to make the development of the animations faster. Otherwise it will take a long time each time to reproduce the situations of the animations. I started with an empty scene adding the single building on pause. I will not do the simulation, but setting some values with new debug ui elements in the scene, like working efficiency. This is usualy done by the simulation and can be overwritten than to reproduce the simulation with an easy ui.
Due to some problems with the new meshes, i moved the bending logic from a generator to the shader, so it can be done after the animation changed the vertexes. This was pretty straight forward, but took a bit time. Also the new SkinnedMeshes behave different than the normal meshes (x,y,z values are different...), so it needed a bit more adaption.
I made the shader more powerful and added the grid-deform logic into it, so after it's animated, it will be deformed to the grid.
I started iwth the new animations by refactoring the way to deal with the working-materials and effects. Till now, it was in the sync part of the simulation, and i moved it aside to a separate System with multiple high concurrent jobs updating all the time. I did that a longer time ago, before i had the animation for the person, so it i plan to extend this method a bit, to be able to do it similar for the buildings, so the animations will run in the graphicscard.
I plan to do some door animations, at least for the shuttlebay, the solarpanels sould unfold , maybe to show also the current used energy (without the condition effect). Also maybe its a nice idea to move the mass-balancer down, to realy show the balancing. But for that i need to check how to calculate that
This is only the first part of the animations, the other part will be improving the inflatable walls and more person animations, so e.g. they can lay down in a bed, or fall over when getting unconciousness.
I did some last fixes a small test, an release with an update video this morning. I planned for the next iteration, to do some more and better animations, so everything will look a bit nicer. After that the next bigger topic will start. For now, its between some factories (combined with more complex moon missions) and Person Buildings (like relaxing areas) and more needs for the crew.
When using the choose feature it was just shown in one color. It is useful, to see more details there, so i make the highlight individual and action specific. So e.g. for Person Activities its differenciate the work and service buildings (and later the livingquarter). For Maintenance it will show the current condition and for building a difference between dismantle and construction.
Due to we see the condition in the choosing now, i allowed the player to choose to maintain also >80% buildings, so the player has more options. For the automatic choosing it's still waiting for <80% condition to autopick.
I also fixed a bug where the simulation not stopped well at some timewarps. It happened, that at long timewarps the person was already located in the next building. It could also happen in other situations. It was also happening, that the timewarp of a person was not working, due to a negative time estimation. I chagned that to a default one instead, to make at least a small timewarp working.
I also updated the screenshots of the steam page, to show the current state.
I found another issue with the new UI-Toolkit. the sliders look now extremely uggly. So i played a bit around, to make it fitting to the UI again.
Also a lot of small fixes: line breaks, air out of ship causes strange behaviors, tutorial layers improvements, overlapping consultant icon and more.
I also reduced the default Timewarp to 10min/s (from 1h/s), to prevent new players timewarping too far to the future, when there is a problem at the timewarp. Usually this is used when waiting for resources, so even 1min/s should be fine enough.
I also try to make the i18n files external, so they can be changed after compile. I hope someone with linux and someone with mac can try this out, due to unity didn't support this by default. I also didn't have a linux or mac installed
I started the day with showing the current speed if the simulation got too slow. It's now the same as for timewarps, where this was already added.
The Center of mass Overlay now shows the current center of mass. Before it was shown the center with 0 balancing activators, to make the mass balancers look working, the ui is moving now the center of mass point, where the mass balancers pushed it.
Its now easier at the startup to connect the storages.
So if the player presses CTRL and SHIFT, and just clicking on all Buildings, he can do that setup now in a very short time. Thanks to acidbeats for the hint.
I also added a warning icon to the overlay for general storages, when they are full. Depending on the player usage, it meight be a problem to be full.
Till now, all air values had the optimum value calculated for 1 bar. This ment, that when the pressure is low/high e.g the Oxygen was not adjusted to 20% causing troubles for the crew. I update now the optima, so this value is updated and there should be no strange problems with that values anymore.
I also changed the requirements when construction sites inflating the walls. Till now, it needed a gridstructure connection. Due to this is not realy realistic and leads to questions from players, i changed it to need a building-connection, so for now always finished walkways. This can than inflate due to the connection tubes. It took some effort, to fix all tests for that, but reduces the code a lot
When coming to the later game, it was a bit annoying, to transfer the water to the mass balancers, so i added a ctrl support to transfer multiple boxes. Its just possible for boxes of the same storage and just for the same resourceType. I also changed the transfer to the left mouse key, due to this feels way more convenient.
Ships gets bigger, crew increases. This caused a remake of the multiSelection logik. Its now unfolding as much as possible, up to the maximum amount. Means, when e.g. 30 walkways are selected, 20 of them will be unfolded, and just the 21. item will be "10 Walkways" more that can be selected also. It has also a priority for less selected buildings, so non-walkways will be unfolded more likely.
To cancel buildings, i added the cancel button to the multiSelection view. But when a lot was planned, it was still annoying to cancel them. Thanks to a good idea from Melodie i added a shortcut to cancel the selected Buidlings. Its showing a summary popup to prevent unwanted cancels.
After knowing how to do a clickthrough in Unity, it was possible again to move all Elements to one panel, to reduce the mess. But i still needed layers, so i added a LayeredVisualElement container as a root for the different things. All Add methods needs a layer to be added, so its now easy possible to stack elements, and e.g. the highlights are not in front of the mainmenu anymore. It should be now way less bugs in category
I also added the restrictions and game-ending popups. Its bound to a achievement. To prevent also building the other stuff, i removed the "show all" buttons. In all of this popups its showing the dicsord register field, so it should be easy for the player to join.
I finished with the Discord bot. Compared to the webtokens, they can upload images and check for roles of Members. I plan to add a demo version and gain more access to features, when players joined to discord. For that the bot will send a message to the player to confirm the account. I also added a "Demo" popup with an easy UI to connect to discord. Its 100% automated, so no waiting time or additional approve from me is needed for that. I also added the possibility to have a playtest role to gain more access in the future, for players who contribute and report a lot . I made a [test] Release so it would be great if some of you can try it out already.
Players accidentialy dismantled buildings, due to they are used to doubleclick. To make this less, i changed the behavior of the Timewarp button. It now just needs a single click. When pressed, its turning to a stop button, due to players who clicked it by accident can just click again to stop it. I hope the old players are not too annoyed to use it, due to they learned to doubleclick on them
I also played around with the Discord API and created a bots, that can check and grant permissions. Also uploading an image is working. This will improve the performance of the highscores and i can prepare for now permissions
I fixed the air-leak panel, that didn't remove dismantling buildings. I also make it a warning panel, instead of a simple info so the player will see that better.
I saw playtests, where players ignored the important warning panels. So i added a Help Panel to the Events when an specialEvent appears the first time. It's showing a help text next to it (with speech) with reasons and solutions.
A tester reported a serious problem with the new Shuttlebay. It crashed, when the building resource entered the building, due to i forgot, that construction storages are also in-storages... So i need an hotfix release. Due to i just updated the UI Framework:\
After several bugfixes due to the issues happened, i hope now its fine so far. I released the Hotfix branch 0.60.1. Already workarounded 3 unity bugs in the new UI Framework... Horrible...
After some day rest, i started working on the Bug that the workingplace react on a click in the choose worker panel. While doing it more generic and improving it, i improved selveral other things too, like the highlight effect for the choosing panels, so it feels more interactive.
Many Testers complained about broken ships during/after tutorial, or that the generator runs out. All of them already skipped ~1 month, but should have passed a day maximum. So I added a warning popup when the player wants to increase the speed a lot and is still in the tutorial.
After the last fixes, i did a new Release.
After the release, i tried to update to the new UI-Toolkit again, due to i got a response, that the css value for ignore events was not working. It seems, its supported, but under a complete different property... Not even in the style, and called PickingMode=Ignore... Now it seems working, so i try to migrate back to the original way, to fix also the bugs where things shown behind some layers.
After all new features are finished, i started to fix the last bugs. I make the Water in a person to an non-maximum value, so persons can still eat even when the water is full. It took a bit time to deal with some followup issues due to that change. I created tests for all of that, so its not breaking on further issues.
I also found, that the visible rotation of the ship was not working anymore after the last iteration and fixed it. On loaded games its now also updating the center of mass area again.
I finished basic Mission Planning. It shows up when a mission should start.
Started with the UI stuff for the Missions. When a mission starts, it shows the Crew and the required Mission Resources behind the storages. The Storage UI has been also optimized for that usage.
Also it should now not possible anymore to move the person to some other task by the player, while the person is on the mission. I also created a Icon for the Shuttle Missions. I also make it possible to choose the ShuttleBay as target, when the person is in the crew. This was a bit difficult, due to till now it was always a work assigned, as worker or user, now also another task type is possible.
I also finished to adapt the dismantle process. Its now removing the shuttle also and the UI can deal with it.
The UI for the Missions are also prepared. From the Design it's already a bit prepared for the next planets and further features. I will implement it in 2 steps. This iteration it will be just 1 simple "Drill for resources" Mission available. I plan for the next iteration to do more missions, so that players need to explore first in the orbit of the moon with a newly created scanner over the moon, to detect places. I plan to do that random. I will preadd some locations, with different type and amount of resources. For this steps, the resources like steel will be directly harvested, till i finish a refinary in one of the next iterations, to process ore.
I plan also to add different resource-strategies, like minimum, normal, more than enough, to gain more resources per run. Maybe also increasing success chanche, or increase people injured/diing chanches.
All of that will be done in the next iterations. For this iteration, it will be simple with 1 preknown location, 1 mission and 1 resoruce strategy1 to test the basic implementation.
While trying to make the person metabolism stop when they are on the mission, i figured out, that it would be easier to not abuse the workers for it and directly do a assign mission crew separate from the work. This would also more like in real world, where the crew is assigned for each mission different.
For now, the UI for it appears in the building, later it will be moved to the mission-choosing popup to assign it first.
It depends now also on the mission, how many persons are needed for the crew. Later i will add there also special needs, like engeneer skills. If a person has an assigned mission, it's forced to go to the mission, to make sure they not doing not urgent tasks. I also hide them, when the mission is starting and block several other things they would do.
In the late morning i started to check some bug reports from a player. Turns out, the Maintenance Module throws an Exception, when the target building gets dismantled. This causes several fails afterwards.
I started with the mission workflow and animation. For the workflow, i devided in in seperate parts like the Dock. After starting the mission, the boxes are used to fill the ship. So its directly removed from the box. If the box is empty its showing red as usual and waiting for a new box. The crew for the Shuttle i implemented as Workers of the Building for now. I plan to change that later, so for each mission the persons can be choosen and they will leave the work.
I also had an error report with chineese system settings. Seems Unity fails here while calculating the height of a element... They have a fix in the new version, but everything feels like a big mess there. Tons of things to do to migrate to it, and the clickthrough is "fixed", so my complete effect system would not work anymore. They also didn't provide a way to reenable this function... This is css basic function is needed for the kind of effects and overlays i have. Till that version it was possible to add multiple layers where the clickthrough was working, by just not using the effect layers event.
Besides that also a ton of other errors appears and they have a 5page migration guide with tons of text.... Seems i need to wait till that version gets out of beta and hope its getting better... Downgrading...
I started to plan the Task for the missons. It would be a similar aproach than the dock, where several steps are next to each other. I added a single storage of boxes, that is used to equip the ship when a mission is choosen. It can just store 1 of each box, to have more space to walk inside of the bay. I think also 1 is enough, depending on the mission it will use just partial boxes. Its than just transported into the ship. The gained resources from a mission will be in a general storage inside of the ship and needs to be emptied like at the dock.
I also got more error reports from Melodie, that i fixed most of them today. The Color of the Gas-Boxes were wrong and some namings were missleading. I also found the problem that persons were not finish eating due to their waterstorage is full. Thanks a lot
I created some test for the detected bugs from the playtests and fixed some of them. To make it easier to use the uploaded savegames in the report, i created a "Load By Url" including credentials for the server. Its downloading it at start and loading the scene, so i just need to place the ID of the error to see the game.
I fixed a lot of bugs reported by Melodie and Hokay, including storage filters were sometimes not working, maintenance priorities were wrong, duplicated shown container users and a better view for them. Thanks for the long testing
To make it easier to see that a resource of a building belongs to the ship (like energy or air-values) i added the ship icon in front.
Players complained also about the different units. The current way is to use the time to get a readable number. So instead of 0.0001kg/s its changing it to kg/d. Problem with that is, that the player see some values in perDay, and some perHour. This makes it hard to calculate with the values. So i had the idea to change all to /d and just change the weight value instead. So the player see 5g/d or 5kg/d instead. This should make it easy to calculate the needs.
Many players reported power outage very early in the game, in or close after the tutorial. I couldn't change the generators oxygen usage, to keep the physics. No more energy in the methane and it just needs the oxygen for the chemical reaction. To still let him not fail so fast, i increased the boxsize of the oxygen to 250kg. The CO2 boxsize is also increased.
Also watched and discussed with playtesters and figured out several improvements and some bugs i will fix now before continuing with the moon missions. They suggested also a tube system and adding a termal control, what i also planned in the first place but skipped a year ago. After the latest refactorings to the internal resource simulation, maybe its now easy to implement.
I had an idea to srink down the shuttle bay, so its now using 2x2 tiles in the normal area, 2x2 in the air lock and 2x2 at the catching arm. Another 5-6 tiles i will block for flying. I guess i have to update the planning mode to just allow the drop in the circle, till now, just a fix 0° (and 180°) is supported.
I improved also the design of the ship, and i'm happy with it so far. Next step will be adding some details, textures and all of that. I guess i also need to add animation to the hangar doors, or maybe i will just add them without animation and plan more animation for the next iteration. I also want to add some animation for unfolding the solar panels and the mass balancer anyway.
I also did more fixes for things the testers mentioned in the morning. One was the wrong model for the Walkways, that i also found some days ago.
I started to design the shuttle bay. To make it possible to land without stopping spinning, it will only be possible to build it in one direction. It needs a lot of space in x direction, so the shuttle can prepare for the dock easy. Starting is always easy, landing not
The shuttle will have space for 2-4 crew members and undefined cargo. I plan to not do boxes here, due to limited space in the ship. It will be designed with an open cargo space, where the crew will unload it when landed. I designed as compact as possible, with small wings to be able to land on planets with atmosphere.
The Shuttle Bay will be used to repair the shuttle, so they need tools and iron garbage, as the maintenance center. I'm not yet sure, how to store the resources, the shuttle needs for the missions. Current idea: Its requesting by itself to special storages and the load invisible (crew member inside of the ship?)
It will have a air lock at the front and a catching arm to be able to land easier. When the ship is rotating, the ship will just move at the height of the arm. (In game, the arm will be bended like the ship.
I added a tutorial for finishing the maintenance to make it more smooth and teach the player the target button of a Task. I also a small verify fix, due to outdated checks related to the new construction-module process a few iterations ago
The BuildingOverlay (condition) is now disabled during a choose action, to make it easier visible.
After that part was done, it was time for a new release, to bring the easier startup to the players.
Till now, the details popups were just visible at the Selection panel. Due to the resent changes it was also useful to show them somewhere else like at the Event Panels at the upper right. To deal with that, i restructured the architecture of them so they can now also shown as tooltips everywhere in the ui. For the Selection Panels its like before, due to its a nicer ui, and its posisble to show multiple (e.g. for resource connections).
I added an EventPanel when a person have a serious problem. A lot of testers complained, they didn't know why people dying. To help with that and deal with that situations better, i added now an simulation stopping event when a person has that kind of problem. This happens, when the person run out of water, nutrition or oxygen. Its also shown directly in the panel as a icon with tooltip in front of the person.
When everything breaks down, players didn't know why buildings are not working. I added now also a "No Power" Icon for that. The general one was removed, due to its very complicated to detect if its realy a problem. For this special case now its easy, so i added it.
Timewarping till something is repaired was using the default task timewarp. Problem with that one is, that its stopping, when the worker stops working. To fix that, i did something similar than for the construction timewarp, so its now warping till the target of the work changed.
To know, what players did to get to specific situations, i added more logging. Its also sent also with the F11 report or bug reports.
In the morning i finished the german translation with the new I18n updater. Took a lot of effort but i hope its the only big work. For now, just updates to that are needed.
I also checked for the problem of many playtesters that the humidity goes high very fast, resulting in a lost game. Turns out, the humidity goes bad due to the fast degenerating of the Lifesupport module. It was setup to 30d to make it inefficient, but results in a 22d to humidity increasing at the start of the game. That causes several building damages that new players cannot deal with. So I increased it by x4 to 120d, so the first 2 months it should not be a problem there.
Due to the second language, i needed a mechanism to update it easier. The import from the translator killed a lot of polishings, so i added an updater for it. Its checking if the text has been changed, before updating it.
I improved also the TextToSpeech by adding these values also to it, so its now easy to see what is spoken by the english language. I also finished the updater for the text and the speech. It will check all fields and ask for each dif the user and provedes a suggestion via google translate.
Till now, the intro was done with a timeline. But due to the new speech, it needed precice timings of the text. Due to i plan to translate it to different languages, it should also adapt to that. I tried around with the timeline, but it was way too complicated, so i decided to throw it away and do it completely new with a more programatic aproach. Its now messuring the speech and time it perfect to the video and the events.
I also improved the sound volumes to have a better balance and added a default ambiance sound as envelupo also suggested, to keep a more general loudness for the ambience.
Till now, the intro was done with a timeline. But due to the new speech, it needed precice timings of the text. Due to i plan to translate it to different languages, it should also adapt to that. I tried around with the timeline, but it was way too complicated, so i decided to throw it away and do it completely new with a more programatic aproach. Its now messuring the speech and time it perfect to the video and the events.
Big thanks to envelupo for the help with the english texts in the game. I worked also half of the day to adapt that to the game and renew all the speech.
I continued with the Speech creation also for the achievements and improved the speech creation widget, to detect the correct speeker from the context. I set for all consultants a specific speeker.
I also swaped the problem with the overlay icon, to make the problem more obvious. I asked the community for the oppinion
I also hide more elements at the startup to make the start screen even more easier. Now the Problem overlay panel and the shortcuts are also hidden.
After that i worked on the tutorials. I got feedback, that the camera tutorial is needed, so i added a simple tutorial for it to the start. I also start the tutorial now directly and simplified the init.plan text. Its starting by showing the tutorial window and hint to skip here.
I tried again to add the text to speech and this time it seems working. After several hours trying to add the google api, its not finaly working to call it via the unity editor. I added it for all tutorials and for the intro. Its just a click on the button in the Editor and it calls the google API, download and store the mp3 file. I needed to adjust the timings for the intro a bit to make it fit to the times but the rest worked pretty streight forward.
At the end of the iteration, i added also the reason to the panel where people get unconscious.
Than i did the next update video and the next release. Feeling a bit sick, so not so much today.
The problem with line breaks is still there. Its not relayouting well. I researched again and found another possible fix that seems working well now. I also found a unity-ticket fixed, so hopefully at the next version (hope for it soon), the problem could be gone.
I also added a red border around the ship resources, to highlight problems there.
I refactoed the special events, created by the simulation. I moved out the UI and all logic from the manager and have one generic and individual customizable ones. At start i added a more details description to the "Energy depleted" panel, so its directly showing inefficient energy producers, or producers that have problems. I hope with that data, its easier visible, how to solve it. I skipped the idea to add a help there, due to its to individual in most of the cases. I also make it red for the major ones and yellow for the ones to take care.
I added an short achievement for showing the energy usage, and improved several other tutorials. I also improved the workflow for the walkway, to not get stuck there anymore. Its skipping the "place" step, when there is already one build. I added also the option for tooltip spawning left/right from the bottom, to have the storage visible in the problem.train.
I also found a problem on the current efficiency marker, that was not updated.
At one of my tests, i found, that the construction sites get resources without a finished railway. Turns out they connecting through unfinished construction storages, due to some strange things happening. I made the construction storages now also "unfinished" hand updated the path finding algorithm to deal with it.
I added support for info and warning panels to my RichText and improved the style for it, to make it more obvious. I updated all helps to the new system, now just using 1 Help Text for each element.
The construction times of all buildings have been increased min x2 to balance a bit the new removed infrastructure.
I added also a highlight animation, when a person warning appears, so players can detect that faster.
At all playtest for now, players couldn't figure out the problems so good, so i added also a red border for the working storage, if it has a problem (out-full or in-empty), to see faster where the problem is.
Another problem players had was, that they tried stop the planning via esc but they didn't want. Now the first Esc button is clearing the current selection. If nothing is selected, its showing another confirm popup. Is this poup open, another Esc will unplan everything.
In the morning, i finished the last parts of the infrastructure removing. Everything looks fine so far. Over 100 automated tests were adapted (of total 480)
Afterwards, i worked on the Maintanence module and adapted also the model of the construction module, due to its need less storages now. I choose a long building, to have a bit difference in the shape of the buildings. In further iterations its planned to have also "big" versions of the buildings with higher workercount and better efficiency. A good idea of a player was also to have requirements for lvl2 buildings, that needs more specialized parts. For now thats are not needed but i added it to my future feature list .
I continued with throwing out the infrastructure related stuff from the game. Removing all that done and polished work makes a bit sad, but also happy to remove so much complexity
I could finish the big changes today and also added a basic Maintenance Module and adapted all tutorials to the new gameplay. Just small stuff is missing, to finish this big change. I already moved the Moon missions to the next sprint, to focus now on more help and other polishings.
Yesterday i had an idea to make the building more convinient. After watching some playtest sessions i had the feeling, that most players struggling most at the constructions. To see why a building could not be build it takes not very intuitive selection of the grid. Keeping the infrastructure module and the construction module working at the same time seems over complicated (at least for the start).
The grid and railway system was one of the first things implemented 1.5 years ago and the game went to a direction, where now all buildings are connected to walkways, and all walkways have a grid and a railway below. More railways were not needed also in my playtests.
The idea is now to just combine the gridstructures and railways into the buidings above and remove the infrastructure module. Instead i will create a separate maintainance module, that is built at the start. I will leave all logic with the layers in for now and just change the configs of the buildings.
Changing the configs and the main challange to add the railway to the walkway went easier than expected. After that change, over 100 tests failed. This was expected, due to close to all test scenarios are wrong now . It took the whole rest of the day to fix one problem after another but everything very streight forward.
At the end of the day, 2 major tasks missing: Updating the simulation to give better problems and updating the tutorials achievement storyline.
In the morning, i got help for the discord Server from Brightlight to setup some bots and we changed the structure of the channels to be more game-related.
I also got a report from a mac user. After a bit configuration, it finaly worked.
After the update yesterday, i recieved an error report, due to i missed checking the starting popup for new players. I did a short hotfix for that (also to try out the regular hotfix procedure) what worked close to be perfect. It looked the game is crashing, when compiled with a new unity version, but setted up with the old one...
I started to improve the Steam capsule and first needed to fix the scene, due to a lot of changes in the astronomics. For now, i did 2 improvements, added a frame around to make it more visible, and added the new moon to the top.
In the morning, i fixed the last tests and released the new version.
I updated unity and all packages to the newest versions and started with the translation to german. The import/export from the last iteration helped a lot, and google translate did a very good job. Just some translations needed to be adapted.
I started with the Help Content, and found that i need to do some syntax support instead of creating several monobehaviours. I tried something and it worked very easy, so i decided to implement some simple standard syntax for it. I choose markdown, like in my wiki, due to its very easy to implement. The UI Toolkit already supports bold and italic, so i just converted that. For the others, i changed my I18nLabel to a visualElement, creating subelements, to create seperate elements for headlines and lists.
I started to create the update video for the release, planned for tomorrow. I also found it a nice idea, to add an animation, when a new element is getting visible, so the player have a chanche to see it. Due to the nice api, i just needed 1 line of code for that
Today, i added the basics for another helping system. Besides the new Tutorial and the help in the achievements, i added a "?"-Button to the bottom right. This will open a popup with different sections for new players. There are some basic controls like camera and more advanced topics in. Its reusing the interactive help system from the tutorial and the achievements. After enabling, the "?"-Button will turn into a "Stop help" button where the player can cancel it if he wants. Next step is to add some content to it.
I added the moon model to the astronomy. I also changed the spinning direction of the ship, so its in the more relaistic orbit. The moon is the preparation for the next iteration, where i plan to add the moon missions. Due to the tutorial improvement, it took 2 weeks longer to get to there, but i hope the new tutorial is worth it.
I changed the way the editor-name of the entity is set, so i use the gameobject now to set an additional value. This should make it possible to read also savegames from players. Before it was just loading with the names, when it was saved in the editor.
I also added, that the Resources in the Overview are also shown, when there is an input-storage, that awaiting that resource. It was a bit bad, that e.g. steel was not shown, when there is no steel, but several construction sites awaiting it. During that implementation, i converted the algorithm to a job, so its now running on another thread, so its not impact the performance anymore.
I also added the last missing output storage to the construction module model and adapted the animation for it.
Than i worked on the reliablity of the error popup. I give him a separate UiDocument with priority to make sure, its can be shown in allways. It can also show now in scenes without an UiDocument. Before it just searched for an existing one and added it on it. Due to some recent improvements of Unities UiToolkit, its now possible with the new more reliable architecture.
I found a big performance issue, when the game is minimized. It looks like the schedule.execute of the UiFramework is not executed, but the normal unity update works normal. This caused a stacking up of the execute methods in one of my elements... Internal in unity, was a list.contains using 99% of the performance.
I improved some buttons and fixed some minor issues with the new Tutorial and Achievement Flow. Also fixed some issues with the new effect layer, moved more stuff on it, separate the Esc-Menu and Error reports.
I worked more on the tutorials and added the mouse-key-icon for the actions, to make it faster to detect what to do. I think it also looks nicer now . Hope the tutorial is so far good enough. I will do a final test at the end of the iteration to double check it with a bit distance.
I played around with some spell checking websites, to improve the checks. Till now, i just had a dictionary check. The webpages also have some grammar and way better checks than the simple one i used inside of unity. Due to they can not analyse a json and would kill the keys of the translation, i added a simple export / export format, so i can export all data use that in the apps and import the corrected version afterwards.
I added a new System, that deals with hidden Elements. All VisualElements have now the possibility to be hidden related to an Type, e.g. "element.HideElementType(Type.Energy)". This should prevent overwelming the player with too much not yet needed information. I also added support ho hide buildings.
To prevent annoying experienced players too much, these Types can be enabled in the tutorials or all together in the in-game options. Its NOT an Tech-Tree, its just to help new players to learn the game easier.
Than i changed the achievements, so they start to appear after the tutorials are done, to not give too much tasks to the player in that time. I also start to redo the flow a bit and leading more to the first buildings by adding a gridstructure, walkway achievement with railway explains.
I used the gameStartedVersion from the Achievement system to check for highscores also for the metadata of the savegames. With that its possible to improve the Load Dialog. Most of the Bug reports from playtesters were related to loading old games. When they were started and saved, they were marked as "current version" in the loading dialog. Now, its marked as "yellow" and the started version is shown in the metadata. I also forgot to add the "old version" warning to the Continue button, what maybe caused that some players didn't see that warning.
I also disable all systems while loading the game. Due to i load a game async since a few iterations, some systems could cause some warnings while loading, due to the entities are not fully initialized. I did this generic, and not just for the effected system, to prevent these kind of problems in the future also.
Also a new playtester tested and couldn't continue with the tutorials. He was stuck after starting the dismantle. He was a bit frustrated. No idea why he didn't start the next timewarp tutorial, that should have shown up. To prevent that i maybe autostart the helps for the tutorials. The first highlight should highlight the tutorial intro.
I fixed the last bugs, found in some tests and did the next release, with just a part of what i planned. Due to that big problem yesterday, where i also couldn't do a simple hotfix, due to unity updates and way too much related problems, its now a release of the current state. It includes the new Achievement-Helping and the refactored Help system of the Tutorial.
It also includes bugfixes of an error with dead persons, and other strange behaviors, when they get unconcious and sleepy.
I got another bug report from someone. After analysing, it seems its related due to a loaded game from 0.55.0. Maybe he used the continue button, so no warning for bugs are shown.
I thaught about that and added a bunch of tickets, to make savegames more stable in the future.
When trying to load it, i figured also some more bugs in savegames, when its stored and loaded in different cultures. So all values were completely broken, due to c# stored it with a dot at the player, and here used comma for that, so instead of 0.1000000000 it was 100000000 and way to high... C# has a realy unintuitive bad architecture for storing and parsing strings...
A help icon was added to the Achievement Panel, so the player can also start the mini-tutorial when he closed the achievement-intro. This help button is also auto-resetting, so it can be redone as often the player needs it. The other ones keep the state, so he can continue where he were. Not sure if i should auto-reset all help buttons, might not so good for the tutorial, when a part is already done.
After something i tried, i found out, that the save/load mechanism is broken. The save/load test was not covering the sunsystem :\ so i needed to revert the default branch on steam to the old version. It took the whole day to figure out one bug in that system after another, all related to the new ecs astronomic sunsystems i created at the end of last iteration. I improved the automated test and in the end, i redo the companion creation completely and it looks now working. A bit sad, that the savegames will stay broken. Sry for that
Due to i fixed a lot of things already in this iteration with the simulation, and now the saveload, i plan to do a normal release instead of a hotfix.
I found and fixed some issues related to the report. First, the server just accepted 255 chars for the comment, than it was added to wrong layers and this multiple times... Also the feedback couldn't create the screenshot correct in the new Unity version.
After that i started to refactor the Tutorial Helping System to create a general "Help System". I plan to also use that for the Achievements, e.g. when the Environment Submodule is started. It should behave similar than the tutorial. Maybe its a good idea, to convert most of the advanced Tutorials to Achievements. I will keep the basic starting one, to make sure, the basics are done.
I finished migrating it to the new Help System. All Achievements are migrated, and i could finish an example for the environment H²O module. The player has the choise to get the Task better explained by an Interaction, that is similar than the one in the Tutorial.
The last 2 days i migrated the Astronomic calculations to the ECS System, to make it work easier than before and have the lights also in ECS. This meight help increasing the graphics later. This is also the preparation for the Moon missions, planned to be implemented this month.
I planned the next iteration and did a new release with the new interactive tutorial, hope that its now easier to catch up and players play a bit longer
I also did another Release with the new Interactive Tutorial.
I worked also on the Animation Paths Debug. It was not respecting the world-rotation, leading to wrong positioning in the editor. Due to the last code-quality updates, it was now easy to add that.
After the Release i also updated to some new packages and saw that the new 2021 unity version has some interesting improvements for UDP rendering, so i updated it to that. Besides an error with rpc calls without content, it went fine so far.
Afterwards, i checked some wired error logs and found some issues with persons and air. One was, that a died person was still in the container users, so using o², so the 0²value could go below 0. Others were that the person not fall asleep, even the value was 0. This just happened, when its already at 0 and get unconcious. Also some other problems with active metabolism, even if it shouldn't be. All in all it seems fixed now.
I played around with the Steam Achievements and it looks pretty easy to use with the framework i choose. I added some basic achievements for a finished grid and winning the game. More will come later from time to time, this should be enough for now, due to i will focus more on gameplay and new content now.
The last days, i finished the new tutorial. It looks way more interactive and way easier to follow, hope the players also like it same as me
To make this work, it was way harder than the old one, due to it needs to react on e.g. "Unselect" and other things that can happen. I hope i catched most of the special cases.
I also added some Highlights to the Consultants, to move the players attention to that place, if something happens like a tutorial part is finished or a achievement is done.
I started to change to a new Tutorial approach. It will now show in the first line the task, and below a short description. Below is a big "Help me" Button. When the player press that button, the old steps appear dirctly next to the buttons he need to press with short explains and hints. After he did the step, its showing the next one, till its done.
I hope, this makes it way easier to know, what the player should do.
I needed to redo the effect panel again, due to it seems just the lowes ui-documents layers getting some of the events and all "Click" events were broken. Others were working fine, like mouseUp, but behaved very buggy. After changing to another aproach it worked as before.
I had an idea how to calculate the boundingBox of an entity and its now also higlighting it with the rectangle element.
After that was done, i started with the highlight effect. I added them for the Tasks on the top right and for appearing consultant tabs. I wanted to have it over ~half of the screen, so its pretty obvious for the player that something happened there. At the consultant-tabs (round icons) i discovered a unity problem that they aleays using just 5 lines for a border radius, what looks very very ugly when scaling that over half of the screen. Turns out: Its hardcoded... So i just make it smaller to not use an more ugly workaround using circle images.
I also played around with my astronomics calculation, to refactor them to ECS Systems. As expected its very hard to do and will took more time. I already have the Rotation and a simple Orbit done so far.
I improved the Video endings, thanks to a tip of envelupo from subrow. I added a fading to the company logo and let the music fade out also, to have a nicer ending.
During the implementation, i played around with making some VisualElements clickthrough, and i found a solution with using separate PanelSettings. That was the major blocker for UI Effects I refactored the current System, to make use of the new Effect layers to try it out in a bigger scale and prepare for the usage.
I also added Credit Costs for the Supply Ship. The player for now is starting with 1 mio credits, so it should be way more than enough. I will see how much the players are using till the end of the game to adjust it a bit. I plan to add some additional credits for fulfilled achievements or other static events, e.g. the war on earth goes well. Its also planned to separate the Supply Rockets from the Docks, so the credits can be used for buy more supplyships in further iterations. He can than decide to go with just 1 ship with more supply over time, or faster and more often supply.
I also highlight all ResourceBoxes, when hover over the ResourceOverview Icon. This should make it easier for the player to find the boxes when searching for it.
![2021-06-30_generationship_-highlight_all_resourceboxes.jpg](/blog/2021-06-30_generationship-_highlight_all_resourceboxes.jpg = 600x)
To assign the workers easier to buildings, its now possible to just click on an empty worker slot, and a popup is showing up where the player can choose one. Persons already working in the building are grayed out. This gets even more valuable, when the persons getting skills like "engineer" what effects the work efficiency (planned for later).
In the morning, i finished the I18N of the ResourceOverview Tooltip and fixed the construction icon.
Afterwards, i removed the maximum docking time from the supplyship. The player can keep it in space as long as he wants now, with the disadvantage, not to get more supply, due to the ship is not available. I plan to restructure the "ship" at the next iteration, so they are not related to a special dock anymore. The player should than be able to buy more supply ships with credits, using one or more docks. I also added an "Undock" Button, what just causes to throw out all resourceboxes, to make it start again.
Than i make a small test and everything looked fine, so i did a release. Including Video rendering, build, Upload, News Articles to several pages and social media it took ~1h in total.
Than i fixed some bugs with the animations at throwout. They didn't respect the storages Next time, causing all boxes colliding while animated, and throw out all in the supplyship looked as 1 box.
I also found a simple way to fix an very old issue (GEN-765 ~1 year old) to make the Infrastructures usable in the "on the way" state, when they leave the infrastructure module. Now they still shown at the construction site and are still clickable there.
Started with more bugfixes, forcing the tooltip in the window and add resource wrapping for construction-storages. I also try to analyse some exceptions from the testers. I couldn't reproduce or figure out a reason that the dead persons are still using air of the ship, but there were other errors with some wrong scheduled Tasks, moving the time back, that meight cause that. I added some warnings so i meight figure it out in the next iteration. Hope i got that bug at my own playtests to debug it better
In the afternoon, i did the Resource Overview Tooltip. I got a feedback that its hard to find the resources, and don't know, how much e.g. Steel is missing for the constructions. So i had the idea to add the tooltip for "Steel", showing all storages. Its also including the construction sites and general storages, if they have some.
Fixed some small bugs related to construction storage connection and click sounds. I also checked for another case while renaming, that the tooltip is shown and could not be removed on bad timings. Reason was, that unity even on hidden elements still have a big world-bounds... So i needed to check that by myself also...
I finished the renaming of persons and buildings. With a simple Click on the name, the player can rename them. I found also a bad thing of the unity FixStrings, it seems "ö" is taking 2 bytes, so the UTF8MaxLengthByte is not giving the maximum characters but i found a solution.
In the morning, i just added the german translation to the steam page.
I also played around with the new FixedStrings of Unity and it finally seems working fine now, so i can implement the entity-naming in easy way directly using the Entities. I finished the first part today implementing the internal systems and using the new Name in several places (# indicates the new name).
I reuse the UnderConstruction Timewarp behavior now also for the timewarp in the construction building. Before it stopped when no worker is in, now its continuing till its done.
I also fixed another timewarp issue, that it was jumping too far when resources get unloaded from the supplyship.
I also fixed some camera jumping issue with the new zoom to mouse feature.
Due to the feedback yesterday i added the UnderConstruction problems also to the Overlay like Work Problems.
I also played around with the steam cloud save, and it seems working pretty easy. I added it to the playtest and the real game.
I implemented the two storage options from yesterday with some tests.
Yesterday, i approved more Playtest players and already got 2 good feedbacks. If i understand it correct, both wanted some better "resources overview details". i had an idea for that, so i might add some popups for the Resource Overview Resources at the bottom right. Hovering over them will show a popup with all storages, the resource is used, so it should be easy visible, how much to order from earth, or what is short.
Also both had trouble with Problems of the construction lots. I will add the problem overlays also for the construction, so its easier visible, that e.g. Resources are missing.
Another very good idea was to show a Popup when clicking on an empty slot at the worker-list. Opening a popup showing all possible persons. This will be very good when in later stages the person specialization will be added.
I fixed that the selection and highlighting was enabled during the intro. Also to see how much power is realy used, the consumed and produced delta values have been added to the UI. With that, it should be easier visible if new power plants are needed. I also added it for the other Air-Values.
I also added the UI for the Storage Settings. I moved the sort icon a bit down and placed the storage options there. If more are coming, maybe i will replace it with a popup later, but for now, its just 1 possible option.
For Input storages, there is an "Request partial if empty", that makes it possible to request also not finished boxes from other output storages. Before they were hold in the storage, till they are full, to prevent hundrets of small boxes. Maybe this option will get default in further releases.
For Output storages, it happened often, that resources, that are not useful for the player yet (e.g. due to not build recycling buildings) that the storages were running full of e.g. IronGarbage. The player needed to throw them out by hand, or move it to a "Garbage" storage, to throw them out there by hand. The new option should make it possible, that when there is no space in the outputs, and the storage running full, the boxes are thrown out automatically.
The last days, just worked on my internal infrastructure. No much progress on the game
In the morning, i analysed a bug added in this iteration. The SelectionMesh was flickering on higher zoom levels. After analysing everything seems correct. I end up in deep debugging and tryouts in the Unity Renderer and after several tries i found its about a RenderBounds was a bit smaller. I already added it, but it seemed the new used Unity Utility was overwriting it. I have no idea why this causes the flickering, overwriting it with the old value after the utils function fixed it...
After this was fixed, i did also a release.
Not done so much today, just the update video and a playtest, where i figured out a strange flickering on the selection. It seems it just came in this iteration, need to analyse it first, before i release
I used the already created SpecialEvent System some iterations ago to create a simple Person History Bar. Its updating live, showing different colors for "Work", "Use Service", "Idle" and others in different colors. Via mouse hover the type and the duration can be inspected. The Walking times are also included, but due to small times not visible. I plan to add also a summary below it, sum up the times to make it easier to see problems.
More detailed values, like separate sleep from eating is planned for further iterations.
I found also another bug in the timewarp calculations and redo all the setup for the different times.
The ConstructionStorages to request for Building Resources or pushing out the Dismantled resoruces was used as build as normal storages with connections. This had several problems. Once initialized with a constructionStorage, its not reacting on changes anymore. The storage was also flooded with many connections. The build Priority could not be handled and much more.
To improve that, i changed the behavior of the constructionStorages instead. The Storage for constructions have now a separate connection for "Building lots" checking for it. This means, it can be prioritized as normal, without handling every building lot.
It causes big changes in all parts of storage-handling, so it took a while to fix all of it.
I wondered, that it looks a bit dark in the compiled version, seems there are some Entity-Renderers missing.. Even if adding them by hand, it wasn't working as the original converted GameObjects. I figured out a way, calling a utils of unity instead. I also do that now when loading a game, so it looks fine now.
To make the development faster, i decided to create a Cheat Window to create Buildings. Before, i used a special scene with several buildings in it, but the loading time was too long, and i didn't need everything all the time. By clicking the button, it creates the new building, connected grid, railways and walkways to it. It also creates Resources and Workers if the building needs some, so its directly working.
I did another playtest with the new Timewarp algorithm, and its way faster pace. Players need to be way more careful using the timewarp, but i just took 1:15h for completing the game now. I just used 2 docking ports. I think about removing that multiple rocket-ports feature and replace it with a "buy another rocket" after the credits are added. It seems not longer needed, and with just 1 rocket, players needs to be way more careful. Otherwise they can use the 2. dock as a "backup" if they forgot something.
I found a lot to improve again, and could reproduce the "legend not disappearing" bug
One of the Feedback from the Playtest was, that the rocket is missing a texture. When i created them, it was not realy needed to make them mroe detail. But due to the supplyrocket is one of the highlights in the Trailer, i felt i should improve them a bit I also enahnced the starting Rocket of the Intro too, even its just 1 time visible.
I also added some animated Gifs for the Long Description. Below i added a short text to make it look nicer.
I also started to make it easier to skip tutorials for the development. It was not easy, due to the tutorial needs e.g. the infrastructure module. I added a simple scritpt, that follows the tasks of the tutorial and e.g. start dismantle, wait for finish and so on.
After that i fixed the problem tutorials. Its now highlighting just the first not done step, but ALL highlights at the same time, what should makes it easier to see whats relevant.
I also fixed an Exception from a player, when going to mainmenu when the overlay is active.
After some refactorings of the Achievement-Task UI i added the consultant also to the UI, to make it nicer.
Finlized the new Timewarp algorithm and make the start and end more smooth. Also prevent hard cuts in several situations.
I tried to increase the game pace and found the main part is waiting for the timewarps. So i worked on the TimeWarp speed, due to it was a bit unstable. The ending minute looked very long. After some tests, it was proven, that it took 9s to warp 1d forward, but most of it in the last minute. I improved it, so its now way smoother and consistent. In the algorithm, the smoothness of the time is a fix value, so i might add it later to a configurable value of the player. It was also FPS dependent, what makes it even harder to work with it. I completely redo the algorithm end end up with the following times.
I also fixed a bug with Linux. Seemed unity using by default an OpenGL driver, but the Hybrid Renderer of Unity i'm using is just supporting Vulcan... So all entities that were rendered were not visible...
I also added zoom to MousePosition from the overview, so its easier to jump to different places of the ship.
I got some feedback, where players couldn't figure out something, or something was not working. They had no easy way to report that feedback. I enhanced the ErrorHandler-Ui to be also used for that purpose, changed a bit the text and buttons. Its than also sending the savegame, log and a screenshot, so its easier to see problems, even without exceptions.
I add it to F11 as a shortcut and hinted that at the startup.
Today there was a last boost on the Playtest registrations. It ends up with 112 Players awaiting access. I prepared everything in the morning, published and tried the playtest. At 14:00 I could give access to the first 10 players through steam. I'll wait till tomorrow, due to the timezone delay, for some results.
After some discussions about the game name, i realised, that "Generationship" is missleading in englisch. They thaught its some strange wording joke like "relationship". So i changed it to "Generation Ship". It should also help to get found by the steam search and will reduce the missunderstanding problems.
I also updated the short description in the steam store to:
You're the AI, responsible for a generation ship, mankind's last hope for survival. Build efficient raw material cycles and help your crew to survive a long journey in a realistic real-time simulation and find a new home for the human race.
I found that the old capsule was very dark, so i tried to improve it. I also wanted to improve the earth a long time, due to the earth is on the logo, i did this first. I completely created a new one, using shaders and an atmosphere. Added some highlights and checking the main-light of the scene to identify where to add the city lights.
Afterwards, i go to the logos, and changed the sun-position and earth rotation, to look nicer. I also increased the text-lights and make them aligned to all others (News-Header, Trailer, Update-Video and so on). Seems there was duplicate lights, what made it so lightblue
I added a "noProblem" Space for the UnderConstruction, to prevent flickering the whole window, when its on highspeed and waiting for finishing. I also added a Header for the efficiency popup.
I did another short playtest without big findings. Maybe i got blind for the problems or its getting fine
In the morning i fixed several bugs, that i found in the playtest yesterday evening. I also found a problem pressing esc in the intro, due to there is no ui for the errorhandler initialized, but game is paused. I also found, that the highlighter was FPS dependent, due to i used the performance improved method to update it.
I fixed some small bugs like that the deflate wall will wait the correct time, till all resources are moved out.
I also created an Anouncement for the Steam Playtest for next Firday.
I worked more on the update video and found a flickering at the start of a scene, where its not finaly initialized. So i created a small script, turning the camera off for the first screen. I also implemented the Highlighter a bit different, so the rounding problems are gone, causing horizontal flickerings.
I worked on the Steam playtest, so i added a startup popup for the first time, its launched with steam, to ask for permission for the metrics. If its not launched through steam, i notice the player and show a big steam button. For now, the game is still working without it, e.g. for itch.io downloads. I also added a detection if the player has already bought the game or just playtesting it.
I added a new Tutorial marker for the "Where". Its now not needed anymore to hover over the "where" buttons. Its identifying what the user needs to click, and highlights it in the UI. The Entities are also highlighted different, if they are there.
I also prepared the next update video and fixed the issue with the overlay is behind the gray-out on highlights. It was hard to solve, but i now render the overlay to a separate texture, and adding it to another document. Rendering the new ui documents to a texture was not working well.
I worked on the Doors of the Walkway. It seemed, they were in a wrong position, so i fixed that. Afterwards, i added a Sabatier Module, to generate methane on the ship.
After ~1 week on Steam, we hit the 200 wishlists. I did a bit of reasearch, and it didn't sound so bad so far Also get ~35 interested people in the playTest queue. Hope the Iteration will finish soon, so i can release the first playtest version.
Today, some consultant tabs are added. Before, if multiple consultans wanted to talk to the player at the same time, they just queue up. Now they get a tab at the side, so the player is able to switch to them.
Changed the Domain to generationship.scifanstudios.com to remove the short version from everywhere. I added a forward, so the old domains will still be fine.
I also merged the containerUsers if there are too many, to make bigger ships possible.
After i run in an exception, i found, the Error-Reporting not nice enough, so i decided to restructure it to have it way more clean. All details are hidden and can be opened with one click. The Button is also increased and green now, to hint the user to press it.
I fixed some bugs, where the aging not recreated after the building is maintained and started with the air leaking. If a building get low condition, the building is marked as "leaking" and a fixed amount of air is removed from the ship.
I fixed a problem when a building is at condition=0 and the humidity is still pushing the condition <0%. I also make the ResourceContainers updating faster.
A new Overlay was added, to see fast what buildings needs attention. It colorize the buildings to visualize the condition. If the condition is low, the building will not work not so effective anymore. This happens over time, and in high humidity envirionments and can be fixed by maintainance.
I added it to the overlay section.
Thank i thaught to improve them, so multiple ones are shown way nicer.
I removed the overlays from the GameEnd screenshots and busy a bit with marketing the steam page. I hope i can continue working on new Features at the weekend.
I also created the DeveloperPage, so people can follow early.
Today, the SteamPage was published with Wishlist and Registering for the Playtest.
I also updated the Trailer to the new version.
I got some feedback from steam for the shop and game, so i needed to update the screenshots. To easy update them, if something changes in the game, i created a generator for it.
Create steam logos with "Playtest" addition. It worked very fast, it worth it to build the generator for it
Some logos with very widescreen looked very bad at the sides. To fix that, i make now a 1:1 picture and crop the part out of it, now its not stretched anymore.
I also added some auto-generations for Images for the Steam Update Page. Again different formats...
I make the GameSettings (by player) overwritable by script, so e.g. the test is setup the burst mode off and consistency-checks to full. The videoScenes are also using it e.g. for setting the new ShortcutArea-Visible to false, to make the videos looks cleaner.
After that i worked on the trailer, to make the first 10s better (Steams default suggestion). I think, the expanding and the timewarp part is most likely the main points of the game for now, so i removed the "Start small" part and replaced it throug a rough 3s story. the next 5s showing the building process, first fast infrastructure and dismantle, than some buildings to be dropped. After that (in the last second moving to the overview perspective to show the timewarp. Than continuing as before, just with more camera closeups (suggested from a reddit user).
My plan is to create some screenshots while doing that, like for the update videos, to make the title-page pictures also consistent and up to date.
I added a simple spellchecker to my application, to be able to see fast if something is spelled wrong. I added it to my I18N window, and corrected some text.
Than i tried to integrate the steamworks api to the game. It worked pretty well, and i tried different ones to find a good one to use. I could show the users playername and avatar and have access to the steamId. I couldn't access steams highscore system yet, maybe due to its not completely published yet and valve needs to approve, so i will try it later.
I finished with the basic setup for steam, the integration in my CI, added a Snapshot branch to test, and setup all other stuff what is needed.
I also needed to create several kinds of logos, so i improved my logo creation, and played a lot around with it. Ending up in 25 generated Logos with some improvements.
I finished the next playtest and made it in ~2h playtime. 1 time the crew died, and had always something to do with unconnected storages and the handling of it at the start. Was fun, but i also found some ui-update problems that i fixed it and published it.
After publishing the hotfix i found, that my highscore is recorded, and it seems not very good, to have that for every version, so i will change the behavior to ignore the Patch version instead, so the highscore will be recorded for 0.52, not for 0.52.1.
I improved the TimeWarp for Docks, so they timewarp till the ship is docked or ready to launch on earth. It was a bit anoying to press this so often, till the storage of the supplyship is available. It should be way more convinient now.
There were some strange exceptions from unity, due to the buildpipeline i'm using. They want to force to use the build menu instead, what is not working well for me. Good that the bug area could be disabled so i added my own Default World Creator.
Due to the removed autoconnection i needed to add another tutorial, connecting the storage with the infrastructure-steel storage.
I did also another playtest and due to the removed autoconnecting storages, way more things happened, but the game stopped well and the red problem overlays hinted well to the problems.
The release is also done, and close before, we reached the 100 downloads
I did some work for the statistics and a lot of tiny fixes and improvements. Afterwards i added a system, that is counting the seconds that the game was played. It just counts, when the game is not on pause, so it should also deal pause of the player (if he is not letting it run). I also added it to the metadata of the savegame and added it to the Loading UI.
I refactored the core part of the Tutorial System again, to prepare for the new consultant system. I also migrated the Achievement System to the new aproach and added a Leader Consultant that leads through the Achievements in a small story. I tried to let him act like a non-technical person talking to an AI. The Achievement is now in multiple steps. 1. Waiting for the requirements, than adding the Consultant and await the playerinput. After its done, there will be another Finish consultant talk.
I also added already, that just 1 consultant is appearing at once. More will be queued and shown, when the other one is done. Maybe i add some kind of "Tabs" in later iterations, to switch between them.
I played also with some statistics, maybe i add selveral entries in the database, to show, when some events happened. Its interesting in realtime, in playtime and gametime. Still don't know how to do that right.
I also improved the Itch Page, to have less but more precice text to awake interrest.
After some feedback about the Performance, i found, that the burst and consistency options were set to detect problems. I could increase the speed of a game at the highscore from 2h/s to up to 7d/s, so 100x faster.
Due to the game looks very stable now, i decided to turn it to performance on default. I found a way to detect crashes by setting a hidden settings value at startup and mark the game as running. If a game is stopped at a regular quit, it will set this value back.
I also improved the timewarp for the constructions (or general for specialEvents). Its now using the old estimation if its >1h/s, so its not pushing the time hard back to 1h/s. When the worker come back.
Also some small improvements of tooltips and the rotation of the persons, so they rotate now on the spot instead of on the way to the goal, what makes it not look so broken.
I improved the splashscreen, by using another image.
I fixed selveral bugs, one of it was, that an overlay icon was overlapping. The real reson was, that the icons were 180° wrong rotated.
I started moving the Needs to t he top of the container, to have them same layouted as the selected Building Window, and started to refactore the code of that part.
While playing, i found it very difficult to deal with steel, due to its directly used for buildings, but i wanted it to be used for the grids. The first step to deal with that is to separate the dock-storage connections to be more specific to the storages. If this kind of connections are created, a popup will appear to setup what resources should be transfered. The "all" option was the default. Next steps are to remove the auto-assignment of the storages.
To have still a kind of autoassign, i added a "ConstructionStorage" availability for the General Storages. If this is turned on, the storage can be autoassigned to new building-lots like before. By default this is off, but for the starting storage its turned on to not confuse the new players too much.
In the morning, i did some improvements to make the development easier and fixed some small bugs. I also changed the Admin area to a dark-mode, so i can work easier in the night with it
I started to migrate the other Choose Actions, so all choose actions are now using the new system including a visual feedback whats changing. This is also a preparation for the more detailed storage-connection setup.
I did another playtest and fixed more issues, now it should be more stable. I also found 5 more small layouting issues with the new font-size and added tooltips to the keys of the shortcut-keys, due to the font-size is now reduced a lot. After all that fixes, i did an release, and did another playtest. ~1.5h and 8month ingame time without big findings now, added highscore and left a sample feedback. All seems fine now.
I fixed some last issues i found with loading games and other findings. And did another playtest, but due to the new fontsize i found several things in the ui, to adapt again that i fixed, so i moved the release to another time.
Tooltips now recognise the best display by themselfs. They open where more space is and also setting the maxSize so the tooltipText is not getting out of the screen.
I removed the GridStructure Missing problem. It was not needed anymore, due to its autodropped.
Also some text has been added to the Choose-Overlay, so its now visible what the targetAction will be on a click.
I added a Scene when the player closes the Game, to ask for some feedback. I decided to just add a plain textfield, with some prefilled questions. So he can enter any feedback. Its stored on the server and send to a private discord channel.
I also added support for Linux and MacOS. At the tries last year, it wasn't working well, but now it seems fine so far.
Due to some feedback, i increased the fontsize from unity default 12 to 16, and relayouted several things, that break.
I finished the highscore system and used another camera to create the screenshot. I also added some text to it to make it more likely, that the player share it around, to get more players.
I checked the api of Twitter and FB, but it seems very hard to share an image. I found some ways, but they took more time than i want to spend for it now. I will do that not in further iterations.
Today, i worked on the main part of this Iteration: Highscore. I improved the Serverside to support that, and added a upload part to the endscreen, when all achievements are fulfilled. Due to a lot of changes in the game, it will not be fair comparing all versions, but also not to clear the highscore every iteration. So the highscore counts for each version of the game, and i added a "all time" favourite to it, so the #1 of each version is shown always. Its also uploading a screenshot of the game, to show the result.
Its shown in
It was a lot of work, so tomorrow is polishing, creating a better screenshot and some other polishings in the ui. The basic part should work now
I refactored this iteration also the Main UI inside of the Game to the new System. Removing Unities Ui-Binder classes and do them in code.
Also hide the dismantle-storage ui when its not useful anymore. Also removed highlight on dismantle stage, due to it has no sense anymore.
I also fixed the size of the infrastructure Module, it was 10cm too large, so it was visible throught the inflatable walls.
Another fix was that the confirm button is not srinking anymore, when it changes to the "confirm" text.
At the end of the day, i created a method to rename the I18nKeys. Key are auto-generated by Fields of Classes, so when renaming the class, it kills the connection to the json files. To prevent that, i added a [I18nRename("NEWNAME")] Property. So the workflow is adding this with the new name, letting unity create refresh, than rename the class and remove the annotation again. It will create a duplicate key to it, so its save to remove it afterwards.
I finished the new tutorial. It looks way easier to get through and trust the players more, to learn in game, instead of explaining everything. It just leads where to click. Feels more like you are an AI. I needed ~10min to go through (before ~30min) so the player get way faster to the playing of the game.
I did another release with the new Tutorial.
The tutorial i created was a bit long and text-driven. I improved the Tutorial System and added several features, to also split up the text and the steps a bit, and make some parts more easy to create. I removed tons of text and replaced by a more "programmer to AI" talking, with short clear commands, what to do. I hope, that the user will figure the other stuff out with trying, and just lead them through the parts and explain the most not so obvious things. The Layout is not perfect yet, this i will do tomorrow. Than fixing some last bugs i found and next release can be done.
I just wanted to add more links to the menu, to add the new communities and itch page, but it ends up in a big refactoring. I removed the UI-Builder and did it via code. To have a spearate style, i changed all buttons in the page to USS Styles, to be able to overwrite them. Its new way more clean, and i don't need the buggy ui-builder anymore, that just create problems.
I also added a +1min Button. In my playtest, it was a bit annoying, when moving boxes and than wanted to wait for the boxes to arrive. This takes maxbe 30s, what is too slow for realtime, and +1h is too fast. Normal gamespeed is also hard to wait precice, so a +1min button solve that. They are also bigger, to hit them more easy, due to the new style.
I started to fix a bug, that the CO2 Filter didn't stop, after the Optimum was reached, and added Tests for it.
Than i started with the main goal of this iteration: to add some Achievements. But i needed to improve the Achievement system first. For now, it was just working for single achievement items and int-values, but i want a "Grow Food", where 3 buildingTypes needs to be added. Also the API is a bit outdated, so i updated that first a bit. Than i added the planned achievements to have a plan for the player what to target next.
I also did a bit balancing. Reduced the size of the H2O Barrels, due to it was hard with just 1box a month to fill up the buildings. All needed to be done by hand, due to they took forever to get full. Also the Generator needs now way more Fuel. Its now using ~1 boxes methan a day, if running at 100%.
I also fixed more bugs, that the dismantle problems are not shown correct. It was just implemented for the construction stages. It was fast to add it also to the dismantle process.
Played around with the Highlighter and tried to find a bug, that the highlight was not disappearing. It seems unity fires the mouseOver, but not the mouseMove, when the game is not focused...
I also fixed the problem with too big savegames in later stages. Reduced the size from 40000entries by removing old ones when its saved, so i shrink the savegame down from 800kb to 100kb (already gzip json)
The first tutorial steps are merged together. Due to the feedback, these were way too long, showing boring ui stuff and basic controls. There is now just 1 camera and 1 selection tutorial left instead of earlier 7 ones.
Also fixed a problem that the timewarp was not stopping at the correct time. It was just a missing event.
Another point from a tester was, that he started a timewarp for a building process, and he didn't got, that there is no GridStructure connected. So i added the problem also big to the timewarp for constructions, so its more obvious.
I found also the problem for the bounce effect of the camera, when using the camera overflow and fixed it.
I had a strange loading error with the game. It just appears in the Runtime, what makes it very complicated. After a long debug session it turns out, that the visualEffect was created at the wrong scene. In the editor, it was created at scene -1, not at the active scene, so it was never destroyed... I found, that loading the 1.5h game took a long time, to figure out why, i added some logging to the loading procedure to the screen, so its not freezing the game. This needed other changes to make the game load properly.
I also got some feedback via reddit what leads to 2 new features. A Problem label below the timewarp, to add one more hint to problems and a better skip of the first tutorials, to not make experienced players not ignore the whole one. Thanks u/Kenji_03
I created a new Update Video and updated the Trailer to the new smaller satelite and fixed some timings and camera-transitions. Creating the update video took <1h. The ones, i did in another video software before took ~4h, and they also look nicer, so it seems it worth the effort of the in game video-framework
I also added a border to the highlight, so its better visible, when its moving over the dark space background.
I also created a reddit account an posted the video on /indiegames
While creating the tutorial, i found several outdated things in the ui, that i fixed today. I also use the real used airvolume and mass values for the ui now, so it should be correct now.
I also added more tooltips and added the feature, that the popup can appear over the element, instead of below.
The rendering of the current amount is also improved, due to the excrements is very low and was shown as 0.0kg. If thats the case now gram is used.
The Multi Selection Panel is also updated, so multiple works are shown better. The related things are now moved to a seperated box, so its clear what relates to which work
I also did another playtest, took ~ 1.5h, and ~9 Months of gametime, to get the ship rotating. I had a crew of 8 people and a basic food supply setup already. No big bugs or crashes again. I started to do the tutorial completely, continuing building lifesupport and foodsupply than the mass balancers.
I finished the new Tutorial, leading the player through 46 interactive steps.
I changed the animationclip from walking to idle, when no animationPath is set. Later maybe i also add there some custom animations, but that seems not needed for the next stage of the game. To save some time this is moved to an iteration after the game is better playable, so i changed a bit the target of the iteration from animation and move more to tutorial and achievement. Due to there was the bigger change in the starting satellite, the tutorial needs to get an update anyway now
I also started to replan the tutorial. Due to there is no infrastructuremodule at the start anymore, its highly needed to do this in this interation also. I started by enhancing the Editor for it, to directly setup the I18n values at the correct places and removed the need for the stepname in the highlight, using the next higher component for it.
At the end of the day, i finished the first part of the new one. Hope to finish tomorrow.
I started to work on the Highlights, so its also working for animated meshes. It was a big effort to get into all needed details. Trying to force to render at front, adding the highlight to the shader as an optional value, resetup the URP rendering for it, and many other things. In the end, i get back to my original approach and use separate own draw calls for the selection, but copy the animation value from the entities and using a custom highlighting.
Adapted the Dock to the new GridSize.
The starting satelite is reduced to a smaller size, so the start is harder than before, and the size of the ship is not so big. The Air-Volume at start is reduced to more than half to ~600m³, so its less air in than before.
To do that, the InfrastructureModule and some walkways were removed. The InfrastructureCenter should be now the first building to build on start of a new game.
I improved also the AirVolume icon
I also added the min/max values for O2 and CO2 to the descriptiontext. Its directly showing the configuration values.
I also improved the Time-conversions, its now fine for the algorithm to show 0.5kg/d, and not converting it to 153kg/y, what makes it very wired to calculate back and forth. Maybe i need to make the timespan fix and vary the mass instead, would be happy about some feedback whats more convenient.
I added the ships finished mass and the airvolume of the building (including a tooltip) to the Build-Preview.
I refactored the ContainerEvents, the code goes more and more to that kind of concept, so the Resource Container Manager now take care about most of the needed events, and the events are way more precice. This makes the code more simple and performant, due to less useless updates are done and if something happens.
I added some tests for the new Update Mechanism of the Events, and found some specialcases, when its hit one of the eventvalues, and than causing a change due to some updates, its not updating it again.
I removed the AirVolume of the Gridstructures and also hide it in the UI, when the building didn't have air inside.
I balanced the O² Releaser, so it can add way more air to the ship, up to 1 box a day. In the tests with 4 persons, i needed 3-4 to fill up my ship faster, what was a bit a mess. Due to the releaser, just "opens a bottle" its was way too less. Due to in later stages, the O² releaser is not so needed anymore, due to the greenhouses, it can be fine just to have 1. Its aging also fast, so maybe its good to have 2 emergency ones for the player, if one breaks fast.
I added more gifs and created a small feature text with the gifs and updated the itch page. I also updated the https://generationship.scifanstudios.com to now link the current download button to itch.io . It can still be downloaded from our server by pressing the old-versions button, but due to limited bandwidth its moved to itch for now. I also added the twitter link and the trailer.
I fixed some small issues with selecting the person wasn't working with the new model anymore and did a release. I also did the first Update-Video since a long time, this time rendered by script in unity itself.
I also did a playtest, again without big erros . I found again a lot of improvements, that i planned for the next iteration. The main point of the next iteration will be animations, so improving the person and maybe other buildings. I also plan to adapt all other old buildings, that were out of date after the grid-size change.
I also started to build some animated gifs for the project pages and plan to update the homepage with similar content than the itch page, maybe link to there and just move the older downloads to our own server for now.
(Due to large content size, see discord, Twitter of the Games Page )
I added a consequence for high humidity values. If the humidity raising >70% all buildings are damaged way faster. Its increasing till 100% humidity, up to 100% damage in 1 week. Its also shown in the ui of the buildings condition box.
I also worked more on the Update Video system and improved the Highlighter i used for the Tutorial. Its now animated and fading a bit to the target, so the eye of the player is forced a bit to that direction, and he don't need to search so much. Its also supporting to fade between elements or back to full, so in the update-video its showing smoothly different things in a row.
I did the base for the update video.
While trying to add the feature for the Person consequences, when the o2 and co2 is bad, i redo the design of the headline of a building. I moved the calculation to a popup and adapted the style a bit to the repair icon.
I added unconscious to the persons. If the air goes too bad, they loose unconscious and cannot do anything, till the air is good again. Due to the big ship and less people, this state this takes a lot of time. More problematic will be the H²O value.
I added some nicer Persons and tried around with Animations. It was not easy, due to i'm using 100% ECS System of Unity, so just a shader with baked animations is possible. I can simply switch between multiple baked animations, in the same shader, and the baking is done at starttime
It took a bit time, but its now also working with Timescale and runtime changed animations
I wanted to build a simulator for the Persons, but i had an easier and better idea. I make the needs changable in the editor for the persons. This makes it easier possible to force situations for debugging, and live check the metric changes of them.
With that new editor, it was pretty easy to test and adjust the person idle behavior. The persons are idling now longer, this killed the performance in previous versions.
I also added a more random aging, so the buildings don't need to be maintained all at the same time.
I added some nicer Persons and tried around with Animations. It was not easy, due to i'm using 100% ECS System of Unity, so just a shader with baked animations is possible. I can simply switch between multiple baked animations, in the same shader, and the baking is done at starttime
I improved the calculation popup by adding some icons to it.
I also updated the Trailer a bit. Added camera effects and 2 more topics, to get more of the current state in. I also improved the Architecture for it a lot, so its prepared for the other Update videos.
I finished the basic part of the trailer today. I added some more support for easy creating it. Its all setup in a script file, where i can control the camera gamespeed, buildings and set the text to display. I will extend the trailer in the next iterations, and plan to do more at the end of the iteration, maybe a short iteration video. With the framework i build it should be fast.
I improved the UI at several parts, what i found a bit strange while playing. Namings, missing details, for the resource details.
I also added the N² Releaser, similar to the O² Releaser, that just pushes Nitrogen to the ships air.
I also started with an achitecture for a trailer. I setup a unity-scene, that could render the trailer using the unity-recording feature. It needed a bit tweeking, but its going forward. Still some timing things needs to be fixed, but the rough setup is done.
I played a bit around with the new Unity Recorder and found some APIs i could use well. After some unity bugs, that caused broken gifs (due to Timescale change seems not supported), i could make a my TestScene as a Recording Scene, to create several screenshots, gifs and videos with different camera-angles, aspect ratios and resolutions. Its now updating the games Icon and the splashscreen, that i have also improved a bit. I also updated all community icons and pictures to the new version. All in all it took a complete workingday for that, i hope it worth it
I also did another playtest, with ~1.5h playtime. In Game it was ~4months, where i could finish the Food-Production. I expanded a bit too fast, so the Pressure were ~.6Bar at the end. The Oxygen dropped very low and the Humidity goes to 100%. After the next iteration, where its planned to add some consequences to low oxygen and high humidity, i would have lost. Due to its a survival game, i think its going to a nice gameplay. There were no major bugs anymore, just some performance issues with idling persons dropping the max-speed to 4h/s down, due to they using servicebuildings without needs.
So i did another release and looking forward for the next iteration. The Release Process worked very well this time, including the new Wiki-Updater.
I added a new Building, that can absorb H²O out of the Ships air. The mechanic is similar, than the one in the lifesupport, just more capacity. I reused the basics of the CO² Filter Module, to do that as fast as possible for now
I also created a small script, that autoarange the Buildings in the Editor-Scene, to debug easier. It sorts it and checks the tile-size to create an even distance between them.
I added the AirVolume of the ship. I added for each building an estimated volume and added it to the simulation, so when new buildings are finished or dismantled, the volume will change, and the bar value will update. Also e.g. the N2 Releaser will start releasing more N2 to fill up the air pressure.
I added the effect of buildings to the conditions. I tried again to use the direct calculation algorithm of the efficiency, to show to the user, instead of doing a second calculation (that meight probably is wrong after updates). Last time i struggled with it, but this time it worked well. I planned to polish that in later iterations, like adding icons to it.
Today, i added the Maintenance Work. It works similar than the construction work. If a building reaches 80% Condition, its checking for possible maintainers. The maintainers also checking, if they can do something. I added it as a 2. work to the Construction Module, maybe they get a separate Building later.
I started with the main task in this iteration, the maintenance of buildings. First i added a building condition. I improved the ResourceContainers and just used a container for that, like for the health of persons. I continued adding a configurable damageOverTime "Aging" to the buildings, starting when the construction is finished. Now Buildings also have ResourceContainers showed in the headline on selection. Its sharing the same ui as the other resources, so a lot of data without much effort.
Today, i started with some small fixes and adapted the camera angle while zooming to the new smaller gridsize, so its more over the buildings, and not coming too early too flat. I thaught about a new Work Type for the Greenhouse, but i couldn't find an easy solution yet. Everything is very hard to setup, show to the player and implement, so its moved to further iterations for now.
I also readded the target marker for the gravity and also added some for the other air-values, so its more clear, where the optimum is.
I created a generator for a Wiki and setup a new Wiki for the game. Its automaticaly updated with a release and using the internal data. For this iteration, just some basics are added to try out if its working well. Its using a own written generator, generating markup files for wikijs, than pushing it to a git repo, where the page is in sync with.
This was a very early created ticket #260 (of now total 1333 Tickets).
I also added it to the CI System, so with the release button, it will generate the new wiki and update it on the server.
I also did another playtest with the new version, and it seems very stable and i didn't find much things to improve this time. I stuck on some bugs with the greenhouse, it seems the optimum resource stopping the work.
I did a big refactoring of the ResourceDetails panel. Its not static called anymore, due to from creation of it and now, i created a lot of more utils function, that makes it easier to do it without. I also refactored the general update mechanism and updated it.
It has a special view for the optimum resources. The others with a maximum will stay as a bar.
I improved also the layout, so its way more structured.
Additionally i added the users for resources that have that (like ships air or the energy)
Today, i got the monitoring working. Its using a TLS Secured WebsocketConnection to a nodeJs server, using OpenTSDB and Grafana for displaying it. Current its just showing the current opened games and a testing value. I will add some other statistics later, e.g. when in the game totorials are done or skipped, to see problems, or improve balancings by sending the amount of buildings, and when they are started to build. I will think about in further iterations. For now the basics are done
I also srink down the start satellite, due to the new airpressure changes, and support for multiple works in one building, it don't need to be so big anymore. The next srink step would be removing the infrastructure building, but than new players will not know how it works, so the tutorial needs to be updated at the same time.
I added more work icons for Power, Electroyse and Gas releasers.
I also improved the Overlay, so multiple problem icons are shown well. Also it looks now way better, when the aligning to cameras.
I also started to setup Grafana with OpenTSDB to monitor some statistics from the game.
I finished the Model for the Lifesupport Module today.
I kept improving the AirPressure UI and came to the conclution, that the unity Gradient implementation is very buggy, so i created my own one. I improved the API to create the colors by defining zones and improved the layout a bit.
Afterwards, i started to build the work for the new Balancers. The Logic before stopped, when the container reaches 100%. Due to e.g. the oxygen in the ships air has no maximum, it changes the logic a bit. The 100% value is now just the "Optimal" value to reach the target of ~22% Oxygen relative to all others. The Resources can now have an optimal mode, where they stop, when the optimal value is reached. If not, it continues producing the stuff.
I added the AirPressure feature and adapted a bit the simulation. Its still not working smooth, but i added today the UI for it, what took way longer than expected.
After i changed the metabolism, it was now needed to have a new building for drinking water. Due to this should be also done in the caffeteria, i created a 2. work there and adapted the simulations and UI to deal with it. I also improved the Choosing System, so future choosings with multiple different things in the entity can be implemented way faster.
The new System is now also more prepared for Performance optimizing, and the filtering can be done in jobs if needed.
I started to add the AirPreasure Feature and thaught about the Architecture, and what is needed to do it. I checked if the CO² consumption of the greenhouse is reasonable and found some science paper to it. It seems weed is consuming 1.3kg/year/m². Due to in our greenhouse its always "summer", i used ~100 days for the calculation, and end up in 2kg/day for my ~150m² greenhouse, what makes it support 2 persons. With the new work-mechanism of the greenhouse, that is planned it could produce 24h with 1 person, so 1 person can support ~4 other ones, what should be fine for now. I plan to add another kind of greenhouse later, that uses more power and a special co2 environment to grow plants faster.
To achieve the new AirPreasure system, i will try to improve the containers, so they can be "endless" size. The airpreasure of the ship is calculated by all "air"-containers, relative to the volume of the ship. Depending on that, in later iterations, the persons will loose health or be less efficient at high CO² levels.
At high 100% humidity, maybe i add some faster damaging of the buildings (also in further iterations).
The current system can just balance to 0 or 100% filling state, so i need a new kind of Work-Algorithm to reach a target state. Also till now, i just converted things, so i had in and out storages. Now, i will have a in/out storage, so similar like the generalStorage, but its used for a work.
All in all it seems way more work than i expected, but i hope it worth it
To have easier and correct calculation, i will change from custom "units" to "mol"mass of the SubResources, so it can be calculated more correct.
I fixed and improved a lot of small things, including ui updates, selecting the dock after a rocket is launched by the popup, mainmenu hover effects and removing the supplyship popup earlier.
I also worked on the Problem Icon Overlay, so the they are aligned with the camera now.
While checking why the crew needs ~5kg food a day, i found a nice paper of nasa, how much the astronauts in the ISS need. There are a lot of numbers close to as i need them for the game, so i started to play around with it and adapted my simulation. My time run out today, so i plan to finish it tomorrow. In short whats changed:
I tried also the itch App and found issues with the installs. So i checked a bit and it seems, the Windows Compress leading to a problem with folders without files. I also found that itch provides a CI tool for new releases and it looks pretty nice and easy so far.
I also did another playtest and it worked pretty well this time, no crashes, no big findings, more times, to had some stuff to react on and i found 10 small things to improve.
Due to a lot of downloads via itch.io i fixed the tutorial, so its not crashing and showing better positions for the buildings to drop and disabled very outdated ones. For now, i will not update the tutorials the new GamePlay mechanics and simulation, due to there will be still a lot of changes in the next time.
I checked a bit why in my editor the speed of the game is very low. I added the checkConsistency option also for every frame, when its turned off, so its not done all the time in the simulation, just once afterwards. This kills the precise tracking, but gains a lot of performance. In the editor it goes with burst up to 10d/s at the starting scene without lagging.
I also refactored the Release-Window, to work with the new ui system, and be separated from the Window, so it can be also called by commandline. For now, its not working via commandline, but i added a button, to do the release more automated.
At the last unity update, they showed that the profiler can be customized with own values now. So i decided to migrate from my old approach of using a customized third party monitoring editor-tool to the native unity profiler.
I added also a simple balancing tool, to see problems, and detected that to create food for 1 person, there were 2 persons needed to produce it. Its calculated with an working time per day and the gravity value, and shows, how long persons need to work for the needed resources. I balanced due to that for now.
I added a specialEvent for Energy depleted so the simulation. Due to the importance of the energy, there could bad things happen, when that is the case, so the player can setup to stop the timewarps when that happened. Another new Event will be fired, when new persons are arrived at the ship. I always forgot to assign them to a workingplace when they arrived, so now there is a popup. The Persons disapearing from it, when a workplace has been assigned.
While playing, i found, that the automatic update of the userActivty was overwriting the players choise. This was a bit anoying, due to the person keeps doing something else. I added a "force" mode, so the normal autoupdate will not be done. E.g. if the player force the person to work, the work will just be stopped, when there is a Problem like some needs are too low.
I started with a basic History System, and tried it with the PersonActivity. The first challenge, getting the data out of the simulation, without disturbing the performance, was already close to be solved before. I created a second System, that stores that data, so in later iterations, the UI can directly use it and show it to the player.
I improved the ChooseTargetButtons, to disable the button, if there are no possible choise. It was a bit confusing when clicking had no effect. Doing that i found the problem, why the infrastructure was not shown at targetselection.
I improved the highlight of the Actions, and the general Selecting mechanism. All related entities (e.g. customers or workers) are shown, when they move to or are in the building now.
I also turned back to the on/off button instead of the slider for those buildings, where it did not make sens, like SleepingQuarter.
After that i turned to blender and created the ElectrolysisModule, that can convert Water to H2 and O2, using electrical power.
I refactored more at the resource containers, due to there was some strange calculations, that maximum was smaller than the current value. The code of it shrunk down a lot and it looks way cleaner and more performant. Before i did a "clear" before every working update, and deal with just AddDelta calls. It was easier to build at the first place, and closer to the aproach before, but it leads to very complicated situations, scheduled a lot of updates and made testing very hard. The new structure keep track of the old data inside of the resourceContainer, so it knows who is doing what with it. With that consistency checks are way better and a lot of specialcases and scheduling could be removed.
In the evening, i had some other ideas for the problem with the release upload and tried some hours again to make it work, and sucessed with a small script, letting the IEnumerators run in Editor-Mode, that failed at my last try half a year ago. Now i can release again completely from unity, not using another upload tool
In the morning i had also some motivation to try again the CI system, and after several hours it seems working now for the basic example giving a source folder and recieving the packed build. I got it so far, that i could give my sources and the docker-container pushes out the build as a zip file. BUT it was not working... it seems the blender-files are not imported well. Due to this cost now way too much effort i stop this for now, and continue with the game development.
The classical problem: Floats are not precise enough... It was a big mess to deal with the delta values and efficiencies, due to the deltas are already very low values, the precision of float was already very close to it. This lead to very hard debugging and not precise values. I cleaned everything up there and changed the efficiency and delta calculations to double, to get the values way lower (from ~1e-9 to ~1e-20) and added more hard cuttings when 1e-16 is reached.
It was a lot of work, but it looks now way better, less scheduling, just updating the buildings, that needs it, and prepared for the "Priority" of resource usage/production, to automatically turn off/on buildings with a priority. For now, just "random" ones are turned on/off, the ones first in the userlist.
I found some Unity-Docker Container from unity itself, but it looks still very annoying to use, due to license issues and not well documented usage. But i made it to run a windows mono build inside of the container, that i can fill over my nas. A bit sad, that there is still manual work needed to activate the license. It ends up with "Display failed" on the Server, so i gave it up for the next time...
For the infrastructure, i reused the setTarget Method i created, and just enhanced it by the special resource, that is needed to build the infrastructure. So its also working now for the Infrastructure.
I also improved the UI for it, added an icon for the Target and the choose button, and moved the ProblemIcon to the Headline of the Work and add details to the tooltip for it, to prevent the UI jumping often on high speed or actions.
I also added special bounds for the selection of some buildings, due to the big boundingBox created by unity is sometimes not useful. E.g. at the Photovoltaic Panels, the boundingbox is extrem big, covering all tiles also above the solarPanel. I added a Component with an Custom Editor to edit them easy.
At the end of the day, i hit against some anoying simulation update problems again, so i made that part new again, getting it more simple.
After finishing most of the tickets of the iteration, i did another playtest and found just 1 bigger exception related to dismantle. The other playing was way nicer than before, so its going to a good direction, but still a long way to go. I just fall to 1 exception, related to the order of Systems again. The SelectionSystem was scheduling a change for an entity, that the taskmanager, that was running afterwards destroyed. The Unities CmdBuffer cannot deal with it, even if the change is just useless.
I also added the FuelCellModule, to have the first step of a "Battery". Later an Electrolytic is also coming, to gain H2 and O2 out of Water. I plan to do every Iteration at least 1 Building, so i don't break too long with blender
In the afternoon i did a bigger refactoring for the Construction Work. It went well and i could finish it without bigger problems. The goal is, that the construction building will keep the target, and not switching around. It will be also possible for the player to directly set the target Building, so he can better control, what he want to build next. This is additional to the priority, the construction priority will stay for the auto detection after a slot is finished.
I fixed a lot of bugs and improved the UI again. In the afternoon, i analysed a long time a bug with the selection. Due to the ship is rotating around itself, and around the earth, rotating very crazy in the scene, somewhere is a problem with the updating. I used the World-location of the entity, that seemed wrong. I end up in the order of the systems, and found the reason in the SunSystem update. But there was no good place to do that for now. Main problem is, that the sunsystem was copied from an old game of mine, where the Jobs system didn't exist yet. The migration is an effort, i will not take now, maybe later. I end up in recalculating the world-location in the selection, like i do in the update, and it worked well.
I thought a bit about the selections of building, and strugled with the ray intersection to the real boundingbox. I found an way easier way, just transforming the Ray to the local object space and try the intersection there. Due to i can use the bounds i could reuse the unity function for that.
I also fixed a lot of small issues and did the first playtest with the smaller gird. It felt way better, but needs some balance ajustments. I also think, the building selection is not good enough. Due to the smaller size, its way likely to miss the grid at 0 level. For clicking it should be similar like the persons, even if its more complicated to do, due to i cannot use the worldbounds for it.
I also added the working hours left for a construction, and added a summary line to the tooltip of the ship resources.
I released the new version and start with some updates and simulation changes.
After that i started with the big change of the iteration, the ship resources. Due to the current method to update was not so performant, i decided to refactor this to another aproach. It also allows to show the producers and consumers of E.g. Energy in the UI and maybe adds priority for producers. E.g. if you have 2 energy producers, the player can let one produce all the resources. It should be also way faster to update when something has changed, and prevent update loops.
The old approach was just a AddDelta Call from e.g. buildings. That ment, that they also need to remove the deltas when they not need it. It has to be exact and the ship just knew the current value. If the energy goes down, the ship find and update all possible energy producers, that may balance the detla to 0 again (same for consumers). The new aproach is, to save the single values also and the buildings can pass a maximum. E.g. The generator produces current 1kW, but max is 10kW. With the list of all current and maximum values, the ship logic can update specific buildings.
I also added some tooltips for the buildings, added the current efficiency to the tooltip of the table-details of the buildings, and other small stuff.
I fixed all the failing tests, due to that big refactoring and updated the I18N for the new Buildings. I also fixed alot of bugs found in the last playtest, 2 weeks ago, including the new slider, animation of the infrastructure, selection of persons, ui updates and more.
I played a bit around with the selection of the Buildings, but it was not so successful. Due to the rotating buildings, the bounds of unity are very large and overlapping, so always the wrong building was selected. Other ideas also failed
Today, i finished the last models, so i can continue with the other tasks again. For now, there are just 1 kind of each building, later i want to add "big" versions of them, but for now it should work to try playing with it.
I converted several other Models to fit to the new Grid and the new Storage-Architecture. I was close to finish the updates of the Models and GameObjects to the new grid today, hope i can finish the models tomorrow, to do more coding.
I also improved a bit the editor, to make it easier to update the models. It was a bit messy to deal with these 10 components, all in different order and without icons
With the Dock, i finished the remodeling of the Buildings, i needed to adapt the rest of the systems to the new gridsize. I found already a problem with the selection visualization and some animations, so this is the next task, before i finish the "just visual" buildings of the satellite. In total it was now ~13 models.
I thought a bit how to do the new Box-Positions. The old Animation System got very complex and hard to debug, due to its live calculated for the positions. I'm thinking to pre-calculate the inner building paths it for the persons and boxes, to make it also easier to debug. It could be done with special MonoBehaviors, creating the relative paths. Due to the last refactoring, it could be easy. It was easier than expected, due to the animation refactoring in the last iteration, so multiple storages can be setup now. I also improved the editor, so Problems are easier visible without starting the game. I also could quickly add the animation for the other buildings in a small amount of time
I created the new ConstructionModule and InfrastructureModule. Due to the new size, the old idea to build it rotated is not working anymore. I also finished the new simple storage building.
I finished also the 1x1 sized Buildings for the starting Satelite, that is the SleepingModule, ToiletModule and CanteenModule. Each space for 1 user.
The stacked storage outside were hiding a lot and looked bit ugly, due to the big size, so i make it more loose, a bit like the old storage model, to get a bit "air" in. I think it looks way better, i hope i didn't forget anything for now, and continue with the other "1x0.5" Modules like the Oxygenreleaser and CO2 Filter.
I also created the other similar Models, and make use of the new technique. It seems it works fine, i just needed ~1.5h to create the other 2 models from creating the blender File to game-ready and added GameObject.
I created the Generatormodul with the new approach, but it turns out, the ambient in the room did not fill my expectation, due to no baked light in the model (see "separate Object" Image). I tried another approach, with back to one big baked model again, reusing the data in the main blender file, this took way longer to bake and will create lower resolutions, but way nicer ambient.
In the Game, the generator was not really visible, so i decided to do it again more with the original approach with the generator outside.
I also created a stacked version for the BuildingStorages, to save some space for the simple modules. I added also different lights for in and out storages. Maybe i add an pipe system for the gas/liquid storages.
I started with a generic Module, that can be reused. The plan is to make just design the machines inside of the generic modules, so they can be reused fast and easy till better ones are created. I used the stacked storages, it can pack up to 4 storages (e.g. for the Generator just fine). When Storages are used, there is ~2.5m x 4.5m space for a machine or other things, that will be added in different models.
I started with some reusable parts for buildings. One is the storage System. I plan to make the resourceBoxes in each Building visible through glass or something similar. Its a small elevator for the boxes from the underground level of a building to the upper visible area. Usually buildings have 3 boxes in their in or out storage, so it has space for exactly this 3 boxes.
I finished the basic models for the small grid and rendered the textures for the game it and hooked it up together in the game. Here the new models. The Fundament has no texture yet, due to this will be just used as copy paste in the buildings, to fasten up creating new ones. It contains the correct holes and the walkway connection.
After playing around with the basic models, i decided, that a 5x5 meter grid is easier to deal with. So i started to change the Gridsize including the 2 basic infrastructure types, to see how it will look. After creating so many other models, it felt way easier to update and Redo the models in a good way. Here the new smaller Gridstructure with a railway.
I did another playtest and had some improvement ideas. It looked, there is not so much way to optimize for the player, and due to the big size of the Buildings, its very streight forward, what to drop where. Also due to the long buildingTimes of the big buildings, it was very clear to build as less walkways as possible. Also below every walkway, there has to be a railway, for the construction. Maybe this also needs to be changed in the future, so the builders could grab the resources from the storage and bring them there.
So i thaught a bit what can improve the building experience. I had a lot of ideas, the one with the most success chanche meight be reducing the gridsize. Due to the current size of 10x10, its very hard to structure the buildings better. I thaught about to reduce it to reduce it to 3x3, to have a btter control, but the walkways are already not too big and are current 4m width. Due to i have a flexible implementation for the grid, i can just reduce it to 4x4, without a big effort in the simulation. But it will take a big effort to update all the models, animation and gamedata
I planned a bit with the new idea, to prevent making special buidlings for the satelite, the start satelite will consist in reusable buildings. It contains all mandatory "small" buildings, that can be also builded by the player. In a 2. step, i will create also bigger and very big versions for it. The small versions regulary can be used by 1 person, and most of them are 1x1 tile (so now 4x4m) in size. Here a rough plan, how the satelite will look like.
I plan to prevent the underground connection of buildings, so all buildings will have underground layer connection, what also makes it easier. Also the constructions have now all setup gridConnections as mandatory instead of a single one is fine.
Its going to be a big change, so i will first think about if it worth it. I anyway planned to redo the buildings somewhen with my new knowlage, so maybe its a good time to focus on that. I plan to reuse more things, and hope, its getting faster. I need ~30 Tickets updating everything, that meight be take min 2 weeks more than planned.
I did another Playtest and found again a lot of improvements, and one bigger balancing problem. I fixed close to all findings today, here a small summary:
I found out, that the BuildingSpeed of the Constructions were way too slow. The constructionCenter tooks 2month to build with 2 workers, so i improved it again. The BuildTime is now for 1 worker and 100% efficiency. So the 1d means it took 24h with 1 worker in the normal ConstructionCenter with full gravity, so ~ 2.5 days gametime with a 10h working day. At the start of the game it will be x66% constructionEfficiency -30% gravity impact, so ~ 5days.
I also added the hint for the slower constructionModifier for the satelite modules to the UI.
I had some problems with the default Unity Slider when leaving the screen. There was no end of the capture when coming back, leads to a unwanted movement of it. I didn't find a quick fix for that. There was also a problem with matching the progressbar to the slider. The min and max points were not at the end of the VisualElement... Due to the big slider on the top was not so nice, i decided to implement an own slider. Its addable to any kind of VisualElement and is just an arrow on the top. The API is more or less similar than the Unity one but it behaves better when leaving the screen. Due to i did this kind of slider already in several other languages (gwt, js, unity-canvas and more) it was straight forward and fast to do that.
I also added an Overlay when the player goes to the ChooseTarget (like assign a workplace or transferring a resource). So its clear, what the player can do now.
I improved tooltips by making the timewarp-tooltips updating to the new states, before it was a fixed text. I also added the problem-text to the tooltip of the MultiSelection Table.
After dropping some buildings, it took a lot of clicks to redo the construction or prioritize multiple Items. So i decided to add the Cancel and Priority buttons also to the selection Table. So now the player can just select all buildings he wants to prioritize or cancel and click fast through.
I changed the usage of the Power, due to the starting power generator last till the end of my playtest, and just had 10% usage. I found that its a bit wired, that the used power depends on the efficiency. So i changed the usage of the power related to the TargetEfficiency set by the player. So if the player not need the complete greenhouse, he can adjust it to e.g. 50%, to just use 50% of the power.
To do that, i added a TargetEfficiency Slider to the UI instead of the On/Off Button.
After trying that way, it seems very strange, due to if the player adjusts the efficiency to the current efficiency due to gravity and workers, the energy was way less. So i changed it to use the efficiency calculated values. Instead i adjusted the power using of the buildings. For that, i adjusted the Construction buildings, so one worker in the modules work ~15% and in the new ones ~33% and the gravity effect is for both 30%.
I fixed a problem, that the need changing plus and minus markers were not visible for the small need-icons, and added support for changing the workers from the building itself with rightclick, due to it was a bit anoying, to always select the persons first, when changing their workingplace.
I also changed the size of the ResourceBoxes, due to i just had 1m space between the normal building-floor and the grid. This leads to problems with storing the boxes, causes a lot of ugly boxes in the middle of the buildings where it can be stored. Increasing this space ment increasing the walkways a lot, so i came to the idea, just reducing the size of the boxes, so they fit now easy in this space. Before the boxes were 1m height + 20cm carrier, now in total they are 90cm large.
I also baked the Carrier into the boxes, so they use less Entities and less renderings. I increased the Texture size for the boxes instead and improved the Texture bake, so they look nicer.
The greenhouse was very unbalanced, it created way too much oxygen, causing a very low efficiency, due to the air is already full. I changed the values so i'll try again in the next playtest.
Due to new thoughts, i readded the feature with multiple works. It was removed, due to too high complexity, but after several refactorings and cleanups, it was now ready to readd that feature again. I think its needed e.g. for the Recycling center, or for adding maintenance to the constructionCenter. I also thaught about merging the Infrastructure Module with the constructionCenter and make them way slower than the other ones. Maybe the workers will split up when both works are active.
I also created a way better skymap, that has not the problems at the side of the 6cube image.
After the next playtest, i improved several things in the UI. E.g. Hiding some SelectionDetails in ConstructionStage, showing the needed items of a construction instead of the current ones, readded the duration to the timewarp-buttons and overlays and several others.
I also added a ResourceOverview panel to the Top of the UI. In the playtest i found out, that i needed to check for the main resources all the time when setting up a supplyship. This causes always opening/closing the popups and clicking and checking a lot. Now its easy visible, even when the popup is open. It counts also partial Boxes and have a tooltip with the name of the resource.
I also added an algorithm for each Special-Event-Alert so they disappear automatically when its not useful anymore, e.g. when the Supplyship is already on the way back to earth, the "Arrived" Alert disappears.
I also did another playtest with the new release, with again a lot of new findings and improvements. I could play around 1.5h and it feels time running fast, what is a good sign . There were still some exceptions, but nothing, that blocked the further playing, so i could build till the greenhouse now, and around half a year gametime. It seems its on a good way, but still a long way to go
The Timewarp stop was not working so well, due to a lot of things could cancel the tasks, so i changed it a bit, to be able to warp to a specialEvent. This meight be userdefined or internal events like ActivityChanged. If this is registered, the deep simulation will be stopped when this happens. Due to it was a fixed end time for the algorigm, it needed to be changed. It looked very ugly when its after the estimation. Due to the complex simulation, its not possible to calculate the real endtime for most of the things. Due to the player e.g. wants to wait for the end of the construction, it needed to be changed. I'm using now the timespeed and lerp over it like at the gamespeed. It end up in a big refactoring, moving all the TimeWarp logic out, separate them into Time, Task and Event TimeWarps and get rid of the old code parts to make the TaskManager easy.
The Constructions can now also be timewarped. In case no builder is working on it, the speed will be reduced to 1h/s, till someone work on it again. This works also for other Timewarps, i hope its good usable and makes it more smooth to deal with time.
I refactored the Simulation Core, due to it got too large (~1000 LOC), so i splitted the task-logic out and merged a bit, to have a cleaner usage.
The consistency checks can be disabled now, so the simulation can run way faster (~x4) so in the editormode i can speed it up to 4d/s with the starting scene. In the final compiled version i couldn't touch the maximum even when fast warping a year. The +1Month button react instant
I also added an ignore Button for the SpecialEvents and an animation for the Tasks when they appear, to make it more obvious for the player, why the warp stopped.
I did another release and tried to update to the newest versions, but this time, it failes everywhere in the unity-packages. First the ui-package is not compatable with the new beta-unity-version, than the hybrid renderer not renders my shaders anymore, due to some problems with some internal shader graph problems. The old hybrid renderer is not compatible with the new entity system and so on... So i stay on the old (last month) versions for now.
I did a small playtest and it looked pretty stable for now. I found some small possible improvements and some bigger things. It seems the persons loosing a lot of health, and are too low to work after around 4 months. I plan to analyse the reason and improve that so they have better workflows. I found also some stuck situations for the persons, when all needs are ~20%, the tasks are so balanced, that the person is busy going from one facility to another. I plan to increase the metric of the current service. So this iteration, i will focus on that part.
I added more debugging for the Person-Activity, so it shows a statistic of what the person is doing. I found already, that 2h/d toilet is too much, and reduced it by 2
I added specialEvents deep to the simulation, so if something critical to the gameplay happened, the simulation can instant break to real time. All timewarp or time-accelerations are stopping and a alert will pop up. Later also some animations can be added to make it more nice. When the simulation should break can be configured in detail the options, so when something happened too often and the player wants to ignore it, he can just configure it.
When clicking on the alert, the effected persons or buildings are selected. I also fixed some bugs and added a special alert, that is not disappearing automatically when the person is destroyed.
I checked a bit for the performance of the game, due to in my playtest i came with some builings and 5 persons only to 2h/s gamespeed. I found that the sleeping causes a lot of updates, and due to the persons are not sleeping so long, it pushes the performance a lot. I also prevent creating and canceling not needed tasks and scheduled 2 tickets for the next iteration to increase the performance again. For now, also the Consistency checks are enabled in the release, so i decicded to add an option to disable it. I could also just disable it for the release easy, but this would be hard for found problems for now.
After fixing this, i could increase it from 2h/s to 2d/s, so ~24 times speedup.
I added a new Editor-window to see the current metric values for the Activity of the Person. This should help to debug way easier and add the features like the motivation in later iterations faster.
I fixed several problems at the animation of boxes and supplyship and make these systems easier to maintain. Also adapted the intro to the new camera-settins and starting satellite.
In the morning, i did quick tickets like dismantle have also a priority now, the selection is not selecting all buildings on the tile, when the mouse is not moved. I also increased the resource usage of the generaot, due to at the start of the satelite, its used just 20% of one box in 4 months. The dismangle time is now 10% of the construction time. I think about creating garbageIron boxes instead of reusable steel boxes, what would make it more realistic. There were also problems connecting and unconnecting 2 general storages that i fixed. There were also other small bugs for choosing targets i fixed. In total it was ~9 Tickets.
I also added a cheat button, to fasten the testing.
I fixed several findings from yesterday including a bigger problem with the energy production. Also the infrastructureBuilding didn't stop working, when the worker left. Also fixing some small problems like not updated icons in the selection-details or no mass was shown on loading a game.
I added a mechanism to use more autosaves. I rename the old autosaves to one number higher till it reaches the maximum (5 for now). I also hide the autosaves in the save dialog, so the players saves are visible at the top, to make it more convenient.
I also improved the animation of the Infrastructure, so its created 45° rotated. This makes it possible to build it in smaller space and the buildings could be smaller.
I could also add constructionTimes to be different for each building and added it to the UI, so bigger buildings took longer to build. It also works for infrastructure.
The front part of the satellite also got a bit refactoring, due to the connected Modules at the infrastructureModule were not good treatable. When dismantle the infrastructureModule, they were hanging around. It was needed to build grid and railway, to dismantle them. Due to the more compact infrastructure construction (the 45° rotation) it was now possible to shrink the infrastructureModule.
To make it prevent need to build 5 not needed GridStructures at the start, the infrastructure module has also an exit at the inner side of the satellite .
I could also make another playtest and found a lot of small things that can be improved and still some bugs with specific situations i fixed.
I make it possible to setup the construction priority also in early building states, e.g. when the grid is not there, to make it easier possible to set them, not waiting for the grid.
I also migrated the Save/Load Dialog to the new UI-Architecture to make the changes in the following iterations easier.
Due to some bugs in the Animation paths, i decided to rework on it, to make it easier configurable and also support more entrances per building. I found and fixed the main bug in it, where in some situations, the entrance value of the box was calculated wrong. I also updated all Buildings to work with the new configuration and added missing ones for all buildings.
I added some details for the multi-selection panel, so its shown the working-efficiency or the problem of the building, the storages, workers and customers, to get a quicker overview of the building, without clicking everything through.
I also searched for a place to show the player the resources that he gets back when he dismantle a building. I choose to add a Tooltip to the dismantle Button where this could be added.
I finished the simulation for consequences of low needs. The last part was, that a person is dying when the health reach 0. Now all are finished. I scheduled for the next iteration some more ui and interaction features for that, so the player will get noticed when something important happened. Also its planned to stop the time warping/highspeed when that happened, to prevent fast gameovers.
I changed also the behavior of the persons. Before, they prioritize work, whenever they could work. This leads to very low values, causing easy staving or other problems. I added the working activity to the other service-activities with a default metric. This could also be done by person, like a "motivation" value, defining how much the person wants to work. For now, its fixed. There was also a problem, where persons were staving, when sleeping. I also worked on that so its updated more frequent. Leading to if something is at 80% fulfilled, the activity will most probably stop now.
I started to add consequences for person needs, that reaches 0. If the excrements reaches 0, its directly set back to 1. Later the hygiene will set to the 0 and a "bad memory" will be added or something like this, increasing the rebellion and unhappiness. The excrement resources are just lost. Everything else would be too complicated now (cleaning, or adding this resource to shower).
Afterwards, i added a consequence for no food or water. If one of that is 0, the person-metabolism will stop, and the person looses health. For that i added health as a resourcecontainer like the other ones. If the metabolism stops, the health is reduced. If the health reaches 0, the person will die and is gone forever. In later iterations, i will add a clinic to increase the health again. Also other factors to the health are possible like radiation or diseases. Maybe age can also be a factor, that the health is reduced over time faster as older the person is. I also make the metabolism stop, when no oxygen or 100% CO2 is in the air of the ship.
I worked a bit on the Monitoring of the TaskManager i needed to fix some things in the component to make it work again and increased the speed in the editor a lot, from from ~50Tasks/s to ~360Tasks/s. Both without burst and with all consistency checks.
I also added some Resource and building descriptions to the Detail-Popups.
I also improved the Supply from earth. Due to the last balance updates, it was a bit wired, that the supplyship can hold ~250 boxes of oxygen, or ~80 steel boxes. Its just too big to carry for that small rocket, so i checked a bit the real values and added a size maximum. I used the Dragon 2 cargo as the values, so its now way less stuff that can be shipped with one fly to the ship.
I fixed some problems with the tooltips in the mainmenu, added help texts to some items in the options, and added a raw Building Details Popup. For now, its empty, i first need to figure out, what is important to see there, to not overload the ui.
I fixed the last findings from the last playtest and did another one. It looks way more stable than before and i found no more big bugs. So i published another release. In the next Iteration i will focus on more playability like rebalance the supplyship, adding consequences for persons when the values are hitting 0 and showing more infos to the new players e.g. at the selection area and detail-popups.
I changed the production lables on the working resources to show the actual usage/production instead of the maximum. It was a bit tricky to show it also correct for the service-buildings, due to there its calculated by the customers, i hope its easy understandable in the UI now
I also improved the resourcecontainer of the ship, so less tasks are created when something changes.
I also updated the Infrastructure Construction Center, so they also need some other resources over time (tools and energy). It also fixed the UI showing the needed steel by time, instead of per finished building.
I fixed some problems related to the game-loading mechanism. Till now, the current scene was reused, that leads to some problems with existing ui-elements and other potential issues. I changed it, so the current scene is completely destroyed and replaced by a new one, so it should be fine now.
I did some more playtests and fixed some major bugs related to the big migration updates. I did a new Release on the new server, what worked not so well. It seems the new Unity had some problems uploading it to my server. Using the API directly via swagger worked fine . I tried several things, but the DotNet API is horrible and just said it was canceled due to it was aborted.... No Details, no infos. All tips from the internet failed... So for now, manual upload the new Version 0.37.0
The last days i fixed some problems with consistency checks and improved them so they are running at more reasonable times after tasks, instead of more random positions. This goes very deep to the task-management and took a while. They also run more often, so its easier to debug. I also did other Codequality improvements before i started the next playtest. While doing that, some test failed due to other bugs in the simulation, so it helped to find them doing that
Till now, i created the person entities programaticly. I changed it to gameObjects, to have an easier code, due to in the next iterations, more person stuff is planned. Its also easier to change the resources and metabolism values. After a short tryout i found that some meshes were black, due to i updated to the new rendering engine. After some research and several tryouts, it turns out that there should be some ShaderProperties added to the entities...
I changed the internal weight of resources to G instead of KG. Its calculated for each atom included in the resource, so 1 unit atom was 1kg. It end up, that cookedFood, contained out of 25 atoms had a minimum weight of 25kg. I also split up the BrownWater from Excrements, to make toilets needs water. The metabolism of persons is also increased, due to i found that one person should need ~ 600g oxygen a day, and it was just at 200g in my simulation. I also split up cookedFood for the Person, so they now need Water and Nutrition. This should be more clear to the player. For now, both are reduced and added in canteen at the same speed.
I had big troubles with the lobs in postgres that andi did last year. After restore, most of them were down, and also the backup was already 13gb big, full of old releases. To do a backup with that size sounds very frustrating for now, so i decided to change it to a simple file-based system. With docker, i mounted that on the nas. Its also easier possible to move it easy to a cdn with that strategy, to be able to handle a huge amount of users for downloading later.
After so many infrastructure stuff, i hope i can get back to the game tomorrow.
The last 2 days i worked on the server-setup, had some issues with the docker swarm, that took a bit time. I migrated now everything to the new server. In total there are 25 container on 2 Servers running. One Raspberry Pi 4 and one bigger one. including monitoring tools, repository, ticket-management, CI Pipelines and all webpages. Also 6 container for my own inhouse stuff, not related to the game-development. I also get some backup-services for the databases work, but i need to test a bit more on them.
All is setup on 2 domains with in total 13 subdomains and routings.
Today, i fixed more bugs found in the last playtests, like some exceptions when transferring resources or other small things, that persons not leaving the supplyship. I also make the only-blocker tiles not part of the selection process, what was a bit strange, that at empty fields, the spinningengines were highlighted. I also speedup the editor a bit to be faster in development.
I also received the new Ram for my own server, that is now finaly working. I use a AsRock j5040-ITX Board with 16GB ram. I started to configure the stuff on it with my existing Docker-Swarm and try around with Jenkins and Docker.
Today i did some fixes for some building position problems with the grid connectors and refactored the popup-logic, due to the popups were not shown when get back to mainmenu and start a new game. I fixed it by moving it to the newer ui aproach. I also analysed a bit other problems i found and added some more tests.
The first year is over. One year i am working now on the game and got a good progress. Most of the Basic things and the gameplay and simulation mechanic for the alpha is finished, so next year i can focus more on the content and playability of the game. Means adding more content, a lot of play tests and polishings. My target is to have a good alpha end of the year in steam.
Last week i created a more detailed report what and played around with my infrastructure and monitoring, but most of it was more a vacation week.
The next big problem with the update was, that my custom drawings seemed not working. It seems the new Rendering version don't render just emissions, when the basecolor is transparent. So i needed to change all my overlay-materials to be black transparent. To prevent the Lightning, i turned all to 100% metal. So all are now complete black mirrors, that have a emission. Due to the Setting is adaptive transparent, the new rendering still renders them similar than before.
Another bug appears, when hiding elements. Till now, i just removed the RenderMesh component, so the Renderer System will not draw it. This leads to exceptions now, so i used the new DisableRendering Component instead. Due to this logic was just in 1 place in the game, it was easy.
It seemed running so far, excluding the tests. The one using the MouseCursor fails. After some analyzing, it turns out, the new UI system ignores the test-override, when the new input-system is attached. There is no way to overwrite it, when the package is attached.... So it seems i need also to do my own inputsystem. The new one of unity looks like a big mess for me. Static usages, listener, that can't be removed, heavy complex key-strokes, and a lot of other problems turns me already at the start of the year to build a simple own one. Unities one is extrem complex in the code structure (i analysed it a bit to figure out some bugs).
After removing it out of the code, it was still not working well. In the end, i found another way to simulate the mouse-events...
I tried to split up the Code in multiple assemblies to get faster compile cycles. It ends up, that i could not easy split it up. After splitting some of the code away, it turns out, that there are alot of fails with the generic i18n module
I'm now trying to update to the newest packages and unity versions also for the UI-Package and the Rendering Engine, that both had big problems the last time i tried. It seems some problems are still there. The big exceptions at the new Rendering-Engine seems gone, so i will try to upgrade.
First, the UI-Package send wrong MouseLeave commands, when resizing something in the UI. At the next MouseMove the MouseEnter was coming again. So if something in the UI Resizes and the user clicks a button, it will not detect, that the player is above a menu and handle it as a click in the space and deselect the things... I fixed that by adapting my current workaround for the Mouse-Overs to this new bug.
I did another playtest and figured out more improvements.
E.g. it was not so obvious that there are empty working-slots. I changed that by adding empty slots, like at the resource-storage, instead of using the not directly visible x/x text value.
I also figured out a gameplay problem with dismantle. If a person is stucked in a building, where the building in front is dismantling already, there is an exception. For now, i have no idea, what to do in this situation, due to there is no walkable neighbor for this person. One way is to prevent the user to dismantle that building.
I added a toggle for the visualization of the centerOfMass when clicking on the icon in the header and fixed a small bugs with unitys event-system. I also reduced the size of a cookedFood package and figured out, that i should use gram instead of kilogram for each unit. Due to cookedFood contains sugar and water, it already have 21 units, so minimum of a box is 21kg. But for not its not needed and i scheduled it for early next year.
I fixed the last bugs i found in the last playtest and started to design a new Tutorial with the new aspects of the game.
I fixed the last big issues i found for the new Meshgrid Splitter. And started with some Playtests. I found alot of small things, to improve but i created a new release first. So the next iteration till end of the year is planned to be a balancing and polishing sprint, to have a playable version for the end of the first development year.
For the next year, i plan to start with big infrastructure things like trying to updating to the unity-ui package (current i use a very early non-official preview with some own fixes and workarounds), increasing the compile time by e.g. splitting up the code in more modules and start with implementing the generated wiki.
I also setup my old laptop as a ubuntu server, to try and play a bit more with docker swarm and figured out how shared filesystems can work with it.
Summary of the Algorithm: The new Grid Splitter is splitting the models one of the axis. Another deformer will bend the points than to the ships circle, so all points will fit perfectly together. E.g. if one line goes from 1 to 3 in the ship, the middle of it should not be 2, it should be a bit lower, due to the circle ship. My deformer till now just moved 1 and 3 to the correct points, but the middle point is still not moved, due to i can just move real vertices. The new algorithm now is able to split this line to 1-2 and 2-3, so the point 2 can be moved, and we get a more circular view, without adding this point to the model by hand.
Today, i redo the main part of the algorithm to cut the triangles first into rectangles before cutting it into triangles again. With that strategy now, i don't have these very small triangles as before, and cutting in the biggest triangles possible. The biggest challenge was to get the face-directions right, due to its important if its a-b-c or a-c-b. Including the rectangles needed to be split correct into the corresponding triangles. I did some conversions of my models and fixed some last small issues, but now it seems working well. It was a big effort of ~10h, but now it seems working and all models should look perfect bend.
Till now, i created the models with manual splits, so it was a bit time consuming to cut all the models correct through all layers in the model. Also changes were not so easy possible. I refactored a lot the deform-algorithms and make them way simpler and enhanced them afterwards, so also new verticies can be added with the deformers. I created a first deformer that find triangles to cut, so afterwards, they can be bended nice around the ship. I started with just creating triangles, but it creates alot and still have problems. I have an idea for another solution, cutting it to rectangles first to make it easier and more error proven. Here an example of the current algorigm with a simple plane from today.
I recreated the showers building and added a new virtual hygiene resource for the persons. For now, it has no effect, the plan was, to reduce the efficiency of the worker in one of the next iterations, or effect the mood that effects the efficiency. The mood can effected by other things that could be added later, like fun or social values.
I also added the person-popup when hovering over the selection, to see more details of the person. I added a ticket to create that kind also for buildings in further iterations.
I added some icons of the Persons in the selection-details, so the player can see easier who is working where and where are problems. I also make the person-icon in the top clickable, to select all persons in the ship.
I thought about whats next and want to get faster to a playable version now. So i moved the Person-Skills planned in this iteration further behind, i think this is not a main part for the first step. Its more important to have missions to the moon to get water for balancing the centerofmass easier than launching it all from earth. So i changed this iteration to get a stable version and starting with balancing and the next iteration will be the missions. Afterwards some story can be added. Than a final polishing with tutorials, balancing and this kind of stuff.
Today, i added some moving paths inside of a building for persons. If the Building has a area configured, the persons will move around inside while e.g. working. This looks way nicer than before, where they just stand around in the middle of the room.
I fixed some issues with circling updates when 2 buildings effecting 2 different resources and reaching both bounds. I also checked for other ide bugs i found, so i can have a faster progress for the next features and performance optimizations.
I refactored the Working-Resource settings to have a separate ResourceProcessing Config for the Settings, to be able to reuse them for the Persons. I changed the hardcoded metabolism settings to easy changable configs, so its easy visible if there are problems with the calculations, and be able to ajust easier.
I fixed all the tests failing, due to the new models i created in the last week and clean up the code-coverage problems of unity. I created a release and start a new iteration. At the end of the next one, i'm trying to have a playable game again. The main topic of the next iteration are that, cleanups and starting with person skills.
I finished the modeling and importing of the new satelite to Unity. It took a bit longer, due to its actually 11 Buildings, creating textures mapping everything right and rendering 6 textures each.
Today, i worked on the new satelite. I improved a lot and tried a lot around. I found, that my original design of the walkways is a bit bad, due to a box with carrier is not fitting between the original walking area. This means that all default buildings with resource entrance from below need to deal with that and have a lot of special cases for the person-walking. It would be good to change all buidlings to a higher value, but this would mean, i need to rework all buildings
I started to think how to implement the new needs for the new satelite design and came to the conclusion, that its too complicated. I decided to just rethink the design and came to a brand new structure. The Docking needs a lot of space, due to the ramp to the supply ship. The infrastructure Center also needs 2 layers, so these buildings are outside now. In the middle part, default railways are used to move the boxes. The middle buildings are consistent, so persons can walk as in normal walkways. In the picture the infrastructure part of the satelite is visible, all buildings, that need resources have separate entrances, what makes the normal mechanisms reusable.
I added another model for the constructioncenter, that constructs buildings. I tried a to make the windows look nicer, by adding a small border to it. The Building still looks too simple, i will first try more stuff and techniques with each new building and plan to update all models at the end, so they look all with a similar style.
The new Satellite needs some changes to the Animation system, due to it has different doors and other special things needed for it. I started to improve the editor for it, to have a easier work.
I started to model the new Greenhouse Laboratory, that should create prepare earth. I researched again a bit what plants need and how to create fertilizer, and checked how these cycles are working. It seams there are several circles to deal with. There is a carbon, a nitrogen and a sulfur cycle. Due to this is the first step, i will just keep it simple and focus for now on the carbon. My big cycle will be
brownwater -> BioMass -> PreparedEarth -> RawVegie -> CookedFood
Due to the there is no more shower possibility in the sanitation facility, i migrated it to a toilet only building. I also renamed the sanitation-module of the satellite to toilet module.
I also added the change of the metabolism for different works. After some research i found, that while sleeping, the metabolism of the human body is reduced just by 15%, but for the game, this effect would be not enough to make a big difference. I implemented it and set it up for sleeping to -30% and e.g. for working +20% for now. With the resource containers, that feature was now very easy to add
While working with the need and testing it, it was a bit confusing, that the bodywaste need is shown with lowIsGood (so resource is good), so i changed it, so it looks the same in the need-icon as the others. In the details, the resource is still shown as a resource.
I started to make energy to a ship-resource. Till now, energy was produced as normal resource-boxes moving around in the ship. Due to that is not realistic, due to i added ship-resource-containers for O2 and CO2, i could add an energy container too. The ship acts now as a small battery. I fixed some issues with reaching the bounds and using multiple ship resources at once and it seems working fine now. I added the energy-bar to the ui and efficiency calculations to the popup. E.g. the energyproduction is just enough to serve 50% efficiency of a building.
I also added better units to the resources, so energy is now calculated in kW and kWh.
In the morning, i optimized the Customer provideServices. Before the resource based needs it was very complicated and it needed to reschedule and update a lot of times, to prevent circles and wrong calculations. Now its way easier and i could refactor the code, so its just added or removed without updating the work itself.
Its now also possible, that the efficiency of a service providing building gets below 100%, before this was also very complicated to do and skipped due to that.
In the editorMode, the performance of my testscene was down to 10h/s, now its back to 4d/s, so it gained a lot of performance
I fixed some bugs and decided to do a release, due to it was already a lot for this iteration. Its not tested and still a lot of things like new models and game-data setups are open, but it will take a longer time to do all of that stuff.
After updating to the new Unity version and updating all dependency packages, i started to add the person-resource-changes to the UI. To make that easy and have a more consistent storage layout, i changed the working-storages, to be always horizontal layout. This should make it more clear, what is produced and what is consumed. The customers are now "resource-container-slots" of the building. So they have the same states as the resourceBoxes: NotAssigned, InTransit and arrived. The code is also refactored a lot, so its now way easier and clear.
I readded the last features of the new person needs, prioritize activities with lower needs first. Now all tests are green again I polished the UI a bit: changed all change-amounts to kg instead of boxes, to have better understanding whats happening.
I also did a simple kitchen-model. For now, its very very simple, i didn't spend time on polishing, due to i want to get this iteration done. The idea is, that it has a storage in the back of the building and its spitted into some areas.
Due to the canteen was split up. The canteen will stay the same, the old kitchen can be just a small storage room for now.
I started to migrate the ProvideService work that increased the needs for the persons. Its now way more simple using the resources. It was a long way, due to i rewrite the complete logic of how persons do their stuff.
I also updated the UI for the Persons, so overing over the needs shows the resource-container. I' thinking to make the needs again "positive" driven instead of resource driven in the UI. At the moment, the BrownWater has "lowIsGood" option, so without using the toilet, brownWater is produced, so its a "+" in the ui.
I reduced the complexity of my metabolism plan and calculated a bit around. The found human body have 2 main metabolism parts. First is to gain energy in the cells, using O² and Shugger (C6H12O6) and burning it to H²O and CO². The second part is some complex internal creations ends up in poop (What can be defined as BrownWater in the simulation with complex moleculs mostly contained out of C, H and O. So to make it easier it can be defined as (H²O + C6 + H12 + O6). After sum up these 2 functions, i end up in:
6O² + 2C6H12O6 => (6H²O + C6H12O6) +6*CO²
So the ships oxygen + Nutrition (got from food) ends up in ships CO² and brown-water. Afterwards, i added H²O usage to make it a bit more relaistic.
It was a bit anoying to calculate always the resourceBoxes, so i decided to improve that part, before i continue. I added a boxSize to the Resources, so its striped down to the basic atoms in the subResource setup. I also changed the Works, so now its very clear visible, whats happening, without back and forward calculations.
I also split up the constructionCenter, Greenhouse and Canteen into 2 buildings, to separate the works. First i just copied the models, to try the refactoring, later this iteration, i start to create new models.
After all buildings now just have 1 work, i needed to update a lot of tests, that used the satellite, construction buildings or others. Than i started refactoring the work from an array element to a normal component.
After i started to migrate the ProvideService work (that is way more difficult), i needed to add a work to the person, to see what he is working. I taught about, if the concept with multiple works is really needed and i think it just costs performance and complexity.. The main building that needed that is the starting satellite. Others like Canteen (cooking/eating) or Greenhouse (prepareEarth and growing) can be easy spitted, due to its already 2 parts in the model itself.
So it seems, the only special case, costing that complexity is the start satellite. I guess its possible to split it up in different "modules" and maybe add just some special cases for them instead. Maybe i need to increase the size a bit, to have a bit space left and right next to the satellite space for the modules. It can be also nice, to recycle the satellite module by module, instead of once completely for the game play.
I improved the works for the buildings. Before, there was just 1 workingType (e.g. Filter, construction, resourcesconversion) possible. I changed that, to make it possible to split the Provide Service work from the satellite to different works, as a preparation for the resource based needs of persons.
I finished the work on the ship resources. The Buildings now adjust to the needed level, if the resource container limits reached (empty/full). They adjust the efficiency to meet the needed production/consumption to balance it.
I taught about increasing the amount of possible oxygen in the air, depending on the finished buildings. I researched a bit and found that O² weights ~1.3kg/m³ at normal pressure and temperature. Due to the air has 20% O² i came to 0.25kg/m³. I planned this feature to increase that in further iterations, and set a current level of 100kg for now (1 box).
I started to implement the feature, that the resources are not destroyed. Due to that, the ship has now a O2 and CO2 resourcecontainer. The AirFilter will now just move the O2/CO2 from boxes to the ships resoruce container and vise versa. Maybe i can split it into 2 buildings now, an O2 adding one and a separate CO2 filter later.
Next step is to add this containers also to persons and add internal body functions converting o2 and c to co2. the c will come from food, that is being migrated after that.
I changed the weight of the resources, so its calculated out of the subresources. This makes it not easy to see in the editor, whats the weight. So i tried a bit around with the CustomInspectors of Unity and found a good way to add some details to it, without needing to implement it completely by myself. I added a header to the ResourcePrototype with the details. There i could also add more infos, hints and errors, to prevent getting that problems just at the automated test.
I also created that for the work-setup and splitted these into separete components, instead of one big one with an array. I added the icon and the analytics table for it to see and edit it faster.
For an easy setup i decided to do a simple parser for equations defining what to do and where to convert the stuff to. The parser with some tests are already done so far, including a lot of checks to prevent configuration misstakes, such as not 100% on both sides or missing Atomic mappings. Each line in the parser will be one atomic-value, and all resources that contains that, needs to be in. Its also possible to set the target, such as box person or ship to each resource.
The next step will be a setup for tests and the calculations outsourced from the simulation, to create tests for that. I also added the Atomic Resources and setup the old ResourceType setup.
After thinking about the algorithm how to calculate the conversion, i figured out some problems with deadlocks and other calculations. Especially to fill up some main resources equaly (e.g. for brown water) made a problem. So i worked a bit more on the concept and try to make the subresources all fixed. In the new concept, they are just used for verifying the speed, and i can leave most of the conversion-algorithms as they are and get the main advantage of the new concept. I still try to make the ship and the person to special containers for resources, so the resources will stay there, instead of being destroyed and created. This is still a big task by its own
While creating an analytics tool for the weight, i found out, that some buildings create heavy mass out of nothing. This balancing looks already now very complicated and takes a long time, what brings me to the target to automate this better.
Maybe its good to break the resources into sub-resources, so e.g. H2O contains a bucket of H and O. When converting the resource, this can be used to calculate the others, so there is nothing created or destroyed, and the mass will stay the automaticly balanced.
This would also need, that the persons would have these resources. E.g. the person has H2O while drinking inside and adds C out of the food and make dirty water out of it, containing these. In the sanitation facility, this is combined to the brown water output. Many needs including the weight of the person could be calculated out of these resources, so also the person would not effect something.
For further needs, the person may carry their "phone" or other service devices, so this is also not destroyed. At the end, i will create a "garbage" resource, containing the stuff.
The basic idea was already in a preview concept a long time ago, but it looked too overkill and complicated, but maybe it worth it to make balancing easy and everything more realistic?
I think for the player it could be the same complexity, if he is not watching the insides. When we want to optimize something, it can help to see that. So its for beginners not a problem, and for advanced player a nice addon.
This will be a huge change in the resources and their management, but brings nice features, such as a full bucket of brown water can contain alot of garbage or just a bit (e.g. shower or toilet).
With that it could be simple to implement the lifetime of the resources, e.g. food should go bad after 1 month, by directly converting it to "garbage". All buildings needs to have garbage as an output-storage (or being a generalStorage) This "garbage" could contain than the original contained resources. These could be recyclable with a new building to basic resources.
As more i worked on the idea, as better it sounds to me. Its creating interesting effects and possibilities and also reducing complexity of balancing the resources with needs and so on. I created a multi-layer concept, where lvl 1 is atomic and simple, such as H,O,C. The next level are the current ResourceBoxes, but now contains multiple lvl 1 atom-buckets, that can be filled. The lvl3 is the person and the ship. They contains resource-boxes for example persons for cookedFood and H2O or the Ship as O2 and CO2. These boxes can have an "amount", so persons can just have e.g. 0.05boxes (50kg) of regular water, cause they cannot drink 1ton of water.
The spinningengines are now accelerating depending on the mass of the ship, so its good for the player to build an efficient mass balance, to not need too big filled mass balancers.
I tried to migrate to gitlab, bit its a very huge application, that needs minimum 530 Threads on the Server. My one is limited to 1100 threads so just gitlab and the basic other services already reaching the max So at least i replaced confluence, setup portainer for container management and learned a lot about docker
I also tried a lot around with docker, docker swarm, reverse proxies, cloud configuration and so on. I think, i got a deeper understanding of that while configuring my home-network with it. I also improved the scifanstudios server to deal with that. A bit sad, that it seems, that stratos V-Server are not supporting the Docker-Swarm, due to some network setup restrictions when trying to start something.
Due to Atlassian started to get crazy and force people using their cloud, i decided to migrate to other tools. I will tryout gitlab and wiki.js for now. Also for the planned generated wiki it seems very good, due to the git support.