Releases: ShiJbey/neighborly
v2.5.0
[2.5.0] - 2024-03-24
This version introduces breaking changes to the content authoring pipeline. Please check your YAML and JSON files.
Changed
- Convert content definition classes to use Pydantic
Added
- Tag-based content selection to all authored content libraries (special thanks to @Acer-Cristea)
- Content definition compiler that allows for variants and templates
- Additional fields to all content definitions
Removed
- Removed some fields from content definitions
v2.4.1
v2.1.1
[2.1.1] - 2023-30-10
Fixed
open_to_public
field now addsOpenToPublic
component to help locations appear as candidates
to be frequented by characters.monthly_effects
associated with job roles are now applied every timestep.- Relationships are deactivated when a character departs or dies.
- Characters cannot gain the
lethargic
andenergetic
traits at the same time. - Replaced
Event
type hints forGlobalEventHistory
withLifeEvent
.
v2.1.0
[2.1.0] - 2023-29-10
Added
- New inspection functions to the
neighborly.inspection
module - Added back non-notebook samples to facilitate library debugging
Changed
- Moved some of the test data to become default plugins to assist new users
- Tweaked some considerations and probabilities to get more believable event histories
Fixed
- Adjusted trait configurations to provide a better spread of relationship stats
- Fixed event considerations that cause over-reproduction and unwanted polyamory
- Added
force=True
to logging config to allow logging to work in Google Colab - Fixed
StartDating.instantiate
method that was missing a return statement
v2.0.0 - Kigambe
[2.0.0] - 2023-27-10
This release merges all the changes originally made in the kigambe
repo.
This version breaks nearly all aspects of previous versions. Neighborly's internal architecture
was rewritten to better support data-driven authoring workflows. While version 1.0.0 started to
move away from the data-driven aspects, it made content authoring more difficult. This latest
version was built with the authoring interface holding prime importance.
Added
- New trait system
- New skill system
- Load entire Tracery grammars straight from JSON files
- Simplified datetime representation
- Reduced ECS feature set
- Simplified simulation config
Removed
- Support for authoring content using YAML. Now only supports JSON.
- Grid-style world map
- Server support
- Commandline interface support
- Entity prefab support
- Sphinx docs
Neighborly v1.0.0
Version 1.0.0 departs significantly from previous Neighborly releases. This version emphasizes simplicity, focusing more on Neighborly's use as a data science and prototyping tool. This change reflects my evolving understanding of my research and its place in the academic universe. To match this, most samples have been converted to encourage experimentation and showcase data visualizations.
The passage of time has been greatly simplified to only simulate one year at a time. Since we no longer model more granular time steps such as hours, there is no need for character routines or operating hours. We also do not need to track the maximum capacity of a location or mark locations as eligible for travel.
Neighborly moved away from the data-driven approach of loading prefab definitions from external files. Creating characters or businesses this way required duplicate definitions and made it harder to share and modify existing prefabs. The new CharacterType
and BusinessType
classes are a return to using factory objects to instantiate GameObjects. The best part is that the factory is also a component that is associated with the GameObject it instantiates. So, now users can easily query by character or business type.
Please see the CHANGELOG.md
for a non-exhaustive list of changes.
Neighborly v0.11.2
[0.11.2]
[Fixes]
- Fixed problem with non-determinism caused by VirtuesFactory iterating sets
Neighborly 0.11
[0.11.0]
This update has breaking changes from version 0.10.x
Changed
- The
Routine
component has been refactored to be a single collection of routine entries instead
of a collection of DailyRoutines with individual entries. RoutineEntry
instances now track what days they apply to.RoutineEntries
now useGoalNodes
to specify behavior instead of location IDs or alias names.ActionableLifeEvent
has been renamed toRandomLifeEvent
CreateTown
has been renamed toDefaultCreateSettlementSystem
Added
- A new
AIRoutineSystem
that queries a routine for an entry at the current time and adds the goal
for that entry as a potential goal to pursue. - Systems can now be toggled using the
active
class attribute. This affects all instances of a system and any child
systems if it is a SystemGroup. - Support for loading character and business spawn tables from CSV files for
DefaultCreateSettlementSystem
Removed
IBusinessType
was removed because it added unnecessary complexity to the component definitions.
Updated
- Type hints have been reformated to prevent duplicate description warnings from sphinx. Class
attribute type definitions have been moved out of__init__
and the doc strings for attributes
are placed below their type hints. - Updated to newer build of Tracery (
tracery3
)
[0.10.0]
This update has breaking changes from version 0.9.x
- The package has been restructured again to prevent circular dependencies. Classes are
now separated into subpackages/modules by function. For example, all the component
classes are withinneighborly.components
all the factories are within
neighborly.factories
and all the default systems are withinneighborly.systems
. - The default plugins under
neighborly.plugins.defaults.xxxx
have been restructured
to allow people to more easily include only the content they need. If you do not care
about the specific plugins,neighborly.plugins.defaults.all
will import all the
default plugins into the simulation. - Content libraries are now static class instances.
- GameObject prefabs should now be instantiated using the
GameObjectFactory
class
rather than using the Prefab-specific libraries (CharacterLibrary, BusinessLibrary,
and ResidenceLibrary).
Added
- Content authoring
neighborly.decorators
for use in single file simulations. py.typed
stub file to remove PyRight warning about Neighborly missing type stubs- SystemGroups were added to allow better systems ordering. The simulation update loop
is now separated into 4 phases (initialization, early-update, update, and
late-update). - Utility-based behavior trees for goals
- Event callback are called directly from GameObjects instead of via systems
- Events are an integral part of the ECS
Updated
- Content loading functions no longer need the world instance passed when loading assets
Removed
- Prefab-specific libraries (CharacterLibrary, BusinessLibrary, and ResidenceLibrary) and replaced
them with theGameObjectFactory
static class that handles instantiating GameObjects from prefabs
Neighborly 0.10.0
Neighborly is finally feature complete. After a long period of instability, this is the most stable and performant version yet.
This version is not compatible with any of the previous 0.9.x versions
- The package has been restructured again to prevent circular dependencies. Classes are
now separated into subpackages/modules by function. For example, all the component
classes are withinneighborly.components
all the factories are within
neighborly.factories
and all the default systems are withinneighborly.systems
. - The default plugins under
neighborly.plugins.defaults.xxxx
have been restructured
to allow people to more easily include only the content they need. If you do not care
about the specific plugins,neighborly.plugins.defaults.all
will import all the
default plugins into the simulation. - Content libraries are now static class instances.
- GameObject prefabs should now be instantiated using the
GameObjectFactory
class
rather than using the Prefab-specific libraries (CharacterLibrary, BusinessLibrary,
and ResidenceLibrary).
Added
- Content authoring
neighborly.decorators
for use in single file simulations. py.typed
stub file to remove PyRight warning about Neighborly missing type stubs- SystemGroups were added to allow better systems ordering. The simulation update loop
is now separated into 4 phases (initialization, early-update, update, and
late-update). - Utility-based behavior trees for goals
- Event callbacks are called directly from GameObjects instead of via systems
- Events are an integral part of the ECS
Updated
- Content loading functions no longer need the world instance passed when loading assets
Removed
- Prefab-specific libraries (CharacterLibrary, BusinessLibrary, and ResidenceLibrary) and replaced
them with theGameObjectFactory
static class that handles instantiating GameObjects from prefabs