Well, after the open source announcement and the final sale that some of you wanted, the game will finally be removed from Steam on Friday the 19th August at an unknown time.
Sorry for everyone who believed in the game but also a big thank you for all your support that I have received during the time developing the game.
It wasn't at all for the bin. I learned a lot and I am applying that knowledge right now in building a base project. A project that has all the core features like savegames and my data-driven workflow that me and my programmer developed for Endciv.
Instead of using the custom ECS Setup I move to Unitys ECS and DOTS packages. This allows for much higher performant games, hundreds of thousands of objects and I am intrigued to see what can be done.
But I don't want to promise anything. Just so much that if you like RTS/Econ Sim and Building games and have some faith in my skills then you are invited to join the Endciv discord: https://discord.gg/ahazEZT
Because this is the easiest place where I will post my progress and all the future steps, but don't expect posts and concrete projects too early. I simply say that because there are in general ways to benefit owners of Endciv in one way or the other.
Farewell!
Steam Takedown and Open Source Version
A stripped-down version of the game is now open source. Functionality and content is limited: https://github.com/McDev02/Endciv-OpenSource
In case you need support and help with development visit the Discord Server: https://discord.gg/UC9PjhF
In case you have a concrete interest in continuing the development of Endciv as a "fan" project or your own derivative of it, based on the full project and additional sources, then reach out to: contact@crowbox.de
All this is done to provide potential content for customers as I have promised in the past if development won't finish. Maybe the game will continue somehow, maybe other games are made quicker with parts of the code base from Endciv. Maybe a new open-source and free game will be made and I am glad to help if I can as this project is not easy to work with but provides the fundamental basics to kickstart a project quicker.
Not only for personal reasons development of Endciv had to be halted and is now finally taken down from sale on Steam as soon as possible.
EDIT: I'll consider the sale/price drop beforehand.
Technical Insights
Hello Everyone. Today I’d like to explain a few technical aspects of what we have been working on recently.
Grid map data The map is divided into grids. As you can see here, the resolution of the grid is two times higher than the grid you see when you construct buildings. The reason for that is that it allows us to end up with a variety of patterns when placing buildings.
As you see below in the middle, there can still be a path between objects even though they are placed next to each other. If we would allow you to build on the small grid then you would have much more micromanagement to do in order to keep the desired space.
For some objects this is not the case, such as houses. Those you can place wall on wall while their full area is not walkable by units. The blue cells indicate this, those have a special value. This also means that we can have multiple objects on the same grid cell as long as the rules allow it.
We add more and more layers but this has proven itself. It aids performance, decoupled code architecture, and multithreading to read the values from the grid map rather than iterating over entities and their data.
Grid map Simulation We have several layers of data that are derived from the core data which we assign through the terrain or the buildings. Some of them are updated constantly but at a low rate. Due to performance issues, these layers had to be downsampled and we could even downscale them once more if we have to.
The system works good and on a separate Task (C#). Currently, we only suffer a bit from garbage allocation but we will tackle this next week, the core algorithm is very memory friendly.
Open Area
Used for pathfinding. The trader vehicle is a much bigger object than a human being. The vehicle should avoid narrow paths where it wouldn’t fit or had issues to steer. By using thresholds to cost on such tiles (on Dijkstra integration cost) we achieve that the vehicle bypasses narrow paths.
Nevertheless, this is a threshold and not explicit. If the required bypass becomes too big then the vehicle would even drive over piles on the ground.
Density
Indicates how densely an area is cultivated. This can be used to find out where city borders are and where it might be nicer to live. Animals will usually avoid the town area. Therefore children usually stay within the town area. Well, usually.
Pollution
So far the only simulated value. By that I mean it changes over time. If there are corpses, waste or unclean outhouses then their environment will become polluted. Once the source of pollution is gone the area will recover.
Pollution is not only stinky but also a threat to health. Food will rot faster in polluted areas and that can be a tipping point as rotting food causes organic waste which causes a higher rate of rotting.
Islands
Island IDs are used for pathfinding and tell the AI if there even exists a path between two points even before a pathfinding algorithm is being initiated. For each encapsulated area there is a new island. There are also portals (general term for doors, gates, stairs, etc.) that can connect islands.
There are many more data sets but these are the derived data sets.
Entity Component System We are using an Entity Component System (ECS). In short form, this divides the code into entities, components, and systems. All aspects in the game like a building or a unit is an entity with various components assigned. Components are for instance Production, Cattle, or Inventory which hold relevant data and can be saved to disk.
Most of the game logic is performed in systems. Usually, there is one system for each Component but some systems also handle multiple components.
We use this right from the beginning but made tremendous changes to the code base. Now it is much more flexible and easier to extend and maintain.
Our entities are designed in the editor using ScriptableObjects which we call StaticData. Here is an example of what this looks like for the pasture.
Notice that it has a pasture component which (in fact its system) is responsible for most of the logic of this building but it also needs other components like the inventory so it can store food for the animals.
Also, each building has a construction component that defines everything required to construct the building.
Energy/Power system We developed a new system for power. Power is a general term, it can be produced by various sources: wind, solar, combustion, and electricity.
Electricity basically is only a medium for power and was generated by one of the other sources.
What we changed was the way power generation and consumption happens. We are now very flexible in designing new facilities, thanks to the new ECS setup.
For instance, each component can be powered. By default it has an efficiency of 100%. When we link a power source to the feature then the efficiency will be defined by the source instead. Here are some examples to illustrate this:
A workshop only requires labor force, therefore the production component has no power source attached.
A workshop that requires electricity is linked to a power source: electricity component and will therefore only work if it is connected to the electricity grid and power is available.
A solar collector has a power generator component which is connected to a power source: solar component. So depending on sunlight the efficiency of the power generator changes and outputs more or less electricity.
The flexibility here is that we can use the same component and change its behavior by simply adding another component and leaving the other one unchanged. But most importantly each existing component class like the production component does not have to know anything about the power system at all.
Next up I will go into more detail on the gameplay related updates and what is planned for the next few months.
Recent developments
Hello Everyone. Things are taking a little longer but more and more features are coming together right now. Here is a list of the recent developments and what you can except soon.
Construction Animations I was planning this for a while now and finally I could make a first version of this system. Without performance loss each object can now grow piece by piece. I will add this animation for each building one by one to replace the placeholder scale-up animation we currently have.
Performance note Shadow rendering is not very efficient right now and I noticed on a slower machine that the game can run very slow. Also the shadow options seem not working properly. So if the game runs bad on you machine it can be related to that issue and I will provide the option to reduce shadow quality that really aids performance. In the long run I will also be able to improve overall performance so that higher quality will also run on slower machines.
Refactoring and labor force As you may know this game is mainly developed by one programmer (2 days a week) and myself (up to 4 days a week). That is not much workforce at all.
Usually we are very effective and get things done without major tweaks and issues afterwards. Although from time to time you must maintain code and one of these things was our Entity-Component system as well as the AI system. Originally it was developed by myself, but my programmer had a few ideas to streamline the system.
What I try to explain is that it took him about 6 days to make these changes which results in 3 weeks as he can only work fixed hours per week. Also this prevents me from doing anything game-logic related. That is the downside of such a small team.
Therefore, we will only make such changes if they seem necessary and provide a benefit to the development process. With the growing number of components/features it was necessary to make this change. Adding new features is now much easier and some aspects like saving the data is automated by that framework.
As a result the video was delayed and I want to update it once the new features are in the game.
Weather and season system I was working on the weather model and came up with a rather simple solution that seems to fulfill all requirements. For example the weather should be predictable and consistent. For example, If you play three matches with a slight change of rain then the average amount of rainfall of all three games shall be similar and not rely on luck.
Here are two graphs which show the same weather seed with two different parameters. If it is cold enough rain will turn into snow. You can notice for example that thunder is much more likely in summer and very unlikely in winter, which is usual at least here in Europe.
The major benefit of this system is that it can be adapted quickly by providing different presets. Later in development I plan to offer different scenarios like hot and dry weather or heavy winters.
Rain sounds have been added, too. Thunder, wind and all the other sounds will be added step by step.
Texture Streaming Currently the load times of people are very slow. I therefore added async texture creation so if you have many people in your city and load a savegame for example the people may remain grey for a while. Later I will improve this to load much faster, there are several ways such as utilizing the GPU.
Cattle and Farming We are improving the agriculture and livestock aspect of the game. Farming is already part of the game and will be updated with the next build.
Cattle is in the making but I cannot promise that it is in the next build already but most likely in the second next build.
A more technical related post will come later.
Thanks for reading!
What's new
Screenshots on the store front have been updated. A video will follow!
Today I want to go into more detail on what is new. Next to the UI update you basically got more control over certain aspects. That is a general way this early access plan works, first we may introduce features in a simple way and then add more control and details to it over time.
Town info There are banners on the top panel which tell you what is going on in the town. You can click on these and they select the affected entities or open a window. Here they show 5 homeless, 2 thirsty people, an available trader and 2 people who want to join the town.
Toolbar On the bottom of the screen is the toolbar. I tried color coded underlines, let me know if you like that. It shall be pretty self explanatory but here is a hint:
Notice: People now autonomously gather resources from the environment. With the pickaxe tool you can mark these piles which shall be gathered first. You can adjust this later but for now people gather resources as long as you have at least 10% empty space in your storages.
The notifications that pop up on the lower left hand side of the screen currently disappear when you click on them but they shall behave the same way.
Trader The trader finally made it to the game. He will come in various iterations but currently at least each 3rd day. A trader truck arrives nearby your town. When you click on it you can open the trader window for a limited amount of time and make only one trade. Then he disappears.
We don’t have to talk about balancing yet, this will be a task lasting beyond the early access state. Also some of the items don’t make sense currently but we are about to change this next.
Rations You can now adjust how much food and water your citizens consume each day. People can survive quite a while without nutrition but become unhappy quite quickly.
Later the options in this window will be extended, e.g. water consumption for hygiene or other things will be necessary.
As a side node these windows can now be dragged around and they will snap to each other.
Immigration In order to get new people to join your town you first need to have excessive housing space. Then according to this value more people will ask for shelter. You can click on the blue banner on the top of the screen to open the Immigration window. There you can accept or deny a group of people.
For further iteration there shall be stories of each individual group and the kind of people you can choose from will vary. Also it would eventually cost you reputation if you don’t accept a lonely group of children for example.
Children and society Economically children are actually a burden. They work only up to half of the day as adults do and they only perform labor tasks. Also children get shelter and food in a higher priority than adults. But of course they will have positive effects on your society, but currently there is no such feature. Children usually equal family and families are more likely to behave properly. If you have a town only full of scum then you will have a lot of trouble.
That was a quick introduction. I may can go into detail of some more development related changes next.
Thanks for your support :)
An Update, finally
Hello everyone!
I know, I betrayed you guys again. To me Steam is still a platform for release related things and sadly in the past 3 months the game was not ready to be published.
For the most part of this year only I was working on the game but my programmer will continue as usual from next week. Reasons for that was that I had to deal with other things first before I could have someone else working on the project.
Now when my programmer is again working on the project we are not only having better pace again but I can also deal with other things such as communication, graphics etc. and as these fundamental work is done we can now focus on new features again which make regular updates a given.
One of such issues was that I ported to a new Unity version but apparently it turned out that this produced a major bug in the editor and downgrading again took me a whole weekend for example.
One of the big updates and why it took so long was the UI. Maybe it sounds not that important but it was really necessary. With the UI redesign not only the visuals changed but a few things under the hood. So for example there now is a true “retina” UI which means you can scale the UI up if it is too small and the quality doesn’t suffer from that.
Another thing is that you can move most windows around now and they snap to the screen and other windows.
But also usability has improved a lot as you will notice. UI is one of the most time-consuming aspects of game development but now it is done.
The new version is out and I will update the media on the Frontpage this week. Lots of things have changed and one article is not enough, therefore I will give you the first insight tomorrow.
Just one shot here, weather was included again. Seasons are not yet part of the game but soon.
Version 8 is out!
Hello everyone!
Finally a new update is out. Many things have been improved as you might know from Facebook and Discord.
Again a lot of boring and background work has been done but these core features are about to wrap up. During winter we can add some more exciting content to the game!
User settings
UI Scale is implemented which lets you scale up the UI on highres screens.
Mouse sensitivity has been added.
Scenarios
The game now has a Scenario selection screen. For now you can select between the tutorial and a default game. The default game can be adjusted by defining map size, resources and people you start with.
In the long run of course more options will be added and some special scenarios will follow.
Milestones
There is a system which allows us to provide challenges and tell a story. For now this is a simple tutorial but later in the game we can build up on that and tell small or larger stories to keep the game engaging.
Savegame deprecation
As it was announced old savegames had to be deprecated and can no longer be used.
Citizen mood
Citizens have needs and mood which you can see by clicking on them or by looking at the average of all your citizens. These values have limited effect now but soon will be relevant.
Of course when your people run out of water or food, they die.
Citizen overview
You have an overview of all your citizens. Later we will extend this so you can sort by different things. This would be helpful for large populations.
Linux
Linux versions should now work, please let us know if there are any issues.
(Linux is still not officially supported yet)
Trading
The trading window has been finalized but some final touches have to be made. Therefore, the trading window is one of the next upcoming features.
0.0.7 Notification System update
There is a small update today. We worked on the notification system which informs you about what happens in the game.
There only is one set o objectives (on the left side on the screen) but it will soon be extended. A few of these tutorial objectives are already designed but need some time for implementation in the game.
Furthermore there shall be additional information which pop up when you click on these objectives and when new ones come up.
We can also tell stories with this system later on!
Version 0.0.7
Bug fixed were people could not bring a “box“ to the storage
Notifications added which inform you about happenings in the game
Objectives added which guide you through the game
Hotfix 0.0.6
Update 0.0.6b
The tutorial did not show up.
Linux version availalbe (unofficial)
The following issues have been fixed:
Game crashes when saving (autosave also caused this)
People got stuck in the Water collector, if this still happens please let us know
People brought too many resources to the construction sites
The feedback report did not send logfiles, now it works and we can look into these.
Other changes
Autosave is set to 10 minutes
The general settings have been removed as they had no effect
What comes next
Autosafe interval can be set or disabled
UI scale will be implemented, for highres screens
Mouse sensitivity can be adjusted
Tutorial improvement and objectives
Feedback and objective system
As it has been explained on Discord we are working on improving the player feedback. Currently we work on a notification system which tells you more about what is going on in your town and which needs the people have.
But before this will be fully implemented and working, we improve the tutorial using an objective system. This can later also be used to tell stories within the game. Its pretty simple, you get a new milestone which consists of a few objectives, like collect 20 Boards and build 2 homes.
These are linked to info windows which explain things to you.
I think it is important to do it now, because some people seemed to have issues understanding how the game functions. Also I believe that this kind of feedback is where the fun in games comes from as it keeps you engaged.
Graphics
The new graphics are in progress as well but it will take a while until we have enough to add them to the game.
Version 0.0.5 - Usability updates
A new version is out, this mainly improves usability and bugfixes.
Changelog
In the Discussion seciton oyu can see the changelog thread and you find them on our Discord Channel.
Whats next
Tutorial updates and explanation of production.
In game notifications so that you get more feedback from the game.
Tech levels, this is not research, but a way to guide you. For example some buildings will only be available until other requirements are met.
A trading window where you can sell goods for things you need such as seeds and animals.
Animal husbandry might be implemented at a later stage in development but it is definitely planned for this year.
Version 0.0.5
Tooltips now explain a few elements of the UI, such as resource icons.
Mapsize increased (later you can choose by yourself)
Construction menu shows resource cost
Inventory info shows resources and the scrapyard has visual feedback
Construction site info panel shows missing resources
When using the construction tool the grid is displayed on the map
Shadow moves fluent and not in steps
Units rotate smoothly to direction and not instantly
More dummy graphics added
Version 0.0.4
AI uses the outhouse (untested, still in progress)
Buildings can be toggled with “C” and randomize after each placement (currently only the Shack house has variations)
Occupations are added to the savegames
Bugs
Graphic settings did not load properly on game start