Jump to content

[WIP / Brainstorming] Universal Follower Framework


Chesko

Recommended Posts

Hey, all. Frostfall 2.0 is starting to get wrapped up, so I've been looking ahead at what comes next. Frostfall 2.1's major focus will be Followers and NPCs, and the way that they are affected by cold. However, some things I've already learned from experience from working on Wearable Lanterns:

 

Supporting followers, even in vanilla Skyrim, is a big bag of hurt. Bethesda can't make up their minds about how they would like to handle followers. There are at least 2 different conventions used in the base game ("normal" followers, like Jenassa, and Dark Brotherhood followers). Three if you count Dawnguard, which uses its own system of aliases.

 

There are several major multi-follower mods: Amazing Follower Tweaks, Ultimate Follower Overhaul, and Extensible Follower Framework. There might be more, but those are the ones that come to mind. They all have their own system of managing followers and their own ReferenceAliases.

 

Because of the above difficulties, it's hard to do things like:

 

* Assign generic dialogue topics to followers.

* Run scripts against some or all followers currently in service.

* Know exactly how many followers you have.

* Provide support for all types of multi-follower mods.

* etc

 

Because of these problems and the fact that I'm tired of dealing with them, I would like to, after Christmas break, start putting together something called the Universal Follower Framework API that would try to bridge the gap between all of these. In my opinion, I should be able to support all multi-follower mods regardless of implementation, and support all followers from the base Bethesda game, while ensuring the integrity of my script information. This system would essentially be a set of Papyrus global functions call-able by any mod that wants to use them and support followers better.

 

Some ideas for functions would be:

 

 

 

Actor function GetNthFollower(int iFollower)
int function GetFollowerCount(bool bIncludeAnimals = false)
bool function IsFollower()
int function GetFollowerIndex()

 

 

 

...and so on. Just very generic functions that enable you to do powerful things regardless of the user environment.

 

WIth the above examples, I could do something like...

 

 

 

if Jenassa.IsFollower()
   if Jenassa.GetFollowerIndex() == UFF.GetFollowerCount() - 1
       notification("Jenassa, you are the last follower! Haha!")
   endif
endif

 

 

 

Or, imagine that you and all your followers are gearing up for a massive battle with the enemy, and you want to make sure that all of your companions are dressed appropriately.

 

 

 

int iFollowerCount = UFF.GetFollowerCount()
int i = 0

while i < iFollowerCount
   Actor myFollower = UFF.GetNthFollower(i)
   if myFollower.GetItemCount(BattleCape) == 0
       myFollower.AddItem(BattleCape, 1)
       myFollower.EquipItem(BattleCape)
   endif
endWhile

 

 

 

Silly, but you get the point. Imagine trying to do that when you don't know if your user is using EFF, or UFO, or AFT, or none of the above.

 

So, the purpose of this thread: what kinds of features would you want in a Follower API such as this? What would make your life easier when trying to support the multitude of followers and follower mods in existence?

 

Thanks!

Edited by Chesko
Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...