Larian Banner: Baldur's Gate Patch 9
Previous Thread
Next Thread
Print Thread
Page 1 of 2 1 2
Joined: Oct 2020
member
OP Offline
member
Joined: Oct 2020
I am a modder who has created a number of popular follower/companion mods for AAA titles over the years. Based on my experience in the arena, I thought I would throw some suggestions out there to improve BG3's follower system.

Summary:

1) Companion Relax: If player-controlled character appears to linger, have AI-controlled characters "relax" by doing things that show independence. 

2) Companions Help with traps/locks - PC clicks on a container. If someone nearby has detected a trap, they interrupt and  speak up. If the container is locked and someone nearby has skills/lock-picks, they should offer to help.

3) Companion AI for combat - Add ability to flag party members for Computer Control during combat with ability to toggle on/off at any time. Bonus if you include customizable AI Packages.

4) Time based reputation increase: If an NPC spends time traveling with the main character, then slowly improve their reputation with the PC, but not beyond 50%. Companions told to stay at camp would not get this bump.

5) Proximity Approval Controls - Game option: "Dialogue Choices Affect Companions" drop-down box:  [ Anywhere | Traveling with Player | Within Earshot ]

6) Interjection Controls - Allow everyone (nearby) who has something to say during conversations to speak up (instead of limiting it to 1 random Companion). Maybe a config option. 

7) Configurable (Total) Party Size Limit up to 6 - Suggestion says it all. 
 
8) Summon All - A Summon All button that brings everyone to the focused NPC and re-chains them.


Details:

You might notice many of these suggestions are geared towards making companions act on their own. It is all about building the perception that your ai-contrrolled companions are people and not simply drones. Whether that independence manifests as getting bored when the player lingers, interjecting in conversations, fighting on their own in battles, volunteering to help with locks/traps or simply showing a gradual fondness for the player based on how much time spent together. BG1/BG2 broke new ground with battle cries and party banter. Hopefully BG3 will bring even more to the table.

Companion Relax

This is listed first because of all the suggestions, it would have the biggest impact and it is something BG1/BG2 didn't have. With Chaining, BG3 even has an opportunity to go where other RPGs have not. 

Skyrim and Fallout 3 have the idea of Companion Relax. Where the player lingers in a area and companions get bored and start doing things. Maybe they sit in a chair or use a nearby anvil to start hammering on something. But in these games, the player never leaves the companions. So what people might get up to while being ignored is rather limited.  

For starters, I would like to see something similar in BG3. [EDIT] I've noticed BG3 has an IDLE animation that kicks in when the player lingers, but from a high-view camera, it is hardly noticeable. I would like to see a phased approach with simple idles like looking around and swaying kicking in sooner and more pronounced idles kicking in the longer the companion is idle. After looking around and swaying a bit, someone may decide to sit down on the ground. Fomr there they may pull out a weapon and start to sharpen it. And after sharpening the weapon 4 or 5 times, get up and start using nearby objects.But that is just for the people near the player that the player can redily see.

Now Imagine unchaining someone, focusing  on exploration with your most athletic or stealthy characters and after several minutes you double click to return to the others. They are sitting on the ground eating together. Maybe some have actually pulled out blankets and are laying down. Clerics may be praying. Fighters may look like they are exercising (push ups?). Or maybe they are spread out doing things that make sense in their location. Astarion is standing next to a bookcase reading a book,  Lae'zel is sitting off by herself away from the group. Shadowheart is taking a nap and Gale is using his mage-hand cantrip to give himself a back massage. Wyll has found a nearby friendly wolf/bear in the druid grove and is patting it. 

You need 3 things to make it happen:

1) Loiter Detection. It looks like you already have this to some extend. Those idles I see are being kicked off by some sort of monitor. But you may need to expand it to understand the difference between chained and unchained idles. I wrote some code for FO4 that allowed the player to move around in a circle or back and forth without ending the Loiter state by tracking 7 previous coordinate points and doing some math every 3 seconds to see if it looked like they were REALLY moving on. Might want to consider something like that.

https://github.com/Dheuster/AFT-FO4...ts/Source/User/followersscript.psc#L1509

2) How does loiter work? Most games lace Maps with Attraction Objects (AOs) to provide hints to the AI on what activities/animations make sense nearby. AOs and NPCs have tags to ensure compatibility with animations (and that the activity makes sense for someone). For example, there may be an AO near a stream that causes a Humanoid to kneel down to take a sip of water. Wouldn't want the cat using it. If a search for nearby AOs yields no results, you are probably not in a loiter friendly area.  You can speed up searches by defining quadrants in the map. Us the X,Y to compute the quadrant and then do a quadrant lookup in a map that already knows all the loiter objects in in that quadrant. Thus getting a list of AOs is a constant-time operation given a mapid, x and y quardanant.

3) You need the ability to interrupt the Loiter AI stack and return to normal quickly. Given the fact that BG allows you to change focus to anyone at any time tells me this probably wouldn't be an issue. Just make sure you can get up and start moving again if the nearby player-controlled character moves on or starts a fight or changes focus to the NPC. You could also use a generic transition effect like them teleporting from whatever they are doing to the players side (The way a summon-all button might work).

Companions Help with traps/locks

You instruct a focused NPC to walk up to a chest and open it. As the party approaches, someone notices a trap, but the command is already in motion. Trap goes off before you can stop it.

Ideally in this situation, the first person to notice the trap starts a conversation with you before the trap goes off "I wouldn't do that if I were you./End" Same way you are stopped from looting a body if someone who cares can see you. Furthermore, if someone has a trap disarm kit, they speak up afterwards "Care if I take a look?/Sure/Leave" Hit "sure" and they attempt to disarm trap. Or you click on a locked door. Most qualified person in party speaks up, "Care if I take a look?/Sure/Leave". Hit "Sure", and they attempt to unlock.

Companion AI for combat

Every game I have modded was real-time, where the companion AI was needed. So my mods generally offer AI package options that make companions fight within the boundaries of an archetype. 

I realize AI isn't necessary in BG3 because turn-based offers party micromanagement. But not everyone wants that. Plenty of gamers are perfectly fine only worrying about the protagonist. And in fact having companions that act on their own during combat adds to the feeling of independence and the illusion that your companions are real people. 

So I suggest you take BG2's lead and offer AI Package options for companions with "No Package" maybe being the default, which means the player micromanages the NPC. Bonus if you can also assign one to the protagonist. Combine this with a "Fast Forward" button or an option to speed up game combat in general and it could address the time investment issues some of the real-time fans complain about. Probably need a party AI toggle on the screen somewhere like BG2 had. 

Time based reputation increase

The idea is simple... we tend to grow fond of those we spend time with (like it or not). A companions opinion of the player should naturally improved over time up to 50% of max.

Implementation wise, you have a periodic event (Every hour?). Checks to see if the Players XP is higher than the last time the event fired. If so, boost the reputation of anyone currently in the party. The amount would depend on the current reputation so that it grows quickly at first but slows down as it approaches 50%. Here is some sample logic if reputation goes from -100 to 100:

Code
event everyHour():
  if player.xp > persisted.lastXP:
    for npc in currentParty:
      if npc.approval <= 50:
        npc.approval += ceiling(4 - (npc.approval * 0.08))
  persisted.lastXP = player.xp


If you want something more accurate to account for dismissing or changing party load out, you could have a more frequent poll (every 10 min?) that increments a count attribute on each active party member if the XP has changed. When NPCs break a threshold (say > 5), they get a rep bump and their count resets. 

Proximity Approval Controls

The idea is pretty simple... why are companions reacting to conversations when they were not around when they happened? So offer the ability to limit approval changes to those who are within earshot. 

Can users "cheat" by sending companions away so they wont overhear conversations that might upset them? Sure, people do that in real life.  If a user sends someone away to save face with them, that should be fine. If people want to see all reactions, even those who are not nearby, that could remain a game option. Which is why I suggest a game option with a drop down: Anywhere | Traveling with Player | Within Earshot.
 
Interjection Controls

One of the most popular features I added to a companion mod was an option to make all companions speak their lines during conversation interjections. Why was it popular?. I suspect some users know they will only play the game a limited number of times before moving on to the next popular game. So there are those users out there that want to experience as much as they can on their 1 playthourgh (or maybe secondary/last playthrough).

Obviously the companions would need to be nearby (chained or not). But aside from that, I think the option should be there (Game Option?), even if disabled by default.

Configurable Party Size Limit up to 6

People are always asking me to increase the party size limit in my mods, so I am loath to request this. But because it is requested so often, I know others will want the same thing from BG3. So here are my thoughts. 
In the Game Play options let users set their own party size limit with a max value of 6 and a default value of 4. If they change the value beyond 4, they get a popup informing them that larger parties receive an XP penalty for balance reasons. Party size of 5 = 20% penalty. Party size of 6 = 35% penalty. Thus encourage the classic 4 person team, but allow the larger parties using a somewhat hidden game option. 

Summon All

This is mostly a convenience request. If you find yourself suddenly in an unexpected fight, summon your companions to your side. Conversely, send 1 unchained companion into an enemy base and once they reach a safe spot, teleport everyone to them.  In multiplayer env, maybe this only applies to computer controlled companions.

Yes, I COULD guide the party 1 by 1 to the player-controlled character, but it is a lot of trouble. And before you say things like... not everyone can jump as far as others, don't forget, Laz can throw companions as far as she can jump.  So forcing me to throw my companions around to reach a certain spot is mostly just a time suck.

If people don't like it, they are free not to use it. You could even make it a game option that is disabled by default and can't be enabled on harder difficulty levels. Same way many games disable fast travel on the hardest difficulty levels.  

Last edited by Dheuster; 24/10/20 04:01 PM.
Joined: Oct 2020
member
OP Offline
member
Joined: Oct 2020
Interjection Controls Addendum: I was play testing today and ran into a situation where everyone spoke their line... at the same time. I almost forgot about this. If you allow multiple comments, you have to have code that ensures they are spoken one at a time and not all blurted out at once. I ran into this issue in FO4 as well. Whether you take my interjection suggestion or not, this needs to be fixed in the game.


It happened when I failed to kill the parasite that came out of that dwars eye near the owl-bear cave. Everyone spoke their disapproval at the same time and I couldn't understand anyone.

Joined: Oct 2020
enthusiast
Offline
enthusiast
Joined: Oct 2020
There are some great ideas up here. Why has this post fallen into obscurity?

Joined: Oct 2020
member
Offline
member
Joined: Oct 2020
+1

Originally Posted by DistantStranger
There are some great ideas up here. Why has this post fallen into obscurity?



+1, guess there's nothing to argue with smile

Joined: Oct 2020
member
Offline
member
Joined: Oct 2020
While I was doubtful of something self-titled "amazing ideas" these actually are very good ideas, that wouldn't be so hard to implement and would address many complaints concerning companions.

Joined: Oct 2020
journeyman
Offline
journeyman
Joined: Oct 2020
Originally Posted by DistantStranger
There are some great ideas up here. Why has this post fallen into obscurity?

Wow, good find. Can a community manager pin this or submit it or something?

Joined: Mar 2020
veteran
Offline
veteran
Joined: Mar 2020
Sounds great and I like how cost efficient some of it is. Super creative


Larian's Biggest Oversight, what to do about it, and My personal review of BG3 EA
"74.85% of you stood with the Tieflings, and 25.15% of you sided with Minthara. Good outweighs evil, it seems."
Joined: Nov 2020
Y
stranger
Offline
stranger
Y
Joined: Nov 2020
Amazing suggestions!

I would add that the developers could look to the companion combat AI used in Dragon Age III. Additionally, DA3 also had great character idle banter discussions.

Overall, I am very pleased with BG3 so far, but as others have mentioned, I would rather focus on my primary protagonist and let my companions do their own thing based on scripts I assign them to (such as only heal x characters when health is <30%, etc).

Joined: Oct 2020
old hand
Offline
old hand
Joined: Oct 2020
Good stuff here.

Joined: Nov 2020
G
guy Offline
member
Offline
member
G
Joined: Nov 2020
great for everything except the computer controlled ai combat

Thats more for real time or real with with pause.

Turn based? As is it is good.

Joined: Nov 2020
Banned
Offline
Banned
Joined: Nov 2020
Originally Posted by Azarielle
.


How are you able to make a screenshot from your character for your Avatar?
When I made a screenshot with the keyboard it did not work at all.

Joined: Oct 2020
old hand
Offline
old hand
Joined: Oct 2020
Originally Posted by JustAnotherBaldu
Originally Posted by Azarielle
.


How are you able to make a screenshot from your character for your Avatar?
When I made a screenshot with the keyboard it did not work at all.



I use this for screenshots: https://gyazo.com/en

Joined: Sep 2020
addict
Offline
addict
Joined: Sep 2020
+1 for all of this. Except Time reputation increase, unless they will add proper game pause with it, otherwise I gonna get some reputation, while going to grab a cup of tea IRL.

PS: JustAnotherBaldu, if you're using Steam it's F12 for screenshots.

Last edited by Zellin; 15/11/20 02:36 PM. Reason: PS
Joined: Oct 2020
stranger
Offline
stranger
Joined: Oct 2020
There's some really great feedback here! Clear, detailed, concise and constructive, you love to see it! 👌👌👌


What is the colour of night? Sanguine, my brothers and sisters.
Joined: Nov 2020
Banned
Offline
Banned
Joined: Nov 2020
Originally Posted by Zellin

PS: JustAnotherBaldu, if you're using Steam it's F12 for screenshots.



Thanks. The Zoomer is strong within you.
But no kidding I feel with every passing year I become more of a tech-Boomer.

Joined: Oct 2020
L
apprentice
Offline
apprentice
L
Joined: Oct 2020
+9000

Joined: Oct 2020
stranger
Offline
stranger
Joined: Oct 2020
+1


Der Schmerz ist nur vorübergehend. Ihr solltet die Prozedur eigentlich überleben.
Joined: Oct 2020
L
addict
Offline
addict
L
Joined: Oct 2020
I’m hugely in favour of these suggestions, aside from allowing the party to all teleport to one character (unless there’s an item/story rationale for it, like the pyramids in DOS).

Joined: Oct 2020
O
journeyman
Offline
journeyman
O
Joined: Oct 2020
I'm all in for breathing life into the world , and theese suggestions do just that.
They should hire you to implement these things , and while your at it throw in alot more options for the players smile
If they don't hire you, please mod the shit out of this game to give the posibillity to turn on/off some of the things we don't like or want changed smile

Joined: Oct 2020
member
Offline
member
Joined: Oct 2020
+1 to your post, these are great ideas!! it is so sad that Larian won't care or ever read this... if they wanted to know about our thoughts on gameplay they would be conducting official surveys, or they would improve this forum to have like buttons and upvote system. Instead all they want is to use us as playtesters to fix bugs and realise their own vision of the game.

Page 1 of 2 1 2

Link Copied to Clipboard
Powered by UBB.threads™ PHP Forum Software 7.7.5