Souls of Cities – A Modular People System – SFSE V1.2

Souls of Cities - A Modular People System - SFSE V1.2

Overhauls the entire crowd system.

About this mod:

Whether you’re looking to select the faces, outfits, voices, 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 system named “Modular People System” which doesn’t feature funny looking/robotic moving characters but features full names (for everyone), fully enabled facial morphs (FaceGen), animated clothing (physics) and properly aligned facial morph complexity; and 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 mod and just use it as it is, then aside from some random unique characters occasionally showing up, what you’ll see is fully featured human NPCs instead of “zombies”. The SFSE code handles post-processing (e.g. to circumvent the issues that a regular NPC swapping may cause like outfit clipping, neck seam, brown face, etc.). The unique characters I mentioned 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 mod for yourself and to add your own unique characters to the four supported locations (New Atlantis, Akila City, Cydonia and Neon), then the good news is that you can do so by simply editing a .txt or .ini file which shouldn’t even take more than a minute.

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

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 (namely: appearance, name, outfit, voice, encounter chance, encounter locations) then the code ensures the presence of this unique character at the given location, locations with the given appearance and so on.

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
– Install, Uninstall
– Requirements
– 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:

Settings.ini: general mod settings. It contains descriptions for every setting (see images below). Here are the “most important” ones:

bExtraOptimized (custom optimization that comes with mod)
iFemalePercent (female/male population ratio)
bDisableNames (ability to turn on/off real names)

AkilaCity//NewAtlantis//Cydonia//Neon: there’s a folder for every supported location. Each location folder contains the same named .txt files like FemaleFaceNPCs.txt and MaleNames.txt. You can edit these .txt files (“databases”) separately to define who and how you’d like to see. In the .txt files, what’s written after a semicolon ( ; ) is ignored by the code, that’s only there for us humans. If you want to remove an ID from one of the .txt files, you can optionally set it to 0 instead of completely removing its line from the .txt.

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.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 most fitting voice” for unique characters. Click on the NPC in the console to see their ActorRefID in the center. Changes aren’t auto-saved in .txt or .ini.

CGF “ModularPeopleSystem.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.HotLoadUniqueNPC” sFileNameNoExtension

Description: “hotloads” a new unique character (UC) you just added to the UniqueNPCs folder after the game has been started.
Warnings: can’t be used to reload an already loaded unique character, it can only load a UC once.
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.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 game is running and would like to reload it without exiting the game.

CGF “ModularPeopleSystem.RebuildDataBases”

Description: reloads the databases (.txt files). (So it acts as ReloadINISettings for Settings.ini)
Warnings: –
Notes: used for testing.

CGF “ModularPeopleSystem.DumpAllUniqueNPCData”

Description: dumps all UC data to the log file (Documents/My Games/Starfield/SFSE/Logs/{ModName}.log).
Warnings: does not do anything if Settings.ini –> bLogging=0. Turn it on by setting the value to 1 (then reload the INI if you’re ingame). 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: used for testing.

CGF “ModularPeopleSystem.ApplyOptimizations”

Description: applies the built-in optimizations that come with the mod.
Warnings: –
Notes: used for testing the Settings.ini –> bExtraOptimized as ReloadINISettings doesn’t auto-apply optimizations after changing its value.

CGF “ModularPeopleSystem.OpenModHomePage”

Description: opens the mod’s home page, so exactly this webpage.
Warnings: –
Notes: it opens the page with the default browser.

Install, Uninstall:
Use a mod manager (or install it manually by either editing Plugins.txt or defining a new sTestFile in StarfieldCustom.ini). If you’re currently at one of the supported locations when you first open the game with mod installed, leave the area then reenter the see the changes. (Due to safety reasons, the mod doesn’t remove the already existing crowd NPCs but once you leave, they get deleted normally).

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

Starfield Script Extender (SFSE)
Address Library for SFSE Plugins



Download mod

File File size
zip Souls of Cities-1-2 508 KB
Share mod:

Leave a Reply

Your email address will not be published. Required fields are marked *