The QEng engine supports a virtual inventory system for teams or single players. This allows authors to design quests that involve finding and using virtual items (keys, tools, currency).
In the player interface, the inventory is displayed as a list of items with images, short descriptions, and action buttons.
Each item has a unique string identifier (key) that can be added, removed, or activated (used).
<div id="inventory_container">Loading inventory...</div>
showInventoryItems('inventory_container');
Adding items is linked to solving level bonuses (or spanning bonuses).
<script>
addInventoryItem('hammer123');
</script>
Once the team solves this bonus, the item with key hammer123 will appear in their inventory.
For the item hammer123 to render correctly, upload two image files to the CDN with strict filenames:
item_hammer123.jpg — the item thumbnail displayed in the inventory list.item_hammer123_big.jpg — the detailed full-size image displayed when clicking the eye icon (detailed view).To remove an item from a team (e.g. when giving it to a character or using it to unlock a door):
<script>
removeInventoryItem('hammer123');
</script>
<note important> Important: If an item was added via a spanning (global) bonus, it cannot be removed by a regular level bonus. It must be removed via a spanning bonus with a higher sequence number. </note>
When a player clicks the “Use” button next to an item in their inventory, the engine automatically attempts to submit a code matching the item's key.
* For example, using the item hammer123 will automatically submit the code hammer123 to the engine's answer field.
A live example of a level with inventory configuration can be viewed in the Demo game for authors.