View on Asset Store (opens in new tab)
Package details
- Latest version
- 1.0.0
- Last updated
- First released
- Unity version
- 6000.5.4 or later
- Package size
- 213 KB
- Files
- 91
- Favorites
- 1
- Views in the past week
- 7
Price tracking
- Last checked
- Tracked since
- Lowest recorded
- $24.49 on
Keywords
Smart Quest System
A quest system that always tells players why a quest is locked. The logic is plain C# you can unit test, and quests are ScriptableObjects you can diff in Git.
Affiliate link · Purchases support this site
Price history
Last 6 months
USDAsset preview
1 / 13
Smart Quest System screenshot 1
About this asset
I built this because the same thing kept breaking in every quest system I
tried. A quest wouldn't show up, or a player got stuck, and there was no
fast way to see why. So that's the whole idea here. Every condition a
quest checks hands back a real reason in words, not just true or false.
When a quest is locked it can say "Requires at least level 3, you have 1."
That same line shows up in the quest log, in a tooltip, and in the
debugger, and you can drop it into your own UI, because it gets worked out
in one place.
Two things come out of that, and you can check both before you buy. The
quest logic lives in a plain C# core that never touches UnityEngine, so it
runs in unit tests without you entering Play mode. I put 130 of those
tests in the package so you can run them yourself. And every quest is just
a ScriptableObject, so when a teammate edits one you read it as an
ordinary line in a Git diff instead of opening a graph editor to work out
what moved.
It stays out of your way. Rewards are data in your own words, and the
framework never hands anything to the player. You register one small hook
and your economy stays yours. Objectives handle the common cases: count
something like "collect 3 ore", check a live world state like "have 3
ore" (which drops back to incomplete if the player spends it), or count
distinct things like "visit 3 different shrines". Anything unusual is a
custom objective in about ten lines. Chains, choices, timed quests, repeat
rules and fail states are fields you set in the inspector, not classes you
have to inherit from.
Any game that tracks goals fits, from an RPG to a survival game to a
tutorial to a side questline in a shooter. The quest log, tracker and
popups are an optional uGUI prefab with a single theme asset. Restyle it,
replace it, or skip it and use your own. Nothing here depends on it, and
nothing depends on any other asset I sell. You get the full C# source. No
DLLs.
From the publisher's Asset Store listing.
Technical details
• Every unlock condition returns a written reason instead of a bool. A
reason is a key plus arguments plus a fallback string, so you can
localize it.
• The core is pure C# compiled with noEngineReferences, so it runs in
tests without the engine. 130 EditMode tests are included.
• Quests are ScriptableObjects and diff cleanly in version control. No
node graph is required, though a read-only graph view is there if you
want to inspect chains and branches.
• Objective types: counter, live world-state check, distinct-key counter,
and a one-interface seam for your own.
• Completion rules: all, any, at least N, or in order. Objectives can be
required or hidden. A chain is just a prerequisite pointing at another
quest.
• Rewards go through one IRewardGranter hook. The framework never touches
your economy, and an ungranted reward is flagged so you notice it
instead of losing it silently.
• Choices resolve when a quest completes. Fail states always store a
reason, whether it came from a rule, a deadline, or an explicit fail
call.
• Save and restore is tolerant. Remove an objective, retarget a quest, or
lower a target, and old saves still load, with a report of what changed.
• A JSON serializer is included. Swap in your own through IQuestSerializer.
• Optional uGUI UI (quest log, HUD tracker, toast popups) driven by one
theme asset. Built on TextMeshPro.
• Editor tools: a quest creator, a validator that checks across quests,
and a live debugger.
• Full C# source, no DLLs. Assembly definitions keep UI, core and
persistence apart.
• Tested on Unity 6 (6000.5). Works with built-in, URP and HDRP, and with
the old Input Manager and the new Input System.
Compatibility
| Unity version | Built-in | URP | HDRP |
|---|---|---|---|
| 6000.5.4f1 | Compatible | Compatible | Compatible |
Smart Quest System has no rendering of its own. The framework is pure C#, and the optional UI uses uGUI and TextMeshPro, which render the same on Built-in, URP and HDRP. Import TMP Essential Resources once and the UI works on any of them. It supports both the legacy Input Manager and the new Input System, with mouse or touch. Verified on Unity 6 (6000.5).
As listed on the Asset Store.