Writing NPCs

So, I’m at a point with a project I’m working on, that I’m working on making objectives clearer for my players. However, one small problem - I’m a programmer, not a writer.

After experiencing some difficulties with writing NPC text, I wrote up a question on the gamedev stack exchange for writing effective NPC text. As you can see, it’s apparently a broader question than I thought I was asking.

I want (some of) my NPCs to give helpful hints to the player about things they ‘should’ do, places they absolutely need to go at particular plot points, or the perks/abilities that a particular item confers, and how to use them.

Do any of you have some experience with writing NPCs that help the player to make informed decisions? (Or, indeed writing NPCs at all? This isn’t my strong area, yet I have to do it.)

I got stuck once I left the castle, pretty sure I was told to go to Dunamne, but forgot why. I ended up exploring for a while before going back to the King again.

I don’t see any problem with the NPC conversations, but it could be that users are skipping parts of the conversation (a lot of people do), so maybe it needs some kind of “Quest” system to show what you are currently supposed to be doing that can be referred to when lost.
Active Quest: King Aylea has sent me to Dunamne to speak to Kayn.

Take a quick look at the Myer Briggs system and jungian psychology.

Not a bad idea! I can’t believe I glossed over that. I can add that in relatively easily.

While I can see this as being useful for creating ‘flesh out world’ NPCs - as this gives a simple way of creating a simple character - how exactly does this help write an NPC that can guide a player?

I do RPG’s, so NPC’s are critical to the plot role:

You have two main types, Quest NPC and random NPC’s… Quest NPC’s obviously critical to the plot and sub-missions / side quests can be overheard or initialized by talking to random NPC’s.

As to what they say / do / act in cutscenes is all dependant on your storyline.

I had suspected that, and your expertise confirms it. Thanks for that part of the puzzle.

More specifically to the question - in your experience, when you have an NPC that isn’t a ‘Quest’ NPC, yet is still trying to get the player to do something, do you have any tips for that?

Here’s a scenario, if that helps: In Game: The Game, at the current point in the plot, a sidequest has opened up far away from where the player currently is (i.e. player is in a town in the south of the world map; the quest has opened for some reason in the north.)

Without creating a ‘breadcrumb’ questgiver (I’m referring to the sort of quest you see in World of Warcraft where the objective is to go from the current safe area to another safe area that is saturated with available quests), I would logically assume it would be a good idea to have an NPC in South Village respond to the sequence trigger by having text to tell the player that they can do something in North Town. What would a good - and, for reference, a bad - line of text look like for this situation, and more importantly, why is one good and the other to be avoided?

If I understand correctly you’re talking about pointers, sure… Definitely, many a time a quest get’s updated in parts by talking to a random NPC. It doesn’t cause a quest to happen, but updates an original quest that can be activated by any event.

On what to avoid, I will say just make sure the quest or pointer makes sense: I’ve seen quest’s happen just because you walk towards a well or something strange :). You have to think of the whole story arc and build the game around the plot line.

I’ll take an example from a previous title, you walk into a village and an NPC approaches you saying there’s trouble in X town. You reply by asking what’s going on? But this NPC doesn’t have enough information for you to trigger a full quest, just enough to make a note in your RPG diary. You speak to another NPC, who tells you a tower exists in NorthTown so with the two pointers added together. You then have a sub quest to find out what’s going on.

Which can lead to more quests, the only tricky part is having a sense of control on a questing system without overburdening yourself with work, sure it’s great to have many sub-plots and sub quests but it can be difficult.

On the upcoming title I’m working on, how you interact with the first few set’s of NPC’s will actually define how the rest of the storyline works out.

TextAssets are good. They allow one to create entire text outside of Unity and can use delimiters like “;” to denote a new line.

Throwing out a thought, you can use trigger spheres that only active one script of dialogue in that area.

I see - make sure the objectives are A) always telegraphed, and B) are telegraphed by an easily-accessible NPC. Random ‘walk into trigger gives new quests’ are bad, because they buck expectations.

I’ll playtest my project again just to make sure my text makes sense, and that good advice is easily found, and that my players are more likely to know what to expect at any given point.

In my case, I’ve went for simplicity; I’ve got a basic ‘sequence trigger’ system built into the text providers. Pretty much, when you’re advancing dialogue, there are no branches. Certain NPC interactions, though, will cause the sequence trigger to increment. This sequence trigger A) determines what objects can load when you enter certain scenes, and B) determines what NPCs say (my text system is set up to make threads either default, or respond to a particular sequence thread.)

My sequence system does support multiple sequence threads, but for this project I’m keeping it simple - the main questline exists on a ‘Main’ thread, and there is a single sidequest on a ‘Goldensage’ thread. I know the value of simplicity, it’s golden.

I actually have certain dialogue triggers that when walked into start a dialogue sequence. I usually use them in the Evil Castle lead-up levels to give the villain a chance to establish themselves (something else I’m probably doing horribly ham-fisted).

Technologically, I have the dialogue system set up to merely set a flag that an observing GUI script looks for; all that script winds up doing when it sees that some text source is ready to ‘speak’, is it starts rendering the textbox, speaker name, speaker text, and advance text button. It can also be triggered by a button press (when you come enter an NPC’s text trigger, I can tell it to draw a button over that NPC instead. It’s a neat little system! I might release it on the Asset Store after my game’s release.)

Good suggestion on basing the text content from the text asset, though. Right now I’m entering text into an editor window instead. That may be a point of improvement for the system; well suggested!

Sounds good to me, if you need anything PM me or I’m on Unity’s skype chat some times.