Weekly Update - Quest System, NPC Conversations

In this update we take a look at a new work-in-progress Quest System and improvements to the NPC conversation system.


My primary focus for the past couple months has been on adding a quest system to Antilia. Antilia's quests will be broken up into stages, and each stage can present primary and optional secondary objectives.

One thing I am experimenting with that may be a bit more unique to Antilia are multiple-character quests which I've laid out the foundation for. Not all quests will allow for multiple characters, but I'd like to try it and see how it works for quests where it makes sense.

A work-in-progress Quests screen.

I have the basics of a journal/quests screen working as well as some of the guidance logic that'll help the player find their way through the next objective. NPCs can move around in Antilia, so I think it makes sense to provide a HUD indicator in most cases. (I can control when HUD and map indicators are provided.)

Quest objectives can optionally provide map and HUD indicators when appropriate to help players locate their next objective.

There is still some development work remaining for quests. For one I need to get more of the objective "condition checks" working (this code detects when an objective has been completed). I have a "give items to NPC" screen that NPC conversations can display, but it doesn't function yet. And third I need to get the rewards system working so that when you complete a quest your character can receive items, skill cards, guild reputation, and experience.

NPC Conversations

The NPC Conversation system has been expanded to allow multiple characters to speak with the player as a group. Dialog "nodes" can now have multiple "pages" of text, and each page can have it's own speaker, pose or animation, dialog, and camera transition.

It is perhaps easier to demonstrate with a couple samples:

Early demonstration of a conversation with multiple characters.

A more recent example conversation. Character dialog now appears with text styles themed based on the currently speaking character.

I have been thoroughly enjoying the process of developing these little scenes. Conversation scripts are easy to write and maintain, and I have been refining the system with new features like an include directive that allows me to place text styles and shared conversation nodes in their own files.

There are still things to consider of course - especially as characters start moving around more with better NPC behaviors. I wouldn't want to start a group conversation if not all of the characters are present. To address this NPC conversations now support embedded LUA scripting and I've been building up a library of functions such as "InConversationRange", "SpawnQuestInstance", and "GiveQuest". Player responses can also have a bit of LUA code attached to determine if a player response is available to the player.

I have been expanding the number of poses and animations available for use in NPC Conversations.

Factions System

Antilia now has a factions system. Quests will typically be associated with a faction, and completing the quest may earn reputation (and eventually rank) in the guild. A tab has been added to the character status view that displays faction rank and reputation.

The Factions tab. Note that I plan to hide factions with zero reputation in the future.

Miscellaneous Improvements

Set Player Character Behaviors

The player can now choose the behavior of characters they own but are not currently controlling. I plan to add Skill Cards that will unlock behaviors as you progress through the guilds. For example after a character joins the Fishing Guild they might receive a "Work for Fishing Guild" card that allows the character to earn money working for the guild when not being directly controlled. Later quests in the guild might unlock more behavior cards like catching fish and placing them into a container. With this arrangement repetitive tasks like gathering resources can be automated later on in the game as more behavior cards are found an added to the skill grid.

Trailer Component

And finally in preparation for getting more sophisticated NPC behaviors, I have created a very basic "trailer" component for use by Game Objects. It has some rough edges, but gets the job done for now. (If you played the Antilia MMO it had Jidou pulling crates around using a similar system.)

This style of carriage looks a little out of place on the Isle of Kasau, but it demonstrates a jidou pulling a cart object around.

That's all the updates I have for now, thanks for reading!