I’ve been thinking a lot on how to make a very informative NPCs through out the game, making NPCs seem to know much more than conveying one-liner message to the player. I want to deploy NPC’s that can give you tips and clues not only to your main quest but also to game mechanics, loots, treasures, and opportunities. Then I think back some years ago when I played Elder Scrolls 3 Morrowind, I recall it has a pretty good NPC conversation window, which is kinda menu-based system (greet, talk, buy, sell, et al.), now when you choose to engage into a conversation with the first NPC you see, you will be given few topics to talk about.. but as you progress in the game you will notice the amount of keywords that you keep getting as you reach your game’s story goal.
The mechanism works like when an NPC talks about say “The governor was found dead in his bed, the murderer left no other clues except he forgot to yank that silver dagger out of the governor’s chest.”. What happens next is that the keyword “Silver Dagger” will be added to your list of keywords which you can use later to other NPCs who knows something more about that keyword. Once you successfully gather a new keyword brought upon by asking another NPCs about the last keyword; for example “Oh! that Silver Dagger, I heard it is a rare dagger, I also heard that the merchant Mr. Reynold once sold it to a complete stranger.” Now you got another keyword “Mr. Reynold” and get another.. and so and on so forth. Of course by using that mechanism you can also make keywords to lead you to other things aside from the main quest.
Now to implement it I will need to have a pretty stable data management, I think utilizing the GM’s data structures is enough (I actually made a data table editor, so it will be easier to manage and record new data inputs). I also need to do the menu based npc interaction. But before the menu options appear there should first be a one liner response from the NPC after you activated him/her like “Oh hey there, what can I do for you?”, it can also follow a sentence including an important keyword, for example: “Good Morning there, I hope you’re enjoying the morning breeze, unfortunately for the Governor he won’t and never will, he was found dead not long ago.” So there, the first lines of the NPC should have something that might interest you. so that is one ingredient I need to structure my NPC’s with, I have to make a system of keywords working as prerequisites to the another, and assign them to many or one particular NPC. Oh and also I need to make a mechanism to keep track of the new keywords, it should be like Keywords Log Manager, it highlights old keywords and new ones as well the messages related to the keywords.. The player should access it on a different window for reference.
Now this is the flow I’m thinking:
Approach and activates the NPC, then a box appears with text; generate a greeting text, plus sentence that includes keyword (depends on the NPC). In the same greeting window there are option buttons e.g.: “Talk” and “Leave”, If decided to “talk”, the main npc conversation menu driven window will appear, with menu options: “Topics, Rumors, Buy/Sell (if its merchant NPC), Leave, etc.”. When the player chooses “Topics” then the next set of menu will appear. Each menu item are keywords, there are permanent keywords like “Your Trade?”, “This Town?”, etc. and of course the quests driven keywords. If one topic item is selected, texts that relates to the topic will appear on the text field panel (you can scroll down if its long).
I like to implement this to my game, its pretty cool to have this in an RPG I reckon.
It sounds kinda intricate for a GM game, but why shouldn’t I do it?.
This is my preliminary layout for the NPC talk window:
That interface comes out when you of course activate the NPC. The messages in here can vary depending on the NPC or important events, but usually this will display greeting messages. And also depending on the message are the number of button options you can choose, on this one it has the common choices: “Talk” and “Leave”.
Now when the player chooses to talk this is what will come out:
It has 3 main panel: Portrait, Menu, and Textbox. (Read more of my new idea about the Portrait below), the Portrait displays the NPC’s face, the Menu panel contains the lists of items you can select (the number of items varies for different NPCs), and of course the TextBox Panel. I am also thinking of adding a question phrase panel just above the text box, it will display something like “Do you know anything about <keyword>?”… but I need to analyze more on how to make question phrases effectively.
I want to make portraits of NPC more interesting to look at by implementing facial reactions so to set the mood or the emotion of the NPC while talking to the player, and to the story the NPC is talking about. I think about 7 levels of emotion will do. 3 and lower will be negatively looking, 4 is no emotion, 5 and up will be positive emotions. Of course I should also think about adding Disposition Level on each NPC which determines their feelings towards the player (I’m going to discuss this too later), but on how to do this? I will have a sprite, the first image will be the head but w/out a face, next image will be sets of eyes, and I am going to use the function “draw_sprite_part()” (I need to define the sets first) to get the right set of eyes in that image, next will be the mouth part, will also be using “draw_sprite_part()”. Its better to use draw_sprite_part to make an image work like tile sheets, than doing each face emotion as frames.