This is a continuation of last week’s exploration of fully AI controlled companion design. Once again, it’s really more of a general discussion, but BioShock Infinite was chosen as a hypothetical case study in order to highlight certain salient aspects of its design philosophy which work to our advantage, and to utilize these, along with some of the known mechanics, as starting points for extrapolation.
Anyway, let’s address some of the concerns that were brought up in the comments of the last post, and attempt to root out why fully AI controlled companions in the past haven’t been all that successful from a design/player experience point of view.
Perception and Independence
Perhaps unexpectedly, self-expansion as described in the last post is actually about things fundamentally not of the self. If one could simply go out and get those things, one wouldn’t need a partner for expansion (hence we have individuals who feel they have “outgrown” a relationship). It is therefore essential that any design solutions to the problems previously discussed need to keep up at least an illusion of autonomy and independence for the companion.
If the AI companion is merely a proxy or artificial layer added to de facto player controlled abilities, that’s just not going to do the job, because in the end it is still the player doing everything that matters. This is why Laurie Cheers’ example with the Tyrant Guard feels frustrating, because it really boils down to player controlled abilities not properly responding to player action—a case of reverse lack of independence where an incompletely implemented proxy and unpredictability strips the player of his ability to respond properly and intentionally.
The key, perhaps, is the counter-intuitive idea that the appearance of independence in a partner doesn’t have to rely on unpredictability. After all, the purpose of unpredictability in a partnership is simply to pleasantly validate the partnership’s value by highlighting formerly unexpected or unknown avenues for self-expansion. We don’t actually want our partners to be truly unpredictable.
In terms of perceived intelligence, we might even go as far as to say that companion AI should be as predictable as enemy AI should be unpredictable. We know from the wealth of research on confirmation bias that we tend to skew our search for evidence to confirm our already existing hypotheses. This is relevant to us in that, because we look for what we value, whereas we look for unpredictability in enemy AI, we look for predictability in companion AI.
For the most part, a slightly unpredictable enemy AI simulates adaptability and implies that the same trick won’t work every time. With companion AI, however, we can already expect that the player will react intelligently to the situation. Which means “adaptability” and intelligence is perceived when the AI predictably corresponds with player action—when the player’s expectations for the companion are confirmed (this even happens in multiplayer, where failure to meet expectations is perceived as lack of skill).
The whole point of this is that what we want isn’t really autonomy in the full sense of the word (independence from the influence of outside systems), but proportional correspondence. The trick is to achieve reliability without falling into dependency.
A primary requirement for us, then, is a partnership in which both the player and the companion have equal footing, where neither is secondary nor mostly superfluous (Irrational’s emphasis on this was why this example was chosen to begin with). For instance, if Elizabeth is always and only playing CC to the player’s DPS, that’s boring—and worse, exactly the situation that is really meant by “predictable” gameplay.
Playstyle as Behavior Boundary
Unfortunately, what is perceived as “equal” is highly relative to the pace and playstyle of the player. What we really need, then, is a way to simulate initiative taking based on player intention. We want a companion that does something autonomously because it’s the most obvious and natural fit for what the player is trying to do.
Let’s think about this another way. If the companion is always waiting for the player to act/move first (the usual solution), it’s pretty much impossible to even attempt an illusion of autonomy. So we need to be able to tell the companion what the player is trying to do, not what the companion should do, so that what the companion should do arises organically and of its own accord.
The real goal here is to allow the player to quickly communicate acceptable parameters of bot behavior to prevent the player from being overshadowed. We are then much freer to allow the bot to run mostly unhindered within those parameters. Then, once we have proper job division (to be discussed later), everything the bot can do should fall nicely within player expectations, as well as feel “equal”.
Let’s consider an example implementation. A simplistic way to communicate the necessary information might be something like “stances”, where the player can sustain difference stance modes to indicate styles of play (to draw “acceptable parameters” from). Here are two common FPS playstyles that might suitably serve as bases for these declarative stances or modes:
An expeditious player is in a hurry to get to where he wants to go. He spends less time killing mobs and more time focusing on gaining ground. The way to preserve health is to get to the next safest location as effectively as possible. Concern for conserving resources is therefore minimal.
A meticulous player wants to take his time moving forward. His health preservation relies on insuring there are no surprises, and that one’s flank is fully clear. Making headway, therefore, takes a far backseat to dealing maximum damage with minimum resource expenditure. There are no qualms here about backtracking in order to pick up something which the player didn’t need earlier.
Importantly, communicating the job the player wants to fulfill is not really the issue here. We can already do this by looking at the weapon or skill the player is using, his proximity to mobs, and the number of mobs within that proximity. Instead, we need to assess the aspects of the player’s agency that the player values and enjoys exercising the most with these styles so that we can prevent encroachment or unnecessary overlap.
So, what do these styles mean in terms of Elizabeth’s agency? A player in expeditious mode is more likely to be fine with Elizabeth running ahead of the player and dealing damage in amounts greater than or equal to the player. It also means Elizabeth should be quick to disengage mobs outside a relatively tight radius, even if the mob is still alive1. Elizabeth can be looser with area of effect and high damage skills, and less conservative of resources.
A player in meticulous mode, however, takes great pleasure in dealing high amounts of damage himself. So we want Elizabeth to stay mostly behind the player, use less damage skills and more utility or passive skills, and mostly concentrate on long distance, resource conservative damage. Abilities that manipulate time, snare enemies, avoid adds, decrease enemy damage resistance, etc.
We can then venture a bit into job division territory and add a little tactical depth by introducing passive attributes to stances, such as damage transference from Elizabeth to the player in expeditious mode and increased damage output from the player (at the cost of decreased damage output from Elizabeth) in meticulous mode. Etc.
Anyway, the point is that such schemes that use behavior boundaries as opposed to behavior specificities allow far more leeway (“autonomy”) while maintaining predictability as well as preventing competing agency. Lastly, we can increase predictability and cooperative agency further through job division.
Player Driven Job Division
Ok, let’s finally talk about job division. Recall that the whole point of job division was to help facilitate the feeling of self-expansion. It would seem, then, that simply giving Elizabeth stuff the player doesn’t have access to should do the trick. In effect, however, such a scheme would create distance between Elizabeth and the player because her abilities would seem arbitrary and unrelated to the player’s build. Again, self-expansion is about “mutual sculpting.” We still want stuff the player can’t have, but we need them to develop out of the player’s build in some way.
There’s no need to get too cute with this though—a less than original solution is just to have Elizabeth gain abilities based on which types of abilities/weapons the player uses most frequently. This also has the effect of making them something the player earns over time through agency expenditure.
If the player makes 50 melee kills, Elizabeth gets winter blast. 50 more melee kills makes winter blast a constant, party-wide passive aura that slows down approaching mobs. 50 more gives damage resistance, widens the aura, etc. etc. This sort of thing. (Presumably, if mobs are limited, this also supports the fun of min/maxing and planned/deliberate gaming.) On a different playthrough, she might develop time manipulation abilities instead, or other abilities that help melee style play.
If we then give different mob types different immunities and resistances, we can make it more natural to switch off DPS to Elizabeth. Then, the support skills the player uses also push which damage types Elizabeth develops over time.
But we can take this further. Say that all vigors which the player comes into access to can be permanently sacrificed to Elizabeth (restricting one’s role to empower another). Elizabeth doesn’t have to gain the powers herself, but she might use them to augment or develop her own abilities. We might even extend this to ammo, weapons, health/eve items, etc. where parsimonious play will lead to significant permanent buffs for the player (cf. Dawn of War II item donation).
The above schemes allow Elizabeth to become an investment sink, and the later additionally promotes the emotional connection cooperative sacrifice encourages. Together, they would help maintain the illusion of self-expansion far beyond the point of diminishing returns.
But the real advantage here is that everything is earned and arises as an extension or result of the player’s regular play and build. This facilitates game balance, alleviates the “Fatman problem”, and helps mitigate the “when you have a hammer, everything looks like a nail” problem described by Mr. Ken Levine (players would literally solve the entirety of BioShock using only electro bolt and shotgun) by making specialization meaningful and fun again, and by establishing a framework from which we can permit synergistic passive bonuses to encourage the development of multiple abilities in parallel.
It’s easy to come from a design point of view and spout out vague concepts expecting programming to just make it happen, and I’m completely certain there have got to be difficulties in that department which I haven’t been able to see. But beyond those, there are still certain design problems which the “solutions” proposed in this post might cause themselves.
A naturally meticulous player, for example, is unlikely to voluntarily switch out to expeditious all that often, so we need to give incentives or design challenges in ways that encourage mode changes in order to prevent a job division progression that becomes pigeonholed and unworkable towards the end of the game.
Plus, the subjective nature of “meticulous” or “expeditious” limits their value in communicating to the player explicit behavioral boundaries (although job division helps out with that). The conceptual line between playstyle and job is nebulous at best, so we also need to avoid falling into the thought trap of assuming that certain stances will always be played using certain skills/weapons. These points make designing correlate behaviors for Elizabeth require extensive playtesting with a wide sampling pool.
But at any rate, the main goal with this discussion was to push our assumptions about the limits of AI companions. We haven’t seen many (any?) games which give fully AI controlled companions as much power and importance as the player, so I’m looking forward to how Irrational is going to tackle that with their forthcoming game.
So, can we really achieve the feel of multiplayer co-op with the AI technology we have right now? I believe the answer is a definite yes.
1 I probably should have clarified this earlier: mob is short for mobile