Giter Site home page Giter Site logo

rynkwn / simpleliving Goto Github PK

View Code? Open in Web Editor NEW
0.0 2.0 0.0 1.72 MB

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.

Java 99.51% Shell 0.49%

simpleliving's Introduction

SimpleLiving

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

simpleliving's People

Contributors

rynkwn avatar

Watchers

 avatar  avatar

simpleliving's Issues

Next set of things to work on

  • Be able to split off specific members/species off.
  • Groups should be able to move at the lowest speed of its members between each turn. (Check if canMove. If can, then move. Otherwise, move on from instruction)
  • BigTiles could use weather! Also need decomposition. How should groups interact with their resident tile? Allowed to be claimed by an individual faction/group?
  • Groups need to be able to have relationships with other groups.
  • Entities -> Need to be able to age and grow!
  • Combat and raiding: Groups need to be able to attack each other, and need to be able to take supplies/captives. Entity abilities in combat should be determined by biological traits (for now), and their efficiency should be a function of the acting part/tool.
  • Instructions: Need to be able to intelligently split off new groups and give those groups sufficient supplies to get started. How do you colonize?
  • Diplomacy: Think about it a bit.

The Population Update

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:

    • - Update species to work with new Labor setup.
    • - Update species to work better with new Pop and labor setups.
    • - Update individual species to work with new Species set up.
      • Cheryh
      • Human
      • Volch
      • Volch Minor

Future Flexibility

I have concerns.

Regardless, the structure already feels quite messy. Will give some more thought.

List of Things to Do

TO-DO

  • 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:

  1. Combat: organization, mechanics, logistics, training, and utility.
  2. Diplomacy: How groups/factions interact.
  3. Economy: Designs, Creating new designs. Manufacturing. Materials. infrastructure
  • 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.

Working on:

  • Create a Relations class to map (GROUP_ID -> (opinion, trust)) tuple. For use in both diplomacy and some AI interactions.

    • Create a Faction to manage foreign policy among a bunch of groups.
  • 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.

Should be done. (Need to test)

  • Set up the KILL Project type. You're literally mauling local wildlife and leaving the bodies where they lay... you monster. Twice as effective at removing local wild populations than the GATHER project type, as you don't need to process any materials.

Economic Mini-Update

  • 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.

Definitely done.

  • 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.

    • Also updated starvation parameters to be a bit more generous... and to allow things to survive, but essentially be non-functional from a labor perspective at a certain point.
  • 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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.