Key Features
- Ownership — stable per-player ownership identity via
SetOwnerPlayer/ReleaseOwnership - Feeding & watering — hunger/thirst needs with starvation and dehydration consequences
- Breeding — fertility rolls, gestation, litters, breeding cooldowns, optional auto-breeding
- Genetics — tag-keyed inherited traits (growth, yield, fertility, hardiness) with mutation, plus cosmetic variants
- Pregnancy & offspring — offspring actors spawn with blended genetics and persist through saves
- Aging — data-driven life stages with per-stage meshes, smooth growth scaling, and optional old-age death
- Products — milk, eggs, wool, manure on per-species schedules; collect by interaction, or use
SpawnPickupto drop a physical actor per unit, with a live-count cap that bounds offline catch-up - Animal health — sickness from neglect and dirty pastures, medicine, natural recovery
- Pastures — capacity by species footprint, feed/water troughs, cleanliness, manure collection
- Shelter — shelter slots with an overridable query to wire any building system
- Slaughter & butchering — stage/health/genetics-scaled outputs through inventory hooks
- Offline simulation — all state is timestamped; worlds catch up correctly after any downtime
Architecture
UAnimalComponent— attach to any replicated actor; owns all per-animal state (five replicated structs)UPastureComponent— attach to any actor to define a pastureUUMHSPlayerComponent— attach to your PlayerController or pawn; routes client interactions to the serverUAnimalSpeciesDefinition— one Primary Data Asset per species drives every ruleUUMHSSubsystem— world clock, hourly simulation fan-out, offspring spawningUUMHSSaveHandler— save/load bridge (UMI save registry when present; standalone byte APIs otherwise)UUMHSGeneticsLibrary— inheritance math and Blueprint helpers
Multiplayer
Fully server authoritative. Every mutator no-ops without authority; clients callUUMHSPlayerComponent’s Server_* RPCs (validated server-side, including a range check). Clients react through replicated state and BlueprintAssignable events.
Integration
UMHS has zero hard dependencies on other plugins:- Taming: receives domesticated creatures from the Taming System hand-off (or any other upstream system)
- Time: binds to a TimeManager-style world time subsystem via reflection when present; otherwise runs its own clock
- Weather: mirrors temperature from a WorldClimate-style subsystem via reflection for comfort/exposure rules
- Inventory / Skills / Interaction: override
BlueprintNativeEventhooks (OnConsumeFeedItem,OnGrantItems,OnAwardHusbandryXP,GetInteractionPrompt, …) on the components - Saves: with UMI installed, animals and pastures save automatically through the save registry; without it, use
RequestSaveData/ApplyLoadDataand theOnGetSaveData/OnLoadSaveDatadelegates
Quick Start
- Enable the plugin and create an
AnimalSpeciesDefinitionasset (e.g. a cow: life stages Baby/Juvenile/Adult, a Milk product, butcher outputs) - Place an
AUMHSExampleAnimal(or addUAnimalComponentto your own animal actor) and set its Species - Add
UUMHSPlayerComponentto your PlayerController - Optionally place an
AUMHSExamplePastureand stock its troughs - Test with console commands:
umhs.AdvanceHours 24,umhs.DumpAnimals
