Core RPG handbook · Development build / version notes

Core RPG handbook

Create a shop, conversation and quest

Build a small ingredient shop, give its owner a conversation, and add a quest that starts and finishes through dialogue.

On this page

Each part can work on its own. Make the shop first, try a short conversation second, then connect a quest once both interactions work. Use a supplied NPC and the demo’s managers so you can concentrate on the new content.

Make a shop that sells an ingredient#

  1. Open Tools → Green Cloak Games → TileTick Core RPG → Shop Database, then click New Shop.
  2. Set a unique Shop Id, a Display Name, and the actual Currency Item used by your demo. Currency Name Override changes its displayed name, not the item used for payment.
  3. Add a Stock entry with Raw Shrimp as Item. For this example, set Buy Price: 5, Sell Price: 1, Can Buy: enabled, Limited Stock: enabled, and Starting Stock: 5. Enable Can Sell To Shop only if you want the shop to buy shrimp back.
  4. Validate the definition. In NPC Database, create a Shopkeeper, enable Add Trade Action and assign this Shop.
  5. Place or spawn the NPC using your local or multiplayer setup. Keep the working ShopManager, shop UI and player session references.
Actual Shop Definition Inspector with stable shop ID, Coins currency, buy and sell prices and limited starting stock.
Currency Item controls payment. Each stock row separately controls price, buying, selling and limited stock. Select the image to enlarge it.

Give the player enough of the same currency definition and an empty inventory slot. Trade with the NPC and buy one shrimp. The inventory should gain one item, currency should fall by five, and stock should fall from five to four. Then try insufficient funds and a full bag. Using a different item with the same “Coins” display name won’t satisfy the currency reference.

Give the NPC a conversation#

  1. Open Tools → Green Cloak Games → TileTick Core RPG → Dialogue Graph Editor, click New, and save the conversation in your own content folder.
  2. Give the asset a unique Conversation Id and a readable Display Name. Confirm Start Node Id points at the starting node.
  3. Select that node. Set Speaker Name and Body Text, for example “Fresh shrimp today. Need supplies for the camp?”
  4. For the first check, enable End After This Node. Validate and save, then assign the conversation to the NPC’s Talk-to action.
  5. Talk to the NPC in the game. Once the line opens correctly, disable the immediate ending and add a second node or a player choice.
Actual Dialogue Graph editor showing a selected choice node, branch connections and its node Inspector.
Use the graph for node flow and the selected node’s Inspector for its text. Resolve missing destinations and unreachable-node warnings before adding more branches. Select the image to enlarge it.

A choice needs Option Text plus a valid Next Node Id, or End Conversation. For a linear exchange, the node’s nextNodeId connects to the next line. Node IDs are identities, so check the actual destination rather than assuming the node order makes the link.

Choices can require a skill level, item or quest state. Node rewards run when that node is displayed; put valuable rewards behind an appropriate condition so reopening a conversation cannot grant them repeatedly.

Add a short dialogue-driven quest#

For a first quest, use explicit dialogue actions to start and finish it. This avoids needing a custom objective editor just to learn the quest and journal connection.

  1. Open Quest Database → New Quest. Set a stable Quest Id, a Display Name and Description.
  2. Add one stage. Set Stage Id to introduction and Journal Text to a short instruction to return to the NPC.
  3. Leave this stage’s Objectives, On Begin Actions and On Complete Actions empty, and leave Next Stage Id empty. The first stage is the first list entry.
  4. Set any completion text and rewards. Review the QuestDatabase’s Quests list, especially if your project contains more than one database. New Quest normally adds the definition to the first database it finds.
Actual quest stage with its stable Stage ID, journal text, objective and action lists, and Next Stage ID.
A stage’s ID connects journal progress and dialogue conditions. An empty objective list is suitable for this explicit dialogue-driven example. Select the image to enlarge it.

Open the conversation asset in the ordinary Inspector. If the graph doesn’t expose the quest controls, use the native fields below Edit in Dialogue Graph. On its node Choices, add:

ChoiceQuest ConditionsQuest Actions
Offer the questKind: NotStarted; assign your Quest.Kind: StartQuest; assign the same Quest.
Finish the questKind: AtStage; same Quest; Stage Id: introduction.Kind: CompleteQuest; same Quest.
A farewell after completionKind: Completed; same Quest.No reward action needed.

Completion already grants the quest rewards and records that they were claimed. Don’t add a second GiveRewards action for normal completion.

An empty objective list doesn’t complete a stage automatically. This example progresses through dialogue actions. Kill, item and other typed objectives need instances in the polymorphic objective list; the current default Quest Inspector doesn’t provide a full type picker for authoring them. Use your own editor/code for those objectives.

Walk through it as a player#

Use a fresh character. Accept the quest, check the journal, reopen the conversation and choose the stage-gated finish response. Check the reward once, speak again, then save and reload. The offer should no longer be available after completion.

If a quest choice does nothing, check the Quest reference, exact Stage Id and the ready authoritative QuestEngine. If a choice never appears, inspect its condition before changing the conversation links. If the journal loses the quest after loading, check its stable ID and database/registry membership.