Skip to main content

Conceptual Overview

EconomyKit is a uniquely flexible solution for player inventories as it's:

  • Focused on community and trading, unlike PlayFab or Unity inventories which don't have social features.
  • Portable. Identify players across PC and mobile platforms for a seamless experience. Avoid being tied to a particular launcher like Steam.

Players

Players represent a single human player, regardless of platform. Player objects own items and currencies.

Identity Providers

To create or locate Player objects, EconomyKit provides support for a variety of identity providers. Use whichever identifier is most convenient in your current context, inventories can always be linked later. EconomyKit supports identification via:

  • Steam
  • Epic Games
  • iOS Game Center
  • Google Play Games Services
  • Xbox Live (hashed XUID)
  • Minecraft (player UUID)
  • Email
  • Discord

We'll be expanding this list on request. You can also identify players with a custom ID that matches your existing backend.

Apps

Apps represent a single game environment. Most developers will create two: one for testing and one for production. Items and currencies are associated with the App that created them.

Unique Items

A unique item represents a non-stackable item with custom metadata. They can be tradeable or soulbound (untradeable). Unique Items are associated with an App and a Player. Some examples of Unique Items are:

  • Trading cards
  • Gear (weapons, armor)
  • Cosmetics and skins
  • Trophies and commemorative items
  • Passes and keys

Commodities

Commodities are fungible, stackable items. Apps create Commodities and issue Stacks of them to their players. Commodities can contain custom metadata just like Unique Items, but all Stacks will share the same metadata. Some examples of Commodities are:

  • Resources (wheat, fuel, minerals)
  • Currencies (gold, boss tokens, gems)

Commodity Stacks

Commodity Stacks are instances of Commodities in a particular quantity. These are the actual models stored in a Player's inventory.

Trade Requests

Trade Requests represent an asynchronous offer between players to exchange Unique Items and Commodity Stacks. They have four states:

  • New. The sender has just created the request.
  • Counter-offer. Optional state, the recipient has modified the request and sent it back.
  • Accepted. The trade has been accepted. The Items and Commodity Stacks have been exchanged.
  • Declined. The Trade Request is hidden and can no longer be modified.

Inventories

An Inventory is defined as a collection of Unique Items and Commodity Stacks. They are associated with Players and Trade Requests. By default, fetching all items for a player using your App's API key will only display that Players' items that belong to your App.

In the future, we will support displaying inventories with collections spanning multiple games (à la Steam).

Random Drops

Define loot tables with odds for provably-fair drops! Fire a single API request to issue an item from a pool of rewards.

Linking

Inventories across multiple platforms using different authentication methods can be linked to share inventory contents.

For example, consider a player that has authenticated via Steam on PC and Game Center on iOS. They will have two separate inventories as there is no way of knowing about their other account. The player can link these two accounts by generating a link code on either platform and entering it on the other. Then, their two Player objects will be merged into a single database entry.

Alternatively, if a web browser is convenient on the device, an SSO provider can be used for account linking.

Discord Support

Bring your player economy to where your community hangs out! Show off your items, roll for Drops in a social atmosphere, and trade without leaving Discord!

Screenshot of Discord trading support with EconomyKit