File information

Last updated

Original upload

Created by

LarannKiar

Uploaded by

LarannKiar

Virus scan

Safe to use

Tags for this mod

About this mod

Overhauls the entire crowd system.

Requirements
Permissions and credits
Translations
  • Russian
  • Mandarin
  • Italian
  • French
Changelogs
About this mod:

Whether you're looking to select the faces, outfits, voices, height, facial animations of generic NPCs you see in every large city (selectively for male and female characters with population ratio control), or just looking for a mod that simply makes cities a bit more lifelike by replacing the worst parts of the vanilla crowd system with a new implementation which doesn't feature funny looking/robotic moving characters but features full names (for everyone), properly aligned and fully enabled facial morphs (FaceGen), animated clothing with physics enabled; all this included with an SFSE framework to allow adding your own unique characters to the game world, then this mod may sound interesting to you.

If you're not looking to customize the characters and fine with the default presets, then aside from some random unique characters occasionally showing up, what you'll see is fully featured human NPCs instead of "zombies". The unique characters I added are vanilla quest characters like Lieutenant Crisanto Torres (from Groundpounder), Estelle Vincent (Crimsom Fleet questline) and.. a bonus Mr. Howard.

If you're looking to personalize the characters for yourself by adding them selectively to the four supported locations (New Atlantis (and The Well), Akila City, Cydonia and Neon), then the good news is that you can do so by simply editing a .txt or .ini file which doesn't take more than a minute. Update: now that the Creation Kit 2 is released, modders can create human NPCs and make the mod load them either as unique characters or random citizens.

The mod is made of two subsystems: the Modular People System (MPS) and the Unique Character (UC) system.

MPS: basically the custom crowd system that replaces the vanilla crowd NPCs. It randomly picks NPCs' faces, expressions (emotions), names, voices and outfits from .txt ("database") files. These files aren't big and quickly editable; they contain names (EditorIDs) and formIDs. Each location has a set of .txt files to allow location-specific setups like "more happy NPCs in New Atlantis, less in Cydonia" or "more males wear business suits than females" and so on. Population ratio control is also available per location.

UC: as mentioned above, MPS only makes it possible to edit the databases it randomly picks characters and their data from. In order to provide full character-specific customization, I made the UC system. It works like this: you create a new .ini file and specify their character data like appearance, name, outfit, voice, encounter chance, encounter locations and so on then the mod ensures the presence of this unique character at the given location, locations with the specified appearance and other NPC data.

I also exported the IDs (with names, when applicable) from Starfield.esm, the game's vanilla master file to make it easy to browse and select from a variety of vanilla faces, animations, etc. Of course, if you're a modder who's interested in adding many new characters to the game world, then you can decide whether to add your NPCs to a location's "FaceNPCs" database file (like MaleFaces.txt), or to create an .ini for each of them to provide them fixed emotions, voice, outfit, appearance, etc.

******************************************************************************************************************************************************


Mod Overview:

   - Comprasion: Crowd System vs. Modular People System
   - Mod Structure, Unique Characters, Settings
   - Optimization, AI, Performance
   - Custom Console Commands (Hotload UCs, Rebuild DBs), "Dev" functions
   - Compatibility
   - Install, Uninstall
   - Requirements
   - Legacy Version
   - License, Open Source C++ and Papyrus code


******************************************************************************************************************************************************


Comprasion: Crowd System vs. Modular People System

Vanilla Crowd System:

   - Crowd NPCs' outfits are not animated, have no physics
   - Crowd NPCs' outfits are "dummy", non-playable, non-usable
   - Crowd NPCs' doesn't have facial expressions or emotions
   - everyone is named "Citizen"
   - Crowd NPCs' have "robotic" (somewhat simplified) movement animations
   - Crowd NPCs' faces look weird because technically what the player sees is "masks", not even faces..
     (note: no reflex movement = emotionless face; out of sync eye (blinks, etc.) and facial reflex movements = "zombieness")
 

Modular People System:

  - Modular Peoples' outfits are fully animated, have physics
  - Modular Peoples wear normal playable apparel
  - they can have as many facial expressions and emotions as the game has

  - 1billion+ (real, full) name combinations for everyone
  - they have "normal" (smooth) movement animations (the ones even used by the player character)
  - they have properly applied FaceGen and morphs
    (note: C++ code fixes outfit clipping, neck seam and the like)
  - they have much more voice types

******************************************************************************************************************************************************


Mod Structure, Unique Characters, Settings:

File map:

..\Data\SFSE\Plugins\ModularPeopleSystem\Settings.ini
..\Data\SFSE\Plugins\ModularPeopleSystem\AkilaCity//NewAtlantis//Cydonia//Neon\{DBName}.txt
..\Data\SFSE\Plugins\ModularPeopleSystem\AkilaCity//NewAtlantis//Cydonia//Neon\LocationData.ini
..\Data\SFSE\Plugins\ModularPeopleSystem\Export\*.txt
..\Data\SFSE\Plugins\ModularPeopleSystem\UniqueNPCs\{NPCName}.ini


AkilaCity//NewAtlantis//Cydonia//Neon
: there's a folder for each supported location. Each folder contains the same named .txt ("database") files like FemaleFaceNPCs.txt, MaleNames.txt and an .ini named LocationData.ini. You can edit these files separately to define who and how you'd like to see.


Supported Formats:

1) Active, mod loads them:

0022766A                      ;     Clothes_Earhart "Amelia Earhart's Outfit" [ARMO:0022766A]
xx800_ModName.esm
xx6B83_SFBGS003.esm
0022B645
xx0020E630_Starfield.esm           ; EncCitizenFaceF01_02 [NPC_:0020E630]
xx2109B3_Starfield.esm           ; EncCitizenFaceF01_03 [NPC_:002109B3]
002AE978_Starfield.esm           ; EncCitizenFaceF01_15 [NPC_:002AE978]
0026FE3D_Starfield.esm
26FCD6_Starfield.esm
26F106

2) Inactive, mod skips loading them:

00000000                      ; Clothes_Earhart "Amelia Earhart's Outfit" [ARMO:0022766A]
(or remove the line from the .txt)

Notes:

- if no underline and plugin name are set, the SFSE plugin automatically tries to find the record in Starfield.esm
- what's written after a semicolon ( ; ) is ignored by the code
- to remove an ID from one of the .txt files, you can either set it to 0 or actually remove the line


In LocationData.ini you can find settings like fFemaleMinHeight, fMaleMaxHeight, iFemalePercent, bDisableNames.

From v1.5., the plugin has "multi-database" support. It means the mod can load any .txt file whose filename starts with the filename of a vanilla database file, like:
MaleClothing.txt   --->  vanilla database file, editable, loaded by the plugin
MaleClothingMyAddons.txt   --->  custom database file, editable, loaded by the plugin as well

This makes it possible for mod authors to add as many forms to databases (without editing another) as they want.

In-depth info about each database file:
Spoiler:  
Show

EncounterPoints.txt: RefIDs of several vanilla Object References of Generic Base Forms placed at the four supported locations to be used by the vanilla Crowd System as "placement" points. These references are used by the Unique Character (UC) system as placepoints too.

Male/FemaleAnims.txt: FormIDs of Keywords. Each Keyword is linked to a Facial Animation set.

Male/FemaleClothing.txt: FormIDs of Outfits and Armors. The mod supports both Outfit and Armor forms as clothing.

Male/FemaleFaceNPCs.txt: BaseIDs of NPCs whose appearance data is used by the Modular People System.

Male/FemaleNames.txt: list of first names the Modular People System give to random NPCs.

Male/FemaleLastNames.txt: list of last names the Modular People System give to random NPCs.

Male/FemaleVoices.txt: FormIDs of VoiceTypes the Modular People System sets on NPCs.

LocationData.ini: added in v1.3: to change height (min/max), population ratio (by sex), plus option to disable names.

About the "Export" folder: it is not utilized by the mod itself. They contain the names and IDs of vanilla game records for those who don't have SF1Edit to look up them.

About the "UniqueNPCs" folder: contains an .ini of each unique character. The name of the .ini isn't important. What's important is their content and that they must have the file extension .ini.

Example .ini for Lieutenant Torres is included along with a few others for vanilla characters:

[Character]                           (lines written between brackets are called 'INI sections': this section contains general character data)
 sName=Lieutenant Torres
 iAppearance=001F3A2D   (Torres' BaseID)
 iFacialAnim=000C866F     (ID of AnimFaceArchetypeFriendly; so he'd have a friendly face expression anim set)
 iVoiceType=002BCA31      (ID of the voice type; determines his sound and available dialogue lines)
 fHeight=1.00                        (added in v1.3)

[NewAtlantis]                        (location specific data of Torres)
 iEncounterChance=100      (Torres would show up in New Atlantis with 100% chance)
 iClothing=00224FE9            (ID of 'Freestar Dustwear'. Note: iClothing supports both Armors and Outfits forms)

******************************************************************************************************************************************************


Optimization, AI, Performance:

Settings.ini has a setting named 'bExtraOptimized' which is off (0) by default. You can turn it on if you experience performance issues. The mod has built-in optimization even if this setting is off. I've been using this mod for a while now and I haven't had performance issues with it. I'd say if you have >55 FPS in New Atlantis (the most demanding location in the game), then you shouldn't any problems either.

Most AI processing is purely vanilla: only Unique Characters have custom AI (note: NPCs added by any mods have their own AI processing).

Modular People and Unique Characters are always created and deleted ingame. They are created shortly before their respective location loads and deleted (their "dynamic IDs" are released too) after they get unloaded, so when the player leaves the area where they are. This is intentionally a foolproof design. Keeping variables in the memory (or even saving them) when it's absolutely unnecessary could be the source of all kinds of problem you might have heard about..
So, to summarize: Modular People and Unique Characters are created/deleted at runtime and aren't even stored in save games unless the save was created while the player was at a supported location like New Atlantis. When you leave the area, they are deleted and their dynamic IDs will not even exist anymore: not in the memory, not in the save. Consequently, the mod can be uninstalled but only when all four supported locations are unloaded.


******************************************************************************************************************************************************


Custom Console Commands (Hotload UCs, Reload DBs), "Dev" functions:


CGF "ModularPeopleSystem:Handler.SetOverrideVoice" ActorRefID VoiceTypeID

Description: changes the VoiceType of any actor.
Warnings: works on any NPC.
Example: CGF "ModularPeopleSystem.SetOverrideVoice" FF123456 002BCA29
Example description: changes the actor's (whose ID is FF123456) to the voice type whose ID is 002BCA29.
(002BCA29 is an existing ID, of "GenericMaleYoungAdult" by the way).
Notes: mainly it can be used to find the voice that's fitting the most for unique characters. Click on the NPC in the console to see their ActorRefID. Changes aren't auto-saved in .txt or .ini.



CGF "ModularPeopleSystem:Handler.SetFacialAnim" ActorRefID VoiceTypeID

Description: changes the Facial Animation set of any actor.
Warnings: works on any NPC.
Notes: mainly it can be used for testing animations on characters. Changes aren't auto-saved in .txt or .ini.



CGF "ModularPeopleSystem:Handler.HotLoadUniqueNPC" sFileNameNoExtension

Description: "hotloads" a new unique character whose .ini was created after the game was launched
Warnings: can't be used to reload an already loaded unique character (use ReloadUniqueNPCs for that)
Example: CGF "ModularPeopleSystem.HotLoadUniqueNPC" MyCharacter
Example description: loads a UC defined in the file named MyCharacter.ini added to the UniqueNPCs folder only after the game has been launched.
Notes: for multi-word filenames, use double quotes like "My Character". Don't type file extension (.ini) after the filename. 



CGF "ModularPeopleSystem:Handler.ReloadINISettings"

Description: reloads Settings.ini.
Warnings: if the player is in a supported location like Cydonia, leave and reenter the area to see any changes.
Notes: handy if one edits mod settings while the game is running and would like to test them without exiting the game


CGF "ModularPeopleSystem:Handler.RebuildDataBases"

Description: reloads the databases of citizens (.txt files).
Warnings: leave and reenter the supported locations to see the changes
Notes: -


CGF "ModularPeopleSystem:Handler.ReloadUniqueNPCs"

Description
: reloads the databases of Unique NPCs (.ini files).
Warnings: leave and reenter the supported locations to see the changes
Notes: added in v3.2.



CGF "ModularPeopleSystem:Handler.DumpAllUniqueNPCData"

Description: dumps all unique characters and their .ini data to the log (../Documents/My Games/Starfield/SFSE/Logs/{ModName}.log).
Warnings: does not do anything if Settings.ini --> bLogging=0; note that the mod has verbose logging so if bLogging=1 the log can become quite large. Search for "DumpAllUniqueNPCData" in your preferred text editor to find the output in the log.
Notes: -



CGF "ModularPeopleSystem:Handler.ApplyOptimizations"

Description: applies the built-in optimizations that come with the mod.
Warnings: -
Notes: -

******************************************************************************************************************************************************


Compatibility:

It's not an exhausting compatibility list. It's based on reports and actual compatibility tests.

Verified to be compatible:


Better NPCs, Height Variation Toolkit, Starfield Community Patch (SFCP)

Verified to be incompatible:

Better Crowd Citizens

******************************************************************************************************************************************************


Install, Uninstall:

Use a mod manager or active the mod's plugin manually.

If you're currently in one of the supported cities when you first open the game with this mod installed, leave then reenter to see the Souls of Cities characters. Due to safety reasons, the mod doesn't remove the already existing crowd NPCs but once you leave, they are automatically deleted by the vanilla game so this mod can take effect.

While offically uninstalling mods mid-playthrough is not supported, you can do so but it's recommended to leave the supported locations first.

******************************************************************************************************************************************************************


Requirements:

Starfield Script Extender (SFSE)

Address Library for SFSE Plugins


********************************************************************************************************************************************************


Legacy Version:

The original "Legacy" version and design of the mod was made before the Creation Kit. In v3.0 (released on June 15, 2024), I mostly rewrote everying how the mod works, shortly after the Creation Kit was released. It's a slower and almost completely different implementation than v3.0 and above.


The Legacy Version is only recompiled to support the new game versions but it does not receive new features.

******************************************************************************************************************************************************************

License, Open Source C++ and Papyrus code:

GNU General Public License v3.0 (GPL-3). Source is in the Miscellaneous Files section.