A post-apocalyptic, complex simulator inspired by Dwarf Fortress and Caravaneer 2, and interested in overestimating the difficulty of day-to-day life in a non-technological era.
See this Ryan: https://trello.com/b/JG6Cq9Tm/simulator-population
A post-apocalyptic, complex simulator inspired by Dwarf Fortress and Caravaneer 2, and interested in overestimating the difficulty of day-to-day life in a non-technological era.
A post-apocalyptic, complex simulator inspired by Dwarf Fortress and Caravaneer 2, and interested in overestimating the difficulty of day-to-day life in a non-technological era.
See this Ryan: https://trello.com/b/JG6Cq9Tm/simulator-population
Summary: Switch from entity-level simulations to population level simulations. Given the scope I want to play with, this is the most sensible level of abstraction.
- Update Nutrition to use new model for animals: Calories, Fats, Proteins, and Vitamins.
- Create Population, and Subpops. See on-paper design.
- Update LaborPool and SkillPool to account for new setups. Do we need SkillPool? Probably not.
Species Changes:
Things should be much less brittle this way. And it should be much less work to change things.
Specifically, entities aren't eating as much as they should. So adults are starving while children are (presumably) getting by.
I have concerns.
Regardless, the structure already feels quite messy. Will give some more thought.
Group split methods, automatically adds to world before returning the group. Feels VERY Messy. Look at again.
World turn method has a trick to get by the concurrent modification exception issue. In large part because of the above. Also feels very messy.
Update AI to intelligently handle the fact that items have weight, and groups have a maxWeight.
Diplomacy between groups. Should be intelligent!
I really want to rework the "climate" system. What makes more sense is manually defining a set of biomes and their relevant characteristics. And then those biomes are organically distributed on world creation. I think that's much better than the current water and temperature systems.
Cleanup/remove dependencies in some classes if possible. Things are a bit messy, and the added dependencies may just be a sign that certain classes are conceptually messy.
Change LaborPool LaborTypes to be a public enum, rather than just a set of constant Strings in the file.
The Mining labor should probably depend on skills beyond just the Mining skill. For example, Strength should probably positively (or negatively) affect Mining labor. Honestly though this is a pretty small thing, so I'm not going to worry about it right now.
3 Big things to really work on:
Projects need a name. Or some other reasonably unique identifier. This'll make it much easier to do things like regenerate a project on completion.
For determining equipment, rather than defining a strict "outfit" and then assigning outfits to groups of entities/individual entities, it makes more sense to build "tags", which corresponds to equipping a certain set of things if they're available. You can then mix-and-match tags to create a flexible outfitting system. That way, you can define a single tag for something like "Light Hide Armor Design Mk 1", and give that to everyone, and then selectively distribute something like "Arbalist Mk 1" and "Spear Mk 1". (Or maybe you'll have more creative design names than those listed here.)
Need to figure out project formulas. Producing one unit of X should require how much labor? How much raw materials? What sort of labor? Farming should also probably be a separate Project Type. We need to also figure out the base raw material and labor cost for producing a given infrastructure.
Designs. Both my own in-built designs and player designs. Should we incorporate designs heavily into the infrastructure setup? We could split up infrastructure into components. Split up other items into component-based design as well. That would definitely make it much more like Aurora 4x. Worth mentioning that there are three major classes of design-able items: Infrastructure, Tools, and Wearables. Food is also a consideration, but not a big one at the moment.
Create a Relations class to map (GROUP_ID -> (opinion, trust)) tuple. For use in both diplomacy and some AI interactions.
Infrastructure is, practically, an item. You can think of it as a collective that covers both tools and workspaces. But it's an item that continually regenerates a specific project while in a group's inventory, and provides bonuses (including the coveted "not done by hand" bonus) to production. Building infrastructure requires some initial investment of resources and labor based on how big the infrastructure is and what it's tooled to build. You specify what products you want it to create, as well as how many (so you can make a small factory that refines ore and also produces armor plates, for example). Infrastructure has a weight, and being overweight as a group means you lose the ability to move. If that's the case, why should you ever make it big? Well, being bigger does make it heavier and increases initial investment costs, but it also improves efficiency. So while you may be able to produce 10 units of Stone every half-week for 10 Labor Units, you can be bigger and store more tools/dedicated workspaces, and produce those 10 units of Stone for 5 Labor units... or produce 20 Stone for 10 labor units. Why should you ever be small then? Well, if you want to be mobile, you can carry around a small set of tools/workspace to get some bonuses to production while still moving around. For example, say you're actively at war with a faction, and you decide the thing to do is to destroy their ecosphere. So you set up a bunch of people with specialized hunting tools and send them off to slash-and-burn, and to run back after they complete their tasks. Smaller infrastructure will also have smaller investment costs, so it may make more sense early on to have small things in order to take advantage of the bonuses without investing a huge amount to try to squeeze out efficiency gains.
Right now, structures/systems aren't in place to actually allow Infrastructure projects to regenerate projects. Groups should look in their inventory every turn to see if they have an infrastructure item. Additionally, if they don't have the relevant infrastructure, they should cancel/remove a project with was started by holding on to some infrastructure.
Human species is now in! Hooooorayyyyy!
Added new materials: Leather -> Hides, Bone, Copper.
Added new Wild species: trees. Which produce lumber when felled. Not currently preyed upon by anything... except sentient species. Darn Volch.
Also, a rework of projects to be a bit neater and to include a "MANUAL_INEFFICIENCY_MODIFIER" to penalize work done by hand and, presumably, no specialized/manufactured tools. Reworked some wild species harvest outputs and intelligent species base labor values as a consequence.
Mineral accessibility and mining! The way it's set up is labor per unit is always the same, but the actual produce is based on local mineral accessibility. This means you can set up systems with a set amount of expected labor per turn, but their actual output may vary over time. Volch are also currently 3x as capable as an adult human (on average) at mining, and they eat a little bit more than 1.5 times what a human eats. Volch in a state of nature, however, don't bother with mining or engineering projects (for example, upon skinning rabbits they'll consume the meat, but leave behind any furs or bones). I'm a little interested in incentivizing forced labor systems, in part because I'm curious how a player would go about developing such a thing, but also because I think it'll generate more interesting stories if, during a war, there are goals beyond just "completely remove the opposing group" or "occupy this chunk of land and evict the groups already on it." I also intend to create societies that are probably more slavery-oriented (or some variation thereof), but the ones I'm mostly thinking of are probably more akin to Bronze Age era slavery, rather than something like 20th century mass forced labor systems. In that respect, Volch may become pretty valuable as a resource. They're actually pretty unfortunate. As the first species I created, they have the unfortunate role of participating whenever I experiment with any new systems.
Need to update Project class to allow it to take in Raw Materials and tile resources.
We probably need to make sure that infrastructure works correctly. We may also need to update things among projects/items to make sure that it's acceptable to create things with similar names... Or put in some prefixes to avoid confusion.
EcoTile/BigTile integration. BigTile should control its own Macronutrient values more strongly. EcoTile should route through the BIgTile, since the EcoTile only represents wildlife in the area, while the BigTile represents nonliving local resources.
Volch group doesn't seem to randomly select a target for harvesting. We should do that.
Added some weight calculations for Groups and Inventory.
EcoTile... Super messy. Probably because the functionality is pretty complicated and I wanted to get that done fairly fast in my spare time. Clean up if possible.
Labor needs to be refreshed/updated as new skills are made and injuries sustained. Updated Labor provisions based on a tiered system gated by nutritional health.
Inventory should be expanded a bit to support groups dropping selected things. Additionally, update Volch behavior to drop MATERIALs, since they don't manufacture anything at this stage.
WorldTiles need an inventory to hold things that are dropped. Groups should be able to drop items.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.